From 0db38ad1a2cf403eb546f027f2e5673610626f47 Mon Sep 17 00:00:00 2001 From: Pierre Jeambrun Date: Mon, 27 Feb 2023 21:06:43 +0100 Subject: [PATCH] Add prettier formatting for www (#29768) * Add prettier formatter for www * Ignore markdown as formatted by eslint * Fix CI * Update CONTRIBUTING.rst --- .codespellignorelines | 1 + .pre-commit-config.yaml | 8 +- .rat-excludes | 4 +- CONTRIBUTING.rst | 21 +- STATIC_CODE_CHECKS.rst | 2 +- airflow/www/.eslintrc | 18 +- airflow/www/.prettierignore | 5 + airflow/www/.prettierrc | 10 + airflow/www/.stylelintrc | 2 +- airflow/www/alias-rest-types.js | 120 ++-- airflow/www/babel.config.js | 8 +- airflow/www/jest-setup.js | 40 +- airflow/www/jest.config.js | 66 +- airflow/www/package.json | 4 + airflow/www/static/css/bootstrap-theme.css | 375 ++++++++-- airflow/www/static/css/dags.css | 14 +- airflow/www/static/css/flash.css | 6 +- airflow/www/static/css/main.css | 282 ++++++-- airflow/www/static/css/material-icons.css | 30 +- airflow/www/static/css/switch.css | 2 +- airflow/www/static/js/App.tsx | 35 +- airflow/www/static/js/README.md | 3 - airflow/www/static/js/api/index.ts | 48 +- airflow/www/static/js/api/useClearRun.ts | 24 +- airflow/www/static/js/api/useClearTask.ts | 82 ++- .../www/static/js/api/useConfirmMarkTask.ts | 48 +- airflow/www/static/js/api/useDataset.ts | 22 +- .../static/js/api/useDatasetDependencies.ts | 155 +++-- airflow/www/static/js/api/useDatasetEvents.ts | 52 +- airflow/www/static/js/api/useDatasets.ts | 52 +- airflow/www/static/js/api/useExtraLinks.ts | 47 +- airflow/www/static/js/api/useGridData.test.ts | 34 +- airflow/www/static/js/api/useGridData.ts | 47 +- .../www/static/js/api/useMappedInstances.ts | 37 +- airflow/www/static/js/api/useMarkFailedRun.ts | 24 +- .../www/static/js/api/useMarkFailedTask.ts | 57 +- .../www/static/js/api/useMarkSuccessRun.ts | 24 +- .../www/static/js/api/useMarkSuccessTask.ts | 57 +- airflow/www/static/js/api/useQueueRun.ts | 24 +- airflow/www/static/js/api/useSetDagRunNote.ts | 45 +- .../static/js/api/useSetTaskInstanceNote.ts | 81 ++- airflow/www/static/js/api/useTaskInstance.ts | 44 +- airflow/www/static/js/api/useTaskLog.ts | 66 +- .../static/js/api/useUpstreamDatasetEvents.ts | 29 +- airflow/www/static/js/calendar.js | 252 ++++--- airflow/www/static/js/callModal.js | 253 ++++--- .../www/static/js/components/AutoRefresh.tsx | 22 +- .../static/js/components/Clipboard.test.tsx | 17 +- .../www/static/js/components/Clipboard.tsx | 39 +- .../static/js/components/ConfirmDialog.tsx | 35 +- .../www/static/js/components/InfoTooltip.tsx | 12 +- .../static/js/components/LinkButton.test.tsx | 16 +- .../www/static/js/components/LinkButton.tsx | 14 +- .../www/static/js/components/MultiSelect.tsx | 14 +- .../static/js/components/ReactMarkdown.tsx | 107 ++- .../www/static/js/components/RunTypeIcon.tsx | 30 +- .../static/js/components/TabWithTooltip.tsx | 38 +- .../static/js/components/Table/Cells.test.tsx | 62 +- .../www/static/js/components/Table/Cells.tsx | 98 +-- .../static/js/components/Table/Table.test.tsx | 107 +-- .../www/static/js/components/Table/index.tsx | 200 +++--- .../www/static/js/components/Time.test.tsx | 50 +- airflow/www/static/js/components/Time.tsx | 12 +- airflow/www/static/js/components/Tooltip.tsx | 126 ++-- airflow/www/static/js/connection_form.js | 153 ++-- airflow/www/static/js/context/autorefresh.tsx | 49 +- .../www/static/js/context/containerRef.tsx | 10 +- airflow/www/static/js/context/timezone.tsx | 23 +- airflow/www/static/js/dag.js | 74 +- .../static/js/dag/InstanceTooltip.test.tsx | 97 +-- airflow/www/static/js/dag/InstanceTooltip.tsx | 58 +- airflow/www/static/js/dag/Main.tsx | 192 ++--- airflow/www/static/js/dag/StatusBox.tsx | 73 +- .../static/js/dag/details/BreadcrumbText.tsx | 11 +- airflow/www/static/js/dag/details/Dag.tsx | 134 ++-- airflow/www/static/js/dag/details/Header.tsx | 74 +- .../js/dag/details/NotesAccordion.test.tsx | 94 ++- .../static/js/dag/details/NotesAccordion.tsx | 74 +- .../static/js/dag/details/dagRun/ClearRun.tsx | 18 +- .../details/dagRun/DatasetTriggerEvents.tsx | 49 +- .../js/dag/details/dagRun/MarkFailedRun.tsx | 21 +- .../js/dag/details/dagRun/MarkSuccessRun.tsx | 26 +- .../static/js/dag/details/dagRun/QueueRun.tsx | 12 +- .../static/js/dag/details/dagRun/index.tsx | 122 ++-- airflow/www/static/js/dag/details/index.tsx | 46 +- .../taskInstance/BackToTaskSummary.tsx | 11 +- .../taskInstance/DatasetUpdateEvents.tsx | 63 +- .../js/dag/details/taskInstance/Details.tsx | 76 +- .../dag/details/taskInstance/ExtraLinks.tsx | 21 +- .../details/taskInstance/Logs/LogBlock.tsx | 23 +- .../taskInstance/Logs/LogLink.test.tsx | 42 +- .../dag/details/taskInstance/Logs/LogLink.tsx | 50 +- .../details/taskInstance/Logs/index.test.tsx | 161 +++-- .../dag/details/taskInstance/Logs/index.tsx | 154 ++-- .../details/taskInstance/Logs/utils.test.tsx | 79 +-- .../js/dag/details/taskInstance/Logs/utils.ts | 55 +- .../details/taskInstance/MappedInstances.tsx | 107 +-- .../js/dag/details/taskInstance/Nav.tsx | 179 ++--- .../js/dag/details/taskInstance/index.tsx | 91 +-- .../taskInstance/taskActions/ActionButton.tsx | 24 +- .../taskInstance/taskActions/Clear.tsx | 64 +- .../taskInstance/taskActions/MarkFailed.tsx | 78 ++- .../taskInstance/taskActions/MarkSuccess.tsx | 73 +- .../taskInstance/taskActions/index.tsx | 30 +- .../details/taskInstance/taskActions/types.ts | 12 +- airflow/www/static/js/dag/grid/ResetRoot.tsx | 39 +- .../www/static/js/dag/grid/TaskName.test.tsx | 39 +- airflow/www/static/js/dag/grid/TaskName.tsx | 39 +- .../www/static/js/dag/grid/ToggleGroups.tsx | 24 +- .../www/static/js/dag/grid/dagRuns/Bar.tsx | 109 +-- .../static/js/dag/grid/dagRuns/Tooltip.tsx | 44 +- .../static/js/dag/grid/dagRuns/index.test.tsx | 154 ++-- .../www/static/js/dag/grid/dagRuns/index.tsx | 101 ++- airflow/www/static/js/dag/grid/index.test.tsx | 168 ++--- airflow/www/static/js/dag/grid/index.tsx | 53 +- .../js/dag/grid/renderTaskRows.test.tsx | 88 +-- .../www/static/js/dag/grid/renderTaskRows.tsx | 105 ++- airflow/www/static/js/dag/index.tsx | 20 +- airflow/www/static/js/dag/nav/FilterBar.tsx | 60 +- .../www/static/js/dag/nav/LegendRow.test.tsx | 33 +- airflow/www/static/js/dag/nav/LegendRow.tsx | 22 +- airflow/www/static/js/dag/useFilters.test.tsx | 59 +- airflow/www/static/js/dag/useFilters.tsx | 56 +- .../www/static/js/dag/useSelection.test.tsx | 34 +- airflow/www/static/js/dag/useSelection.ts | 12 +- airflow/www/static/js/dag_code.js | 8 +- airflow/www/static/js/dag_dependencies.js | 139 ++-- airflow/www/static/js/dags.js | 441 ++++++------ airflow/www/static/js/datasetUtils.js | 78 ++- .../www/static/js/datasets/DatasetEvents.tsx | 49 +- airflow/www/static/js/datasets/Details.tsx | 31 +- .../www/static/js/datasets/Graph/DagNode.tsx | 21 +- airflow/www/static/js/datasets/Graph/Edge.tsx | 17 +- .../www/static/js/datasets/Graph/Legend.tsx | 14 +- airflow/www/static/js/datasets/Graph/Node.tsx | 50 +- .../www/static/js/datasets/Graph/index.tsx | 64 +- airflow/www/static/js/datasets/List.test.tsx | 68 +- airflow/www/static/js/datasets/List.tsx | 102 +-- airflow/www/static/js/datasets/index.tsx | 54 +- airflow/www/static/js/datetime_utils.js | 63 +- airflow/www/static/js/duration_chart.js | 14 +- airflow/www/static/js/gantt.js | 334 +++++---- airflow/www/static/js/graph.js | 362 +++++----- airflow/www/static/js/index.d.ts | 2 +- airflow/www/static/js/main.js | 155 +++-- airflow/www/static/js/task.js | 8 +- airflow/www/static/js/task_instances.js | 93 ++- airflow/www/static/js/theme.ts | 8 +- airflow/www/static/js/ti_log.js | 103 +-- airflow/www/static/js/trigger.js | 112 +-- airflow/www/static/js/types/api-generated.ts | 657 +++++++++++++----- airflow/www/static/js/types/index.ts | 53 +- .../static/js/types/react-table-config.d.ts | 131 ++-- .../static/js/utils/URLSearchParamWrapper.ts | 6 +- airflow/www/static/js/utils/index.test.ts | 111 +-- airflow/www/static/js/utils/index.ts | 63 +- airflow/www/static/js/utils/testUtils.tsx | 28 +- .../static/js/utils/useErrorToast.test.tsx | 34 +- airflow/www/static/js/utils/useErrorToast.ts | 24 +- airflow/www/static/js/utils/useOffsetTop.ts | 7 +- airflow/www/static/js/variable_edit.js | 2 +- airflow/www/tsconfig.json | 15 +- airflow/www/webpack.config.js | 140 ++-- airflow/www/yarn.lock | 15 + .../src/airflow_breeze/pre_commit_ids.py | 2 +- images/breeze/output-commands-hash.txt | 2 +- images/breeze/output-commands.svg | 90 +-- images/breeze/output_static-checks.svg | 106 +-- scripts/ci/pre_commit/pre_commit_www_lint.py | 1 + 169 files changed, 6634 insertions(+), 4964 deletions(-) create mode 100644 airflow/www/.prettierignore create mode 100644 airflow/www/.prettierrc diff --git a/.codespellignorelines b/.codespellignorelines index 4b0179fdc9737..1234698be3071 100644 --- a/.codespellignorelines +++ b/.codespellignorelines @@ -3,3 +3,4 @@ roles = relationship("Role", secondary=assoc_user_role, backref="user", lazy="selectin") The platform supports **C**reate, **R**ead, **U**pdate, and **D**elete operations on most resources.
Code block\ndoes not\nrespect\nnewlines\n
+ "trough", diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f1ad6949ea737..d37e0cbb8eeb7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -641,7 +641,7 @@ repos: language: node files: ^airflow/www/.*\.(css|sass|scss)$ # Keep dependency versions in sync w/ airflow/www/package.json - additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0'] + additional_dependencies: ['stylelint@13.3.1', 'stylelint-config-standard@20.0.0', 'stylelint-config-prettier@9.0.5'] - id: compile-www-assets name: Compile www assets language: node @@ -877,10 +877,10 @@ repos: additional_dependencies: ['rich>=12.4.4'] pass_filenames: false files: ^tests/.*\.py$ - - id: ts-compile-and-lint-javascript - name: TS types generation and ESLint against current UI files + - id: ts-compile-format-lint-www + name: TS types generation and ESLint/Prettier against current UI files language: node - 'types_or': [javascript, ts, tsx, yaml] + 'types_or': [javascript, ts, tsx, yaml, css, json] files: ^airflow/www/static/js/|^airflow/api_connexion/openapi/v1\.yaml$ entry: ./scripts/ci/pre_commit/pre_commit_www_lint.py additional_dependencies: ['yarn@1.22.19'] diff --git a/.rat-excludes b/.rat-excludes index 138e8a0787a0c..0b360664d822f 100644 --- a/.rat-excludes +++ b/.rat-excludes @@ -13,8 +13,10 @@ .coveragerc .codecov.yml .codespellignorelines -.eslintrc .eslintignore +.eslintrc +.prettierignore +.prettierrc .rat-excludes .stylelintignore .stylelintrc diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index ab32efb178b80..e5d989f61f19d 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -1179,29 +1179,32 @@ commands: yarn run dev -Follow JavaScript Style Guide ------------------------------ +Follow Style Guide +------------------ -We try to enforce a more consistent style and follow the JS community +We try to enforce a more consistent style and follow the Javascript/Typescript community guidelines. -Once you add or modify any JavaScript code in the project, please make sure it +Once you add or modify any JS/TS code in the project, please make sure it follows the guidelines defined in `Airbnb JavaScript Style Guide `__. Apache Airflow uses `ESLint `__ as a tool for identifying and -reporting on patterns in JavaScript. To use it, run any of the following -commands: +reporting issues in JS/TS, and `Prettier `__ for code formatting. +Most IDE directly integrate with these tools, you can also manually run them with any of the following commands: .. code-block:: bash - # Check JS code in .js, .jsx, and .html files, and report any errors/warnings + # Format code in .js, .jsx, .ts, .tsx, .json, .css, .html files + yarn format + + # Check JS/TS code in .js, .jsx, .ts, .tsx, .html files and report any errors/warnings yarn run lint - # Check JS code in .js, .jsx, and .html files, report any errors/warnings and fix them if possible + # Check JS/TS code in .js, .jsx, .ts, .tsx, .html files and report any errors/warnings and fix them if possible yarn run lint:fix - # Runs tests for all .test.js and .test.jsx files + # Run tests for all .test.js, .test.jsx, .test.ts, test.tsx files yarn test React, JSX and Chakra diff --git a/STATIC_CODE_CHECKS.rst b/STATIC_CODE_CHECKS.rst index 814889782cc5e..65808784f3f6c 100644 --- a/STATIC_CODE_CHECKS.rst +++ b/STATIC_CODE_CHECKS.rst @@ -305,7 +305,7 @@ require Breeze Docker image to be build locally. +-----------------------------------------------------------+------------------------------------------------------------------+---------+ | trailing-whitespace | Remove trailing whitespace at end of line | | +-----------------------------------------------------------+------------------------------------------------------------------+---------+ -| ts-compile-and-lint-javascript | TS types generation and ESLint against current UI files | | +| ts-compile-format-lint-www | TS types generation and ESLint/Prettier against current UI files | | +-----------------------------------------------------------+------------------------------------------------------------------+---------+ | update-black-version | Update black versions everywhere | | +-----------------------------------------------------------+------------------------------------------------------------------+---------+ diff --git a/airflow/www/.eslintrc b/airflow/www/.eslintrc index b1a446a31b818..29914c0cd847d 100644 --- a/airflow/www/.eslintrc +++ b/airflow/www/.eslintrc @@ -1,13 +1,17 @@ { - "extends": ["airbnb", "airbnb/hooks"], + "extends": ["airbnb", "airbnb/hooks", "prettier"], "parser": "@babel/eslint-parser", "parserOptions": { "babelOptions": { - "presets": ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"], + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript" + ], "plugins": ["@babel/plugin-transform-runtime"] } }, - "plugins": [ "html", "react" ], + "plugins": ["html", "react"], "rules": { "no-param-reassign": 1, "react/prop-types": 0, @@ -21,7 +25,7 @@ "ts": "never", "tsx": "never" } - ], + ], "import/no-extraneous-dependencies": [ "error", { @@ -48,11 +52,9 @@ "overrides": [ { "files": ["*.ts", "*.tsx"], - "extends": [ - "airbnb-typescript" - ], + "extends": ["airbnb-typescript", "prettier"], "parser": "@typescript-eslint/parser", - "plugins": [ "@typescript-eslint" ], + "plugins": ["@typescript-eslint"], "parserOptions": { "project": "./tsconfig.json" }, diff --git a/airflow/www/.prettierignore b/airflow/www/.prettierignore new file mode 100644 index 0000000000000..a2bcd8157d69c --- /dev/null +++ b/airflow/www/.prettierignore @@ -0,0 +1,5 @@ +.mypy_cache/ +templates/**/*.html +dist/ +*.md +*.yaml diff --git a/airflow/www/.prettierrc b/airflow/www/.prettierrc new file mode 100644 index 0000000000000..3574cf79c5c7e --- /dev/null +++ b/airflow/www/.prettierrc @@ -0,0 +1,10 @@ +{ + "overrides": [ + { + "files": "*.json", + "options": { + "tabWidth": 2 + } + } + ] +} diff --git a/airflow/www/.stylelintrc b/airflow/www/.stylelintrc index 40db42c6689bd..2e8ff5864a48b 100644 --- a/airflow/www/.stylelintrc +++ b/airflow/www/.stylelintrc @@ -1,3 +1,3 @@ { - "extends": "stylelint-config-standard" + "extends": ["stylelint-config-standard", "stylelint-config-prettier"] } diff --git a/airflow/www/alias-rest-types.js b/airflow/www/alias-rest-types.js index 44c49ced78b3d..83ddd89aaee84 100644 --- a/airflow/www/alias-rest-types.js +++ b/airflow/www/alias-rest-types.js @@ -17,8 +17,8 @@ * under the License. */ -const ts = require('typescript'); -const fs = require('fs'); +const ts = require("typescript"); +const fs = require("fs"); /* This library does three things to make openapi-typescript generation easier to use. * 1. Creates capitalized exports for Paths and Operations @@ -29,16 +29,16 @@ const fs = require('fs'); */ /* Finds all words, capitalizes them, and removes all other characters. */ -const toPascalCase = (str) => ( +const toPascalCase = (str) => (str.match(/[a-zA-Z0-9]+/g) || []) .map((w) => `${w.charAt(0).toUpperCase()}${w.slice(1)}`) - .join('') -); + .join(""); /* Adds a prefix to a type prop as necessary. * ('', 'components') => 'components' */ -const prefixPath = (rootPrefix, prop) => (rootPrefix ? `${rootPrefix}['${prop}']` : prop); +const prefixPath = (rootPrefix, prop) => + rootPrefix ? `${rootPrefix}['${prop}']` : prop; // Recursively find child nodes by name. const findNode = (node, ...names) => { @@ -58,87 +58,114 @@ const findNode = (node, ...names) => { // Generate Variable Type Aliases for a given path or operation const generateVariableAliases = (node, operationPath, operationName) => { const variableTypes = []; - const hasPath = !!findNode(node, 'parameters', 'path'); - const hasQuery = !!findNode(node, 'parameters', 'query'); - const hasBody = !!findNode(node, 'requestBody', 'content', 'application/json'); + const hasPath = !!findNode(node, "parameters", "path"); + const hasQuery = !!findNode(node, "parameters", "query"); + const hasBody = !!findNode( + node, + "requestBody", + "content", + "application/json" + ); if (hasPath) variableTypes.push(`${operationPath}['parameters']['path']`); if (hasQuery) variableTypes.push(`${operationPath}['parameters']['query']`); - if (hasBody) variableTypes.push(`${operationPath}['requestBody']['content']['application/json']`); + if (hasBody) + variableTypes.push( + `${operationPath}['requestBody']['content']['application/json']` + ); - if (variableTypes.length === 0) return ''; + if (variableTypes.length === 0) return ""; const typeName = `${toPascalCase(operationName)}Variables`; - return [typeName, `export type ${typeName} = CamelCasedPropertiesDeep<${variableTypes.join(' & ')}>;`]; + return [ + typeName, + `export type ${typeName} = CamelCasedPropertiesDeep<${variableTypes.join( + " & " + )}>;`, + ]; }; // Generate Type Aliases -const generateAliases = (rootNode, writeText, prefix = '') => { +const generateAliases = (rootNode, writeText, prefix = "") => { // Loop through the root AST nodes of the file ts.forEachChild(rootNode, (node) => { // Response Data Types - if (ts.isInterfaceDeclaration(node) && node.name?.text === 'components') { - const schemaMemberNames = findNode(node, 'schemas').type.members.map((n) => n.name?.text); + if (ts.isInterfaceDeclaration(node) && node.name?.text === "components") { + const schemaMemberNames = findNode(node, "schemas").type.members.map( + (n) => n.name?.text + ); const types = schemaMemberNames.map((n) => [ `${n}`, - `export type ${n} = CamelCasedPropertiesDeep<${prefixPath(prefix, 'components')}['schemas']['${n}']>;`, + `export type ${n} = CamelCasedPropertiesDeep<${prefixPath( + prefix, + "components" + )}['schemas']['${n}']>;`, ]); if (types.length) { - writeText.push(['comment', `Types for returned data ${prefix}`]); + writeText.push(["comment", `Types for returned data ${prefix}`]); writeText.push(...types); } } // Paths referencing an operation are skipped - if (node.name?.text === 'paths') { + if (node.name?.text === "paths") { if (!prefix) { - writeText.push(['comment', 'Alias paths to PascalCase.']); - writeText.push(['Paths', 'export type Paths = paths;']); + writeText.push(["comment", "Alias paths to PascalCase."]); + writeText.push(["Paths", "export type Paths = paths;"]); } const types = []; (node.members || node.type.members).forEach((path) => { const methodNames = path.type.members.map((m) => m.name.text); - const methodTypes = methodNames.map((m) => ( + const methodTypes = methodNames.map((m) => generateVariableAliases( findNode(path, m), - `${prefixPath(prefix, 'paths')}['${path.name?.text}']['${m}']`, - `${path.name.text}${toPascalCase(m)}`, - ))); + `${prefixPath(prefix, "paths")}['${path.name?.text}']['${m}']`, + `${path.name.text}${toPascalCase(m)}` + ) + ); types.push(...methodTypes.filter((m) => !!m)); }); if (types.length) { - writeText.push(['comment', `Types for path operation variables ${prefix}`]); + writeText.push([ + "comment", + `Types for path operation variables ${prefix}`, + ]); writeText.push(...types); } } // operationIds are defined - if (node.name?.text === 'operations') { + if (node.name?.text === "operations") { if (!prefix) { - writeText.push(['comment', 'Alias operations to PascalCase.']); - writeText.push(['Operations', 'export type Operations = operations;']); + writeText.push(["comment", "Alias operations to PascalCase."]); + writeText.push(["Operations", "export type Operations = operations;"]); } - const types = (node.members || node.type.members).map((operation) => ( + const types = (node.members || node.type.members).map((operation) => generateVariableAliases( operation, - `${prefixPath(prefix, 'operations')}['${operation.name.text}']`, - operation.name.text, - ))); + `${prefixPath(prefix, "operations")}['${operation.name.text}']`, + operation.name.text + ) + ); if (types.length) { - writeText.push(['comment', `Types for operation variables ${prefix}`]); + writeText.push(["comment", `Types for operation variables ${prefix}`]); writeText.push(...types); - writeText.push('\n'); + writeText.push("\n"); } } // recursively call this for any externals - if (ts.isInterfaceDeclaration(node) && node.name?.text === 'external') { + if (ts.isInterfaceDeclaration(node) && node.name?.text === "external") { node.members.forEach((external) => { - generateAliases(external.type, writeText, `external['${external.name.text}']`); + generateAliases( + external.type, + writeText, + `external['${external.name.text}']` + ); }); } }); @@ -169,27 +196,32 @@ function generate(file) { const program = ts.createProgram([file], { allowJs: true }); const sourceFile = program.getSourceFile(file); const writeText = []; - writeText.push(['block', license]); - writeText.push(['comment', 'eslint-disable']); + writeText.push(["block", license]); + writeText.push(["comment", "eslint-disable"]); // eslint-disable-next-line quotes - writeText.push(['block', `import type { CamelCasedPropertiesDeep } from 'type-fest';`]); - writeText.push(['block', sourceFile.text]); + writeText.push([ + "block", + `import type { CamelCasedPropertiesDeep } from 'type-fest';`, + ]); + writeText.push(["block", sourceFile.text]); generateAliases(sourceFile, writeText); const finalText = writeText // Deduplicate types .map((pair) => { // keep all comments and code blocks - if (pair[0] === 'comment' || pair[0] === 'block') return pair; + if (pair[0] === "comment" || pair[0] === "block") return pair; // return the first instance of this key only const firstInstance = writeText.find((p) => p[0] === pair[0]); - return firstInstance === pair ? pair : ['comment', `Duplicate removed: ${pair[1]}`]; + return firstInstance === pair + ? pair + : ["comment", `Duplicate removed: ${pair[1]}`]; }) // Remove undefined created above .filter((p) => !!p) // Escape comments and flatten. - .map((pair) => (pair[0] === 'comment' ? `\n/* ${pair[1]} */` : pair[1])) - .join('\n'); + .map((pair) => (pair[0] === "comment" ? `\n/* ${pair[1]} */` : pair[1])) + .join("\n"); fs.writeFileSync(file, finalText, (err) => { if (err) { diff --git a/airflow/www/babel.config.js b/airflow/www/babel.config.js index 7c37d14c864b5..f38c60b91fb1d 100644 --- a/airflow/www/babel.config.js +++ b/airflow/www/babel.config.js @@ -20,9 +20,13 @@ module.exports = function (api) { api.cache(true); - const presets = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript']; + const presets = [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript", + ]; - const plugins = ['@babel/plugin-transform-runtime']; + const plugins = ["@babel/plugin-transform-runtime"]; return { presets, diff --git a/airflow/www/jest-setup.js b/airflow/www/jest-setup.js index 55a83464e5cf2..0a13d7c6444de 100644 --- a/airflow/www/jest-setup.js +++ b/airflow/www/jest-setup.js @@ -19,18 +19,16 @@ * under the License. */ -import '@testing-library/jest-dom'; -import axios from 'axios'; -import { setLogger } from 'react-query'; +import "@testing-library/jest-dom"; +import axios from "axios"; +import { setLogger } from "react-query"; // eslint-disable-next-line import/no-extraneous-dependencies -import moment from 'moment-timezone'; +import moment from "moment-timezone"; -axios.defaults.adapter = require('axios/lib/adapters/http'); +axios.defaults.adapter = require("axios/lib/adapters/http"); -axios.interceptors.response.use( - (res) => res.data || res, -); +axios.interceptors.response.use((res) => res.data || res); setLogger({ log: console.log, @@ -41,19 +39,19 @@ setLogger({ // Mock global objects we use across the app global.stateColors = { - deferred: 'mediumpurple', - failed: 'red', - queued: 'gray', - removed: 'lightgrey', - restarting: 'violet', - running: 'lime', - scheduled: 'tan', - shutdown: 'blue', - skipped: 'hotpink', - success: 'green', - up_for_reschedule: 'turquoise', - up_for_retry: 'gold', - upstream_failed: 'orange', + deferred: "mediumpurple", + failed: "red", + queued: "gray", + removed: "lightgrey", + restarting: "violet", + running: "lime", + scheduled: "tan", + shutdown: "blue", + skipped: "hotpink", + success: "green", + up_for_reschedule: "turquoise", + up_for_retry: "gold", + upstream_failed: "orange", }; global.defaultDagRunDisplayNumber = 245; diff --git a/airflow/www/jest.config.js b/airflow/www/jest.config.js index 3c35fa9d68fa1..11f8da1c4c4df 100644 --- a/airflow/www/jest.config.js +++ b/airflow/www/jest.config.js @@ -20,42 +20,42 @@ const config = { verbose: true, transform: { - '^.+\\.[jt]sx?$': 'babel-jest', + "^.+\\.[jt]sx?$": "babel-jest", }, - testEnvironment: 'jsdom', - setupFilesAfterEnv: ['./jest-setup.js'], - moduleDirectories: ['node_modules'], - moduleNameMapper: { // Listing all aliases - '^src/(.*)$': '/static/js/$1', + testEnvironment: "jsdom", + setupFilesAfterEnv: ["./jest-setup.js"], + moduleDirectories: ["node_modules"], + moduleNameMapper: { + // Listing all aliases + "^src/(.*)$": "/static/js/$1", }, transformIgnorePatterns: [ - `node_modules/(?!${ - [ // specify modules that needs to be transformed for jest. (esm modules) - 'react-markdown', - 'vfile', - 'vfile-message', - 'unist', - 'unified', - 'bail', - 'is-plain-obj', - 'trough', - 'remark-parse', - 'mdast', - 'micromark', - 'decode-named-character-reference', - 'character-entities', - 'remark-rehype', - 'trim-lines', - 'property-information', - 'hast', - 'space-separated-tokens', - 'comma-separated-tokens', - 'remark-gfm', - 'ccount', - 'escape-string-regexp', - 'markdown-table', - ].join('|') - })`, + `node_modules/(?!${[ + // specify modules that needs to be transformed for jest. (esm modules) + "react-markdown", + "vfile", + "vfile-message", + "unist", + "unified", + "bail", + "is-plain-obj", + "trough", + "remark-parse", + "mdast", + "micromark", + "decode-named-character-reference", + "character-entities", + "remark-rehype", + "trim-lines", + "property-information", + "hast", + "space-separated-tokens", + "comma-separated-tokens", + "remark-gfm", + "ccount", + "escape-string-regexp", + "markdown-table", + ].join("|")})`, ], }; diff --git a/airflow/www/package.json b/airflow/www/package.json index c96640723c7bd..bbce06550edea 100644 --- a/airflow/www/package.json +++ b/airflow/www/package.json @@ -9,6 +9,7 @@ "build": "NODE_ENV=production webpack --progress --mode production", "lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && tsc", "lint:fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && tsc", + "format": "yarn prettier --write .", "generate-api-types": "npx openapi-typescript \"../api_connexion/openapi/v1.yaml\" --output static/js/types/api-generated.ts && node alias-rest-types.js static/js/types/api-generated.ts" }, "author": "Apache", @@ -52,6 +53,7 @@ "eslint": "^8.6.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "^8.6.0", "eslint-plugin-html": "^6.0.2", "eslint-plugin-import": "^2.25.3", "eslint-plugin-jsx-a11y": "^6.5.0", @@ -68,8 +70,10 @@ "moment-locales-webpack-plugin": "^1.2.0", "nock": "^13.2.4", "openapi-typescript": "^5.4.1", + "prettier": "^2.8.4", "style-loader": "^1.2.1", "stylelint": "^13.6.1", + "stylelint-config-prettier": "^9.0.5", "stylelint-config-standard": "^20.0.0", "terser-webpack-plugin": "<5.0.0", "typescript": "^4.6.3", diff --git a/airflow/www/static/css/bootstrap-theme.css b/airflow/www/static/css/bootstrap-theme.css index 6095498d570df..371762d55857e 100644 --- a/airflow/www/static/css/bootstrap-theme.css +++ b/airflow/www/static/css/bootstrap-theme.css @@ -703,7 +703,7 @@ blockquote .small { blockquote footer::before, blockquote small::before, blockquote .small::before { - content: '\2014 \00A0'; + content: "\2014 \00A0"; } .blockquote-reverse, blockquote.pull-right { @@ -719,7 +719,7 @@ blockquote.pull-right footer::before, blockquote.pull-right small::before, .blockquote-reverse .small::before, blockquote.pull-right .small::before { - content: ''; + content: ""; } .blockquote-reverse footer::after, blockquote.pull-right footer::after, @@ -727,7 +727,7 @@ blockquote.pull-right footer::after, blockquote.pull-right small::after, .blockquote-reverse .small::after, blockquote.pull-right .small::after { - content: '\00A0 \2014'; + content: "\00A0 \2014"; } address { margin-bottom: 20px; @@ -1866,15 +1866,18 @@ output { border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -webkit-transition: border-color ease-in-out 0.15s, + box-shadow ease-in-out 0.15s; -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; } .form-control:focus { border-color: #66afe9; outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), + 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), + 0 0 8px rgba(102, 175, 233, 0.6); } .form-control::-moz-placeholder { color: #999; @@ -2991,11 +2994,15 @@ tbody.collapse.in { border-radius: 0; } .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { +.btn-group-vertical + > .btn-group:first-child:not(:last-child) + > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { +.btn-group-vertical + > .btn-group:last-child:not(:first-child) + > .btn:first-child { border-top-right-radius: 0; border-top-left-radius: 0; } @@ -3598,8 +3605,10 @@ select[multiple].input-group-sm > .input-group-btn > .btn { padding: 10px 15px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), + 0 1px 0 rgba(255, 255, 255, 0.1); margin-top: 8px; margin-bottom: 8px; } @@ -4403,9 +4412,36 @@ a.thumbnail.active { } .progress-striped .progress-bar, .progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); background-size: 40px 40px; } .progress.active .progress-bar, @@ -4418,33 +4454,141 @@ a.thumbnail.active { background-color: #00ad46; } .progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); } .progress-bar-info { background-color: #00d1c1; } .progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); } .progress-bar-warning { background-color: #ffb400; } .progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); } .progress-bar-danger { background-color: #ff5a5f; } .progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -webkit-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: -o-linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); } .media { margin-top: 15px; @@ -4703,7 +4847,10 @@ a.list-group-item-danger.active:focus { border-radius: 0; } .panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { +.panel + > .panel-collapse + > .list-group:first-child + .list-group-item:first-child { border-top: 0; border-top-right-radius: 3px; border-top-left-radius: 3px; @@ -4737,30 +4884,78 @@ a.list-group-item-danger.active:focus { border-top-left-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child { border-top-left-radius: 3px; border-top-right-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + td:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + td:first-child, .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + th:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + th:first-child { border-top-left-radius: 3px; } .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + td:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + td:last-child, .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel + > .table-responsive:first-child + > .table:first-child + > thead:first-child + > tr:first-child + th:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { +.panel + > .table-responsive:first-child + > .table:first-child + > tbody:first-child + > tr:first-child + th:last-child { border-top-right-radius: 3px; } .panel > .table:last-child, @@ -4769,30 +4964,78 @@ a.list-group-item-danger.active:focus { border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child { border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + td:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + td:first-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + th:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + th:first-child { border-bottom-left-radius: 3px; } .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + td:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + td:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel + > .table-responsive:last-child + > .table:last-child + > tbody:last-child + > tr:last-child + th:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { +.panel + > .table-responsive:last-child + > .table:last-child + > tfoot:last-child + > tr:last-child + th:last-child { border-bottom-right-radius: 3px; } .panel > .panel-body + .table, @@ -5476,17 +5719,41 @@ button.close { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } .carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -webkit-linear-gradient( + left, + rgba(0, 0, 0, 0.5) 0%, + rgba(0, 0, 0, 0.0001) 100% + ); + background-image: -o-linear-gradient( + left, + rgba(0, 0, 0, 0.5) 0%, + rgba(0, 0, 0, 0.0001) 100% + ); + background-image: linear-gradient( + to right, + rgba(0, 0, 0, 0.5) 0%, + rgba(0, 0, 0, 0.0001) 100% + ); background-repeat: repeat-x; } .carousel-control.right { left: auto; right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -webkit-linear-gradient( + left, + rgba(0, 0, 0, 0.0001) 0%, + rgba(0, 0, 0, 0.5) 100% + ); + background-image: -o-linear-gradient( + left, + rgba(0, 0, 0, 0.0001) 0%, + rgba(0, 0, 0, 0.5) 100% + ); + background-image: linear-gradient( + to right, + rgba(0, 0, 0, 0.0001) 0%, + rgba(0, 0, 0, 0.5) 100% + ); background-repeat: repeat-x; } .carousel-control:hover, @@ -5524,10 +5791,10 @@ button.close { font-family: serif; } .carousel-control .icon-prev::before { - content: '\2039'; + content: "\2039"; } .carousel-control .icon-next::before { - content: '\203a'; + content: "\203a"; } .carousel-indicators { position: absolute; diff --git a/airflow/www/static/css/dags.css b/airflow/www/static/css/dags.css index 517a538f3948f..19f1c5ef9f78e 100644 --- a/airflow/www/static/css/dags.css +++ b/airflow/www/static/css/dags.css @@ -72,7 +72,7 @@ .dags-table-more__menu::before { width: 0; height: 100%; - content: ''; + content: ""; pointer-events: none; transition: width 0.3s ease-in; } @@ -92,7 +92,11 @@ tr:nth-child(2n) .dags-table-more__menu:hover { } tr:nth-child(2n) .dags-table-more__menu:hover::before { - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #f9f9f9 100%); + background: linear-gradient( + to right, + rgba(255, 255, 255, 0) 0%, + #f9f9f9 100% + ); } tr:nth-child(odd):hover .dags-table-more__menu:hover, @@ -102,7 +106,11 @@ tr:nth-child(2n):hover .dags-table-more__menu:hover { tr:nth-child(odd):hover .dags-table-more__menu:hover::before, tr:nth-child(2n):hover .dags-table-more__menu:hover::before { - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #f5f5f5 100%); + background: linear-gradient( + to right, + rgba(255, 255, 255, 0) 0%, + #f5f5f5 100% + ); } .dags-table-more__links { diff --git a/airflow/www/static/css/flash.css b/airflow/www/static/css/flash.css index 272d46c79f913..21146948b36ad 100644 --- a/airflow/www/static/css/flash.css +++ b/airflow/www/static/css/flash.css @@ -19,7 +19,7 @@ .panel-heading #alerts-accordion-toggle::after { /* symbol for "opening" panels */ - font-family: FontAwesome;/* stylelint-disable-line font-family-no-missing-generic-family-keyword */ + font-family: FontAwesome; /* stylelint-disable-line font-family-no-missing-generic-family-keyword */ content: "\f077"; float: right; color: grey; @@ -27,7 +27,7 @@ .panel-heading #alerts-accordion-toggle.collapsed::after { /* symbol for "closing" panels */ - font-family: FontAwesome;/* stylelint-disable-line font-family-no-missing-generic-family-keyword */ + font-family: FontAwesome; /* stylelint-disable-line font-family-no-missing-generic-family-keyword */ content: "\f078"; float: right; color: grey; @@ -52,7 +52,7 @@ .dag-import-error::after { /* symbol for "opening" panels */ - font-family: FontAwesome;/* stylelint-disable-line font-family-no-missing-generic-family-keyword */ + font-family: FontAwesome; /* stylelint-disable-line font-family-no-missing-generic-family-keyword */ content: "\f078"; float: right; color: #e43921; diff --git a/airflow/www/static/css/main.css b/airflow/www/static/css/main.css index 59a3d727c1098..c625061c4863e 100644 --- a/airflow/www/static/css/main.css +++ b/airflow/www/static/css/main.css @@ -89,7 +89,7 @@ div.container { .brand-logo { width: 104px; height: 40px; - overflow: visible !important;/* Allow for animation */ + overflow: visible !important; /* Allow for animation */ } @keyframes pinSpin { @@ -207,15 +207,15 @@ table.dataframe.dataTable thead > tr > th { } table.dataTable.dataframe thead .sorting { - background: url('./../sort_both.png') no-repeat center right; + background: url("./../sort_both.png") no-repeat center right; } table.dataTable.dataframe thead .sorting_desc { - background: url('./../sort_desc.png') no-repeat center right; + background: url("./../sort_desc.png") no-repeat center right; } table.dataTable.dataframe thead .sorting_asc { - background: url('./../sort_asc.png') no-repeat center right; + background: url("./../sort_asc.png") no-repeat center right; } .no-wrap { @@ -304,59 +304,227 @@ label[for="timezone-other"], transform: rotate(180deg); } -/* stylelint-disable declaration-block-single-line-max-declarations */ -.hll { background-color: #ffc; } -.c { color: #408080; font-style: italic; } /* Comment */ -.err { border: 1px solid #f00; } /* Error */ -.k { color: #008000; font-weight: bold; } /* Keyword */ -.o { color: #666; } /* Operator */ -.cm { color: #408080; font-style: italic; } /* Comment.Multiline */ -.cp { color: #bc7a00; } /* Comment.Preproc */ -.c1 { color: #408080; font-style: italic; } /* Comment.Single */ -.cs { color: #408080; font-style: italic; } /* Comment.Special */ -.gd { color: #a00000; } /* Generic.Deleted */ -.ge { font-style: italic; } /* Generic.Emph */ -.gr { color: #f00; } /* Generic.Error */ -.gh { color: #000080; font-weight: bold; } /* Generic.Heading */ -.gi { color: #00a000; } /* Generic.Inserted */ -.go { color: #888; } /* Generic.Output */ -.gp { color: #000080; font-weight: bold; } /* Generic.Prompt */ -.gs { font-weight: bold; } /* Generic.Strong */ -.gu { color: #800080; font-weight: bold; } /* Generic.Subheading */ -.gt { color: #04d; } /* Generic.Traceback */ -.kc { color: #008000; font-weight: bold; } /* Keyword.Constant */ -.kd { color: #008000; font-weight: bold; } /* Keyword.Declaration */ -.kn { color: #008000; font-weight: bold; } /* Keyword.Namespace */ -.kp { color: #008000; } /* Keyword.Pseudo */ -.kr { color: #008000; font-weight: bold; } /* Keyword.Reserved */ -.kt { color: #b00040; } /* Keyword.Type */ -.m { color: #666; } /* Literal.Number */ -.s { color: #ba2121; } /* Literal.String */ -.na { color: #7d9029; } /* Name.Attribute */ -.nb { color: #008000; } /* Name.Builtin */ -.nc { color: #00f; font-weight: bold; } /* Name.Class */ -.no { color: #800; } /* Name.Constant */ -.nd { color: #a2f; } /* Name.Decorator */ -.ni { color: #999; font-weight: bold; } /* Name.Entity */ -.ne { color: #d2413a; font-weight: bold; } /* Name.Exception */ -.nf { color: #00f; } /* Name.Function */ -.nl { color: #a0a000; } /* Name.Label */ -.nn { color: #00f; font-weight: bold; } /* Name.Namespace */ -.nt { color: #008000; font-weight: bold; } /* Name.Tag */ -.nv { color: #19177c; } /* Name.Variable */ -.ow { color: #a2f; font-weight: bold; } /* Operator.Word */ -.w { color: #bbb; } /* Text.Whitespace */ -.mb { color: #666; } /* Literal.Number.Bin */ -.mf { color: #666; } /* Literal.Number.Float */ -.mh { color: #666; } /* Literal.Number.Hex */ -.mi { color: #666; } /* Literal.Number.Integer */ -.mo { color: #666; } /* Literal.Number.Oct */ -.sb { color: #ba2121; } /* Literal.String.Backtick */ -.sc { color: #ba2121; } /* Literal.String.Char */ -.sd { color: #ba2121; font-style: italic; } /* Literal.String.Doc */ -.s2 { color: #ba2121; } /* Literal.String.Double */ -.s1 { color: #ba2121; } /* Literal.String.Single */ -/* stylelint-enable declaration-block-single-line-max-declarations */ +.hll { + background-color: #ffc; +} + +.c { + color: #408080; + font-style: italic; +} /* Comment */ + +.err { + border: 1px solid #f00; +} /* Error */ + +.k { + color: #008000; + font-weight: bold; +} /* Keyword */ + +.o { + color: #666; +} /* Operator */ + +.cm { + color: #408080; + font-style: italic; +} /* Comment.Multiline */ + +.cp { + color: #bc7a00; +} /* Comment.Preproc */ + +.c1 { + color: #408080; + font-style: italic; +} /* Comment.Single */ + +.cs { + color: #408080; + font-style: italic; +} /* Comment.Special */ + +.gd { + color: #a00000; +} /* Generic.Deleted */ +.ge { + font-style: italic; +} /* Generic.Emph */ + +.gr { + color: #f00; +} /* Generic.Error */ + +.gh { + color: #000080; + font-weight: bold; +} /* Generic.Heading */ + +.gi { + color: #00a000; +} /* Generic.Inserted */ + +.go { + color: #888; +} /* Generic.Output */ + +.gp { + color: #000080; + font-weight: bold; +} /* Generic.Prompt */ + +.gs { + font-weight: bold; +} /* Generic.Strong */ + +.gu { + color: #800080; + font-weight: bold; +} /* Generic.Subheading */ + +.gt { + color: #04d; +} /* Generic.Traceback */ + +.kc { + color: #008000; + font-weight: bold; +} /* Keyword.Constant */ + +.kd { + color: #008000; + font-weight: bold; +} /* Keyword.Declaration */ + +.kn { + color: #008000; + font-weight: bold; +} /* Keyword.Namespace */ + +.kp { + color: #008000; +} /* Keyword.Pseudo */ + +.kr { + color: #008000; + font-weight: bold; +} /* Keyword.Reserved */ + +.kt { + color: #b00040; +} /* Keyword.Type */ + +.m { + color: #666; +} /* Literal.Number */ + +.s { + color: #ba2121; +} /* Literal.String */ + +.na { + color: #7d9029; +} /* Name.Attribute */ + +.nb { + color: #008000; +} /* Name.Builtin */ + +.nc { + color: #00f; + font-weight: bold; +} /* Name.Class */ + +.no { + color: #800; +} /* Name.Constant */ + +.nd { + color: #a2f; +} /* Name.Decorator */ + +.ni { + color: #999; + font-weight: bold; +} /* Name.Entity */ + +.ne { + color: #d2413a; + font-weight: bold; +} /* Name.Exception */ + +.nf { + color: #00f; +} /* Name.Function */ + +.nl { + color: #a0a000; +} /* Name.Label */ + +.nn { + color: #00f; + font-weight: bold; +} /* Name.Namespace */ + +.nt { + color: #008000; + font-weight: bold; +} /* Name.Tag */ + +.nv { + color: #19177c; +} /* Name.Variable */ + +.ow { + color: #a2f; + font-weight: bold; +} /* Operator.Word */ + +.w { + color: #bbb; +} /* Text.Whitespace */ + +.mb { + color: #666; +} /* Literal.Number.Bin */ + +.mf { + color: #666; +} /* Literal.Number.Float */ + +.mh { + color: #666; +} /* Literal.Number.Hex */ + +.mi { + color: #666; +} /* Literal.Number.Integer */ + +.mo { + color: #666; +} /* Literal.Number.Oct */ + +.sb { + color: #ba2121; +} /* Literal.String.Backtick */ + +.sc { + color: #ba2121; +} /* Literal.String.Char */ + +.sd { + color: #ba2121; + font-style: italic; +} /* Literal.String.Doc */ + +.s2 { + color: #ba2121; +} /* Literal.String.Double */ + +.s1 { + color: #ba2121; +} /* Literal.String.Single */ .footer { display: flex; diff --git a/airflow/www/static/css/material-icons.css b/airflow/www/static/css/material-icons.css index 12a44a42fa3c0..9ab8255f90157 100644 --- a/airflow/www/static/css/material-icons.css +++ b/airflow/www/static/css/material-icons.css @@ -18,17 +18,18 @@ */ @font-face { - font-family: 'Material Icons'; + font-family: "Material Icons"; font-style: normal; font-weight: 400; - src: url(data:font/woff2;base64,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) format('woff2'); + src: url(data:font/woff2;base64,d09GMgABAAAAAUI8AA4AAAADjOAAAUHkAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbEByCzyoGYACwGhEICorJeIiAFAuwWAABNgIkA5gwBCAFgnoHIFuvznIDpyBryeWaoZ2jbV/h8F/QPjQVyrZdLHXexkto0GNMDdumQfSgOyhSwX2lL/v//89PKjJm20uyrrBtgAcBf70XMBlJPMc4ThIlIFVaT46i3HvL0aKMLvNMab5I12Ve1V2SfJsb7np3ScN7mPsRax9dxfBqO6Fz6tPkk0QcgdrGiFygr7T3/dJeUfRMt8IuknUFvw4YHYSVSIvQCSiexI3nU/9ARmj+Cg1SQI1DUV+UvEIe7pLu8yPlrKtRXgomrPXYSnkbMbh+g8Ucb37qPw1546MhtGBP9j9wq+diYLqeCtIikuEgaZG0SCpIJCZokFQUQCVIyLm75TABEy9afFFXgRxnk0W2HmoTLIBa1ceuw1sH2K4DQqQQe9iYKA55REI8/V/2ddA9TuaOI+4+il+QlYX8s+n/G+Ac1uOykvAChBtykz+WsN9+N9q6tYTewlf4ClljtpCtboVtj+GytroWbAI0RI6BbjkVexOVQ7v///yzk2SQCXfvngeWHypaqIbEiuAAbNvthBMhboioqIg3Vzn3292kmtP3PoXWy39PuvEZ4W8+nxFKM49OGMXnNKfWKYwwMraysi38zvd/pZRl+rbJ1WUyTm4um3Fu7VfEG14jL+RKCK+RlyMSHhJC+KVde5393d4k3JxCXiqbCllZV1cpWreUrPFrc4u/+Itwiz+OEPIC/H8c8Tt3e20UeGAJlEWcYFSCgf/xqH18I/nDk27+CyQhm9wldxkkm5U7QNZQckCYgZ071g6SOBBRnE0cFdQOB6DQqa1awu8UJ1hw/irRLuBba9B2a0vstuubhbltNzXEc4SQGgS5u1/PrQjDjH6BNA8Q46kaPu11z+z+i+QsXFISHx0OizyhQCgk3lL8mNN6eeYm7d4CbRcoYMuBIbCd/TywEJCefn8+tZluLtfk2l5lyYkLCwkXFgu4DIWPAAWtaRgsOhPjIpwFgMLtPU6JVf8PlrNJ6wtFJ4ilorOth4pNaH2BdxeYzb0E0/wUD6J/D3wR+4imgn6ob0WnolvwIa2HE2xKwwml9Q8fcU/jf+/t7k1wE3w4DoLyOsCklJNU4h/yJv9tg0GYdhcGIIll0s/zudkfVHZZEvIChCWPsEjuDYtCUAHJA0KABAX03cfiArJpXlyrLK7vfWs12E5rOwkjtBW17bS8tLWLth1pG7S1M1U62g5JZ2m03Qf8xFm6jJ2pDwS3MQKhaYiG0A01+YOgCEO4AXsov9Syt37hofuh0QSbJMjhnBpJu5J2/3Eczu0gdBo5yFJf5fy3DoIdjxL2T1jdQdaE8P1KdU/CCu6uRyG6zSz7HVMlvYSdU6o0WmTrusAaLbK9yPrhner/OfLDc6SHhQFdlqWWN47twoXSNsc+kFg/dbRWP7/yr/xLadN1FGg7oNL4UneJkvgC9wFEsS3kltbcGqWSIiExxEIL/ibpH3Q4UUrmY/BSxFI+/p+xwTybzKGc2v/MO87844BsFT6YYqeLxaTtMgna6NJU7z1drtLVvgIVFpxYlpM4BIYkXQi1dZKR5gP3AzyvS30x/E5Yp/jCBawAVvKd07UJfQH8wlo4pngJn8uqabnzx2a00DnSjBKArpJurZLTeetKhLppN3XILAdE/jNyPlVf/7ge1xTXIokuTU9uXYYzGSBFB0pXEi0rufLgMZkyLKW137oo/TJ/5P/vVa22+KRpk45URbl7gtRRrurg6rC33TGuejt5m/+/P7/3H8L7+BDwQUggQNIIoowPkBIIijIRSIMQqw4IUW6acveR5K4ZW+5Aq0I8Z8AP0UWCkpukLCs4jCyVq0NIkqya4zTdlSaksOxlLfvMqlfrWWxTWM1y04vl/KTq68qTzW+nts0ZM2YYoynZMozeMyzCu/J0d3jAJ0BSX4A6f6ukpG933gFQIEiuXW6lT6ljqcve6pZxiP+9qfWmfMs1lB9+5+cbG8nGayPZ4U4k+SBTOLj93jtCP9xuEa0eigQa0BKma2eWy28NXjdGajRGKpI7qgKaGBXQxP4iuet/JIX6kYzxoepHE8pFsUqpT0LlgYI0EQ/6B6n/2Z0NtLisANJbBr+pdMADWWbEg/9qVkmd7mgfbC9ABhDmSWXVi1bGV+KxQtHYx0WNpnyWFqALEDNggMHa49qbThGkba36WXi7XGLfqgq5eRNqtsSHaNR5cRDOFHMylT92lwjqMsYIkVfHfu29sPg3Xbrv6PL6rlVVFRFjRIyIiBjzr8N3e3t67J3Z28+ZvUgQEREpoYiEcAhBOvMWv+ul59MZ7v1JPt/b3b2ilVIiRoyIiNZaK+UopY3FmMb/A4GNOZNjGRAVUVGIv7Q6rM3Mi3QZKgg4EFDSuPjWMJbamTbNtdtvW5Jm1qDi80VEFJRXdBtCN/8/ClKftUPUoIishKGMhKy75NbM6L8FwkCeQVVtxHhEE4/73QRWs7XVEq6PfaUPTcf8pNQAAgyQHd0n/f7i+awNWxQAVof8z8DjP4JFzPC5XMSMyo/OFF6pk2/VyMe7f3TEOWxk8j75tnvuh3+ptZR082RhFl59ter3/WszGX+pOXtW/o9G/SggrPRhGBOsaS2b2M4eDnKM05yXq5RZIDQMHiwfrRgKRXlp5W5leFo1w92qGK5WyXC2CoajlTPsrciwtQLD2srWsdBy8Uv5aWahQsRLm22jPC7HJdz8GsA1b64RukaQiL2xSPlHUxuGkyGMYUrbSZ0AYSPHQdnR5GQF8mnvqj3O8aSC+VpN4i1IlqASiHiVuM6+hGArup9Qj0pKqCSxITDF0x97+URsk7kj6RapU9wT5sKIg2BpUDacmDt6fxVkamUl3xGUyBNuL3dHCm2KrbD/Oz80pqRTREQlQrSU082XtrVfwapRWFLUZqHvpm4rG2QqMz5qXo1a470u6SrbuT07u3LDOnAPx02Dh2TN1r0KgrIjgiQIJExymgQYStEuj7J2qkglNn1Tnd9klhEUWrUfLq18MemZrLF8x+/aP+/7xwv9wwmt9DGOJuGi7ZbKKqiLdfrBOZMfS9pDg8JjsoqI7VzUZS1tQ4XS4saKDZcz64Spm10ztcOyVDgg7GhSABswVW44cixABtAYJdE9ROiwqvUb4yjUUXBXTI88Jh45bMG16k8+hZJHBlFn31miRkr9FQ8AxhzuzpEQQ6blZNfJJatkd+YxaIHrMmLKLELrI+AjwpRldeJlLtAN39tC8SSdJ+xXxTQCygNDsBpVG3AuJwEiyQpaPiiInzoIvUN/VzdCso06fWvCOEP31qk6JDqIBinAwT1ulcSHy4vUY7pe20PXsay4JTWNlAe05djZXaodUWYizrAgyXrlDso9tj8t5OkmsoCISdDeId6rvENQ7j5AGP6FDH14yFsoppM8jIgYta0XUcDAhuULIkSsIC5AajYyAgTbabkj863RtUYcMuIOgS2bbcPfeUEj5x4oSgYDw83pMgufbsa5n2A73Ych4NRx+/5BxY6xkiwpxLgcXbEV41d1OWzDKyzE3r3LzCw23HQmxqNCgXvsUol4wN0ihoCScOXhV7othYx7NDwChs2/cyB0JqACt1SCEfugjZYnzumdwHAxV3K2M38quBjQLo5gEfCANrYzw3Ic/M0SB1nnC5tFQxo6M2yUbSRDVLMx3DcszKJd2uTCRIPlYcJWx3WH0bBEhzJhW/NU+32BA+A3hoGCNMf2awKgTLVlVCOGDq8wyg/p0MgglYKz57C5k5M371NuEgjqGEuHw8mpwVBRmJhPjC/LOeBnZvi6rxd0NUmAGNHCgp1VRbBm6aTrOiMTW0MIGEBLSSDtkRdHzPwIvTYAXZcjogGndS3PnR4hiWYdbPcsJ0fFoN6bI2DeML738PC53woEf4O+tMFQPZLmDZXcg2Fqib3Rty1E9aZG8OEIvr6tJSAiQFun51KYooI8xRodZZhxAqMNeIzIOw/5fcW1UYGRJoTDvyS/QcZITKU/rIHMxlglO2b6HRrNorzRl+Zc0VUtg+jT8eFz0J5ANn3hPy01zUhXZJfT0eZuIhvp+ignbXBN4OHvL4rPzKmyJYrTG9/scnkjzKObEcoZLU367O0dj17Ox6Z10Yg5jM05Y/q6rSOF3BnKkJNJERNepetm/y+M6I8iwM3mMSZRP0NtHIGOrLjm+g+62ckwmYyNzYUbk5nuwhVP3xbVSkFMTC8Jigt40cKpfJeLo/gd1b9to4AdG+0/sNAE0kjCf2URJRqFXMhvErxMvxVkXKW/IxihWcIKCTZrr1alD0RBWCrvsv0tyzGC/MeMMUuMgPo/iJEG7iVVJoXsYpKNbSNHyPU6YdbiB1S0h7TOfPjimPsxoV84AmAl3yIGrFv9JZzdwOBsdovu4xdn2aJ3q8iSt9Ff74K+J7USsVTfuVf3CDz0vs58AdzMLcCf6cAqCfjuPT//Sqcshg8K2l0uhJc6osWWhgcNSYlS56p7ZVw9HTO0dLhhmZ1iElMM0GtYSRICnpALnFGSvwqh9O+CI0hL6ObHUOmJX0DoQXM58nO+dQOVYYafINAv2jMez/r/b851kYc8z8f8iVGYREwQaQ7KaiCfYntVadWrXKO0pquWk0zSjEYeY+iYWUy+yQEOX2H7dmTlOr7aeX8kBxYi4GwkardPOhAIAEIRjhoN7sOIMMA3oWZF6m7Z1LiSCyVs1seNZJJ+FxwAU7vVQJE1ooFVzKex2IUJ74yFSJxzzdz0I8uSQWTKWCqPUvXAvzefDQDma1NjYrbmDdWTAgmTrMwgZyAaMaMA2mCHUp/YaYZXNKHp72hUyDPJpZmA6ItNgDAIoDTIjyjU6Ev3pELHpt3c+GSh4RK1Ob4VoR41a/RP1ogQZtHyAXk5St6/HCnvXY6Qdy+HyzuXg/J2BP6dCl2nLMQKk+PuJmQ3DeBKsJQKOXIm5bORCCQzbBUjGXvn9I5aSmP1ooBEBDV2wxAdpbckOj9CYkEbgRfFSpR6AAofJZFsuoDJwiXCiFRMPkqAwqoX10RH6w150QDQS4QgFvIfIUEWlPY01BFmeQmbLwOMNDxOVLtK+KDMuoOSSFHZu3smkYRqVHmVJK1BU39cNzj1Wiv2DO9l6oFnBdyxuskhq8iriy5NCc8Wyoh+JcpQNsAFceIroKMcVgN23P+oBhNMLlOpOVbwXyXiTN1vjYvGSR6WXr714gr/BUptjQljOAFNo6WIWpKwKbozRsrl0to/rsZANPoJ5HFO79nR0ybX27nV1cSTq14fAYyOcl2laJ/QS4Ho2WWtgjX+gTR98j0H/YoSMgdk6m+QlJqqugBwEigz3sk5hj9hOCDinpx45G30ByjUxa33QbRRAB6x0AKBsn9upiWrfUDhRi0sNIu+wsHISh50oTovjWxh6nSPtZ4fK4HREDkwkacAZokckxK0k9FD0Ekg7VeOvYqaioouJqNCZR0P968jfUVyB7KPvzEKn8DCpZG10KjE0Mj836hAhba1PTVLWzQfbwIGnfaRhk193LijN7qAGy1dumrj5rAgAH+Q5lM55OTHnY/DLwKERAQYfnIcx6dY1ZBDQP2XWxG7qrCwzPiSbNnUpgvR+Ibjmci0Jm9yeocTgz9d9vdePH/8kYuns0vWPGGliAgB0eQQjrKLtCjJzJQ6P8wTyUp+0kn2iCtnuiUy1NnyFShrofQkaJcGqLqx/s6k0w5N71hzTQLc3hZfnJWI5sqlsxhrCyXcsXVlftUm1MNyUBu70Qqb/SUI+T2F/CT4JMqPdbcB1d9p5GdQzWPEOPvOgF0TClIoeWGNtQqQ2cj+xBO4dDwh6rgtdZPaXcMJQnfJFGrVRo6/ap/d9T28eAe3OjlEpdmgmtGyUdMolw37vnboaS5I3pjfk1gaKrdof5GmAi6Y4P1SBK+cG1acBzyG0MbrWeGjBEp1Hx0ND+nMnMUekYgN7pKrByoNH6fOpilYst0MmAVPoiVWHsk5OxxJFgjSd814QQurs0F/lIU/27lX40YgJTT1wP7Kg6HjK+0s/arR1HS7FWlfByNWMo8gBwrlsJVSwNJWGaKaZa/nQi249B3M8ZSGOctxLsUcKssSn/wMapFPhCU919KmvfEThSzYS1KvqaN4MtBCd75Bsn3QPI4ahJzzDvR7faVZC7QjIXB0ouZIVjcwYIW+Sv5U2/VBToR0UWL5EdJygFq+aAcWtX3EGOsEVCnyxolq1rJeTW0TtiZPHTrVVl+MAyUFUF0Ca9IZ+ejISIOoGftDc+PxwhOAAMvDil3LJqMjEQYDbvs8go1740H8ylY1vQhYOh3AifdC0i3CLPdh5D1mmvUJLT0/MI1Gj3+WvzuN46bd0kZQ1XBKL04KsBRkWOLN3s7+HHhcU5is79OhNzjBXvNMTZ8R0CnH1rJtulqgYU4646K6tziJ3xrnnz4e3vNaInJCVj/MdJDwrpIKHaqWJ680TFRzY1excXS6hoiUgOVPrnf8aSSneQSgwnHi1MPa4kBE4GKw4HpddCpoVnE+lKYy9zpqp5VdTjNamrtq0bZ3ByIuhmrn4HS6Q0IOSF7PmVB/a7ILs0ZUC/6XT5x5lMQKETOSjUlXwSBR7zWkKg/nel5N9kSzwOyInCmu08k8iX2xJnaPjtcyB6pVAH1wHOMVHWeWpsx0Wc9By26X8Q94PC4dpUNdIrQtjjukdxDZGB1WF5cjwX1apm7VsqA2qg64najkcupjY1pqiFxlzWuaIAZfwKPQaIpSJnR6UgjNEfvazDLWe2nCVNtFTeAEydeaU9YR4mtH1uDbW4832ofjBHeoajkOk0KsgQSIzn3BDXq6WmCUYT1ZLMHrmSWHkqzJQzBl4HUKOBjtSuLaB8Fd3k7zQLB3ik34ISmmXg5reKWo/rAc2Gl5fZkIx9pMG35a+zT/AQNXz3sGMSSDgOO6unu8yJt8yN9IZXkxyVB4rJ65LtduBSmyYvuqlXe3tMkg1jBJsxjWk3z2J3pCNRyycPXl6/O8dVqNCCQXiRqNO/YsAZGnthwSBZ06gQXaeDi1Guy0ykNljZf4EgvehrNwEvucJ+IhVDPFxad7f2nzSAxzbOLAxN1TY9/5Rt5VwUzn611kQFpIr9B+jbR1T5I5sMFjsYZm5QitlUt2kSzCJ9fAmG/KM4Pk3O/33sLmPY5Sbpzbmkv4JGVa/nl8adSXBUlAwale40kcZUaYb8wKXQhmg2SYG8xnj/K1dEAP55rirCMRFAW6UzSyrQpJWd5UAVF9YpwrpMfaPg0i2ndLOWkANef/uFRPkcAfMqIdwdd2eDHeKZoWoU6avp8q/FnZ0USuNWvMwizpVzWtIfCWPXpgdTfjmBg6toMOsRuj8u0lPgtixLGLyiNIIBDRnUOXAJpMXBUT4MfQnItuwtTYroI01rPBwwB7x8LqGRLrqymoIf1a0UtaT86gmzrZukrS9JGkRs/w0NHiO73YuAXrdaGq10z5tzsAbmqsTo9KWmgejg3WLtX4+ZTWSuiV5jLWkYK7DvgtWfOQbuYJ1sDhUFcc9aTVwcVjeZLJCr4XOAafZZ7ojUKNQgLwDyH+bCVeEDaC3lRzwTnR91wQNyKhK5B4abhcVD1Ou/PthhJrSmOVUxiBkxQhJYSTbo856JDdLV/BhOe+A0lwEiujDGGPp8JISunyWV99I2W7viliE+5NCweNUixUGPhmuJTBzNWdXSLNuX4sYV0l6HGKjcwnu65zfEJ4QOu03GkA1eL8J5IpAjzyJwEJqUGDuShxW6D909sUlEfdjgILEucKu2DeZg9CYRKCujd+KITVW2ll1LWk36SMRC31FEqjiHL61UWVlR8F5OxOQUaxmxNc43E+l6r0CjRCcEZCIhPDIiu1U8UUXrGoRqvlPWwy2Jqs1+DTM+aATfzXZ324IxcuWbL56v1xmmHFAD/8aZz7Bx9x7HGPvbK6thriB7pYDS/vfXROedDOwZ/ao0OW6UyiAa07iubNj+R+BMgIEfqlkRtvdoih/UGzBHDw5psaYrFs8D/s1IRkbO6KxtCmkTzFAzdJFXNFh65PTKvWaikA11FQECeYaE/1qGVQjcEG/3MbRTYxR+8CIOmApwjU0QnwZAJccjp4QkqR5Sgb2rBoIViu7qTi5P7YfMfZ77JU7atIP3rFNB9QW5PTyL3cjKmq6W8taDEE8X5PhDffdvbtHrTR0QCqij8dzs1b8KPWR4WI/sLwAuIXBycv2pJYgIxVudmo4+K9tl8MLNL+aVTqr3OqA70Fii/OKm4FFdnLi4ItF2jT2iVTwEOjdRuqq0T3gAo9Wja1KxQ8a5dqSRY40hCf/LAtTdMlRGIMNYWt3VXJTfa+qRqRpF+Ddbp9HKtNG1mzlsrUlcaTIVY9PWvMpylvBdJwSbKNWSiFYOmbstSEOv+cJJTnUjnPEZMgYnT7UjYwhETzEe8L3xt9vCFkib2KeOJUTRjeOqaImUqum6sols7JmFrsXIkmQr6bmVr+BOoQcLvt03FxdSDd5v9Q7ORz/sYiAEGEjxYUER8S1roOV7NO13ZVNd74zGi0EfNqyr05cpWdXb2vVvpoB2YlXrF+h9QEdgBIY4DCOIAnAjS9CBBm2nahmlip16/KS8CQ1TJjxVh6fULTmTJ9dGpxdPujwzkOvOLzr52dP16CS5VnDLBAetDYos07rDcLrbJZxXGZ4L9U7VwiiAf37QQ3SmqwAkZJfI9pwFzYe9uA3uc6AKU3BLbCsgJoL1KV/QhiHwS6y9gYsedJPsf5+RzGZ78CLv0T3zieXdPy5AJCgbHC5GBZQFOrIn4EeVGq5vzwDtYmdx40wPi4X6gslS335R+5SVnP/UavJwCrpoaeNxXAiUjZLUWWlGoo6ANeRymBloaILA9HSZHk1jGfdXIyTZz7TNvMUlWDxPt5MFLQi29JMBHuJ4PiWiivTcCLRWH8ukgK+uGcAPoVXSI5M7S6aC9bAa161h0QREg/7HTpewXQ0cC1LyVZlYe6OpOTzC7Qd6aMpC/KBplypG6EqpZFQpLv9a3jwEK1WGJKEwDOmgmMnDWQ7egwzyZInFhko5DhVFCqrLAV/feN32QrLtzX83ANhY7RJz3VGfS0qMrBx+X0sZsKVDB4HPI2TgUQWtW+U5k+cVQY/dvHxaO1dOppPYGG1yjuoDRb5rtyKC3TAY0bsa6drv4AyVa2z5NVgXEUW9VoT24RBhjGnA05qq/fUAtS2FjrF8qwTPzECxBK/4eHJIIp/33gQuBpoDn1DhUZAoLtNQvXbsuY5B7NYgRN/XrHfCplcbCBgCK4kJMnEAVEKxm5KRVZeDZUF2x8cTHqAqMjQlQGx+Aw+vKELqcew37XweiQ9A0HC/W9F9DWVe3YRzGXflN4X8l7Z/STmv5K+FpVOufKCKPs8mjsfOxTCLeoL/jlzsy4engNQt5ZecuuFCGbviecpTJD+7kJb9MdpecT8N29PUM4p3gYWDR5TyljOtsSPUL6KJmSbXQnkzfSMmkjJRM3kjJhIyHjNuIydiOUMXWQ9R9SqI/XkAdGQDtDoGwjLa6putglzsYMZvtABa2vIRoAjtl2R5+VttUUfiYFnE7sigTKmZLZMgcEJbZBcvbh2kEm7PXALUwwVfb2IbEeSK8kKyCVNEusnXzhxzR7qk3oykLEMzKioBXuoTLwpOHWB9EqnHwgKGmaViV80GRjuELTnuvOj6gyOsPGYOqTOlGohQWDiOxleFwFTNpPbUOo954DCOLJY2DJ8xZ+uP+gowdgTG9QYya3w5qAMY++ltjuRQNIv1KGIUyynp3s5yQXucUDXuRdvuV/1NIqQIGHSyVKaNZCkgdu3xAbzk8swBjh1UXCSf5kElQUAX+hQFFzWHMTKiOMydgoQ2oixZn8D64rLRhyM4XrKCL0X9RQ/eVepJv+sR+YyKbGc2gC23/hWnpl2VB4MQDCzzQVvys8Li/YKWI0Xe1AhIuikYd9aBE4fnDSpfEE9DtQ5l+fXV0Ux0BnVjpUwLNrD+9vJ8fsPZMX47cV4iiK/3N0+BPzg6gsHQaw0VX+Xo5wgds8zev8jF4AohN8gXdGO0Wx1lRaddpZrVl597udprUb0JADR57GlEeOndXkS73ifA5yxZUWLVt0LoNnu+5j2dhxtyDaAH/yHPxGq8OH5jDxDUxp53M4Y+PQx3ZNXVa/4yzZmxE9UU/CQ9qFUB4LkYZ1VRpzaVGqiyjOCTNUl3SVvthAFti+gJ6N2E/cM33kb4wDUa95Ld3FC6zg5OlLbG0DMU44UtSMI9oqR6/JCIzCY+xNT8ttLCRROerVkkjQWThRDE0zQC1MVwV51AWwdHzqZzqlQwQaqVmIKU/1YiI3nWg+5eG0YV0JH1TxhjHaNFqIYiuUomFErwxRPWkAwqyYIfmFoR5pEdJucboxBvPrWsDp/YNpCjyqbqaBelNDKbOhMdd35zeqhdRC94dylBtDSXRhQdF86hgD2aYBpOoYHZ3Z2FTXaHCCzrtGRbzDuUYa2pQb1WBqAX3vc9eZELoG9RZutP5GPRPVhGmv1gK0gv+zdGMc02zgIJd5yIuCpSJCAosYPTwpulGZFKSQylW7Wt0PU7VOg01lcN0wOvksECvYrdVju96Ge8nqlBm7x9lPVFgySbPZ0iX6EYj2shvcmbnpSnquLXB3bIKLPwycGfyGW3kNpSNEeB+09HlpExIu3EVpKbNJRxrRirmrdTB4W202nMvT2D4mwCOLUheT7e1dlKthhgsk2XZ4FkJIQfZRsWGpYHMQa0FxTN6iNa0A2c2eUXuBjy2rYyfyPTTpPldb/gU5c5XDXICiYNnX1RMqeNkvYjV9jUTnebi9ZaX6Gm1fFGA3x2RpqwmCEfIbz1Qjh3VTzhubON2EDafpGwucX7QHEK9SEfVnuzLDbs7ziI+lLsNFMUJIcHhMHvYdDcbrWBtGs7TiNRGUopuPm9HJlCtJTbnO9bO0EpWdiK0jlcwDjfbQAXaCm+XJ8keUKVWa7RiicqWLMyGP0UfcOIVW57UQG6QJ2vkU+6ewfhj3dApioSzoUy1ld9vv7IyNPM6H/IgDaRUuAQg0xcDgsGylGhmdV9kWa15XV5XyVbtcV79qJuMx+IhjjJg4/uj1LuTw5bZvzeX7Bsr7tUHB6OCzfuA84gV1eQc41Ox9KQTN7sWS/+v//gALtV2kodDpC90DBak9Go7n89sHiwkNOjg0Njy1NDiFefUNwW3cOVSE1l2TtzmIW5PFQffYC3xKuHZHu0G3FgVTNJIrRchwt2S7MLlvU7aSZxrkJstltz1vUsppWmlxfanU5kuFFt7NtQlcq21FarKs1WdHSlM0iOvBx3GnaOSCXtAf49ni3PP3uBtnsKwoJ5pjqT7NktkIAvT9xacQkr7kniyGMVfwSU7J2LcgsNmU1qg8aFwW9he4/hEj4MfBGJ7U/iAS0M8QrbFof8Q8DoD9RuTouluUm1o4b1+JhRKogzsq0UNnn7wu9VEIU9DIBWi1Ulgn8DVDvtXeGIrGor0Isa3pflFE9eSF1Z0t8hATU/X9yrwe7G4x9I6TE8u47YbjkmaNus6iyO59Cu2SNOZ52M77w4nkgHDTTgaaqdlWIbErOWzHo3hzn1VmB5GKkKIBuhJ8D3tNBeKMcFetQklG7a5pfYImwRqHbfsR3uhqoozDs5r8UWcuDEBE12HbTBxuzWRiv1O1C15sa2NyqhKaT0/rZvaHjFqdB30TG5+AZ5ElZqpjftTigbguHLZ5GmNjDstshtgzqU1pbgVJHbb5oRDWpB52+5pvPKu7t09Ca547sIK7oNrdjRPI6l13XpWBGVkrtsOcdCyWfRL9A9L6XjefB7JQ1oq+8j8BrdmD3BGSmES/F+cWU4hA6OdEYZV1mctK+hr3JPNTLyEPhOZIRYMUc8bSvqspUzZK0qqb3QofO4Y63zUBgKYFs2xTjFzliM4+3DetVV5GzYEu6soRjxQav0fNWbr4nvGQlHrj/B6JcwsNTWATvdQ8JEbQypyzMUfW43jSTULoXgAw6ywYkT2LpSGc7SzMYF5UpkJkvNdMn/ScMjg+jEOf25T4d5YaF+Vyrsf+ygrKTLoDa7UGrW7jfKnpyHNTv5K8fWYcnLSaLxngfu05LnCHV/kdJxEQ2eSBl8fLsXnSbUTz0BPID1I6X93p965GW7fxGdAUJz1otEFDx0/kff/GYEeutHjnfy26+pjQHoQC4kgHY5DXzSFH/P5bVYuAqHGFiy+97JobPaqpwRT0wT2kB3ncfFR7jfAwhCoaB6eGexZgh3kcMWOgKeWJtLYj+1gGQ2wkotS1rNiv5cAEO+3nFgOwiU8UZ5bRQaBWaEW8T5SdLDAFfL/wH4lWl2t1y4/V0STRhgvVd4QYcpumaiB1t4eTbI+mjWl+gD7OFBjngHL1VxPtVtUXYlnw07CPenzNDlCTT1CdxnMWh8YoWnIf5B+Kl5q/wuJyuAUjykCYzdb8ckRPxW7GCfpq17Ng6c+XBd4WgoGEEirTq9CB0JTG3GheKuxjdebD86y9NS1zFP+LI7eK2LwnO+nPdR0lNuHBvK+XxWOHE0JpiJE+YjwScBBLT8gTItrMzRcjWK6JuLPUtTnxUpNAl6zyTCBS3LaBZ8K2I2S/Rj8fbTxEuXXmZYYX3DcRj/IGJoOOYdGquKdB8HieNHJMPW5Eu6x7IObqgKxiU6MoP+sOI6msYbd/zdw9jg0gdI/zFczgJnPY75UjaHFPv6j8dEAGKe7bfOKjU/lc1rSGLqak7vOKndCpA5JnfIe41eIcRbDrJpC6yuGqM21Bv+kQPoARPrEh2VX3HRI4JXMq2QFc16DWxOyDa+HvjtiVpBd3tdsQXnu4Ec6gVLtjXoQF3TkrhBUyexjCP6qTBO5VjjJKat6+udhBZDEfrD1D17G3zdWO80f/2HICuQk+UsIdoMuia4VDJd4B/wWt/O9qKNs4ymWe5lsZClDM0peNtBPyE9GxAhRRvj1G3q/UrisbbL0mZvBp7n82NnjycUPHbnQhBzp82xevuWKTa2G7EYTqJ4pHO2tZNO6aJzqYx9Gm5TPPNsIGuUAIn4UNLpNzP7H8LxkcvIi+LRVsAgttfjYs4oIHe6vBOZAdFLtcMLkk0+d/aXRqe7UldwPwCYwH/ENz0dwLZPNLJH5Bn+q5UZaW7snjIZIzmiBK/ATdeCDdWgIzxoY4houvdjJCq3ZuObw44pUR+ppYtmQxBOyXakC4aKqStdTtLmdwE3FUtigxYNWX5v310K/SchOl9Bw8TI4C40NRPyWLhK/OYaCzkawVfs0igPOHC9/ij/5H87xruuOhvjA1tfr1HrjQ3VSlCg/9JHJcHNVcJ4nRgytvP1yI+ZnjfjU8vdhNxF6MgQVDJuE1AEfbpLTEe5yPoFokL/gUkCwoR3xyNJ7IG86bpaciCwKRkJ4zkAfiFUo8J05ae3RucNETZdB9HiXi/XBqVxdomqorTE5rjrPYExyEhxhU/akEgfgm+cHlpoPRwnGsmkzSQlAi20cyZxraX7WVbrO397/XccyxnaOc4Qr3eJ4vpSkNkQwfPWfI56gFNuAT6S6No4mPsqXSoABUwrBTLyEk+NucsL/hUnaQsegtLMSKRmct3rINGIgqiuNFcpP+kUM9RLJNAaEQngnLiIv9jPPAQ9f0pGIiSYknHCI6LvRNf8wAkNnNYFCnN3vxy7Z4p/YJrfXqhaJjKMDODccBBvPfBiTpwKAYqcbEjYjpokA1qlTWtdKqf6Fgs6puN9ny9VdGjDgjw8YP27av6hqbUX//4ZpN1pzHAXEqZ/6kY28BhBgGqEwjAN5h3BRTSygR23bfbV2+BYtvPBHk269ZXgaZOG1sZu7r9nbYWy+enR6uwCuavLCGHuYB3iB9HV+JfM3mFTRs+0ERlHYegZmNzv/ey1Xtcl1JefVsKUW1UB8x66mTeuywSTCrM6sK98OOzSMhmDLghfHq8BqN81zIaSc6q8U+rVdyFAn+XlgNsZiZ9utiP6fwF2rYDMS3xvUS9fUUu6AVxjLBqqEvHyIvqlcr8ErbB0gjzU9MVSrTRZzObdxNqDre9C4ldlw/mL6/IgG6ockGknvJ2O77jqW6rYKGADS4Am4qoXpdzlIyfCgKMFQifu5Ar5mE8N9CwuAeQ0aumLiFnLGwE1ZVhpOkCnQxqXAyaUwojK9wlVmUwj5bbCURS/UzCF0W7KDS6SrkDNMFwVZ29kUgDxAmv4JOvv6YaVoaOmb8+KmqxIadKu2R5PYUzMJwDldOvHJCU39Ppg5hgfGwnhH7fo7nJ4cvhw7uaDE4peNf6l0eHq4o9U8kCHLaS2NwyQCmbhFQ0m8zWBWumStxo2rzP1EQG2ps8OBCspEhOwrk5285KSJCnq4hpsnY/wi/n80JWRINqLayQNv6WbwydaaQHkS03EoVAbvxP4IjfZ7XPuqkZwd5xGajbW5dJZl5GvxBIaJl9jFXipxGy0pVSGdoEmOv2IQ2buzl75RHpsalKkBT7BUht/u+g14m7dijg15KdhN5WPkpm0zNzOIH4X7yHijiLxw5OdieKh6uxzYRUUCu1v000pvP7A8GahUueGLeOKUGFks8R4fhHlbeEWxHT58z2dTNI+jAeyvRerwkOEV2C9qNtsSKBUnPt6Kl4uf6FNqtr1oRmCQkSRRitm0dFI6KPysI91JJ3/EKjYKSODjqmE+YPxSSIyfbHiNux0KtSUF4RX6yxD74jHeL7AkhRjNzIYITYYI2+6ltmKn1+mACmdH2FD4RkQnAyStaWmznUMJL16ug1fZHI50QnMIJoLPDRCvZR5Dn8kFhEchhtz1x/A28jb45aztYrJJ7BHk+fhKLsqjhVjccowdLvvaJaszgkiYI4ER9udXtCPxRi2JO5fBcsOz9WDwN7V03WQqe/1AvP4vx5bP2bWqxGy4kL2ayXnADbUp7kiYaemlNZOde8NGtQTaEYUZbIEKeMzstL/dyQecbheE9di192mYl3lCyDFNJ6iAte9fbYkGIy+pqDm+bKvSLXokH/iLURb/lqZZ+Ium4vZ0E841uKDcTPPljx7UdgPDhCSa/GzBSCW1u1iTszf9XmUFY+VAbEB82M/VCveCBWQPrLPTDk/jydRb6scwRrvBARI7AO8DQZPNkOAT8j/uBczQiGYEdVPFnP9sgyYZAKVqzqFjewX4C6k3MTMJZxm9rBkuFidieQZ1WqZV3NXYTTjdYw2pECkXxGqUxERQGyrebbWVHRpU7i+FZPr8zJjvORe7wNK/yLt/zL2oZLpA0RwuJzVtoykrtVcUWiztUUmjRcrQ1TMBAZjGKZr/OxldlvW59Xdex139nzf20cHRoDeAAPemDjn7o9vjXiQ7oLyMSzW7jlm/qM3U+bmMtD8+vr/sWE+ttsK4TzTUBht11Aiqo2bDRdzhuhAhMDPLaVXKj0TRFKxVQ/bq8iDpCAUhtzZ7jnPmJouXtqN1JPuok5kXzoubIwGoYS6OScZTQE42+CMpxolHVXYdMojyLmL5xFrrVjAVsuHaIk+PHEZ1L/ifhXtkTR7A2U1HrTfsNTH41YMpchnN5CpdIopfwU239pToqMbzgBIdJkGIIqTzP4J2IuX4/wSABFWFea/XK6edhhT6sHY5N47ibiXYMDlKnxnk6lfIFzKC3mHwDR7Reh8oGYlRbr2HzTj/q/26wM5/eDIrOSr5C2Xkcxpe/Ar7Ha67TD3QlwNu1DvWfY+Ziurz+iJiYw/3Us3pjg87RiZ/65nfo0W8L5oGKpFqqC7/b56pgUoe8xeyksAn3CVHnKx0VnsPntl9loG6oIZntFVQ2+TKu1V9v5TlugU6p/ZBGH8qPthTjDi8B3E6eqBp0FXof5jlcIzfH6oGtNGx9LsUCGq4LZtOcTtADpIsnXosQ4OsXYUIEtlORPBmseddRGj4mQlGyBirrVrcDi/OyUSeT3jRG0h678vqwoCmT82okPYWcGcrQzJxiOxsrTEh4L1jSOSi0s7EiF/s9Sn+QWezyD8h1qgmJYltUQIHBvsNJs0JDc//AanSmMmTIwKTJtzvIYRuDnh267XX0Gg0OQDqcfJCs0rJ9YrYM4UEEBD19qWOxNn1SUh1FCZ+ONEZWyfSSm9b/m0vxNct9smtf35ZnRhbNXOzpsHNXP/Ty2c3J2XUrcW7Q5NMAh4gGRpKQwrvFWoX2OGtwm2FWpCsj+dVhy7u1codabbOxfmGXlaxu6XWuMn2wdzPXRLhUuFw4ki/xL8FDORCEaPlP+QTQlK8wAadhWifrjzGFKFlkFZE20s62O/G5xFKd4ghxutgi5sRYzPrn+jecF8+Kf0NUSB7SgziRfcjLyHnEjXyL/IEKUR0agRJptPzfywSLV4LhNFBA9mcKl62ED6vo2bW7OgwfejsYOZcX99hblEzqqbstggv2b26CzPX/wOWfDhVLacjbIlH717ZpJaTJN5DZ7hQX/RKRtkctdhrGLtWibdfqbwVN7UtQyBzRg+YkdsMaFBeDlKf3D/bm46qxMHMxAY0pQpZWdRjDpCX6L9zGNaICVwpPatDUOk/vpko9oyUySCWeWAEeSaCqEd+aqYQGUqwpoRVY6no1iQjeYKtbDTtvNfoFrULxEkTz9lLsNtizF66gV5DKj0TIX8ddpmvEbMGRPIyT7Wm70yjGjWwJ0QZ8l2wZIhBLyUgK7KKb6zgZcy68Qw2JQjlij1IsyHv0eA7W1c7BzSO06NgRegIejKeAfEg/FayoJzbKf/K+RNcr8PNwGGC8JcJb9b+5GFDuHFr5rDjp4DQM8wTykwF/gHemlqrxKaOlluBCM7LUcVIHuWBX9k/FeQBpkzg/XZaa3phyltAhWkB/ymtZiV7FQZTsIb+pefJg2PcQ83omvqeeEELSZKN17myO+x8xfgEPl06o2OMJLlwUogiMI615YoaMAQMks+/apZybj30PGy+iHDww1U15FXcrsiJsB226wi/4um27lcz2MF6a8bBt6uwX+DiDc1lbseClU6i/Jc5mqVVK6TiqLUdZnUXyw0N7JMTe4xMvbSa1KfbjcJu24NyQ8hoPMxo/IKeBkcVMHafItf7sqV6t05iOm5N4D7jvfbP41NZOjqinbFPQLZrAToPZVxWYOo8aGJaGvZjfCo3HPgjumdI5nT9aFbQ3BcYsqJxPfRkiFzA+Y+eLLg7Dl+GTCXibP01YaXVq1fOkcmHsju31tIr6rlmXDrrmX8AUbOJ/dG+NRdxnmBxzdccHBiMnc5yq8jHewJQbElGStVRbR6TDfr7neQkER/SrX3EWxuVVXjNEOg0MRRNjmkho8ds7K2F5VgCt5XoQApxXDUQJzcJHxHoAoO56JJgdLUA0tDq3fGeTnmzcJ5q1z/XTvtcex12iUsi4Gm9OeMaYDD8sIxY054sCB1NxTcw3JLy1jfL3srqYIiRAbHpUKg52O4xIial/20YM3NAvcMqlRU9vYeqoIrXZQkY5u5m++KRHwId4lZnpUMk+y5/diOw+tv4b0DJ1XZXKG2vFNpLd2AnCtES9oNhMzeeJnv/iW2sNt2abacQGsS6VEqrLlKVYou3ye/KGBW5vShEklbu8m0KQdRrInYmBEd1tStrgtoICETSywwSKaUmY0d7PmdDOeKJ5LEu+JIYpS8dTJe9dokm1fGwug4IvchISFBmtnJcn28ADiHIOjpKzfLI0WW3+LoSlk2kqkTqQcl0b/YE/NxlizgLCZk43k+haaHGOoXbzKah2H4+sJKnyhF5aKZJrSUli8VQqBx+0pQ42L0myKkmFEU5IknG2h/CObOrzkUm8QESY5RpoviQJcAo3lAHRjkNPYmRjmOTgwAruuxksRuR7zUhHJsYpJm/5PrjTmCKBdXzbtMTSk0KDmKg/4WXYXiE1mh/ykG/cIFXduOVXXdgAoTUIvLhfoluX2IUXK26azHj2P9Z3rnR5G2DD9d8yP/Y2sH3G+tBTb8GIlWo75fBrTwo6KoGs5zHO+vpK9DvRCE7Ec0RXNNT0DKsPde2mZ0Ij8FgDTMZZrhN60oJeA2m/cySMZ5kTNUyW8g1N86JCcmgf0kQPgzJtUPKxFKiU2m1+lVzY+xBP9fB4v383FLRDtfTerWAMM76vJHGQ7shZ2B9VVUWTnnEq5s3OXrMFl1yeOMfql4xa9GflTZkFDnczr+41U3iD/cxNXalhE78GM53lJg94jHf5cYDc30+riIhWpBghcVm0qzVlUxFFtFiuqKRrzSob+ldaXhhjnZj2+yKnMvrkf7bF2F1dxKHLrbxk8drlZxqgp3aM6Jo/bTrs7G8zDkZwhNziRZdedMUNN9lbotE0d855McQ17X/jOBq6X2qtCUf66BcO6W6mNL2IDgw2U9+RATuKggtA6KSx2UF6KBtYITkuT7c82aWmEj6Y4mtLjk4XjcCl0nSiKMnYeUouY5kRf4fxABnxLRo2mne6WbkAQOXqfPJtuEYjDcgnilNDPL/WUTowxY2LACd1Ep5uavqwjw7gDkEXF+cchaGqShXuwNH7Dg03KJsFAfrtwHRRDAo2fIas0TjssJ82dnziblp109yXPath9vyOauFHTzDvt5Tz01zXpLL+eIDp2rT9Xs1nRus6sUWpTo6zsNJfvUcxeEDHNWymBZ4Rbu46MS4+bpTMyB91RNTDAkYiFuQGzTBupJph/+TdjmGACsA8ShOup7GNtFllc7nWXStDC+fCGuT1FqHsd2HK/iXrb4mk4PYFCla3HpcEIJMK/WAY900TC3Cy8nDpkw1cEW+3Tci9DPs+GgHTOECoqviaLqKWb+VdZBAaPCRbSncqTdAWqW/jdpt72OtrdfK97bIG7493364GtCAw4dunYlB9rv+KjbqFVUOVMKau750IXRyrGptQvgvwqFYJfpPj8icqOebgdjYjjPjQtgmMRj/WgcD6YRreJa1aC0Kno1GvexkDK/3ORjHLDvZzmus8xpt8zO94hCt9zq8mIeGD3wFmTpQvT4YVzx05zLBLc8NMfuE4vj0+0rJJrjPi4VG5hQOo7vagtCrL8B5tmzByq8d7QHtqPozGtBvLzo7h8/U3N/+f5QVr7OIQV7nP83zO/xgFILDw6an5X17lMLyIVpRPYV/t8r6srLbuH9fYigab4qAxh00aNmonl3SLHdruFvEipLVU0WV8JrXdKyFXaEdWMXpvBxE5RSFagwR++jgmVuMchWxqFVn0mPwjWLmgtLUuRV08vH3ESDLOgCoRHWAGN66iYiY3fWWNlq9lOoXpWh5qMIADecovkml4RONMkjzTLai5nQuU7NWlXhNnApN8henaLuN7yPujGs+tjL0PLuerjd+MBopqvmaUqvLuB9OkYASONd6y5NHQx8srLbMENXI7JiwenNtOq7kMExYX2c4ydCTVkyDAumUy+B5YhQQEZNtAIFypTmVhoAMwfDkGmK0z4oJjBbi7OO5cwXJIxjsTsxSvWnsZZRIDcKb2ITNCgiaXydQ4/+0Fx+yNAzxKvY++OmGtNHYtsuOvy46CmEmPti6TqSqxx8ionm5WE4PAjnFe0dAyO+J7Pv10tLBthJftFNIf3YtltnFUtOodxb9opSF8ohg5NFuRgaTwdrVTeRSkKs22uaisqO0WFTXDbdBkpzj81EYdc/gcnh2v831jTYOA3L0KdE6JCQhl1phnmsoZNhNOGwxSPRqE6o9LVwQ2hNcrBdGcuPFV5FRQjJoLIOvuDgqgN7c5oep6ZtfLFIrfvtUz3JoWVFbLB1Xm79AWiDioZqgGvd0IC26rajKaD4BcEDnl8Is1vgdgnhRrH+9a6RJlYfbTAA2lo+2GigqJ+Mg9tyugrDU/xhddVRDMLrDZKCsBO2t18afpZBN8k1hTanJSxHnHspA2vbrtZ4QmZjXVOoSGba3cR5g76jn0LAOjOVMBErgL0lQROGp8gy2kMm4M0BbfjTDYxyZIbTnHJz3YNsW7FDhZxLngpuZrowUASAv6qmOp7i4AKrtGL2sw5prIkmNKqvPga6mSv7sgU+jhvr0gk/iU7y/4OJoA+y7YlZAqMdr5IDB+27T4sSeGOAFTpiK0sOe0rEMyzhqf0RWZD28GAAzDjQtWWSr4yQa6Y2lVyA0sg+wYgWEbI5sNc2AWh2xX0Mj++FKihPOGF1j+UTBEy0eXhLrpDcyY1n/wpK4iTO5f3YL+f4+QOpqRgwOGFB97M2ireGBQgyCghBZWOBBAGHE08cKHfvPcOPOm88sQVk8jrXSVtbGzzRm3YztzMpkkOI+dF7d+ha5sASugTvxOK7VRm7dNe3e3/8K/9e99BY2f978Jo6LqEFjq8lRnuEtksIbN5JGfgAmaUG5wi3s8ZI0NtnjMEyrUqMN4iqRJh2f06LNkx5lbhIsPPPPKJ43OZD1ENyxuGStZzfo2tb297L/My7sqq/b8XtXrv7cedUyqaWaCJRtusDzxbQyNzVk5hf0khhtlvD32OevGgydv9H3w1T9nTtyu1JssNjevR3FUHFDAI4IhoYUedngQQhQJtPGmyWjTMwN1v2RhVRQ010lG//Y4/dbbmZPOWqZZ4Hxx3t3tAkqwxGvML3VnG7VpW8r2dm7VwUuYl5CYVKUpb3WH+8SmMuKHVoXbX2fQNSVGbGzTxWwcsebQZpin135Q/3YLxnUw2LKGG2kDm9nN3ku/PCuxiAcKWteOxw6+10rTq7++WRdj3sZB591tvHpvyLwz4Y0PAq2x8/BcoAD5T/LL8kt0eChL/X/qiTUiDawJ1Ag0fA1Pww15Wf2x+iP1TbVbvUHdoq5TU+pydbE6V52lDlczVKdVp1QnVRtVG1S9KkQlVsEqSCVUBit1X0fr311q00rWxP+3Mrygb9fr2ta1/funR2uo8uqEfyRFQsK5M6dGXnrhxB9+98yeXUODBvTr0a1ThzYtmjVpCFtVKFemWKF8eXJkyZQuTYokiRJEiQyZMClUq4WiuAClls/mRMlUvySSkZdVvfhvQobAYqc8XjKVr/FfI6byCpQq74CByo94vvgOMOUP8VbRV2Cg/AcYgPL7jfoRzC/Hf/Fi1u+xW37lPyVlz+TTLPt6eEn7Tdrvgh9ymTBPMM8dGp6BLq07aVhoUEArsqZ3rirAW8gJYVl7uS5uy1bofcK88ve9mPyEpP6Df4nLxGIkiLlYiM0xiURG0euDjzlihOvxng5PtXqQysNPTTkjBvwQupzpY6cfikHZ/ag3mq1+2DAt24kOAybMWLDhJkyMOChFyjRoM2TOijVb9ty48xEgSIgU6TJkypIjX4FCpcpUaNCkWYtuvZasWrfn0Kkb9xKlSrKg2IlbJRLw0LNNRpFK+ly9oc5LPRMAK9boquLImQMnVKhx4iJCFgQMXKgw4SJEmXPkmpxjy6KJujABaNCAVph+n+x4R8uYTg8mVds37kCXOsPQfXgJ2rQlTYxINviAxIoTb8q0GVfu7BoSTMUsem0UCGGH0M7YJQ9IjZ49bs2ru7wYiiqjdWmMMcRMTMdUBJedYjZaWHwBwwDFTyUDIIcyrEqJ9ShhDByCgsOcFU0MQxxPDKc0lE2xRGkon2KR0lCh49zN1K2coqKCRKJZRUWiqqppWlhedybosbKw4xDiISB+ra8wCqLENSRoamnz0vEOn2CQa4r+CKU3aMhgzLjR5Dx/HneWt+O/yiSSZfjKl++nzJj/TLMqHRYso7dtD7Njp9jjX8SCdrn8ZddJ8Os3zsOkGR9nnndqECv2xUEwPDRC0QFLUeBYq1OPvp2XXxt50ND9UkIIFwDZsucueIFQJy6AoTEnp3gPIi4LhrBTsjpGrPyF6TFvctcSNsh48/ZWt24WxmMiEtpPBw78duTInzmxhIwuYca1p+AM45ZbX0hPoGJLz9QdLxLLMONz0YQGK0vU1a1pfZ12spsBezjZ8k71mh284TvXxg/GTCAeYSao6Fdpzf6S2MLI2crWqyCoCgJQCRJEVahQCNFiqIkTR12SJBpSpdKULp2WTJm0ZcumI1ceXQUK6CtRxkCFCsaqVTNRq5apBg3MNGtlrl07K526WOs1wNZwjEYC/xkjiSOXiRUnTFvibMU6b5t2+DtwIMCxE4HOnQt26VKIGzdC3XsQ5smTCK8+i/TVN9F++inWH3/EzT8eEv+8olw0JMDFIRkXcfUDJsHIVaLJtSRVCJAi5T1p0nTIkOFJNpSCDA+cRC1X5aUHKlSQUqUqDwIC/6iB5xV59JPMluJqsJTDkCGjL5qojanCjwkThEyZYmUW9kHWufFyON4sZ/Dho48vX3b8+Okffx6gPG/0lxlgPHj44sUrm0SoBDmDoHa+7gvE63W4PwSYhN8kSfk30ragQcZ7WCAgCMiRQwMKio48eQxgFDFRooQNHBw3ZcqEqVAhRpUqcQgIUGrUKEJCUqZOncYnBW2aNBnSosWcNh1WdOmypUePPX0G3Bgy5MOIkQDGjAUxYSKEKVMpzFhKZ8VKDmu28tmxV8qBgwqOHDVw4qKJK1fd3Ljp5c7dEg8eVnnytM6Llz3evB3y4eOUL183/Pi5V6WKy9yT4OBttPyCK1fzUqUyU63aiGbNRk2YIG/JEm8rViRatSrVvn01Tp3acOdOknv3Fnz1Fa1ffin2228n/vjj1l9/lfjnn4T5T4ItDKc0AzbsC4T+QCBsgkLZA4NxPxbrMRzOfni84wkEqxCJdiORnEIme4ZCcTCValU63Y8Mhp9ZLHz8HBUqpujRsxQggK5AgaqECIUnXDhUUaKoihHDUaxYzuLEcRAvnpM8+agUKMSpSBERxYrJKlEColQpmDJl4MpVCVWtWpQaNebUqnWkTp1r9erJadDgWKNGy5o0idasmagWLS60ajWhTRugdu0GdegwMJ00R6aLBCaf7ibXPdStT/r0yTVo0I4hQ94ZNkzLiBFjRo3q7DEKD8aNmzRhQnVPUtifKZpcT1PFgRkzusyaVWfevGELFqBbtCjZkiW8li0TtGLVpnXr0mzYEGPTpkjbtinZs8fGvn18jhwBOXYq1pkLUy5dunLt2p0bN3bdujXkyZNAL14Ee/VKxWefzfriC3pffdXmm28UfPedkB9+YJ8/JBY5HjMTNuwMhF5BIByERBqLQjkJjbYrBuM5EslULtd0Hs88gcBsodBckdh8icQ0qdQMmcwiudwshcIcpdLMaen4eLqjiqjXC0ajjMkkPQsblmCzWdoHFUv1iSroM1Usc3Ehrq6yfaMKmycpLGZmvj5Exz/+8WZ83g+y7PE/g+9YPSkY/5dfnlLlNzB/tYImr3I+f/LPwqchFw8MgBVcJyVGF2OeMYzIu4iHJQ4iB39ACJhNMopkPgd3omo9GBzqrYLfuJD5EY4DMZJFf0RxptKUoBcwByroBTFBpOMLEzkDDFm7RNFp3NWgvggSDxEgqGtcg45+hr2RBCDoxTD0jFWkKoA/sGflF9oFaeUwO5bQ6spnaq2RlwEV/w/grWxW+UavbY9Z7PJqwXswSERhBDYMQgNSqgzd5YRBCMHuTsAc4W0hOw0/xDpdKhu5mLbJ35toEQACNnQkiu8W+6fM5yY5MC9tEs/hxR5lkDHAPIJVXGFi9DVKSsb3Co384UQ68OAcBP5EWvwYQtIUA49qYj+BsCbAIHzvDDKWiEvxv+2StLawfladi7fDw0Tkyt4XsLQRAni0a4c0ajF0JRjQQiM4pIjzQnpfoJJjIjvkCwMezrHXL9kMzCTi+BDEkcDFk5vIISR0tKA+Qp2G/aYNr1EkaL3aSOE+2F5E7Q1DAaV4Sj/T4kqpa0+4IjPbaqSIB3XJTbokAwsaSkepPaIK8uDOZgxeJX35kVy0MKFeUkTBXeB5sv15pZzzuowLGUI/ZMjGzabp2+j4WvFOEUuIL6GY9nYXl5cUGNw3g5lk0p+NIPZIdoYCbA1YUQ12P3eJwICe9/MWPIC9SNx6ruATYn3C5KVbk11+0gv5h4bRNOmDO0NikyCWv2FI9DD2koOMiOcZY/yuUA4vkFBc501c8LLvZTgZ4O0pdN5Z+EeodvdFkDdy88LEIYkUb8mEhYPbmPEHgkmRdlyxUyZyj8ZN2jCSRRUdw7HUlbB6xScZ4/eXGkJKtECkupqtywRUdPAaML2MA0sEMcEM4Y/mOnIeYLGLXMb33AOj824UI74u4EpeCBTgbeAhtDF1T8HADMO34nqUGrLfUsyKxo2OnKAVutvrz3ez1EwmBH+OelBfbyYXoKn0O+wuWefvbgIggy+YvIsCnZucue+BdR6Jyez+Vi/oHuMYKYOfKMeolo59e0prUvqLJ2AlSKSkzARHZS8gp5sz2cAqRfvurorBA3sJWTjoFEqicA+KTE/h6iJX3TDV3BJT2lN/1N77/Z/Bfadsao3y++7oTS2A2S0SgBw3sjgbIhGgzyN+ALqraJYIgwdJYRlOzbtO1Ba118qdGo4sVa4PpaBC1ZXWLnFrwE6PEAezFIk2qLZ8gWnD0idOWS031+tzCIDmcGvJwB1hFO60J1xLds67c9sRyp1/6HnDa8rBntuIyn+33I3w688wpNmygiZMVpQER0ZWUxVtNveB64Y4tPtYytQwSgZ5JTfLcPOYlt8tAiGsjR3PNqkSDbCJOL8JKSPpiRgZSchDtQtO80YzaHn12Lmsm3UwCJR9DCnCMqHfbEQmDyi2tZ3CLyNCOt3LR12BLr33FT2lhkWwllTZH4mCNbYSizeRhhiQhDt30jpbNjby52ayo/rlFObSwE2sbGApYUfDXC93r3NJOeyaksvMF25VcNfsc26+byz7GLLXRPw76+0Dwm/BMr6+Hd9QApN0Jc1IkzMxImnFOLZSyEsz8btqG/uhI1NEERPRlproEtolt0iOgmZZwfsR2nE6uQBrUwHAh3qCLu/KMw1QU3gjDOidXkPOUl+WhbKoD/jeCXBZZ8zk7FLNJ7soMzo2dGP8gkC23+h0Q0fIQQWSLhMVJZwJYJj/I/oRZOamZDAQw9KR69HNyNJGvBqMIC0KWWwfE3M/OtvRBwVaI6WjI7bRwVg65GLBLCiEtPi9Kq6d7+GVVcQLGREunHKiNMsrNDs7It2GkpXZ/DdwJ4oQd1yKgy0F53ozVswtNaOhg3cPncqK13lu1vIjgkONJcuekkM3vav7u60HpKxN+AiulpdpZY7VTqrCBG73cKxGgTvG6baJfYEuhWEVpeNUP38EoF3bqFLUO2hNg3AoBmH27lLOSMlw7K6UtWCEkdZKMRb6W2Ya7nUPUbB48iLyIDyGu8UcPSCxBt0v/dhm3kTkAWLJ3a3s3XNkb+lnySJeYOYKijPsAoySHWNEpB7CXaxb13RdxBGlLf6tfvfisodwAA45w0WE5cBcEUPbckhLXyCWWHOUHFknOBJexETTYyfNITEV99LaYePiXeJILnmAetxUyZkT8uRsuUvI6EFuIlJviJzyvQ+reJ5zFDlxHYednIwVcber4NEMtLpaq7mjGj+KEB95oQexNCKU5rLBjapz1rxdyWxXCRBtFvba0Pa4pHHAzJ0CGzihXKw6MwcalO5fnOmT5UmMk9oYu/BjS5cf3NGk8gg+nEiBGY2apo5JyMzXq3iBWlOoEkOwlGWWlJiKG5BLQgdaiU9OwFNrzxFKKuAN9hXYymHywX3bYxfsDuywOStafOQ2PL/os7qrW27P94pnoDYX1so40KMwkqGIlZmEQNfa2ep7bkHtLJWrd/ft4uXgtNtcEw4JHX01bL9lDmg3lci4NeWfDkM3LRHDjCHP0HLNWRj08iE7L7uPNfRqHLr84lUowi9Rly5LSkOnqoFthlrr4BEaByTEYywe3bpXqrz67x5ipsOBZGzu3bhHIoBKxbIB/s6cWau7T2Q04pvDoYKqkBdYEILXnaD7yZ2KUzQdUFV1OzE35dwh9cdRlxw1V+CrwyqakhAMZwRBtklLQOvpVezX79gL5VfGa67H9To9raNGsCJ+Jk4xYIuVl44Nt3I51pzNyD79tNVdfcwjhVkWUZYFGRQzt+ydE+c9eWuiZVFg2mJKQv2dL6b/shqAdHqeS34ENIO2A1noKcNtOEE6hlw+AUmOnCQaX/jTb/EhjGNEgSAZZcHmQT559Tn0fnx3YYyuPXiUaOvuoDG8aCChu8GV6cgLh65+STQ6HrXexJqBulUIbyNGX6zjcMC+Q92/LunHxFPVWnMVG6TlfaHYEaAboZiiobHVgRN7ntNa710PQDPUxYCCmG7wTtYZrrahg5YB7jLJ+8/9fJQ/HWfJptsZcY3uIbzYpzBsV9F9bWI4a3wmJkGNR5et9cz8vdyFn3/Y87nTdD22OeH2OqN/DpqIY00qD0HyVlNjrayslThHVPgdDoqxnbwNdBkxfaEXicFW16seLFEqasic9R6fqVXwmrTO5e2gdYDWIsGzYoigR5VwdGENEq0r/9o6M41tYFZmhQMzQxHyraPV8HbFU7uCJavb++yp5dhRWgqvWXykobZRgKif0m0Rb3N/9iUsdMbAKqyt+TmZb9Wiy8dCOOaq+a4YmtZWMCN7OCK2n9IPok6xC8ssFx6JFjHjEg8B9WnxqfFZxFV0ULmmRXiYrrOqwjMVuFEvBwIGHUsJRe7C93iyMJ2ckLuedCuhqn0+W6PgYrs7xCT5GYu0iZIBuACvpkm3zVxqk1GxsIWlkQnA5RqXqVix3SbPFlE+GG+qZmZXduApVD/yodPq3oZMPnQ4xXHTtVhztENzvhfggZJgCSOTft8FrOmYi1Jxsq1omS2zjhlj9yw5Y5PivNXDi7icufowzxzH7rTUVfrXrFVvI2QETu1ca+ULlqeYTiIT+evng5UyNHROIDfeQb7lz42JN2sYptxfwL6WBqs9Z2jDkMiJcV7vG5xi8XlGMZsy5e4xEobPwG+gf7H/JAUuoiH3+yC9a74Ac3CMSYYwrs7Zv/kqkA4xgmrf0PCTT0qUEe0/hzkGYMWtNtm2Pxdn6KLYFt4ekFG/C9oroaFf+WkcY4RYb5QJ8xLZMv72XWTyvuoLoCKLPNHIQVNMbiF4OuX50ccJ/TQ4fNmkTFrNxaxXXYUfbmv48+LdrBr6Hg0IVOWGNixSXZz5Y7ykvr2qXoe5ZXz6uW0173CqtLE5/tv9U6B0OvXcmj3rNP2qBtvz8ZnU/OUkq1zcIRdFuNwTnC7Pnh5vKf4hvKU0/uq/+ecas/t1+LHFVblky73tKPqBMXEzHHyRwu6eO21Jevg8aR3nYfT30ewZcR3eG98SvlEgf7TvPQ6LZEiXt/YLYNlrjldJ0IJtRMvyFfkoLrL+0eHDz81eXO4lSju47GscRG7xTwqfrdv4cjwG3LHkX/x372jnDTymvnkc9vrRoI/fZQTU3a158kuqfck+3n1I9NTPVNr4Xc7qtQ+r9wPPnqZSyuS2d6QFbTh7i0E3lt5Ku14vEeWrSdbu7iF3Dx/rUg/Ez2jo/gv+7R25iw9tSo7idgqYtYgGgDcB/PT7qcZ7hDinYsgIHdR/0ENNLe2etlxOc3zGgwvc44e7nzdaIvuCD+4/mmMCafj5WLSkaee4ojv/6gPTGc4m5/GOCDP7mJ2F1f3MtYV2ZNo5FbJ+5h4JyY32rLlL4O19dr+P/fmFswyP6PHefMj5C5ueJf3kQ/nxf9Uovuz0x4iZ4U7E7SNT61/m1FPwjB5u3oTxv26y3Pd+ph5wBtLLGCeW0Rg11Qjfd40HkYs8edM0+jai0Xh547uZ3eM5Fjo0XWVd252fg6s6JipFMkqMPBOYEC7rWE3+zJID8/tMGMdzJFAc//cUGuEiK0nayAnzL6dxk4FASDAByRYXHSnnjBm1gUJsYVMmRrNTaAPueChc+vnArAI4EBOlIgM5bjz2O5XcYr7sCTq3Z25k5O11W8lFsoRLXoOvnhSDiRrDx8CQJEO0C1SCNXdwUEZeFQFlCcewAplz4GQob2kftkEqfdRUAZwMOniUaihAbqiglUULFoaxU6GaugdkDt+8I915oN58mzBvd5D/0DC29ezzxi/Nd/GpNReHHRjlCMl232pnd19bh5AUQvD6YsGx1q2di0tJ30aGrzCZCYw8rGiM7o+AmU0UVEF5BF63gseQfBiC4zT8ppjYsinFNhB+HrGQ1GWt3ADaYFjoA8p8NfupgVjmLINyvhgC7WSdi2H1aprGlfYkKusytXLc1DdlZKp6Q9kW5YWWFGQ92gYRHEihHRCXBuDMtmr/672fIPpuu9CBGJ2VTKytIsa3Mu90zV0jKvlncsnkwdD08HhUgSR9z3E4IKpxgMiQlAdtUmnTFlR9f6SZirttW4tc6lHveaPBpEIWNghRMQ6ygEo2ZS8/8IZY9Pd4uBcs4jmGEOWX/lcaeoN8z53KH2SMg9pIRxcwE47iKabEFJmyTQXPaxxkHBBXNiGYAwJhpEUop3P2Z5hf5ZXKEE5PBM1aQ64tRC1zhuYLSV1iSMUnGIVqcyJDBjE8p4uuTTa090DKJBFZFIQtJYp7TygNvGFFSiAX/A2zQRSZB8Dbp27C/beH2/Xv0G9h1jCsW8U03QTb62AgDMYieVgCKj7qwhKdPhgfHZ2MPTDKy09xbemw9gyadi72tq8a/RyAEbL1B1HLOLE7Sy78vCTlNsVZW4yQeEseY47Y+hB4ZYzRguxCa1ADC3TYpJHN4ypTlYqPfZZtH+F0iC4Q53ZGXYzcd6AWBi0i+Op717zE4nENbeKVEUlEAsaTjehBdBGmyoxz7tKDJd3UNywagkL4ZbzObCC5o8HC56JoxcXH6ssbIJ+e1GMI+nnIR3kADa5/GmAERCSlixJZpPFjA8YujmmlXxt9BCboCUZ0zxCiAgMvnvCg2VrbtWvclPKfMeGME+YBUlfU/xooilQ2hhbPcPfjDEumcGfaEqC1MFA2pvA50uAYxUGA1HbBvZzb0JzESO3KbMOOrcpMR/IRVLYg5AvzdLkxB6uSkD3X1HwsmCr23B1BCLD6sTnqCDhlnDElqoM6Mi8boIQ889iQx7kTtO0RSv4RxpLbEoP3Sq3Lr0g3yLmtcWTg6wv1Q4yKOrOUL7HqFp1TkkonhSUApjGXDg6DCLqLE5PpdyX6z0aYH5D86Xdx6166cw2tR9mLV8z3B8QbF3AoO8X1m/SbVJ/9qVwYkpsKnBFONQGqSA9qqq95GSy1QB4Y2IPl40r48RE4hfyeGyNZchznnDi9DdeOHac5PP5Ew9IynpLZfidhxkipxbrPAssHub280XBYvNeDttz1zJuF9dzmPCpytsoBa97gydxa9goG052DsMb5bEFLJIt5cKQcL/rEOVGtqbv+Hau6ujTpZGSelScePzvSxy4pvtyjCbGkfW4xEEoiKHMlmBK4aCmnJUF8ZRdd+LHbs7aq5ayNzNBpJ5UCQ9CF8zYRlv4ZEkEoGIFBQBC8UB4YnoBuC4oKBbtSXbjZ848Q4p3h4hFXjsKxay1cOALR8b5BTjtw5JuMoBulGZyEoJIMOiMYBxCbnf/5UAi0/dMROygGOiMOKovIpdbHqJF4PEYmYRHmTA1BNqWYC5SdSYR+Eo4BoL0BXKIH+k6z/DFi9C5iWFHL6X/L16FkjnNTuok5AEt1jk2LPm93aBxc2C0Vw3KPRFQQ1TWDCin3SoHXj7lCULMNiOBfqOMFed+N2Glv9aFtAjGfKPmkmzgGDlNrYdD6vG04F3uSwcU7OViXkEVrrKmMewoe3dV6dQBoh7Lf0gyAtzKjfYYcFYHZ1P55PeCDJq9u0jp3vkE3GkaqqSHOkMTrQ75/+6Knknyzs3vDfbw3XMgxytnYc/uFYRHG8+ZAfKPZmefw2eez7RM2H3VbJREjg0lVujluTK4wT+L3R3xks/LxhaH5vfs2OZOfFe6Yo3ymHkK0ROFOwK3vrDUKyCf+Pz4ouUpQjtwZs37UARQ1YHBOp4AaUkXF4lWoJ8lvWZ0IgF4tNBQbvYGdbwFmyAgK9CGpDIFLAq/gXsvLRvDaKTwAt04XjUESQW27ZDiYzTcBZFebbbiOExbfnZ3CFqiZi97jK2l21c3QcVZ84t6mYy9bsnO1ruev7pOMZClJJhrIK7h9whKS5VSF282yV4HHJzyvaVLzR3jixzuYHdO0plm/SMxGyS2a5EpAi2wzvIn4KfyEa2p461yjqD2zYD5FN+WeWBlOPsKH7/2e5WEfxSBtYzfYlN/jHcO/IS/UMnkXMN/+pDkwzsXlEGrPvbkyAc8AjPIEEgCv7clS7tYDXTJtPRShAS0p+L2IgSSmIwoDZe91UHaQP6MIXvH5tJAHkFndPlPZ96Q4zxerik9ezRnbCadenI8Z/6ydtDSR0LwTIwxkTS8G1zPnnBMIF3QdWSFQaQ7Bs5kxZ+BZ02M6PD6BbKwx1pgDv6HvJtblPRcWd92LHrJWeJ0sKsUkZN4SgEFM0C/XawF19HnCszCInJvkza2oRx6z1uzfjQU6DBw0cBPFP4wZ15ejX/k5he4j/1lm43CanOva+fCS1PgqEwS3jCxKwmlHr87HhVCen3FMWjOxY46YS11ot6fFwVdwMVQ9+nKcfWKUSzHxKaLQhMud8Vt0JPYXCAMyTQ2W5jF5eTHliASZ+jkga4/Z0kh7zkUrnREafrr2RH3vKfhDvuiWChXG64+Vzu4jE6vPQUsXaGnsPnAVcjfpy7dN00LXTIxgKYJQkWFotT9EZo0z9en8E+bD7uXOHLBkNDUfY20Bx1cvBDUsdfz6B1x73QTR5gg5gJDp5OeaEbUrRZ+8/YLhabfR4GOmbAyBF4ci1rac4akZoSOPMy7GBBn+3gTjCR54UIJAUAok6EA9kNv381nDZYcojk4LZpYcGEddW17pPtI5IKIBsphb1GG7Wa6lIGR4DmGBI3AiX2LWgWuuGpgF4leHsA3iOQE9IIxQ4QNeAOgKg/slmtTOBh2cjmO+hH2SMMbAvJmw7MGClfbJ9mO1GIbq6+9FyNucUH9TcI8W+DAzhGjnWohG0wPtfBj0Ohdr5J7cswq3uNSunak4+OAlVFK9CEoyKaz6gDCjQSpU4WcSOChRzHEgRE7ZunthDEgchIHgzJOEvpSROeWB822kisF8gRxpHyHeq+2jTpTKOx48dtbXXO2BAZPL8GyUAzV9eiQ/TfpdOKjIjIg36zHMNWtZysFSwiE2zLua3V0lZOUGmwxR2X0xGwRc5+RqAX/E0F1pzjkVHdUDq6WuqJ9O1oTR5gmXe0rrEjUIQQz7ADDxuDBRna/2JLvcICfyqPD/dKuLUzXRQ0xsv8eRDdN7JTZMTsDBm7zINvmTGFCyZm2aZ8Jsuc0sC45QPI3hOA9PYW8tqS3YB4Er8YzXKabSisnQaoLeA2j0QP09kMa0xY4Y19Eq/XYKlzuNKs0gCbRyTHgKTPAZZOiuYEaZE/ZhwmcfarwUJhRIXHjW4012b5MTCjv0LVGEzXwKOcgoHUR+LJrwaE1UgxYzFcLZ5G1DLhqOx2CKqEih1vKkHxHiV2jKTpWkWNKz0XeB7yYb3musewGo1NhI+GEWKmDX6UZzXGWyuP6BTpcgEuK2gh0tE3TiNMQE9dNesPOC4vlNASghNXy/WuFo2Wp5Ae1aS0cJpZkeg9eZ1pcsycaCoaWoqmDeBOYyvPxjgCv8pA9KscLIDQdLFXl59UQZ8Ov5NZn2wh1f3/mYUBKFLS8CR8pcx1fTudjbjzVXVlQ5x3tJWcP5PmGC9m8kH1MDYAmPSI0DY5WqUTU0ycOi2MlswGFGemHSwGB+M2EN6N0RiLRhSS4mqUcLMBCB9AnixQzzfsKtNS8NDtD0uIa9fkkGFCpfQwY0F8LcCKtPRCOPOMJEoknascwjSlFdJt8VEByBVbcSYj7QjZTvmI8yfiUsuK4KNQhGd4s9pt60RfQg5SZ+DuWql1Kx9Bh2L5TvQ69GmmDeYrq/4jnuUC8ZDR+myQZWP0YUC//5InC9QAEv+cWUffYyEhYvRDdX8pCwPDDvzUjPQXq7daVlHRvthTXHzO4lGn12gjhSiqs8FfJwYK6P/1cUbdD7aNKbEbuFJa2A3BdBgmOynxgUnFNTfDQoMGbcQi5JE4hRrYNlr/TqYm01AlRydqTLRKJPir19e1Jlkq0S4elyNzgQDDKC0QJ0ZlIZg7BpNoPOKUVNdQ0WZMRU4dU/0OG9mFy/pNXn9cnUUqaN1FnBEZFoCpvhXxxoPsuUrG0cUMF2cjLR+zQ/D5C4RWPBWabylM7ZsDbTbgN7VxHhzcElsoTVgfh4u+fXGwRuBPAyaqylowpFelEQMqaYYaAvOEdLGEo2Z5mVkgrlYNOKtjUpoELGBJ96Dkq4EodjA3hw/a04fgf+O/ybAnFYE0KvG1FU5PXchxFIkHr1YU7kR4t5BZ0J5jMUh3HR5vGA8zq0lVhcJszOSLWRKVnVwY8PvQedrXHgcnhReylrHlgmoOtZTtTceoZGnh1oQIUdwLROxTOixeaBRjV1o52TxBCDet540sz6fHNTv/AGqQgr2CQYVPBAEXhEGGhayh4zusQCTPsvMhAQEGQ3CBMElQ8HFrAltd7Ns8k4ldXkiqtFK778AuPR9Jzvs8NT0/pxJM0ncPmbO+diEHIbWvQJkzna5bNsQnGEePOeTlqtS8u3pYSPfRv6JQEf73nNdohMO0b3s3+Hf8N8tNS8yLsTbxkFR1QAI/oSs9O8kzda984t2fyArzn3Tn9nQ147N5lxQC4mZq6wfa1DBvYkR7LISyVbhM/+9RDryCG9Q305Da6NgAKqkWbOxwfU/+u5YNhDE7rl2Eo9culv4ZB8lo/4FOh9AM5xgFROhOiGDrkip5DfcB0b9DibsR5aA7cYXd1iZB3yWo9A/7+rjIH/51acsxUqWwFWmRKZaEbUwjwuFdf54Td88DUCY9ozFw8TiBzaJ0GUU/Nl9eaOEVBZoi2gtmp+3M3ULiwDREUCqU9xswzvQuQMZskQ4DV0xbqWfYQLhbPMqIdtmodOdywsNZgDKFju64Nl4i1U2GZTrQjVp4k1ILzBngLnhnlA+Q9wGGkRSZ5H+5aei61agv0/JM8k5DMXL1qWM5u6phjfpl0jYdzM4jjwDSLWYawYCT0yXa3KXEk2CIfzGYPxOUMavkhe/RgJFO5MvwOFrLuEX9GBd9XEFt1ymZHbBmwoWArZETiUu1HG7TGyVnqpxgdLTSm6u9ZH/wza4pI2igm4mlQwJT4Pz8PTOMrHjtMR61ORFVXnd0h8EK/zHgc1VmYyDZHbKnjPCtxBO1MXkzfYUY9ql50bp3BuGx0nTTacG+IAbpesp8SQsNOEzr1VDZ131DWoQym3lnC1weKbSdpPkt+ke1YPqTTYvUrjYah70pWqsKQfiE0YGAb8mfmECxGwlzVMQu6aclMe3h0N2jk4cgeuyIJYZ0D4Y5SR/oykz2Kr7+6IkRJdwWdq071IBXov2kfJ/HAZRBisIogWyHz00Ud0XAVx5PueAzVKuJIZyZcXq0MJXc0+vnUV2CHfdmAMxVsPpQsCqhKrbsGb7+ZzoAUxIGqyo3QIMCW7wqTQx0AHgdPlzJJBpWebK9/GH6fCtyVCYygghBsgChgJT13cUOyV9EfOz0R7zaCcJBG227IbHUuTDaq1EfxwLZoVKppB6k6hyhJ96GPFNOCR75qIc9LhcgkI2NlyEQOfk5QJlyNHgQbyECPt4XB+x0MotcKmxPqsxwbJEMNoy+jvpYZqJo6oiEg6vCzIuMH5rf9XVsHg/50zYTNa7P3KNp/QP1c8QszQMdZHnyLepkdYd2qo3zuufXReeriqUAq5XTNT+EljDzPw1evoYdQvFof9bmdTqNgr1xSFGwCNxSI4L20ykaJh5xtt7cWlavJdEh99k5WVWhN2SXBWM3mIVhCxX4q7bW1y8Vp72s6+RSnfcMPTsF6KgJFx95x1a4NfaiJ8zuF6MJAH+gm0aVP6IKEU9rlyD/2jJlwFZhDhNYicAZsB5zPcjVdo9c95qrfPgUmZ7ar3jCDWWasDkYOlcA1TWihuhHaFsSSvw66CiW9mMVbVt8CG/7/9tbkgIT49NxNR3Ygx7pbi0u3cpRE6xHrJf+8yT95c2KBztRA50jSMdKANaJzIz0JfBxs1FOlR6JEE+hV0JTVFh3V65WG5BYOQQP0HErFSQEYATEFmxPi20PJOPw+rfXJ96CJ6Udi+CrQXzZRtOx2Dr7C6kJVHzW47gAYvQ8JNeTT+S3m+VoyGDqIA2rZY/HZMm5SZsSpOKwhN/68MqVqQDPJqsMNEW9rLDSFABIqyqeLtWxXX77XcltBm0Uj6y2hF7HZWilUbA431toyc+OKrt/9R4BOps262Yah+vTHxzp7Zneua5u1qxvJa4ewZmnd16OxnJ9RaQAHudPzb/mNaLiPvLqg/pDmVk/yKQBosH0Za6SKEvHgBKALYJcg/COUOeF1yJc846NVzQ92iLSk5tYBx9XoYqf2/uDlyjFLj9J8EZWzk2rTNhLp/o03rTDggDSddFtLGHjM5D/D25EZMyI3YnOsZFlOXeBq8qJ5tM2N+AxVH4pKjUUiAaLPt+ggtdkWtGsn2/6W9yfIxYQ2TmsL2EtvtpY7IuaY1e9VPkiEH84D2zoPQ3fWqU1oZxujH8Rd5Cm4Lh1tvbiSH1vqbEYgna7z4LFPBzFYKbEYMN4s4b8yLv7+ZgIr5spIf3QKElhdZ6lJZqg4KOMkWop66zDnFvs53hAyIYbvRXl/wl3TCE+h8dihzYPr26K+rGoK1EUHo9axGV7ZN9wZkkEk6QbaIjL6Wa1qHokSeQpr3Tw4lRZL6IK5OOHU2JACUSR9LDaHJAOvNFoDKjCRyo/jeRhDXQo9p3oKl5bLO6Trpx1gOhV3atsjyS4EvSorBm4rr7RNE+6Xok1GzpjXXli17EQgMqpSum1xSSkdpUw3aF9vM9ONlrr7lnLynP4zLaIuV7KQ9SXYTz6UtPgqDCLWVgEb2MyTdGx1R257ZHTXa4lD4D1iyMehT6P312++QvFo0v1SUhBxxo4ZN6Hyu8HAtNHR9BjKG5urrx9G3Jq0vt/3tyyQQbadY3gRNp32Zmcuv2e/1Q7x73eiGUsFdqqxyzI+wxhq7Q3YL9Xza3YNLxAkf7FAgFjpxvo2Ybcok1dtnb7BuKYhnYrgHsnl3a1mOSF3zNGm4t63P0QIAocSe/TO9YNvP6SFG2oaQhSW9OGLIYrxoYHXlLMxWUK6zgyz3XGoMk9IIY/fTFCjuO/BKDf+1OL62CHxV6ngDLUNWndbHXYUEzGHG4DKMtKgxypDNyZNGrNoNd42SGhzW9ESI8NVps/8ltqm/stxE3NQxBJsLNfjiWYGtgN3SwYmSiwhBF9smRWtKQJnrUQJ4njSRxTmqlaPFM8g76X4MOUSIYJW3tqdXtWPTK4NSijYds91kpgxHguCnINAT5fZWTZcwoAIOyoK73JVzpoEuRhgK83+9E80xh6pIVEE9YC6t90aVJqAjuTb6YIgTfcgErJGVg+E5i+AcybzsdYpflJdv8mb/aaY0NoZgm87FZUptZUWl726ZinLURFBNnvU5USqehtiGstshmGTDDlwosBQJqlMI9lEtbFmDoLgAW7GkwHO4IrNag/jTPaRs481ctlF8aDxuvgdemzjH7MeuRL7yYVgASTmz1prlpU1Q0Rok9H/ZPYoWu0avgvbslaO7sMaDAd6U0Pbuif/Kp7GZVrAmJmR3hiAUVw3NPNP7jUdBi/OlF8VUyXKGIJWIbA85navJxqInZE7fOM46DZj5dednc5O2gNNjIGoqCH5my0EazkMg2Y9f/8pk79fuSfQB46tTjS/z/ekTp73s/t0Jma95f38Kat0vfv4xg9MnU/jGqZLhEXaSq6J+lDI+phLmt83QhjaFSsddasDH0WS5rmAzIZTZVJv6X0k2+/o2NCL4Fjlhd7GO3694y9lDlMyBh5q6oYoZn1WKf3sL6TCJbhoXYub6JXFFwSuv115XyeI428hZ21cFXczaa4bgdYH0i8/Hp8hgu1Ph3g3LxasXVADX/E7GcE1xFc7RWTbADT2W2Ax9MKnPQci9ZnwgRfbsP3rDZg+Mrdom4yD0S5gO4kUx4udZjo0LR5ivxR6sx/Np01c3l9xFsp+/K3Bo4yCOUdMOELxl1gpcN4zBD54fQ2uFSlPqT8DOMXFVIr5m34hnZHmsia0zxXqz54Zuz+mCGKTUQyfFEieKqgl2qzwzvKoNdxVSgyHaDWBmkB9UJKmP5YkoAelnTYuiTJqt6rsKWegqABBtO/pC24/pGpg+nDRJQqHWu/rDgb/j8y53skHr5nugLyqWOQQtdYaEtSnHSFf8PLCRxgbwhIFn4g9av1f7vrBxx1ZlCQeZk4DbHWZOD+rOUxAVlJGq2w7cXWJ4CDMG1KsQqNAdqNEEtTvqpOnQJiX7N2EUqTaY1Vjwx/6uN+xbTv2O1VmXnkVyJimVzO3qXnIBKpcZRC5APQaAmTpHoNi03IiqSB3EahZ7dqHY3mleI4Ci5o4141E2acLGaMDHgAOq/zLpGthZ2IInCzNgYBsbMLDZvfx2vk3QsYwWVHHCRR0hjjFSY5HvTI4kYG7xHtUFkoL1q9Q15xDWixFyVncoyG79ZP0uDXt6ae+0H8Owci/lVREpsgEEWZcHA5R+i15fDUMZn0aXXQMrefob+nJL2U4fzPRoB2N8kQuuAxtz3fqvKZ65lcvcuJllp08dunDn5MFqzTl/lI9N/jXFyRMHLt07fZjvu3U7n715I3siA6AguipezwbfdA6od8FC7CMs3Zgn/vVFQ+l/EVZ019uIJvlaX5P1QfykHELy83rJFwM3Aj5tVdKH/ze+OKAxrFpbPLlGftS9sUuyrBSrBJo0L+gWI0qQG+D2IiJdDySYrZstgQ8QrmyPSohiKK3IENE1hsSRY6Smgoy+JHeIU3WX/iECvYK5QH00beEM4XV0ZJEyIz6I6e0hr1mRUeQZWzfF4Y1xDbkRC1zxhWPhWqIo5zrfV9YURtXdfZeg2U1nYltw+NiZ3BGLDtJR1Y2ZElgeOwYhpkLKWhhJHTeu3aBDfLS1wN5AjM0vvceteivXtqY/3gLjE6RTsba3KTT7csKw4OeMmzTrR/ZdcxItCr0t+sRTzJ7xJRGMK9wTZ9Wf2fpXvrTnFxPb2l85LkmEshzFsELtyTnITQDyAPGZaVsjAO93JkAyybWVxa3wYUE8M8NIGu+yKAS2eN+dMfM0DiOBwdnxta3D9zESwNqLMOLnNSsXzVwQo8JD3aKhTdTqqWNwKlrQqeyx/4v9B9og3VMjIRpL6RRrldouXktMvVKP6jO9iqDSmpHkt8RXbMZqkkgCEeD7FCeHPwNxJ7ZcA3HDs/9NFWd/5b0Iy1tL2DLyPTsaOCBcv59fBrI9Lm1OViZn4G9JVW7nD1OsrPergIH+fxuj0XgdbfuhJRlHMwNppTVAo46FcdBTii6nLNZhQjXmg7JHjqehi2Qs9WhdM8+6yAPCu5c7B6J6Yfc88pNibqyo8jwy7bfHYJ/0hV62LWXNtRNC/Nv1NS7eD4l02jvEY2xJ9199cSU3lm9FMPhV2jUvx0kJRVo9wCTgv2Z+keDyRcjQNwocSuA3Lflioh050Tb8FwvoMNJyTtod1ebDNhpk9Ndhwkx2/LhPuFC3NBiyFneA7CrVNrM2hVNZrZdiLKP2Cchyhud/vI00R8SnzFOEjcolIsePrDEaWiMCQzG/+wekOS6GHqlBiDwMdRwdfSOmKSyGd2anlLKXQOwx+T6/PoA4UBlLbB5xe5j7owjzW1WwYtk3cKrefwSDiprw2xEyFxje51NGnbI8dYt5wmC26cILZIY+PO5USNp1VxCLCZAh7lsI4Xy3XjRk41xy7wzpQBa8oJBDuavGZ/fxITQPUgTY5fMNqFpTLZfG2ASxyEN7nguOar/gSvLKuAcog6NftOzjo8ApW2wkw+HUjRBSWBvIZK+gMdArLtbqLwPkf1JuzUrNeZ+1R01yqPac7/7xXRHiSbOcQ7FxvbW+0JBpivqW3HPHQ11bP+oYjZKBuW/NJ5DUIB1NFQAs+o9Ohrsr5IJWYaXwPIuDn5pSypdBo6nrQL/paxbl//7qXoBn79GO54Az9PlT6CPjRL+ZbczIQEO95gxesVp43Tbe2qlu609/AXweG1zwKz7S9F2sGanxlKQugqkEU6PBWFPuc8OBbLy/gBHh/JHTOPj+2udfhBtUI2oo4AnB9G51EABLJpJPxQV/6WZUC5vROU2Qce2icVNJqLvDAiCPNPyhvvWJGYs7bdPqoWZqVyNm86yJL2lOYXGuLCNnk71LVzmmoDAlvejaeAcAZs6qr+aFVQgQXiyN63v+kCu9iCQFAASmUdfoF4yodshe8rJ3BSOnlCz4SJx2KFTVYOFgQDXJyLCYNljrvMgr0MzS2jagPg91q9B9G1NJ+zkKMEfNROfAsxaXpsBLSASp+TN913f5pmmXNgrJSv2B+ldV+7vaGcMvNBdAF0lybmdu7g433xmWdHy3geh9kWceVGlLRAxZS2+0Cx4LbNd7gc2p97IHCq6y3J5HFG7hWXlez5PXQw3uY6MMX7TBtsWvao0UXOwJCyiVcHpzZeB41oDU/RfLrkpndwl5fs4tEm4jpMMmZy7vG55Cdi1xGctO23eO/TKmrS+L7VyFLjlsgLwMQcWD6anmssZuCgV1V5R0lYLOIPGmqq/Lfvvq/NwycyQew6sJQ3NY9vBzuICoe223ETEitJ/2zTjX/hUwX0V4+0u7+uMyheviP/q1FnOxrw41/4KXXyPnCdZTCsRCY5jw50YWrqLvoR48s7PMdudIjLyxA4jDhW0EDDWPAVDglRNdo/NaRQJ9mkceO4Iw89Bp9QpidmTIMA4NNYaSmUNov63kreu5zRTqOq9DWxzStDnt4ZkHoMQOe2DWda0PpIWmhEgHZdjjKmGmE0gZ+Mt38a/pmYdW+axw5DwCI6+/Txuwqdxn9Nw4UrmP7AsPZ2yNgartOHjd83a4/7ycmwefwPWvVXdq3gOsF7bwevCks0H9x74d1TkgfS4yOzzkqfoaWL7F+1Gg1ZZHXd1Pr3zqZb/rKkL/KyhsN/edrBB0nTeZugoWeXhYblrEzv9npkv4E2BCeIo27kQ5nUVSYPjoEfhv6Lu50ZE7CNxxYaxosyN97tRpdF3QgLGmSrqkQHJytKj/Rh3oHBwjij3THSscfh6ahuFDP0h14ONquTYEQxj5w+HFoxssaL50Tk6xV8322vuXmMofPWnPruuGQTLK9aGTyS0IYTBaxNA2cA8DxuraTzN0srPcJ9MmfYiiDdh5B69FJmr8DrC2DmLYEWM7cEi57jBt4zohXTCRagvXJLEQGZmFhHitKBeJxGtMuquDwikZR580P132jiZnYrij505lZ+bdsk36LBX8jGu8KWRtK1RkwXZkZfGDZhCfuuFO7fsm8KsRUkX+BZcj4tRxxF4Fn0LDHPmOoldfYzr0Gb6N/DaRyqm+BmwFFVQw1xxlniOf+RjGw0xyl17FStuTWdewcrY17DCkU+AnR8cf3WNe78zwF0DGgxM6/+4IjZdNUXeF7A8cLg3aNw6jkWhV5p15Nvay+gzLDe9Hk8m/bqJ9NQPfCdidFzC9oyQ978Yr0v6smItqrXix/lOzcbDvdgHHD+svo23TCifxYQWvzJi6Gh7E3jbRXDn99+JeTNhL45XlKLJP1NIV0YXPqkeTBfR/SjwmQd2u3eVq+yrijUzJh+cMDPvGH/QT04Y6SInKG91yy08FetXTU3HpSMxPFlkd2+xd9a/2QAB5DuD10cJnP2k+SL8n9Gre8ZVJW6tr8giUtiwcykSHFLdP6HhA+HUlvPJmixwT3mKxSgy16nPTMmpsVHbzeVOdE8tlHWYASbpXkHfmZEzEoiiho1k2dgnfiOt3u7SqfR/sW7/y4Lc8yAxmd17wZyaqhIJ3WbV6l9InvQyoDBYiGVTZZDWXWll6SOvr26Z591BQDJ6V9fw4XgkjPUsmXzpxLyJ0LbePB64p+LTtcqGn1rcBn9D136aKxakyyFO7hEXtP0BgiWKQ8mZ34CnMmxDeeZU9MlPc7XdHpQeGY0utfZbzLZmRfDHOxGKpDjLDymUNpyqaINM9FTnKGnBIJSpxKN4NHoEJOWM61jxD9Epic7dI0aSJpV5ipRE8mahQkStAcTfvsftSyjBhyeYD0dgB95CMtSpeCriLSKa7DOy3Q37zih+2kzN+k73tdcB5JRPVYyu436nuSmfwZZqepjMzrikbI/Jq7iVBTQrYxwirErf2MBo/cUtQ3o0nX6u+UJEWP9LPoD9YSVNVoVYfK2nrEjkxLXj+qv/3LNR5KuTzGKRVmVHiJzFKaW3dKwYFkOJghhX8raHTVXWtykekP2NGyMsvcziug7H92X5C4b2uUoh7kbBOPDxSfxMo1FmA25DEwVfH3pi5Dt1qlzQOpVzZp6CIkyX9Tgo8m1c1/V6gMTCu0yRc9MqJexFhgyeDzoCLt17JebarC7RgOcMYkfFjFUcMrkfRKJrkXfsoDIdhl7Ddh8rn3W6ZPURRKJVCReeiknm2GGYSgSGV8eBoClUzUb5feDa22kCGxg+6Owyhz+Sg0R8FC5mh47Mv16Jg0WG73o4pPQpuJI8BHQVsZ22VZGhNp0aw3KAwVbO0F0vRz5kykn33vkvInZRL7iLwFo1oQodyM/AsGLAcC0FzfekMDrnadpZxpjvitGjiWI4A/Kb/OhRFwYiZfP0ueoQ1dO8cofwjv8v8s+G537aP5aaC29uIPeD86ds7Ub7AxRfFmy9jevpnvUMJjoLyBr1Pt9ehzvMB5fgokZNQUnL3bUQ/8VHkGKR9Feu8lywa1agLvya5DkO2gmKkjinAOw79OJZGrqvaCZm4/ohSAo1cFiBPzPFcTr1rDhNsT80Hx8AaK7imu5I2EvMqPsu4NC7b7Et92stokjHop21e497IPsAhhyHLLuABRCH3rsxbeznbpN+L5IRx9kZFjkCRQRkyU6UUomBlmuEQtdW1Uc+oWalJ3dPVvzrmNd/bH7xQPETQxZ+33ZryxY/gFS+OW6628bITLxoffvTAjfG3L+Ml46XXOydt6MLz4fVLwBc9tfie5hsXyLJ+8cXI2sXTmFbuvK9+EfVWFP/aLk3GPK5sSLxAoS1aDbuFsVGxAnjxrkLPY7Rs6gWCsDSm1EdvJeW/Fw4XgYuMgJXm64ucBA+4CoecUXOr+xaOWaOWjq0wd7iS5pLOqUCNI70KHMjT8kqhbUyDYIXblAG/yAWG4oInBdxA6+6hjOtZbiKaqIIna+Rb1+56Rr4lMAHjW2/EBqMlNAbS2T7glerDUlyXCVdQgY+KxNGDzMjalmUmSq3RuM6jYqC2+ngfWIxUFYEYf8sZnsRm0EDSrNuCOc6iWUH8HJfCGoh2m0zEJawiyy924ljWzfuO52v19O/XztF4U81PzVshHX3y9ITUnv4J5QhE00gG/mKSTiCRN4jGdUvbrU4awqoCFMtJ3kucmVJTIASNsj7c9TFyD75lkUTdTNuZDZ+wEbu3Sp7k166ZPd1L3RkxmPCC8rinuJjSuxv8mWsXo091k/fXKv9e0ndfWWZrdkmRK4o9rm7FyKOSXJM2FySQWtKl5nTIRZ9f9+lj/s0Yf0Lzq/K7dFkzWqZc/3LOt9nhlOTvr6gYS3LPxXBJjG5CE5rBGb+8GiapQdI6QfUYUZxwqzCqYrghaslC8Agm+iS4kYKpg1ZlbRELF3WbI6sFgDkmIZynKWcdIBKv6e8JOFivr6r59cCMCDPn4f/gAACviSe9o8zxjZiP2/Qv2/RT+mqTiFG+A4mrUaxo9pd45JjBc/mzZ+woyXrG75gBdw+MkKFXsOnL4Sf3R6Ig/a481L3yn1Db+U1Su0ndzbY3jC48euzy9vWZLw9YhMadTgBjg8cYM8HxGdhGZ9nCDkSL8UzOn5ie3eBEtAWSQTs5X27Ys2EKYV6lKzo68ci0BN4N3wcOyaZkbVEPCqXmxaozClvQmDi0HxomPwUI0t/EU8hMRZ5m5FSUhsey4rVahxK7CQrNBgvRFXWajootmCjXzI16kYd+1P4WPqyjvzrCC8A07Cmb0wLqKhaDjxDj2TB9NS5ZlzwmkwjLFDspW8HjIvKXoM41/Ac+/mpF5D33fuG6XZ58Ouh+JKT8ooe8OMTRhD+40sLq+A9WGVcL17kXfedX+sX18JeZd3rAI+QAWftgE2fu1j6sH/fW2A437pUJ2cN2Of3Tt8ja2AezHJrRZRFEal2j5/radfu2r2DoSAnKUtWCwo+Fc5amgmBsms1TaTdOh1E1lTixVy4a3nSzEYS7gPcKR2ejvjTfaPhvKQuCYIFF/h1TAndtKqBHU8xP5iXNdUxeqxvYvvFpG4cJuCQoU2cn/Aq+abbyTKiBXiW8LXwjfedLpPOHjUg4iCnjgIOJoa/DaqI+Ku/fH0r4uLCg3AabIxSHRwfILK+DXzwBL0QiGCtVDR9w2QWa9/f04t0Tm1qT+R8Kp95gvmvQ3SKkzgqu+3jbDNvcRHUgtbe5tQ4usn2cvLaXeyWYR3vROBeBcksNyX2FDb+xfDt73Ege5PiY6rhGZJP9PoLw/2tVcizlUWV87aawJ7hPVyTO5VS2cmc5yXoFcUD7TFZ7m1iKTtGe1mQuHLhpXkSbJpFknw7/S6V0CmEjsOf9aa8MvQKUuE1RmhlkUVlAT2PAec+w6ebdUVRX8kSNoAhIx4IaPKPJliFUJpwoxICrluOd4TWfSCPbd1cKJZoiiNmvndL0axUbxRss7TIPx4ErrbFzdWqdwzcmv6DPfjROpayCrU/sRvPb49Ku2OfIT0flK/cXXHFtcUvb5khI91x7iXMhufINLSWTepmlteUBrtEKMcUBG7qEjM8cfOHM4Rf4cItqhfys7Wmu+GatawAZNXM/g1SxF5txx47qovAhTez1Zrzo++xAiDuIJmh1TnpztB1jsJMkaEytAyUB4at5qbcoDNFtsygl0jrGWDScCE0i+S3ZKyTW/XJzklSZ3RbdAWFxVOcb6nL9Ymr4Gatz7nxSMK5iWAaZ+ROXz4qUQ1nbs/+byJeRWyzNpB6hlcDQ2UsnbjXV5qdNdWBGg7sgH5u/Ar+9IpgpgPSFRD7+s/ZijSxelRF6JU5sXmp3Ozk95OO0xsgUS33dMb8vL6oUBW2C2EWYz7q+s/l1x3e2zLfND+xdZ83NeKEXP5YUSjqffQ4Qti0A2DXhCdOrRK5tJXeR4C1vVxshWzsWeQ0e1VL1X0lw/j1Sl3FvniT5PxIdYmxcaW/l5dEcb53gFZNxn6Q0vRFoux8gpe6n0fJg0V3qH9KxOIJRfvtL9/2v7Q+vSwrDSp4CEqBfOFAPDWbh9diSs2TxIGwP33EbTUYzHHCe943ft15CjsqftY0gGrk0jLwQFrVBGbliC+kv3+Yx6JG2FRMHrY3LDPVIxDHiZTAiVEu6PXL6KHs1dB1ifzgP0hs+0/BhU+PmODkdl5cRRmNQjBmblgrYPRL5BkXcnO5oMRwii1vP2UJiuUAJnWM1QT+YcrPtHz+QaEfBs8U/MGs4VsG1vQJ1PMYhlxRgevUHP5QSt8Nuf/zwCcFMbKPe8mFmAOPuqY6+YK5+6oh5R60w4VWzZSGa0Aalx8GEwGeUutMu9+kLqqAHHn9CBto7rzCx79ISj8gJM3xR0kvKpXnea9LcjYcxhqQoRHHaUTqhhCDpQzk5UvBOjI3BZC+9e5dO4z9zekgYuAzlUL2cd7ZqLyiPC3gSngLzDrYG5o0/kA9z2kcZEjmllvIU5v0ZluThSSoKSCQRCevaPh7fYnvNHUzwx4yYtt1Cnrd9DY86RMW7Wq4Pc4Bc+hrXnqZTL3Ku/5QxGX1gMUQe1zDnOUAUFaPlaYT54DwOOknSbwP81vuxh+Dsv5PWcR5BY4qJ7g/BXaXgCpFzDJlzkQcp3c4iQqphpoergh0zw5lAAFMKwifQVfKNS9oO6owNUlitSCJqWU0xSvIUyyiorPP1oTx4/RxoqMQUhCy5B/Qj7Jw4id46JiyBN287fqoZUwMks9bcHLhmh3IrOEY6iLX4XNOa55NrK11o92JosDXknYUsjOSIFX/DeGColHRci0yEZh1Z1BZhNxkenoQQU+MP8WLwqZtI/aVSRwRiKgjFDRHPqm8ytpqzFjs2n9aRuBJJpM2UB8oca5Go5Tcg0l/OZ6HXerDJldozgqQa7wn+i7Nx52n/fNy2MGR9JkGcQg0Nq7nZ74SYAYjdtrJBHL10xb1hQaxO7cwtRrXrMSEbqhA8VUlSYKAZ7unlZaz9dhntSvQGIMzezGtWWxDW6sMT096XJ6Lh/alxiCv15SEL4a4VyTFgNskDYFZx1eVyVq6wn7i47ooUn5kODTYES7BYnmmBQ3voigKKMAhitFxVhiyc5aFVgBbbZJQmKmC3KsUqnH3WmwJe9V7hOqHPt0Au21/IEHa1fT1xeneWmsM1NWmikAXzdgrCz5ac7UIhjJ6DtjhIEmRnzcYuaTWewgC7IoX6bDYXbpUiEja4Lzn+gFMGE8JGLuVj7m0G6BM+SXbCdTfITlnOaNY7ndcs6kV6xEgFQ2YMlqdf5jsz3shcquXKr8smhC12YdRKlIjluCu4S6zuArGayVbo5ZFOJWRfSok8mbJqT1Uxd1TrC8wpM3C0S2pNL89ulNTaTs3zY6uGy6iWEqaYcvZyLUmHodJYHK6/yefDpsmNJymc772pbUsMd2dY8oSB4+RuwhknsPD8bniIcC66luNyDJYBg6pwLQly0JMH6EADQ/gbE1z0/x0LOrz3U8WZGid24m2QIuEFN5KQq1Pm2QI6EpF5UpDQPF+r3Lk1bOY+0ZuVV1aoMGSW3VolbzChux/ATyiudhS1CjR8gR+hZ7hKwm3mE0sMKsk88mIVuiTmZGvBERlIDxd45wgrtweNN0eGpZyUrgLC2lVuVIXmwpsgs1Yy0GyA3DcTrHztwu3HjnY8nxGgKokGodROtXhMciA1tyV7gCjguKyPTKBhYm1sdAuPDCChooGeyKvF8qAU4sU3t3gYxv30eeWArRo/S/HZM8XRobFYsYFMvC6qup5RqdFp9PlbksJp36i0mdo+HEpxnG0VuK2BzsVLWJ/8QF8NV+B87aTV7tstTrRTFjRry3bk4OVFsjsenvieW+3bokxm6oambj8daedkrHqKrxghTXTmJorw9KzgI/BtEF1rrkE/uEGG3o8gMD6A+y5wTCawZ3dMQ586GLnL1DUToElwLUfGlEQ5founkdOaT0QiaET+7BwA94Z9Ae3QW6q7eAbI5bnnQVJ7he9DAS7T0O0oQzE28g65VRVTlilIOSOJqM+eMW5zr8BIm5pBfm7GvxRtZjbT77xfqelH0whT8W1xgxA4x0q+Z08Cg4YK/vaizZD8gqLYBAL5tQIgnSuLKDDGMC83587y0bLCZLDPYXXh8iRLbZvkMZ8jxlyv8aBebxjQtGA0rZjkRWRkXtCz5xUd8HrdEQ2Hb+zWjWlXHt6AeA3UtoIQtPWkPu0sdz8eRSfsKLsijtGxPKlUfGRxDNIo+SMzv+1VE6eFqHUtciJwsdFgeU84LXrJu9snvqZcJ6uq8SI1SfQmlQ2YXMfgzOuoiWCNUs6tVBRf34xcwKdUxUMT0DIlXzVAke5mHI5OVQsrz50D+b14W3NUC0ZaX86Wk4sxSpZ7aBZpNFpced18yvk1Ze9poL1T62xHlyskXucin1kOP0UMSmqq0pkJoEIGpKKdcJR9QrMkDc3HAAVOGIrOayGN25wR4GXyuseilsiOOG9KlrUIBuK6BL0kKfS1N6MaBe7CBz+N+MOJGzwFtLvc/q0jwC9B3R6GbtiHp+55ASVHqVyTM82iukjNNM0L6jwLkcldLUbyz0GboA4MBf6uvjZfbznzXS0ISlTTQs4vo+Iu0rWo9M/zdySgqjMUElXAGMEXIiGH4605fMP79/AtcvkguXHQE2GbIsIOIciTiNuI+nffIEjLWnoDGonDu7XDwB/l45OduWbXlzKR6s7cde2yQS+TAaySpfZGXe68u5jOuKtdI4uIWvN3kG/NMJlRrGJJHz5uQql1eruFYDu/6c+58+0txXgBlAbdXVIhqpssnA+TaB3xprF3dw/PVNELd28BvSMPhVtvH92WbIl+yxIMT45AyWwwhDZgt4zatO5p37y6QP+sHclGHN6JtYy1L2xdCcwbFwmiFzORSXN1lBByw8T+8LJaUMMdLJqMj+XBLnPKEzYvJBKV4HAMpR5vHfBHUj01xOEvxCYp5GisDJeo3YxYtLLmHMI/apbXMs2OmdKsNCuzonHNlF43GVFnC5xSbQ/RgiQSFUXIfY+p5IJSpEFZQbVBxuAIBkQwO5DuQGl687dkL+Iwr/n8PD/IewiUsEdpGA/XFduAeMJ023YSEuLV7yiiuf7f00Hfy168VKbkqjqBBLe0ExAQ7bTRXNBLoAF4eDLim8UahCl3b8UcL+IiPmj0RENoxQTL6w/tEgp53cq+1y/JRL/PZj2KxlLzy+O9/Qtv/T0JdvWLYTgQQwZcXpk2iphwbWFhSa+93t1TK89G1/7u/5k9qaU8BscYgrfF1oqQfGQ5KP+StA73L/RQk+5hS+s4KrCs9LnDfqxut3679pNHqWO4blbSZo3U679f/7mlQwHVDgVow+USaQdtkSndSMvEawUISTO2MtjRKMsYwTptcMHqA2nYft0jUYsnKjmdCgt4V6nSAlVGWQC2eXCPeAs5WxWMwKotasYE/ELPPGF2nmbv8DV7pjcrOcs25YoUP+hNfTWslvcFMjuKmrUjyWU6m1mGh7/M6i/0SWCJ+6fwxL3dgpHCVxON4hAOq6snO5S81B30a4+0X4ykuyQEdVX7zAGAG1deZyZtKYujuXkaiNNENjj5XLTpkWO4FV523URaekmBPc/Ltaw4gxs3GMhbENBdZdpNpAboGfPY6R+NTf+zqhpfLbeFwwp3s6g3JSwR00rD43m1SXHkTOAXKKQc1D8JDRBTsuxp8fQFXKhPo8mbq+HCSmej/dhfDaxP8K7qbqzYQIQJSCIONctl+JArilr9GypQw/RC+QLkUFTvJ5I8EYJsz2Sa8PEXQ9+NYQ4Rvp57epDoZT+ZzI+v8ZKdbn0m028tiyRuuviaXDqW15a9FRvpyDHS/9WO4zk4rG11V2EX2fTbmsElJzGoyGJuv8pr+shO7XS724YkTUSLaTqEDNMxCTLf1ui0uTzNDb8X2um4Ec+JFby4q1csV+SdA8xm8/6GbX7pM8MZNALnhx+KioGyZm5SNOtTlBfT4IGScnLuYI8LffAjNff5Y2oyW0z5DefybL419fPAyNfisabXqDQanc5OWlaXxnaAGYLs6nFnOGCye00mkT7JpmfsIs81jzj2uSJblgo4evcD9HgIvsZ3mrdyOA6CbL4TF8V3fOK9GF1vQdOTOnyAs5GXX+rlxbBcYaPLJIgNawp+l6mlRBXEcaYu5FsVsPswYrkUc5MdJadeEuSVjsJE0ITILwefmPxx3Y6YcADcETx/FQ8zH0dtd4Kr5hiYH3/t5GW48K37/iNpo8Uf6LvbQn/HvHszsvLSjdCIufetNak3WlQfj+pOoU0/WtFYMb9KWq7i16pNJslFnBsR6ecDpspllsGXJ0zO1hu87d0IgLFurKX4VFzUP/Nn+LS4eDcdQsR78ba6fj3Ix98eP1eCwV2gvQ4jxZqoTTYhS+sSpmQX07f1jD5V6KbbWCTru2OK29Xx7MzTWo265XejSkB8QFlLxpVAfcvJ7WXlvtSI1+zwWxobVY6eITWcgqEQcE/Jh3LNYrwmMePNCmTMNCRkTBc0Yds0pcNIBxVs0sSJOW7H9HQjPsOIAeRNhl5LNhZBf/qNOq1MwHECTl91D3IWormwNoRodUIHVoNbu2uAlhTZHo1wfUENO+l+H8TXoRLYdzmHDrB71AnLt4pM8v6VKV/9gD8HelXkJWGP4t5mpDXkq3ro7NU6QZbr5a2BGRkOpVekg2zILa9r+DiIJlGV8slejgamHb7amEF+t9YGw36ctUj2TXLjsG3kWogSTE4p9oDwx9EGcjZZeGjSHL8MxdRjnu0OgRmWcN1H0zW9rwo4FI5fFbOjjghNxJhGzQaWZn2QqQe2oMHQsBs2wMGhQI82lXex4I9GPkeGUQGgd8jBdn6zpdriOrlAG3mfEzvPlD11LNYHZdpNE1Mr6O7OA3sJZuqTMhvks9ICTpRRDFnXrmTy8XuuVl/XE87YfXP7cLCvocWrsea+D/FW4g33jWtkeyKxBsxUXno84R9OUisVz1Jq7sZhQN7fCXppg3g1hfzhZfcRzo7tDBpo5gHY2ZFdahleOh2PpBO/woygtANj0UxbVjHspC6PJCyA/C6p8CVY8nmQxJsQsqWc8U2QwesM+KCCjdw0l286nizqdBX/r33A4VSU2tYQdUhmjoPixwr14H0qat2gI45B3dyZqBS/rvduhQcytve+ntX+tf1hgFf0HrC7PAVpHvTL1wqY5TOE8d7JWKx0khWiQF5VuGU1Ly/7zFB7/0YANqvoGXsaOdHVizqW6RX8xF7uJWqPTzzfX7vUG8SVx8NheiP3DX119WK3H/Pd/3bOKXsQc1wFToIRxwwFOgm/IlFjcYoFn5XXHcukDsWmwiSxaaHTKljfRaZeJ6X6C4Ebh5YIfZ8A13g6q//1nQ8uRHB8JXt4OU4iy2P8k48cG+VNtzahHadb9TtIIuU4X1vjJWIg/D+KqzV69tkiGSEbHoa8k2rP1Msn5DRwGYugEYLEh9TQ1vDzxjtehTOZKnU6zI9Ghw1qNVPl8x+5j8U3ytreW+MMTSWbaDG3S6VLXu0WF5FGfGt7G9pQtZaBLSl1fjXx2+PrEytSnFwYhhvfc2/9uXI10Uud1qX1hcgV7FCWNipfeIerLaVzCdU2QSyDnKOxKdHme2SeTaWYlmw3eh8L/LDQpnVM554aULjfNO7E8o132nxI/QprX59nijfxs34Mdwo2aO0nXEZeSz016GzDPhFGKta2JWVSSN6jGgvzBI6yPRSOOliQWYzIFBVLeY5FNIkXPrGQuSkyBmptYjx4eMxlb4F7bBEmCAHB5IVmom5KwhcXIBp6xPdkRqiv72AJGMGVlRNPmMnY1IiI+MI9X8WwRA0QKMOPv8S6xdUTiGe/rcxvzgHnt7B2uhAL2xnGOlPkVLpezbJmq6X4FwZd0x4xTZjMJI2xnbZV5jwX5huPiJCwuzO2F+C983QJ16I9jG1UlL//Nr8rvTwxEXukh9gkk5Gpt8eTkVQArNF0NLF065HoRBerxafik1uvp+LJEKLO2Op6wNpPO7y/1qatR74VqyB+3a+ZJnwhdl3VYTbhS498IotElZnp12pg5EEDxoEH0ehw3en+cpnUw4SB9BRbByEYZOSNYHMzMQ9d6kHBVeO0Pp+M9fD69na8i0C59wvF8uDfPjOzmFKdL2WbqQBFaaBolD0JfhlTBkeH1dGjSX/Kl85ye/WDj0FzFY1z1T7W4UPgZPguvLcx97foI3vOKxhu12ReWmXRrs+V3NrSLKp3iviGH7mUTeCliolx2mit4ZmY1a9JcucgxAnvM+1kPVF5Yrq29jRgbwID5V810j6mownFpmxukxONPJgAPm9qSppEXx5Ry42PiNbJ5CMLFbgFEN3H1iwHzNQYhFMSD/KEAvYHC2KdEZngjSdgsJAysJ0Camvy650PYxbjWF7OGh6+XQIu9g6QR++WS1BkbV78bm2G/kgP9JfJmf5nfS53krpHcPGdypYHowZ4aka4R8kabc/zjXPBJqZAdcDq9NZQHfSMOCWeoAGXdfmqdFlxuLUQLI0+B9yPJvXgHmdpodYqdZu2wfeujAB14GScOq3UaFassUMJmYQirRLGQwfQ3wwbaeLzmkM67q1+5Zhrawk4t2kQaPpCdvLQ5TunDl6YgXo/ec/fmQbZJK8L8JtBaVzgYuqxsjQrjWKxgV1ovbKCa+Dmu8Qs5hGHawqFgC8FXfM8Q/ziD67fwvOj35G/XqlNZtm53jri6ipB042NYzQcIQlHoFNI5raVjSS3SoYHnw++H2HogJQYultydp4BVFTAxjAtRYms9R/AG1vWQ0jRSVnxh/4P5sexsPqJIQ3qQR2iu4O1NQ+s+lUzxIp9S/RWfXwzC4Z/E5uR9TalvFGTY9vcC5rTlE4fLFWsbJMAORzEPfh11DXD97hNOmqZtR6kx1hWSVimNb+V7B4/hlg4klXQToV58fqlDIfaBYv6BpgSCwyArXKt0Chm2QsGlRqQAvy2tMM3dfLOrnfpUP3lMa2Sx9KT16fS8OWpK5MJVmi5amKXlrxyFrqkH5fB5HR5Gz4rXxEHGtM4zUBNw2IriWkjraj2lJVRdJqD/LEIq+ts9LNaSssbv4X+Y4WP3TLYo6WWzXGm1IZIZVrfyaCbb1f1CY+3qG5wtc1k1ZzUmdwkfo3qnQfXlC9Qx66JDhYYmnbt86Ijl1rZOqolov6lu8AYBQR87/8zsDcDA8oRyiWLWwLhH14rkc1SoI6CEhzFYcjBWAJ/KnrAtdxwo/M03g5Svc05kJMTpKMBGVWJE/uvP/TE8ZUEt5NQtbnoDiO4vK1rL8Gw+BR3siOnValqpP6CK5JKFp2WF7QdiJ3YFNN6FztlJtOD59I5S1SdyhKVO+FqOP1u+KkTyHmLz0GdM6zOikllMosqohVSx4vTglpfJayOI7rbsHa7rPEDtdAUm8iVkibMIplDdVxFXUsyFMVUaOCqwXo1qoddc4sWzMEkTxz9JaikTlTHMy1e0B4DazU9eCy2bItbK8ACMCnNym0866ICqhZwW5zxClCxAq9oSuxWstvAiNMkpDyu/fnQ+LTBVNGygZYrB3+5WVaOSju85/a48VDfslEtn7GDv1Sr5bFWo1EpjBuqxWaz6C5UCmzHH2KN0kyJSP/sbFmyLUXhJctywmIdp2olsOWTkli++347qjQjrYKLXjB96Vwi6h4zLzo71m4wO3i1N93nFQ0xz+L5mBNMZmdh5yeNoqWwg4ZRjq3C5rNiBj15qFndpBUOE4z3Pxa12DVS4zhy6U50qERIfOWJ+Uk3pGByGrKZqEFQ2rR72mhAjVjrdyA1BHU7n8Cvh14k4Gzu8hYxDyGSuigIWrg1zZOajQKXfA+hliBuUuk+NgK7iwvbqd7BA+D8YUU+QQXBoQvLPhiF8pwaw8jpITblOmS+oQCRZvsdtGJS1jYTpjDhit7Kz2JJEzDeHHHWhd5veqH4EQUhLGg+GNTT8KEZZREyTrZfCWgP9oKwBPCYTAvoQjRFHbWt8JEFg1BCW65bkW9auK6se8JeWVXEdVh2ezvR8ZXgcbuteufzLSZrn5gQQ1peq28bVt7A6JpTg84TY8IG/EZKuK5IThAMTYmjwnyoykEFkkfUAHCT622zMbacS1arq5s+dH2hwfb6uj31IFhcsymF9qrScOFiaVQCaUTSSf8/VRtOTmTnw33qiLTEECBNtNiDo9EK2nm8I9rgmbE4+uCONSW3Lv/yEK6H6jWhwULqEqhNSquTzG1ZnQM6zkc8HKq41b/4LhLKVN7we2y9CEtUvUrCrZBOmCGzIAjYJ0cB5fuDylfEPB3+Gw+qe/wSNp7w4I/zSUQ0p8Kncrfund6N4BWq0w58Eo+w3b3mAVP9oph3G86tndQS9Toy0nUf+dTMJrmgQlFueGHejGuBgXwJeY8AO1Cn16SuIjzA0XflWh0R7rad0de4IAMQtXReghuET2qubDzfn29DDahIpzvsVghu1AxakYXU6jxyQAewyzvWcJhWDPB/iQD/8doFqMujyOMb+n2zsZNalTrrYQ5lEmUaSKero0hcpX9oLvXw+tJHSdS+ESZES4R8HXjzDeyESVKzSBSiCwadAhtCnkSQQgxF1ArUgdweJus9MUvq7BN5ciUvRy3dwhORiTCkizG/RlvgW2xektlLz8TbB28WCfeMD8bls9ZQxmA/LtHwqW3UBh0XqvlmRurqp3UGsRGTncRssSi901bWGFMeLa4FPRs+//h82J+RLz5xOVwa/lgAmzyQyiJpnNu3iO238AujG/XmxfnGxgZdqY5/QmlYJ0B+DPL62P0JMk8+bdGoCJ8SMInzsSuryM1Azke+EvjOeLGfUCrvd1Xd4d+1cVcM8vB42AHaY/V4vJHqeh6PkmvhThMG9LHT5kyCcT4tJ7qY+KqA6TELaYpUth2ElmgrmUXNSplZ+ZbaywIHAWcYryUREULH78DJWaRkA2vMigwQdXDz85pwg8dLjIac7+1cNfoGvRi73Tb3966jNZ0vx2+0tD3da0bPwuuJbF9/ZpTNdB88HVwg4fSycjO8jNnece5WMLVvkLkZak8Ox/I9k0BTyEmUCfIUubzyz3KOE/l0kNm6czQnXcVtT7tkue26QMQQGvRoGiBEOE+EmF3NIqAoKlogMiEni4cyjXcuBKkrafyx2+LYn/mapypumVWTEDWrjRTSZiJlxMxFeGYbVhgaJnFp/bD5JZ9PS3q+SWf2TlqVsgkpp5gwI00acLcGE2NeGtUGvEMSr7a/udEG7OHr1x5/9MrVOu2ClH44wN9PA6mkvgzdQZG42hE5ZaCeFDybF4p4902ECncwxC3k8KAdYon1mvcryS4fFUlnnakK7+cvdkpt8GaB+m3LyhMD46o5Cdjo58u6TGSTDETV3eiJsYUp1v5ZLaxmsBhr1GgrNnwevyPFeOWXuDpWmEcW65G1nfGW1Jl5rmY6rKZYFfkcf4q1+jG/hlV3YxtWTGaDh0M1/IWpkcdIMu1nY/GSWO2QCN9zpol0PaaLZPAhY3zFwO5g/9dITz5w7ljFKjOPSw0I07TrQqm8KpoV/fUij2PM19buLdAgu7toGEdJcUMlZUQufNvKAV9ZjRgVyepIGwauo6mbEXNLgNlgMuWg3Zw7tFe/SjhIME8VyZ9qPLM31zYZ2H9ZzAc+Nkr7fpH+s14cbC78KFsxsrwfyeYv3m6D+7CfeCmRaefsRGLbzWmDLWXOVlNTQB8+IXzeocklsRa8w5EljbJKgENxp0WT+leyBWRG6ExUE74tbW4TcXsBDvUIle0r0tPdsZL6Duo5yq3WOfRZhvMg3cuLOlMT5FRqH6BZIHgYS1fswNUK0tiLo2vLCXDGE51pBCXlB9posn/WnrdDYqp9OWWQ3G0ge1maz0HOIDAqcldu5FFz+qvN3R3piTkkkh85Mi1JR+J1WZ87ID+amteZHdhOZYATpZpGGsd2QDmnWOOVisZcMqzeFHLwtqUxu73A+uT2m1OB6ydjiDDhb4mU2z1MVCALYG9GxQNlnuvsSaOH/FUzIcYYlJ+P3cHiup5j4cKW256qlqyW1IwWtzqrU2r06I+aNJqh4VNYkESuJnjWQi24G8obAeNd4oIOQiZy/Y1dkuL3CulM2XiqQ2oJNVC1lOJ5gh1qb+rV/bU9Xn6JNUn0g0h1AMpSBTKWgC4VynjyTNfZ43kFXyrfmCajV2g5yQtQUREDusyRK0sscZQec3oJylz0fJ13P1SZq+RX9PyPFVI6qKRC3rg3LKCE+SSSbPQGD+46+PDsEt2os9564u2T3x9cWAy950rrSp1tntVsSAOt63IFmgYxQicD15zOmUEWgRi3aLqJQmTcZ2l02fbcYr6D45qThy3u2iAQYC50O2lXocQdztzA3zSN6yehs+DdmrUwiM4+tmQ447TrJw9AbqCfVHNQgzZkjBFuo+JlwGHnt046dz5BTtBQ9HebVizbT1zmjW3H8hGSHXZdg3tlEWL2VDgNOAHVLZNyynWqpk+Y4hTKmQBWOcYaJzxaKuHIxt42vjSwrsrZjeZ5fj4uybxkskHjN6VQUT5b5lMNbLhtyDf6DaCupCwSYMzqIuCappABS7IAozP2ILJExoiCzpE/stXawqk6Ior0mBd+ro4/k0g3bXQQYm2JsbFfHGxmE549PhtqAXykoYThponAGstLTSOgwc7DQnsUFeUcgUuOZcVvpKm6qpTTok6XHIbkwxiwOY1KyjqsyzHCy/qsGOKKshVUl27wGiYJZ9CYdbffubo4dgBR4ojThk6JimoOl1fGjiuyLbofdmOCCFKJxfcklz7GgpMBqm9FDOYUAjUVkK6FoDYC4jyEYNVKzCUmjkH93uQ7XxlI0o/QTsZ9qc2oON3TxBdWG5Vuyq/PbV8id4f2mE7vii7jUYyTg2E04dvSppXEUvyNhWIXbzZ6+CfJEreuxZ1bfrqWNJoVQuHwZ7oUlz8BYhuNyVIinsveLd2SAP28tjZDRZ/v2J39Wz0NCZwdsOHyz4zl9bWVq2uAiiAH1ddXXCSArz152tBX4M5QlB2lvMTKQpqw+/vuTAJU+DbxAnV6s03imZWSuwSGJvf23B0RjHhM7+y9fxUJHSDu7r835X2wo8+t7Flv+pJwM6KelE3cA8/e3kIqkwJ3RuZ5CXA6mkc8eMTJYszK+7Ya9TQoymu+vLUwcDkmUeFg4JyON/HKyyAo4/yHZxUrLTvRQQ8/KtLsrGfVk6dcb6zR4WPFBVSxUZqFekZNLJgA16LJeU9vFPj0af3BEDVZ8N1iRwRK3Iy5pBGGHLjvguI4RsOLxAso8kncnx4WLdGlCqPJXpr7naZHKkyrHxjWIsnoA4zq4I3SQiFqqG0ipgA5JHFVqqlALGDbHReVZ0clHCIsUa1gF1W6YG5MTPfsjLyKhaniaaNC7Th8lc3oVgqapw+Q8C3Dp3CKrdG/GHuDA/wnuZLz7Ok2pdBodJCP6+h3prUHwNregKGeGgSxCgLNuv4GI5LAm4HkhgQWqAwTumGc4AxnxDeElKZXO5FH5rDrxEyYMICdPMEB1MAheNBqqjijqTMvq5Om8sJGMHjK4LPsaR2dY3nw6chp1wKbQzbslwI+X7qGRSCvdwN7oN4P4CYqkidBjcWI8ZbOXcXGB2EGhBisdUYbyCWU38StM89EJECTnnTBAXhTOq6ILiruoH2yjKY5igJhtrQ7YylqZkkIRBjRB+Wp9nKZ5lCtULW8HEmxE5fa9cp8WjYCFt3gB8zWBG+YnsM92L9bsKqQfEUhczv+JM90W/II3P+zVs0bTku01Z7B1XD/NKuYNIuwIUDUcMV2T/gmuX6MOPw7enWsBgMeQb2zQuTKKPBC6dL5f/+Hf8tp10oXH3/IyYcuEkLtj14ZpSHWTjqKNJ1td3aU2jsr87vL3eyQSayOohwtpmcGeDOalMYSoNwhlmuRUcy+QcrZA/hmWNBRhKTkxeysQVhjCvHMNtxNscsFnJ+9rwYhRNk/X9D89vymooLtdcSDFz5Ee4tbsNtOh7e28EhVTaXAjoQYF7qzAs2wSPO5rei8Z5Ng+yiHvefvX/hkGrCAxirkLyWaSsp76fenU1MTieQ8rTeuXwFPAlBpow6P5B4S2JV3+aVcBXCTQ0vLpx+KCRk5Bc143yJPWI2CQEEQILGB78xrvRk0rbUpUUmM23pSjZKQQczpQr8fvOk4n8FMNltX1D3K2+cBsun7TZ2QMVQMf69HJoUf9K1q0qANu9eFhi7fkYZ/FxRaHqOm7DzaovpL5TWX5pUE5JAVGJEawVGtVCdKFAe19Qtjn0I3DgWoYxBCpOZ/E87K5iRkpEWo38/raUQf1iW4i8+nLykIBOdadPfb/7k4Sflenbg4SF1+51RiuR9x42Cnp9x76VyevtBPXtg8U4f6Q/XupZFOSairgmInK2tJ+piPNG1AG9QfCIzyZk0v7v+I3OwtxvZkb6t/mPdu/GatcRBU8ebPScHchElBfAKNX64o4AEnsYThO9/Nr7wuaxkQr4jPOTqBjiAagu08tyAQctTUxyCZhIGdM1h+0doUP7dhhLMUlQG/Xz6Sl/iVO5hj5EFzR8QFQdbbE7uXmtB2M6cS4XAj2QV7WxYTgDvMYhNUStSHBVlTprQiRItQHe9AjIxwF6gqmZjY9kwqBQlpb2ddjzICLtDgNBxfCxd2wtjHD7gSbEGek5Yxz+6lSPTkkhDb4pi916gqX0kzlK/FkTXoKmjl0bzTzACMaXtef44jbj0gLXm9Gh1gtLTq7eUG/SmzuW1QQco/b9+YyEbJsBYpJ4SgDAzABz0hfMNV/xEQSJvvrNfL64rV6j2lxKAPInXEAoLSOw2IWruWzjQFjbepCaux8kWZ6FqLYptVyfM1uKHMBQQbPpFXk/pMfTKrZ3f8ZpNwra4r4uxGEwXNlhE4QOkM74cJp0vQpeX1R0ovlpNy8FTdfggXGdv9gTmUSzlfX4E43S4D13UdXEcsfFX/aGI5JvvNxPFM37dFMWWpI6oBpxqYYCZwxrUI6oM6d1dSeylxuSkYtrj8QDnOi9swQE6I42ZSU6t3MuQPaqTm9W8TPe7WPt1Omx7mVoXY35tMTEyl0oA8pPY9/MmFiWG1pxBeu0Blv61Pj99/9dsSKSBQYK+9lU/4fAODHJMG8q+Gp7hymxh4pbApHUMpELj2oqhr5sYzdanos5bBo7i1N5zpd3WqIojLr9mEVtIoCZVhqvWUYWQziVC0pNVNQo1zTmkmfRWz5CMFCzGBYLgtLsxTc3vN2tsAwx5vJdFAi0HYcGPnnnCj2TcDDLrSVckDd56nE51HhJa0qvzN2W1xHoSf4FzvPF236Pp2XNLW6vIqcUzkacG0xaalEmhimdTIarVMaGcll9aXC8/wUDu2DTU70h3agdBQeQlajUs2kMB8iRvlmYpVFJGWFC3d8i5etPg6TNwFrANP0ncWla/0gqLn9RNyKCg882wl/TWsDd7f0YANyNyphR/HVLBsl4s+CZ/CFbwzMPChxJMHwNgz0EQEkqcPgfRfWoL1OKX+MLvIRYMTE8zIiHAe8YD3swbK8i/lHs/J9893i324UYF4kFqEQrCyyiCOP3IT/ODKy1G0IrhGTc7XwWv9JVs9/DZFpM8KAUfFWNXkI5VUwNGpLDJu0HXNh2EepK5Dbc7pbq7gMPfCiKk61y3ql0AjNNC769VI+YLE4iFrSXt0NJ7rj1EqV01iPRXif4xmAxdKmLvWg6i20HOMqjrDdgQrjJCBUXtK9Ji5IBDckn81eriW7Hpuu0+6v2FEgm6lupyWe7LhYKBIWooY4iWxCcuczAthi2RaGQtQFcyXmMVPImEIcLyNUTHRcrg1i9xws9OQdLX9gKYpXt72dd5GCulx4fgXp2YHSCKaBOUG/9mBDD1IjSsRMmKjd/RuOe0CLbT296bA7w6XgZu9nBPGzgbQvMF7j2BkksLir0ewtLTbEqyZfugmVdY7kg/3sagqH/ohROL+b75bijDUosvy1atCVahRDNo6vysgxEWuUTTf/RYJ632Wi1NpCa6hUygOGD1PaCFAdKfPj3YNTezw+DB3lp/j0JKhRPlfC9saBandCJ2gsdhZ/TVXmb+oZSGRMXqUtXI2TFpWrPApRUwS/Y729yAKQMRJBuL7ivogO94kikjUE4xwlemVgwfvPxe85h7p6alaq7lq8SqRiDAPAR04xOnZFPaZ5lwiFdwJzDBI848/ow41TSeKidMft/tEX62YW//9jBPEXT6/4j696qCBxbuN4LivUtB0d/yN5QxZbB82eINNIRs7xB7Lv7He0wnz4/7flGLBmQ4T0afCy0sHq8P/0+jBM8fqjDQ+t21m9A126eqdZ+Zn1NTZsMJy8vc/pjvi5AdFHeS4ijP5FS36ffegXy4xUQHqJHvyuHD8Oq5IPU8jV+5c/MB9/bdTcrFMzLN8+BeGC8CnYXB/BWfnbP6HH9DYGFIUB5kdgXzvSUhQqHZAo8Nu0PhR425BBOCvg0btcT3I7VP+qSHPhyHS6eTu2snUCqfTe0XEfYOXs3e/PXhmMGA2X9H/4H9zUjGswJmKzIQfj6p7r/6qeCsyceQwISac91F7II+OvZN66OxVxx4ormMw8zPVuFg8TdPx+Us5EC1qjNhIizTG+MM5bj5KggzLsoSx9PRYlr0QnNMardZi9IKNhdkwUmeVWJtqLWWldkwpySqoKt/ghnHxxUQjashjCcUv7sQrR6OC3KhFLsxocF/8pMgN/e4rfE+P1Nq6cdH98vnJ+3W7w+REEy8I8hPC4UWAS7JCNj32YKLsgCw02hwZMBBOUtFqPaJoB31eDaUmkahdjuYgGJo8ZPVImAjp4BMoAQFGdIE8dUyRVmA+h/tcnqCUtu4OjPoGw346FLre1pli9OSq57OlMosLhWFZeSoOh2UWQtmdqWnMolBnVqEwAWavXLq0o+PS2ajlMV5/9ChYDSHvaH5JQ4LSoCBYDhQQ1QemcUhDpvFOmb6e8j0n3cD0G94Aocbl+3rik9PeX3+8bTIB+ZCZCooh85bGTJCUx3HqZgugJd3+JoTT3Xf/5pLHYoPsirBjESNASdo5xHK85MUjjsZf+el5y8/wBiU0G6/kqA50UAmXUF2ZXK4y1PEPXM2ZPqBGasfgt14PmPTI2ukxwgDEIREodwbL+D+uBNCeJrT6WYpIcXWEaru7LbU93Y+4N6rFRquVDxg53mTDXf+oqpocGJgMHvW3umF0tIcb/VRmYMeOANyP9RDkEPIyrFgEQ1J5jcWchrbVWFzS0Gr1HuRaTAu3ifmXV3fuOg3P9Vy2M5vXnr+m3dx8XqwCEEEBhID92MdiDqNJFaMhSxRPOC8J9UY3+kt5ZrVcbYgy1VIdJMUl5kOhOZCHLAESuF0zMzMtlTwtTFeq77fMIpadY1kbZrdMsv1Y3v3BsG+fVF29LgwyJH7UZf466N15smYbAEt4nuN5ojWVtb/Y/i9QWs7O/14NCLdPD1b29EiT0dcijm1ubz9Z4xZ7N2fBPltUunrewMRULDcXtP3D1RDpH1fQ/gWY10+KswszMRHzl2pfHyt+tLz+xWNDm1OBLTBOcVMqntwhc6+1CGqlwBlNa4d4An+K4GCIjNyGWtCH5i9bj+jeSDn0xiHdqynd/7dOvyNG3/HvsLjtRUve0nUrljl6FeB9R8URgYwKXFJhHzC5BHuu8gEw66E8EZI1RX78ZXp4B3vX0Pvx93XzYwe2260Xdny1YoWQmsD8hmPIE2mNOY9w9b6L52SHWmbso5zWZ7cHWyx/4n6B6BzQe3I/Pd5fsNaPqfU1VSpcnAe83NF5b7zCWcS5gT9dJ74McX894Ilj5HDhvJZufPSfGP+rfwS6yorhuuUrsiQGbsJQBj9Bu7BjCTsOyuHEondGhWb++3P90QLi2xBnyQ9NugXD070sdly/1T38ZW/gqGz4fkXT+SyhJ1uIrITlLWOs1S/aWLz7vkwH2gymJq+bwPACuWsnDsl5D+VJL3agkAvaKbXj6Hd293/TXv2VOqF/OvBL0/ywrzNBeXGa9AY/nl81GyktI1SQUUjfR5NpPiooUDF+txTwnPnDJqhYKNbspHGyhjbkvmbMFmiqTlVHZwmVWiZWG2N22mK0qvkRQkRwzrTjmMEqE6Yw5IJD05lkS7EldaY4ImfYhD0x0JpCRJJiTDRiaJKxR9TYjFYNRUussXKsODszQQAxMGGW8WlE12ATIamMSipV54eN9298xPnRiyNq27zli/hpCtS/m9oFDOBem8FSgdSCTYdq1w+4TQ4ZDEst1pkG8m7MSfLmYqIJ/3SnAzMjGrY4qEIiEtjRT0QwPzgWzA/LYx6FU8FB8/CRvyT2PQTGCBzmIJ+QB9ydHTJjQhSSEJlZyKigXMfSjBNWptMvTWKVTqWEJRFKDO5wjzPZZFUE+ZEOpc9u39cUjn9HOkXS+R1uCl/sCpT9gI9WpRjH17x3a/umhkMXNmGUUvXv5zN+KPPkfoOeDQaJQiD0IZ8+xzxZbwh7McVWbE0Juxmtx0RaRNY+PxyOhede7BGqPdGrR+hBnBK9GOKOvm1GZITLLoCmkJfgKSxI8CMU95Rb8HoJmx3o/wHTPgLsOqQwdhy8TUMoXoKO1POcOCeoiloDelnO7iikRbqwo11LUwz9S+nUrKk5cVtGf+UEz/NQXlFZVZK4aVNiyd8Xl0OOSCaBnQ+TbqPV5hwmh7BZh53BMKDHIhexCCMy4fMso+CtR0hGvFyo69lXilCYO8QEVUqxWkn2kST6gF+JnGRbZZTb5xukkq2rM1vyernzwbyOnsJIks0QloHY4ltVceNP+oiSmOHf2q1T4nVRNuNCbJUaPPl82K9+euwR8WehxnWY+janIAT2PDAohOflBsRq4AkIeL0uVxf2eHDXwADwgjYNpVkB6BhGjryAzvX0QKZWFOHbjgIc5AuxgD3YgSFpXKJDBLOs+OEnwF0nK+FOmSAhqU9MrwnnE1lWftdgYmUBEJ1Ul2Z2GUn04b/mTj7W2s/N3wkP5jD4Hs59MbbekdmZoY/TCjG8Wu4MGteuXRfsi/CPKVtyW61WWxkGY0oODrUDsxipJsihdkB9lJeM5N5zzdHk0NW9N0y+5yzzvtrkUedohhRghyWeD4slu+QVP94UJPInts9CsEotHtZouhkLe8cMwNQUOBI9oyPI5fJ+WEcYkG5qWZynuHjDBhKyNYwMf9rR3r4fRyt85Ed5h2v4m6XKHMWwIlspa/zF5cIwUHJ5nEIP58B6DGpItntkj5aL6fZI29eC4aMW6DCEQ8MQ6ZMJ3A/jvGXVv3BW2LOyXLk5j5eNjFCJcaZQQl2m5ibsn9y77wZYJT+b5OC/5ekUlR6tNxUWCaSoF5xIRHh/UZZLvb6bWlWCZ//ni58yVkzv61qYb2jU5PDpyBiUJV2Y4dbQrjt71k5sOMWa32c/6m32++vnF9Kh9LyABa2X1NUt8Q6Pp4VTgTv8pPrpAx7MZ7e1uV55lRYNDUP+0DZxzGHTNKYPTV/gJ0ZFFltN3OSW1IKzk7N0PMurWla1ZUvV0i+f5PDmtLVF39H5s/WQnh1Nc6Nr1Si+T1sDU8Jew97Me2NpGb8z/C4jbexeD0ultWQ1tWSlUaMyPzBmezmJS+Io31PJSKKItFIXf+8v9O+fwfz6+vr4Wzbb9uM84j9tfymBZLD/m8gdv/uo1sLWib7k4+WPl4J1HtFzcCYqwLkBvB/Y3eKUe3M7lkwHek9bEXKjtk0cnpwP1gQ13nn96LBP4VSIilMKPxiRAty6zneYGRZm2fFEtEVmCePOVFgUmW7q8yrc1IzcA1L+3AWgWSH/VovyErx+la/wVEgVlypmccXkyC2x/F93VVe7sHmpeinBoaG5eik+33keL4UZYcodc1h3rizAYULIxiuWpdlGVU3JliGguCAwvqEMxj7OhzGTKDtq0FDN6GDNHax5lSzkNb14iaZgsWZ9lI97ihPIXcf5KV4hTziobsw3qV++WFAMjOP8K+LGgoSNNaHJ4uJlNUmJlZX9jr3kj43XAU/gT8786ZQP+aju7DhND/8DwtKDoc1xSjahcmLvs2WhjIgwRtqzeycqE8xwDvQrYNIZfs26hVFfPJRhjvnzpaUJbIIJgpgOv0yIcHOMQTQIRFRbMfjqH9m9Kk0/mDKW5GgbxpcvstL9hQ+t2kXOW0t+FDc/TtrpKedt1vPnQbTEc0T2Bbtk9+lTYZ0njXwS+Vtj0e0TxL2PYEimlUNKn+Sg+K6XAPK/j1bc3/7Vs89Kow9erHJQ6U/4G7xZmLy+v19L1uTFhwt37lAcHT3Ol4YVYLsEzp4dGJiFnhuXC9zVrQcOtK6qaG2tuDh85cru8t2nT+/+IkHKHc2VElQSHPHTqVli8JWDB1u1tEe7RJBbg792N2hj9JrMGLVF7EtYHMjRau14uZscqc5PaGuOCq42VVe0kWG83SNmmN/TQNd4zGMF89dvLAw63yuDW12gr8+r5T0ricwvcAbRANphCbMTr73LqshUKXJZkaueo+ii743hIcQsPfqyxhA0LGAepKmJOppM98h/4pisgGxKPpZ/TJ6cbnpbgtatYO5Kd+C1wCXd47reUsKycHnW+sJU5nDXcObUc5vsO9GRKo3OM44ozxRIbGkXsSrGTiKIG0URiWLzy0L4eVZ7wERAO2ssoF2UUPljZxAgo1iSZCZOCDF2K3Z435mUCXGufWH+aT6REPg18anG3vUkBBIQvBtmD6vtfgx7gi1i16X/XVPBrqJESj8PAorlCr8/D0BEHFdTmNHW86P2dduscatqVpn45Dh4jHKMkCnau9eKOWxFjz0ZF5V/OCrwhcuZAiEG6AVbAysBrTRQawO3NjYilBij+uSBFzn5iQrEWfMGrv7y7qPLqyQAP77y2kcpjftZIfC6I5DFc3h2mQbGpeKEJqaVbjA3XtozlMstaa1qtfqhi7pTWadgJH97thuKDwtAGJdLsUPFgjm6S/WtQvHtHwsCOQ4xfgZxTwtmdosQDZ1ScCAIrLSt6yfscRe8VtnX2NhHlERBlMLtOz90LLJKQeL7t5/vM6GjC31sIOZLLpvaJZ6FMsCIwFiXiEXXDOYw3IxDvpF9Q27kmAJxnKR+lnIeCa4aEzue8OkP/PLhqf9kPTkoaRPytOlvvvFMU20E+wvymf+mYMcyjMbiUJMnI3UgJaOs1h7OKGyfiUotrVt0a+05pM2Kew36+RvQ4JkWIO/DPs40jGQqAFx1K4eUCIsCgOFW6y0Dp+dS+kr6UmKmXUASCllydXHwkuW10r2zmdve1jA1VdTwU3rcpup/qJHqvaSeAEWEECV+h/1ISYGrsVf5kR+C3RLb5VS0N2w73eKytUB/0gXTIirAwbxsiVyPQovGTB1ax4f4ewRYS3xk/wxLfIiUz7IwQfzeirZTkvw+TJ6kVM9eGAnCbGNavIQwmhnPlBVkeAYh0qlUz755BFRskTr0MhIQKZrwYvDsChPihNvrBUsHLWL6sKgO11nCN23IrjD0zNEuYqj4sK2DnosEm7+HqKu1C6uIFRU/rW6YmjI3fAvdq/O2UbnbqDxhaIdW9Zb88OHv8XVmAzjDkjkRwzF2vveFKSh74nhuG/upzM0n4z+n0qmMEj55xYzV7KyfkOWoiLN2UiUiLblTFbpDaoSOTZEUpxT5OQJlgGsLhZz8QL9dN6pwiEPYIdgsziBGAYYQmJIaQiSVzwqmCiqfZKJn6UZukWACZv8DTU0rbciWO9g0mBuNyTKOTnnZpI/P+M8hkgCD6LA6RLHdI/pG6h1u5JDAbJJ6eiTCZmf/oxSLm9iuSk4ZxvMZ0tsufbcaLRrOIquMyqeD5tcT4SE4vWiIpP24U2pYrXu00a1ukC7tVDU39wVy+379hAn0fwcCdqIRgYE/IsGL3VjMcmM3AgqMbTc7PCphaqlBpojR/i1Odjiwg68DRvr37m0UBJ+AjivIuJ5NLD2ays/3TKxY6bkWnqPN0eXAOY4XfVM4tCcqMbAUNL5FsrkJnZ0kTPbt8h2dy5t+KTCbl3cWFDxF81FwH4wTZeU+5QhegxUYRkDXbqnCzSJMKXwRgl8Upr7aYSiuxESbhaX14Zu3NlQyROgG6KoGh+mnXMj4wPrCxJiodTGJMVcM+C7sfcazctWkJ2JcC5pBUSVh7D+1EjVcZ/OyStJRvarH/4mAgeGYOTcW8Zzc5JSiMsn2T+hsHIo7C/3TllSpOBUP77q1g0bXNLvYpfd6ysSqrmda27yWUDCpzCTqX0vezS6LbF0mVm7uahLuplr/Suha54UE39Wx4ued1WIhxahmgrat2efcOTfGP1R2sdTYKO3f13ietqrqVfR4/0QxOtzIayQeVat++9s1MTqNLgZ4lor7o4MTfD90+DoXDzo4kMNeUqcLLQYNa3mBvBfBxflBw0zEIYiOHccDYq9dt6Pupa4Mid74nyDCSxDtkn45Nc6iokRdvCK2yZCr36xPPPTup4aaI8o2rFpvB+wbos5t3jyXs/EKPEcBGUkay1sf28nPjC0MevLg0NnA8uUB6FHxlPXII96ImhEHVT2AYQJKaFbBl1i+4uvdX6wqX9Sf31pPCKxulXwKbmS92Ytcjn7W7NxdY6kRRbiRVaOv4ffeSlrNIfjGOYmo9pyDS/g9HXQgxUzII8JERax8DYGg9jUt6YNDLqRV0zm7TNw2vXuxdTuGmsKJyvp1Kyo4bu3Wjs3T1hWqdz2pcd2DomkgIpdbCUKmpsBmGwlUVb/xyhK39lKu6IgPms49rgICjZAR3hs5yfax32aL7OmYdZ1NoTt+AjNwpe0iBhKRVdezElcSzSGV1wrLvUZ5okvHhHeByoXfQ9etNSDDju7ub0fHtxN3BIy/Aj7HKXkOVMy7eXNaTNlZIlRlZBiXnzH5fm+yuHrsi7XdMWH5n4/TEb6v0yX57uUpx6t5Jhns+qWQVHVzMCdMSEgS/qyrOiNNTMCLLSBXx6mgLus+xN7XggszLEkkDVGmcH3y8pievL5QMaxw752oRYSl3QoujoygkTk0Irgfg8gtPHGHPnJQVdldMK15wcSCMQnC0P/rIds5uNHTvWZwcM0Y2Cjp1DHgiFEXq6O8aDB+OHJyv8cg5fGs40p1YG474kd+VrZslPmtG5UEXX4fmrw5LQiD8tH13ECTio0fXWWk0egmARId+Bch6reJpqabPU8cD+/SmK12/tFTKaPHjw1rRmV5NGbx8K7jzlRnUeD6hsF//tw7FAyAmo7XUbPq7dfjjvfJMlKePg3qhTa3mOObgppfFNvfd0BszHMyxMT66g5AAhHKNyRBtkfgZcg0AXylbaCgHrpmlYZokhatoRdEpbpKQ9CgIagG3j4hvUZFgvBUuX8e5LHNPdUQXJJQlZSUDINqduyUxg68/fax43t7d77xBkjHn4qHxQVI5VdYN/6YYFn3h40P30/tfD//fXvp/Yc3/mEd+2ZzfN70cAPN+efRcBE3WYTlZjmgkvQs04mB/KAaHjw8qUmurZcslrV9P8VzLo9Nt+85+dnfrkcI4DTCiDVxEse6Tfu45NN7P6eBBcJR8t/8TOXTqQmeXE9C6tOVTP4MDE+nqC7lXFKlPmJgJGwiJoIlBlEQuBE0cnI1y8N2QCXpR4FWBw331Ql2Q8CwytolsztZeie7wtYEW/0rBw+0la7oirZY89fkW7q7H+3uthTkrbY5Dm9jWzPRlPnUUiOZYJUUeGXPySjdKRtySvCrBwYD7u3SgNxuQW8uSoVIIsLUAP6ykZPw2+xrLy83zLfOG5a/LC1fVxasOHzokDR6qqlJMv7JbHVLoPdHn0z3N00e8/XdvHGr+uToqGTW9seH15xttUK0zB1GEBiRkQnDMdAH6R/McA3M5qVRep1Fmfl5N2TN0Ncjr8OTkVnPXYOshp5z+K0Fef37QK09RuUz+WGjwoLyMu1v47LkbnVl2qkfo4iCcHzxktRizTfKNF0AaW87Xe19aX3pQNYBLBKcodwRUcVs/RlUP0Ra5/jFlZuiq5DSSFy5kGaz3QW01SCbbqDUr0ew1MMaCeoyosCwZtOH1I9kPlSAkGxn3bCdNsbPJE5lyCDqTUjzR31y+4sbGy8q0h90+eUxbt+OHSCbBuV6oUUdrtErXzKfirIKdWpFCJTMCYleUAB0Nw563zUN/naQ3PSbJ1k45uJg0evPwg92iUhVK0RnoCrofPuDJ5/eIWOLiS/AteUNlzr46ei00a2XWqdHXexHj5xhbYg2y2htRaqnjuRuSC1kqwuqqithEagtA83wvEIrsbvjnN+clGESatL68X692FbT0YYZMlO2FQw804ekIZTuclheNPHctO3Gw5CjQEvFFs4Lh0706LF5NwKHTuzAoNSwHbC+LjtpT7t2a37j2ia6tYRWRRj3Ii8VOXi4KzgbrkSQXuW6BslXhnvA30DDmioaF8ByWGAmpgmC7f20SKqZjdfd0h3CdwXT8gASTmzRlsx8FTdx0BIX79qwQVNExG06eBCkVVpR4i0FNKzbDfGyX5BH3LS27y0Zlh/u6ZnbVrOup1/A71+5UrcIRixOSnL1lSwZLmSC7lRODvZyYMTpMykF947lbAK7pC92Vx67wyfx1Efe5U59MoO0ghgx4iY9n3N3Y1kyB1HbgjHRMFA8mszFw66BG33hVeEU/a5DME0g97VuCkala8+65pprrzlLsoJ9wRjSkUious545kyBwzIeH3LkYUfCGD90DgFFBGGzmXUmiZ4Ux/vs2/fTKkGTLlNToxPcUyVqT0DWTdM6+jiY69eEYQ8aXJhInMxpYCgVzfqCssZzAgUyIYFSsW0WlLagVaGyMBnMiFpXDNjZEDbAEpmTqEpYlpRwg7RmBckEplt3pVk4vQ1PrAAJJ0L4eRbTlYbj009d/KlpRGc10l/NrNyk0kBZx2+jU0hs6LGnrVoDOs+Lr/eNXuF9VND26aeeLKeNcyB9KOmSYJ4+5HfbV+82QU/nA99QPi+BYIWr3zgiZfyNjTbHiuz6oJbF+Bj9UnN11+SYO1+rO/NeSnGR1+h41boU+2jYhrLiX4fiveeIhICWvPEk8AL132OJ6THBwpsBtIwYv5u4E6+gBYO+zZZlwtky4ZeJ6Sti3+yNjAs+FsIK/Puv9RZaLG2LJOSv7+IT7sC3TsGBITMEFhYdMYLTBs1QMzNrg2aWXgLAvukmcTpokmcQDQOdKoBnHIri0LCqXLgwjdpWsly6S4ctzcy5xcuz/2StX5tUVlf3Op3gC86LD2nBTzN0EpzH3B7EJwL/OpWc0py1zTabWedNr/XqOmYZW98YQv7fZWNL2yH8WBS/PSmoHDMduLk0LzC90C0gBvFeB1QJL/JQUyxwxrNuVNyow8SsQCa46Mf94vYbbKdEJsP4eDXjOP3D035q1eLEVW3qQylxr0nzElHSy2glulqVsqKVeiQjpk1hXI5yq2Kxlf1ba28NjJh+KFFjl4Apxx1GMcr3KoYVjHsOK2ThzgGolXeftc85ADTm9sHW8rqHgt9oZK/nEGIZwY3rc16DObQBR6FqtXHJcPus8VTq+YYDR9OAolEQCImMr8OEe6UcXRJfcrQ2ijRzPuu8m53ZiyiW+AthnuxMnIExROGYw2SN6ymxPjyCoTyWiWWD+nJUPnCT+ZgBG5GIBDutA6h5f511ZZ9nKi2KzIvq+waf+gw+F0lFnoFOqbUpPtdOVlzSXsfXl8L6a448hQxBA8W/lymosn5tsRXklWywQR8m1rBovTIz5QeelkInLNirfKUEeuSRwI7tkwFFfforBSJDOMLw/FMTscFNJrt+5s24OFWXTvz8YCmurc/IQM1rWX4jSMvREA0dHVNdvTT1qfvLC54pYU1ESDT39rNx6SeVWnzMg2HUdsbfLW3MY2UtEUoNnlVp28ULwR4WL6cEBA4N5eSvKBwRRhNluLUKH4AoOeCNM984IHkgHPXiUS/w3rJbEcrDXr5qCc5WFcCd/o3U5p7NzXto+6OPbNDFN5uL6cTfn0iHyCE6OKOu12vRfy/e39iMZeZLdbZ/9uK78p8dLVUxFPgOMKz4jm4eeIN96H3vBpPJ4GqhglpUG2XXgWcfXhMB8s1WRPqWJV28uFhYW2dFi8sKUwypjEc6eYgjrhLGnIpA1NAcBOdjiHWBKoEJcBP2Bpb4txbpz8bXH3l0Y6sloUbon0VY4Wn0ztjaiGL6h/VUKYlG5RRXFyA5GJwKBVJVoNK/YixVNpqPehADgrDhETMWv1dYv3rDQflBPgM+tuHWTa++PGCp8eTrrn9howNAWiNfSjT/D0A6S8h+Q0gLkBzQlOtDykClf8dwMp9s/L6tkL/8+grYaB4MLCL5XvzJpyM6BU+BkfI3Ho6LJl70TyClUoaHfTEjZsoo0Cf6dYAz1g05uDp8ZVZK9sVAprYVs+pwhFVxFVWdKZA7S3MbSrgHvI/xioIi0sJHh3i83rrE5GabGNku4F8+/Ks895ItGIH0Y3qpthYXDpFDDCQAm/17W7qJJRbLU+9J/pBYkAaMgw3SiC4uZ+dPt+SRQMTanufP+uYbYW1TE8IKSbG/zibuSesHlcmSGewCG6AxQgRjFY8jThAE1u4jmBQ+BA9cQpvh26v1i3fEFD4Iu+6pmJZosa/lc5YeO/dtTD/6Yovxbd+BxCUR27Y/0ZzAbDixNtHr8p5r3hqeOfi2q3I/gCeYaHYWgSCC2CzqYxHWdPpUJkgLdH5ED5W0Nch5ZPdTNOFoa/BXOq9WOrOcSnHE16YfFSL4IQAk4sM+pVNJxi8aZMNdQ9Bww6KwKC06S9+87lTWcaXieFZ+dXxffFF8b/zr8SSO5OKBEIxy1lvupwpn8NPWAikhV/uwQ5phRCcARHzGeIIcLBc/VQfVIyAY2IFIodncWWMuvAO+krlGhN1P8GQzrsJie3n2bSEze/Wzqn2S62SWviBc6hQBMHE4Ktk2VirjAEJYc46wBhGhhByz0BV0YPBXD9guuLEbPHqIxz4T8RnLxwqwRNZHsXeaNXC9+SdXvzlnXUrquhySU5WWWpUjCJBOkm7IFDEslVTFL6OyWY8p/88+W0PlmnxEBGE4mcuxH6+LvyAkbfJuVQ61uM6fF0iqSFyo9uJfjaTHhBu+kiQpcCSSId97X5CD2OVfM7lXTFoscypD7fxCU9POXY2/3rq1AlVwLX9FZNjWw2c6HXPKQfiqky1LmNNaC6h2mfY8ilspCmxLGO7dDLkTUtSU7YjNjEXgkr7+ITz5r4Xd9Rwux90PbntBSbpRF8VVEAtSNN7B5X6MXAJPwJOwG/7n5tUFRr7xazRhgMs5eIj8FnWm1cNtHlX3JyHQfqByDy9PyifIbaSR4qJcDsomMw6O73HiTuy3HOkYJxVHvrpliqq0vSe9IAB34n/48uCIcpuSwInY40xQfC/XECfDCNU7l1XSOfgAZQX3aJ3U82lJHN/jmQY32sN01dScLyml0dn/jrkEmy6ckKt5fB2f9/ORiQL/l5cJdunrv+KRxUKXqx8ETsnkVmTHOP1yQ/V7FH79993Q2ExDpmB0ny+SwWczxGc11hwC7Qtol3k00gvzfQEXXTL+kYRBy8d91Su+ZVNMkLzaGW4BtoyjaGyE94e4noyX0ykXbYBKfO/EBx4Vh4D9hopOb0KF+CYnvsV9gDnxZxturIfqt9Tq1H+4yS09LoP7D/CGqsWsKt3tDFF513OCHctuS9l+DywfEzxX+Jxg7Aox/0BqN66ywl5s4GuuZnZ5RGYJIa5AwMIwMSuz4bX1REnefVdyXPwhyPi6mGgyFZnFUYHHRRrYf0PJ6uNVq4/taUzRJr3uurHm2M0qi/a+49KZ5Qk6et1R67IkNcDee759TLUm9O9iRdheFg5SLXM4BJlKs/ZO0qz7YMXg316g8Ln2ufNzrHLkiCxjHvGYme8+IOmGu8CoTlMIg6Ai+Z26U8N0DgqhqVsKRdlWuJr3eR3CevEjDCJEJTGYKlg9wC5IzQ5iyECKUowCAcCOEsyyr3cRgmfQojFD3o2nXOkRgvqghW6Et3++F2bf3L0XDCIQeyleycRCurJizbsaq1auGIIhAlKuNhiccmoYtix/PK6XGnd11xrmDdmxcAz3Vx6FYu2znzksB4/H6fGs+bfXm1nlDATef6e39513A4H+qiqiJEBUSB1+yi5QPCYmMep2E3Oa8MvHQ5OPFMgzCyo91GMblyxtLMjfU9u931n35G/Oq9Pn/gVPGowAYglJ+plHggIBn2i9RlzWChp9F6Ar2P+Ofdx2bq16Tvr8yK8XKl6NKHnbYKliJSgIAgHbvCA1z5CQXjey7I0zrNO3pqQveh6v+cXaM7fS9sRzVQcWcTTC5lXiDwSJLR425k3eyGQlLDGvHCSB+BlB8oYMzg/p/Z9u4ILFixnRyHViGj8fHSqk16tk2kFPXGIuoq9+CG7NDDMaflEwqjAXiLIIWW/RrZ2Kq474GPFoav7S/KxBJ16QVmZVxaZ2GaOsgBFvc5/wOUPKVzEwaLZwvg/2Mc/BOOHLT6mogJREscDXiDqETnODMune6+bbTjBX5Z4xurvV3W7jmdyVKx7tjkbOvDqd6INhe6sqYzoVhpC0w7dnfg//febeJhUz8PIRCZXg0RJenq02B1VxUp4iNpJXh0bkHAA0l8DoYr8YZMdqlm24lvVCgtLv7m37HLWP8+FmiL2GYQ/ySZV02PfLxY9ed9/6/GufC9Ue0OOxfwCK2J1KmniPhi5gX9Adha61wAS4EWC8LW3DYV8cnnvOxCMHQc+rGksklxa/AQ9EjKHgtvEzpi3yx7F+H85AtMo3nD7ZIc2+B+NnxmHYDvQpBdGfiUgD7l0opF+CsjRjgXM3aaWiNPGtsn1A6f+2Kl+GEWUo6wqOWJT33ujeB8nzuVzW80mRihPFZgPui48/JXPtstxsdHBIcbKzvhSxbsaE9IaTJ9wFeDjWfviBQa/sd1KHkFTWlNNCMKHCTHH+49HfpM3nfrObf28N1v9gtJ25mBpXWPvFeNHujtcDec9jAds3W/H2jCH4hiuzs37iUZyvu6ntOB3fvZZ+8OjpDu1NXT5OC9OjqSksM0y5IZ5dYNEkFf/gP+nI8mwQtYjEp8SA9RzL874dv9eQVReVOlIPeyxdc0fOyR86MNqICAb3XJa0ut7s1c+Z5/RmL/axXuKSpzSAiRgfz/eTiT+61jRKLa0NR6aYRjsPFPaUc6/fTFaR1idMSEwzZgQ/8gt5QyNpJ/5gjST9o0DHKOUjeGbc4mw2LJsyB9FLE02M2egSgwwLzg+4OQTvs3lMZEeZzom8wFTgLErYzB5O2rexHXNKjtbEqQPntMHT1kkrpxde/ETgrEPr7uzEEn+O+/C6S7IqnAqrxKaXglC0fc4zpp2qOC4IAjudH+nX9PTyx+K6QRdXnN/cZVw2cPZsXb1sN95fSURPz48DEXJ4jC7GIHdEIJhCIbC+05YvhSTmGGiUBLqOQYy+g1QCdxU4f8Y11v8eU2SzaVPpQ3FHsE0QlIeYkbGoAzIs9AZkdws8zCtuc844px0GoH9X29/QsDptHzngrKMvSPATrWjYFFp9SbeqSU8Ry/bF963fQCI5ZIVdUreSbNjguSW8jkSxqXX9tetYRy1XU7L06vCMUKbsddiCmIs2zxCheyqQg3bo6zNTH/lbHS0+1fy+41d+safG6pA5EStYu8Ms3r5zZxMSlrrERSSuXzM8fME2Iy5wV1YqpHS0uF9sSgq2FXg1rPt/YKeRDlGqqfnXzTiLbuXNlcs5nGZJag4+ugzpzrW0pEsKtBhsDQSSaYtolreOubPhIgD/nWOhWAFEXmIMiydtbsQrx4EbdVNzGvHml4r3t7ScntJK6agCLPlx7XRokXCCQAX8+3SIRLKYdCEvP/khXMS+qrRHXvHkfQFDfg5jj+tbvBrXOxj7StLEqY9tNk9uLg39xVXYZuWq38szgB0tIu/WeCJDFb2p6xW7X3Dogg9xmVoSSnr11mXXOGs863SKF815vZYJl6NHaoE+UeEUIa7SkpRHJqRXVm6hKtOTCkkwTCtgOQxPlWg9wlpBYKQNoVTkDqQQYiy0Cv4NuDwyAg44ugcpDSN3umAwPpkHOGknAVEffMI8QaqA5xfTqLvmpsb4zc13ukhSX1Uu+b5MUj2mgvnue0n5O5LtlbI8RLeJQoZFusZrXd5cPfACj9QF6sqhjF3CXa57591kPZI/Q/IfdD3wQlByeX5MBFD6mLFs3rg4VtI4NmBQ5pNuxoXSHTuZN9hwCIR42BPqWcAHClAEvYdoCKcG02g0aAnBhwUJzgQBbEtE+Tp+QklBYo1T/2HclUTV9P4mF0478rGYjeGToZMQUZw85nBq0MzLjsqgXGaDeH9aYNZcj6Y4U1Ni7SiLOfFkXy37LO7l2JegifTsavvGNdk07XcXijqW7s7esxvoN76jGrfTJt/h/1ua0/CD8b+Kpoampq1rvE2z+O/JzxY+9ozXEw2yVLzuKhjyErMIrx9fg8w2edN+P3gBL2IuXq7MriYVuxH8MJPJvKRwp81mYdBkF6r10S+zuhyzLNWUKRV9+e+qZ0P7Nw9oycxjIRzed6+9SJRzeKsKOn3Z6r55/SViO4vbUJBQ9Me91XFbpoEdL7Bdic7E15q2qVTe3unsBDrEq/IL8gfnW0jUQpo1TwgIxlv7IuVD+9dfUpOWv1gwMuU8lzyvLTt6vzWe30U11FuthesXrwryVURk+WpsZHW1EwXNvkkM3rdKwuleGZ8gldJ9EY7amE05KysMYbUphlXlFauC4lUSQUjZpW0h3bd7CvK5Ie+fhFOYZo5B0CjUSphV5XPhZd1nIiShL52E9NFGOYaI3jud0hbMBPjN30H/xfwgLo2X2FKBfHpdW02HKPk14fymz9+S8euppUHSf4jFwe+9qnwpImRNa8E3Olx84jqElUfJtTLNLjE3NFR+MISNRf5CF4YezLOryMDGGVKTomoBAwib0qAcWenCvx99MIbFYcT6aQ0uLH5mJsaQTlVuIzdtcpHqZO73fNKoS66rVSosH1tosJszexYGMmnSyEveSB9sKj1c9GRJkiJbWgo2BUQ9gK42vhPsQNN/vZc+jQ6okeeNqCP4ndXLxOn38ovKc+UU/3VMRDp+R/kMlLxoJ6ofFCnPdQWhuUwwylpPWXMX5ogRkR7YVpDrxBtsuvQo0nv0shhFiMO6VkyrWFczI2a51KrNLBNrjGkVTBAvpEFGla/oF8+KFVMOfM2sh2dN4VlWCVkBg2H4VIh6G9cJlRaUxcXktrY9o2+dW75EKNul3qV7Oxj40iJJkY7ByaRW3o1+HYyY8hkJqD5kMMM/OKXP5FquNlM/tUWc82IG++4bMdMf1nIBDjqPCR6xOK+ut7MsVe291NLBz0ggzQpMNnncf7rl3z8UyN+/wOJxeBqNFxxjYYLS1o6oG0IpHgESGgJ7sOCrbi82b+/oxb6tfITVWQW4y146SyVnOtGranLtOkZvnKc+/Ucioftgjssgyc4OSbu6ejQsBaVEnkBlUJT4xZkDMRPXCmwL60IKjKnwKj7abeUd3Nfkv/eassrK9C0SqM4MkEBlmIcKDO1DJiRuWnuOts9UmM0GQWY4Liw5tIFbOuEzD+bWW8XDSPl8WN31pqaFXQ0fvrr8lwXAYdXw1LTRtFRR1ToP5Lf4RniDOwbCZl5krk2qLzW9F0vVS5fhzvErBksHVsC+V2b2M8cgm+FvHmK3WtH/MXaLmzenDQfkV2KQnqwwVL34YlkZsnqSJyRpTJoQFRCKkzXOjKPzzHmMW0KbNmNjExNdvL5sm5kONIVImlN4SlN1JPmq24zVGy9MupwjAFGhRsCE8Pq3s7aDV3YX2spwVPn/yrZtTAunIcuuPV3D96ZFiDPWXCnfalgbgcf1je5BttYXh3hkbX24v5SHJ3StHZRcNACkK03s+ATLSNnyAIlhfuBkrhVBsTUEDXcNsuFYamVloKryUU3uliYJl6mx/pUDNOdKqyPMZSfbT3HAFerAMRgwT+wUSRbb0yPt25eN6qWETU1BYJ8eOHvWZgvoeY8xFZX34h4O5lEq8sCdr7em1ejgYGdhDPdMLIFJbf7zhYaxqYpLFZMVnorU4fZA+2ft0+3mjZ8fRby57E21cnLygDrhjlM2YNM07D6/QrJzV9Ka1I8M+4qu/4PuFCE7AlA7oGq/gGEaLymnKed8RS0Zv3X9Rb7UdTlOVgJqSR1UaniUnHUAGmk75j6TkRp+5TSeexkLnnOknhjQ4q2+BxfY5LlkQCSCfrAjWLXkVyGhgm/e6NawupkRGaa7+wVL91F4aX19p6NLCe19y7yje9r3HM1Lyz/Ab+APHCtrneUDD7stu1pBDYbHode1l7RyNDSQ4wLXiwANDzDcTYunCKH341p0Nd9IV/T5OO/xae/rVGbIy5EuifjMtRuzuajiveavqYVH/HdE9eC6TR11BP8YDPFyCDJ1mVOYKV474CnPSJmgs9Zc+NjJXRu8Lq9rw2M7Tz+1H73Ph+DB+OhjUmOTvZnYg4i1NHA5zCvebGxrcz327EvPP3/7t6rgkfkvlEjZQo6pdnNTaoyImjHEqaVG8/Wg8xo1V7OybZFmHR+nfVFOipqzFUo1umEFKfrAmi1XfGykgI1wpS021+Xlxe0KP3mxqHdJicoPhMpXI4a72JDJVGaKmbpMH0DMT+QGOWL4FVN37hXZKUW+zSFEQeGbIkl/b9IcP5Zeo4th/7tx3/cIvwpOVc6qKuFVKcCJg8KSqhnWTpxh1IgKXH7+Z0yMWuI4TlIzDILZLoLURJArZouJJuHev34x5mKNUC2io9q98f74vVoozKpOcFT/nZqMYFCrltVxD+jqbfyuetFfgox/TN5XQ39YpLXnX3RbKKnzK+QEJo5GpikE44zIsgEfbXPy2aXBxOth+x30GT+pPjxuSns6IxuOFTm2Y7E6qM5Km+6FctRJylaJdlhWlkdOskPCbcMXk8d1CxiMxzhQu0XlX2k4i3cgTtN2DBwhT7Xscxh2qfmvKu/qdiMtSoRODAF1lRDVHAjcLFhdNjjkzMpUWKC12znbtKvRumtuZ5ONG+yc2wUHY9W8ATNSo9hwdESzyWCTYS1B6h0CF+G+gNYkZOqE9FGTK3CEV8hvIRgCwMe6Z+9k1qTb7aNe76TSoi2hnITW2ntyv6KGM0m4zSMwIhHB6f9Ryat/DhYS8PqORXEqokys8pDkq/cahurZCcZx7bcNrJfHu8iU7iZhMHoC6QZTqg0edKaFzs4q3qikhNPqNyl3X+g98ETAcfTXOjc+PBPn9NoiPKwGr1N+XtPW5rQ43S7S1hhVDf8Gm140GjtaTsxts06bWEcqamJaqnfe9zrmqoOTNWIRG5Phm4mW+iU4ujJkTUvWYvxYRPahjzWymFKrmnpvgvpaWEFVI1j4xWH45fswLjeTtaY3N33j3Zged7PSVAmLh4InTWwGAVTYdLveDBH0qBaS4rFp7/e/LbxmOeC5dsweu+oH3C91Gp94YnCADPSNNdC1hzGnjhcQF35p67UVXEsFNtwyOCo1nGZWX3ZzBIlITCxlxfFSiH6RwiqeU/EqCXOYxWj5wWY5s47zMPQgzL3UCQXKYr1QqeZ8WPq40uNNL38ziUkvezM5coYtISf5zbJ0JunN8hE3E/UypN78A5IEB/q7UvdvVWW8uKMe9ezIX3jEn/q68ooJ187cuP4qFj+su8buLjN41P1h1k7E2qL39GZJkWIhHQoGSxotlqC7P9qQ2WhPwvszArX88ceXUyAh0VxJeKH4hYRAnS/L+Xd6W6t2GSKK8E39zVvF8TC76+8W/3F+7cBhOlOCJKNUYufdyK27qZgyTilu6hR6OSwIjKwLO9hxfN0KwN9CL4PuYacxaQj27XOnW+/YL+qiMpheaylhMuaEXc5VfxzAnb/OqUyuKDMn5/w6EVqOjwiWy2U6olcCZ+edz6vOS5KS8sbh58+cu+TyOXxPAOPuaaVzsQD2dwhKqZCmoiMO4tCzCBGF+/NWwbAOk9kmxprHCrGZBVNeb6wBCA6/Y0NHpJ8LF2JTr2oW+DhitHm0MArq+bdkXF+dfjauT+OnLfIXOg3BpE6lhrws6a8iPjt544NclLb4u5hnkiNbVuf1oNqOzjr0so5Ul22uyemni9ug9i8meGv5OY+mk7LRNqqTdmQZc0Ya0Y3LuIn/fFyHky7spDsLwdZ5PJ6ZPCf2jRom9nrnoNlJ1e4kGxucozt3pfD867jIhuycbJSV6gv04fXv3SvMc6i9lI6R885FjvBue+maSVTMfmyi2lbR0lKxon5tS1XKuhxsA1RIsPTCZT9Dctal+IpadOsWCRdFMLAVXjlYYciwFD9ssAdjFm8pU3c1qw8uDnzvu1KWZUlNZVR5YpYB1nzW1hawWbcEE7bm7GjdkfOPASj2rtxH9Loekx53bYFCYhBjYiuXVlZujGsIFBHmKlWJcnP4KNqjx4xLg6808y2oxZG5KTUjRgWpmtXxKU5ErtbMKuz21taDB9pa7Pzkr9+wyCrrWsAhB2VrJU4yTb1qDgmuoggT7JldsRPBJARO0tTqY0iL4PQ/IrSakXOBNVq0vjcg6Syy8UUAGT/PgwQm0oIJ4yMlHMGYcCi0aIcQwAu+oPKeq5817XIF+S1ffOHxycBAgNVdijcoQ9ymOwPQ7xE98PkM8TxiGJOPQZPudc9dyzFBcG7JdXq9PjE7uFZCFKxpHOKNPRBPQ9asN94vnd9MZ4V69nF5Y1n1u5swQTEyYjaTYjd7g64YPl1fW2bonJFuSYV+C05Yrbabn1v+7geZ7LXAR+d7bzq4pAzMDwyoTXrXQ7SB5Pt+HE5poQeB/H38LiRr399NBQ4raMFvvkAZM8jN3/TtF9RAOtJAL/TnnX86yCcbwZStn80MuvvG83CrlcEZe6Kna36Rm7apkdo2PS0EeUCGYessgkgFJ60YT1cczvc9FBr6SQaXEEeJFBNyICGc6C0sc2VjMPjbGum1UsrPsTcScG+DIUIEe7q96tkfHD5M0j2HD1dX901v2RIq/hbqKypyLdz7GUxAI0i2h15M5cJ+DNMo3rKzNlRRxWxQVqf9fM1ftXfxQkAqav3wCkJizKk7Pyd3mV2titS/RvFH3+mrUDtl0z17dAnFaIjFpcoDZpiuBV9JxR25g7lhmUpG7XZfXtDpZfbAhIWctnHKgnfCixJ24jeTtqGgxxOE0oTb43FzmnckjVZOVrCiIRpMCLF9eZnpPqus218uWMNRcaSqJo5T454AR1nhv/mwh337ZZ2X0WZVV220KNK2jg5BMLvcTMm32o2p/n3TxCgMZCzOKJI68ogXSNdymVaPxWFoUhuCyE41vPLycWrbZHFmXXWaJa1g7P6iUr1ODvpxQWlNo6Q41G944KjHs4SIIXJ705vddx9lITpiGyR5lQpLmbfxy5OtrpbviyyFEZ7hb6modG/C22Q+PI94IphIeODETnVgnjwUmYH4xRMLnj5qZJ/b7HR2ocZduxol6c4R7PqeKPDIVQeWC2wsFEuATAdpv2Hz2K8yKUeuRw+PnlmAwcNWmz12thrhUswGQgkal1b39ZrUlaTzl9M4TFC95WArOtpaTW1kInmVhiIn2RhZvtgyiPapd82xUa9GxWVn1krVZRAGjrsXetUffnmKgk7TKBJSk3VLUzRCmYRELGFxwo4ocSpTCeuucCsVqh1tSkXlt2/tG2NP9kTBd67HP+3M0EmdBQu/C9gUMXSxckt6Mq/gIaLfj4/wCZ7M0cWO0YtrMutcbg3ReETRFl2fX+vaf+H4wz0mX8cVDbcMUwhyGKNNzYhpGgyDHHp+hl5Y7wiaGKDcBgkmcxdR0ZafE9dEqFgx6n/Q9a70xVFQ7vd3yE2mJ9SrjamHQhg06MC/aE0EDfoQfb8y6qePEa6LxSM5fyL6m0j/YUlFUoXy9bVlOX/5a0sZcPeg1bpNQzQHEqYTQkTyzR2PywsqDjda31UdBfm6mjZBpySTzo7nB5odVwxT7u1KJ7fcHbxxERcrIw/0kpNfLsXP1dQEWasE4/sVnHaxHtnXfMAkaXW9NMSPxfdbrQzPeLU/oRDVzH6CYBTSd8afk6aLXNjOiIzxbNnuGD/+mrRpEBPleJXuN2o93X76DED87O3pMcVs8axCkqySPLdq7kzo7JQa13zuZoJjmi3BzeCj2Ajcd7lGJVYMdAqzbH6YMUCUeyyYzEwK+l2z78iDE30Lx27UYLNfGstfE9P/34HcaaUQzYlThkTuiYOdyuj8VT+FgbdQ01f7nF75ZRilOKV47bO/9XxFRoh9eHB32I96yY5LowBBFuzhwSofQ5g6gQu1zbcMIYkDwTXFmRGGQw98h69lG60T2p5L4+OXPKTaNdZFpFI1P54np62jo/P7a+nWOpjMCJ6DsiHxd1RnFqwZ9P/zWmnTponEbhzql5MrVZu/HRu7di0h0RGRUlFPV8fmov26H34YraqxBCGTEoxNAnqtLGtRnef0uDRmPaVA45xPKiGhwzMzye7CIyPJfyn9U1RI36r7/ru5+n4MP1Bssz56IG9sHdkXll0afzoPnn7u2ENtalGk1g8/pHiOFVWn8IQ3zGZ32MJckh3ZJXsKvSs1ha/a+FsZAF1mPpK9Li85Qjp+Kv9ua/jAgH3t2t8uu+z5vm3FebhJ7hIXvlqrQ/wjMrN+xWBa6kDpQGoahCqmzhqWi6/9FelkiSDI4+MsKa8pNZP6ZwK1pvY+y5ryakiNXbXikYnAhessAbQaoslQOHWTgcBE5uRHvlvnVGTsF3JghBtcJF1d3uXU6f9bdEUkppO+PnOFuc/6jmJUEW1Lr+CjYWczAIu5mFoZt1ZiFI2Gpzt/tyI5WjOwMXHP4Eow1ldTfDQbop3cyVjaokvDkGwfo6o5nIgZrDtZuybnuagjmBkdicp11UHKvfEWIH8MeyLHNZVMfIzMTIg+k6N7W5aVB/SvQuSvH+3WvSM3FecVZpuUe97Bkaj3r/HrxRlqZO6Y1WESFw/40bt/oF3xIeW0Mr915vbZLE7w344Prhy6dqNKkrIpyaGPOz8GTU2WU0GU5GP+gIuNJODG9wPlpkXWWOf7hsbMvciqcqH4+hw+p6y07mX6D5Ues6DY31h0UIRQDoIo4hDnqd00Fn4hacCeMJQdCBmChsigvFXh9cx9o+J8H/e23qgBMm5ZxhhZLfmh0bU+1zmqea9uwf72GU1UTlCWZv2LMRr6Xanr60bJUQfuyNGW+ku1Y3NcEMoAn4YVe/NzMIdzPmqTGnK8GS5crFYdlcv6vuTXLlEXCZtiVsNwjGa27mOpKnhJ8WIroRdLFkkWr7qfM5pzij8wFE/tUFPoy/aOEJLyxDAm5yS5UxfcqDaWkn+xOfYZOHKGjTCnIIKkH1/HmTwiqre3WlmpOpEtfk7wYJd36xgmra5m7uRcTcsDbtMUJ2vMy8yaKP+hSjoZhA9Kpt1ccmjzZk83aam7JTlK9psWLfwCWMKG3/29OmYyIXWg6ti/C1wsgfx3nG3m5gjtOxn0IzrVngqQGnWpB9RLL2TpPonPCsE2WJ0FVywoM7KmzRjDLXKoQ6REEFaXZusuZ7rvFa8T5ZMtuT9qZW/i90oytwPoQ7/TXH257nRiW+QLeF2zFUfeT3qJmqaeV047jw9Pbs8JE3UNKIYViVGjL99BkTPsKfY0G/afjPLNqwKqbxQ5+sq2QF7vLXE18WpnShPZ4Ege8E3HlRafpS01XlAyROuDLH6wUefe03NqcdkjzAZ2ZrNmIC83FqjaLas2huvJTNVntiJvnL+WJVay8wOq2rNefxwuPU8cC+/SWM26Ff+y7/g5ZYnqQELW42pFfqsx36aOCDWTzKVS4dpLqVH5tdV3kpM+TUyJXuSllmjj1fFpyzTJiamK4P9Q6e8Tk2v9rgXBjCGNwiISMVPeuGkv+quC0/GGDbuxnmVGGL2dcTNz8uwR3N4HDxPfcxdbJJ9kpTxNQ0J6qKlJldAPSBQ0hGF499wZf3GFIWibwfDtILN1iUGa8tqIY2HVv+mN/xqrP5AYNkOWlaV1mQ2uEevx7eZml0zR8NYKG43JZEZ+tfAXr7Xj6UN33F3e2vFr6fP5H3d8/LHMSKXZFv+wz2ZLSjRLwR218lS7tJT6bBjz3QPTr+btkP5AS8pQ3EFsZcywJK5P8X4FcHD40+X2PkGoriaxR75typZDR2ixpKbUHP6BPFFeUwltv+6YHPzFKj+t1QTkcYEtzCmNLmZQkKHJiB3kc/CHBHvRBw4JtrDtk2HGAgXde4HGCA4lItFLbpfiOXIoKzDIwWOvye8Tw0BkHWzrhnHkR25yaexBfLcaQnQkyR99CCG9KZVr0velZP8WxhlSrKT6abM73gHdJEzhIs4T4u7lreGZCN8BPYINwLXZlz0zkT6MAklS4JGH+wLO/0UWV7ywjCmBGH/kiHmIpM/vqg5m0neCy8fslGYayPrBvKaon7hMjMjDewak/BSfz8evaG4Ec5iwiEO+CZSXFoHwW+qGK/Nw+eKjOecWl+OhNdwR8aOFyv++SxeY/1L15bxHJ/4Z/gXdC9aD+vqLF9Ob4gNyY52wcb28fn1zS4zPs3/TV4DCsCxheTGvOhF8uUql/aW/S/+OgfAMcQcuOv5ZPOyeUj7DTk8ANUV5ryNDETGwzNweokdOgKFKi4Ntt27o2tzFfycPM40dXZTdJR96RuRENZO6oL1H9MChHT5RnDokiQKp5+1qZXn2mgkUKPQKbs6o6XazdCrrawisv7NeBcyw4Eg39copAm+zOahiMvJZsZNh6lsg3MYk+M1ffCk6iH0EF3zhGRcNtKXNyzI4MN/aeuy9Y8cDbsxu0UbXdKKFmxcho4ZMx+KOW+iPWzzApwJerv+o9K23SlEVZkno6A1C7P6ZC3IafRLxBNXo6e1appEKo4VSTdnsNbRoGqU0TBxhs0bVly8qB+20BEW1xQ9oSop1DF5OxWlhl6NPUB8bqwXTlQC5/YeS/6dmUcqYzKzY1Lq61Ni4+piwuIqbpmWgYO3fn9cWoZpRjWxsXfi6MRnloEW1n/8NNRaFcSupjxb4f8ndQ9Oym3EVYVuXzB80/D5AknalsKwsSO0/FRqPuevd+oYTgqsGjus+BP3ftHZ4O6xbommyzyBCMSmKJJiX9eoD2PyrZ7M+7sL96+pXrNoClpw6bpP1oKihP+2QPZhE2QmtcCHWJIS/NYQZz5NblU6Fq8otQNajqVvwWWPW58BV9d2DCVuQvgTBgZwTXjEL+6UqjpRE780a7jc5rbNTugHK3alVZvfVsaigRUsax6V6kMtrV8yRoZ587muVHTmqjl7QPM6iII5utxrutZesnDm9a+cZ17gxYw3dd2tyVUULd7DFx9KiDCHKtWuZJgiO9zAzXm7OeHiRA0lIi02yTXhZdhqZESAz0sQfswCGeb2TY8n0puBCr+RqWtJzTCCs/Y8eLIlIbBodxWVG+9xjwXv1Sq0dRGb8yM+wrIBdEsw7G8hhTjSInNeVlUkvY1sbMRbbbC/+B3q2u7s2zZJqnqyKoSEYP30Dhy6r544mdU4Njmy8OPScnze/fAU9Q9369PV1WYbcE8c3+E2/SWpePFk9WN3Sw29dX3t9he9S/PFtH0gfbDte9JtGfYua1Uqlt1a/x0Hs33A8/tKLLUtnebcbN9y86XH+Qrt+KXejb1ymoab8XB5nqxNZ36vjl7RHhs4PtSLrtCtba/oQzrZ9CBGnfw9i3eX/9o94Td7mqBOD8qnfS9TT73p7+4vRqlU+Rtd9EjTwix7iDCSC8PJIJmJNSv/bRgxLGBGJzGwZ1MCYs8uHfOAUwWRsMRsxnmEALhs6KBPIb0NeE7foY1VrdoVBkwOB7+W5g6q7sz165B+kfnSYN9z3kFR6BRY0kfh+5F9kTn7mSN7vV1kKcAttblywhH6fNxInyOyLcS+IDdi1sdKZyAI9XwTA4d5YLvAqWuebNhSy5TdHR/y3F+hYy0eMDU8ezM0Q36ABlhzq59KUHPZVzCS6OtJVnrapc4PVbjOiCNHksNErZOd/IfVt19xN8/AuSXBmv1Mpn+Brbn2cGAgp5LG1o9EZt3lIKhRPOCiaUNJDqOh+GGIQP+UWZcnY2qQJ0UFadebWlaRSOQfb5ZVyaX8bhjyEFSURiDtYIfrBy7uejyGzgTB5afXK1qYeDYzMWkLeDHRpq9PulLTlHbq5rsGHfBp1Y2zNY2wtUs78leU/eR907ffN3XoR+A2upziI26/nmrj9+/Eoude3i8SOOLTHZZCxZ/HUQtKUQ8o5EC7ABdwra0bZyy875NhX7fBlPU0Yt6pijGpuY00Q48mgshO7vdxul92JKkhTcWlT496mpr2NTaVU8Q0Ch3MVk8O/489GXmmrQ/UlR8xrvhlMiqBY0oJ6w3im7YlYfl7bJaaCueHMwYgfxfTHWW8/DS4rvj5OIYylTEblH7uKMxI+AWczhI/pFw8kZPiD8eESsh6H3GJl+HYMwEHjWd8jhsygLLTUUxOTc8RYAh+xW0ofpoc7xt23eksDSnuX1dbU1m7cqMjQ1ruZvDHJzsUdKOkYWHnuYAiRgmqX3FxcEMRqVs65w2WUZeNkr7d1KeiGSdk9Q2fUhtX6jqN2E8DxhmeafHQJiloXhI3ReFcsDqzIlh+31NUFZAkEw/I/57D0gbcuTDbopcB2V82EnHbcfppwBIuiiIkjKiptnDmQwx2IlAwNnrzTqjdHkFSRVbTqYysIevgdNL2nTGYGITWaZDPnKdEkMBKjQyLF+K0MwT2eoeIsb+2i6tlPHdj0byq9Mjz8ZDxxJtIw6U8aZSwhgF+c27cpBfYcc0713HOswFmLkdUqXHyOQy/3keoAcb7EE/lALRn7I1/NL2rlZA7ORs1fB67mKQPdPd102rDWh3y+LLFNuqvMgT5NLBzhnDg4GZi+GHx5OvWM/jHiCSEGGJGBAUCmxNrsYPLq5lBBIcpn1Yseupr0SPGF44HHcX6cVfGYw2MiBV22UCLuPIK9+L3sXpMDEyw55jA0AD6Yt7fm0GsS7hCnIVvuQH0ZWrXqpGjauGNjX+QM+zdhJ6sepdX0o8arIYvyd/a+uodbF/PzFNstDnuwZPIOXnO45SfnJ4Vbyl3xrgsCN27YtwVWrxl5qxX3s7cfGxLytqly3WJQjol9jeatEeEduZ1bw2c2O6DN2JIOwkpXsUXOcRHxOHN+uj4J+RH4qL6K8wvdxsTuyrghxNqo1RTOFWriOyp82l9KHHAUAm9bJ9Z9wqubZbdt3jfra8N4Qaj2RoKJ0WodvzadYqgn3knOLx8RfwDbkVMvHzKpWJaZQlMMePB5iK9x9ppgDeK+9YrRXi7mDbh13mDc9fYRiVo1R4vZTD/8SJ8zJly8+fjljIwIY9yjaRDNW+Wpzc+F77/AKPUjEwvH7BU4O7fC4ETkM2E72RPslIWSwl0PqhrZaeWT/0k+50WUHIt4uHwRfjIOO22Z1boywV7eJr7L0EZ+1ak7GplVK29XiDvAypWBttb7ra3UKw34RPPeLEunBbdmnAioAJIC62it0nvqD68lLdVihm5Uo9vQ2iFjoVfAHXKDIzojg7cHtvEH9uLadz/ZdBePIIRGsGk8r8muIQCH8OYhzK+6wm3E/M53QkYFKYyAcyd+72GPWB+SvXQzN40DM0vmv9Vwg4vTELBnr5CC3WLYbkqKpXWBUbVqMtFKk7ulAkRZS/31NbrXwFSoAhSpCoDq9+rKof4pKQLuHnskFDbG+KXGuUN4jeAJ0iqmQWRmwIAVI9I9s2tqzGEVz5z2TEoi6wmyH/wQSNG1G6Lii7kohGUqBbRokdimSX9L9Kq2tbRpHMzul+dC4nfrLyeaRS/HvploCBoSD0APTZqESUZGpH37JHN14OyyxnBLTASbJj0fl6iWBHbkNx7exPZHerpV9Z806CFlQ9wAnE8jKuWg8s69n2f1jPgt1Dtb+CbCWNhqzK8j401YxDw6MGLgvSoC7A6AVV1ok5OrPU4GAwS7/S7Px5P/ZVG5X95PEhFjttYWtpk1rmxuXlnahBs6bieEfjWTagnKzbbS2KgkjY5ZGluDrXylwyHIgNn1xiceM3yDFkVmyn8SscTCw8ZY6JTulAJlxv7JckCfVsAJSyISwTcVJvR5W9jtYjCmnvZtA4/EvuPIOihHDBklLZ+gMPWsOx0OQ3FMi3u1dCetjM6RoJqNcqjTBxD9jg78JjtjO+0mJs0kiZzIFJofTvNZs/qANnnHd0vtKa+cKPXuSnvvg4jy9Ve2VI3gETh4b9vV9zbTzdSutGRH4brvxu0pLadOPOHcnfbe8S/WBjFg0CN1zST6PdZra68hCVTEUO5rqNgp0hgcXUAgmsYZneGU/qJGK87UlGekES/46/Dco4Fdu5wB3wvYj5VsTbW9eE519eanN90eWVl5sIUcJAe0OEzkrjTm1/86fKzJLQ1LzY2LjglNXluZnjuOwgwl+3MydObUnPCQesUo3GMWfg4ubcOkaNiSHo3ieM5vFOXthMm35ee8lZk7ozfm/geHzTdwxuL6vq4aTXfJOo3iVI5TsWJwckxMSSx/MrtXv+Bj9hG65uyrsblP6EqjuZzkc4t00i8dxQWW6h5LdUEUGhU2snZkSWHGBy8ODOqGQ6I5fqJffpJtSA7/UbQg4PfE2y6/Az7/6Ewm3rkIPH135cYqd1h45iu1lfLROiOUdhwcmmyZjH9dtq1tMi9v0pkMSaUuPH47Ce3OTTybl7qUW7r1P5j4dNb8t2FnASmdIkHFz4ESkSg+wT9tRs2qEsuqmspGL6scVDqQQ4RCnDPpQRi7GSsD5ii9wojDsTaZArQQnDgs3ZmrWhTYxVUt3s93dtphcIKmCckTfCPRGuaEFq7pWuop9vMbNI41tcx2nqApGro+zjIEDFlpOYacXZSGaKjwhJtJT24IobWQ75YsQyuS6n1z7taPeIdiVPEX9SqvjY3b9yO3QJj3HYHcHXRH7xENIaAC9a6G2vRRVJeyh67nCIGu+jGvdicTXtKxtTHM8WBnXe2PGY3hHR3hJQ8OJ64m21aTxEoFKHZcCdDvPX/jVHjDcseasLBZ75un1oQt7PrdPFgStj/88bBTUfgShmYwTFUEj8e4RPpMmGXNEuRAPyAbuCiE5jtykXCrRbUAIpPQmwx3ecDZ2xZNaVZdWKIO5v3q+G8mBXhnXcDwu1G6PWNY+Zbcl0ZX402EhAAMcFu6bWPbBvKfXIXFRcyW1FIWZ7w2LbXG3P9IjHpPMV30UdY7oY+FMpkTWzrXRioWKdZGNnVMZK4MIUfCx5DspQtLuTzCPyabOpG4oDTi7gkYh/dypo3T2qlx2Lg8BVzkGJ51NEIJPOOwpwfGso5nDWYNZcGOsIrxBDJee9Cb9a9WueiTvE/enFBB8ZGHreiGeMdjXkM04U5DUGA0jPMa2yrA8MR69JCnN562lWV6ZKQzJurkkPKm3DxEdF11QFNksy0tnH7oIbqJpyHqdYSSuLVeBjFI1/lDAjSnOhUK3YeEIn3NUWVNnWu4DZ9SRGiG9QtY0DBrMv1ITTxts64+h5Bga+oNs+0l/Izhcc/kfni96VPLnir6y7JZhbQKNw4MnhkceHqwbw1d5S6p70ko3xzdkbKTFqt0A1NjtiQzI/PJR6PnpYmQXk5AeW3RffPqRkPI9VhFqiJ2Bnlj3jyNDgQrBFtdtJk0WSu6apfbcGWoKjQDty1//xyuSLelriObizJr8f0DeDgtVjmMD9zPxZBPoUg3+3JQkzYlJWVzqv6L5TU1yyorqUr3icjpd/8WkvjF7z/pzh/ODwnuyTYp5bTULalpW1JT4PXv9YZbrQFO1u8MTTV63vrdHTADiabtnx/1erXEVfwDtE1a1ifMr0vTl7Uve9Spn40TWn/r5Xdt3CiBoCHYOm8o/YeHEIWwJUF7qWJSu6Qj++0qmzxO7o7EkhOAyI5d5gns0R86lOsl4Hsfsyf03Dlp374pluUlSLFV4hcW3w5MM6fnuOm5ebP8ovTPaIL07KDhZCltdZg2BTt995TSatUfq4aLKAn1uCQ7H7DZ9j/XsOCTfDOz+w1v3tfWdhp4/fU2e7R/nvrnz9Wtnw0OxgU25NUJCJem1F/dlht1x+w3rA336CySpb6Ma+PTKfUGFiCug2wn53AknnLlcAU3H/ZNpO1M+o0rc3WiVRRGsGKTYfpJt5ICe9L3EcEGWAziaoywH4KdURCJjscYpKDPxV1z6suyjC4woQXvPsJJc5cWUqhM0tQLB+KMXHnBp8VpTJKqpWlJS2b/0biUauXnvkPrVUoUQJ+habRpoW7wr9F/2jE2bntdIeAmGUdhUTj/VBO/ZHyux/AV/5VhZEtXVdRv6Wlawt9rmzVU8BUGcZZwg20PvP32/OTbAd2lwfwtj2/6/2CU1fbV3R/r4eXbfzOBlN9lDm4pSNrm3P3KbFslb5w/UPFvuD6H1z3FXzXXOwdPsP9w4+lo+8vVpe3puNphSWvpD9vNjGFuYso9mrA984IbmaC6Q8vq+NH4VbyvwObCFxqiUWM85XY4zjypVrN65Ry6IK0rHUfI00miocUg6z/LReHwYDwXP6g0cPFDquXS5Bo09u0WO+wCRtw2XUZz3JyAqJJJXm/5VXOyrKckNxAhDxkFcWMsSxetPN/qYj3Pu6APEUj7IGhyLMR5xDFC3BNo7pDYYvC60bdkT48UVOlDca6Z8NVFH/3m9xO/Xb++ISlTkZn0/uDM1tbWRcs28BFBK0ZUmBklE3OSn1KaoMQYlp6H2IRDhYnIijE2Fo/wdlv9xmMNWUy0udM+Ak44zDla12p1RxnE2Nvbh7ehUDGbC2e72QiRUGrTUyShitNAsfcUaCvGvvCKZQqPwxAwNEZYadC6m5rEwBAHGckiOxwk+4/2OaeZTqjpoAztVaGlxNhtLzZexomeaCdB050q2buY7TjN0JAKNE2reAMfUmLw4yihe/aEj9D9bprFTAIm0+rEoyK1c1Ec8r1SMzRDdV6w4rvpAqtHziHrdmH9luzAIqCrD7ewMn2SbdMwatwgtbPy3rda6ZIbKZHKoDDF0LbXeyicqu//Nzjfbic62FIunnptDEUeNo2/UFht1cZbjaQEC2DkW/bbIVFo1dcKNP1bVBSp6kavRNs0K1I7agTWPGjcd3xP39OKJxPU7sEiGq32HgMCtVJ4TdFqBOOlLNXM0IfEFOsiiKrtqrVRb9xlRXc4E4aa02gpSNH0yt9enNN8VQ6WE+b7YnR29J94CB3pZlt1m36oZUY1HmnEdu9Fw1kZlH1ogLrWx+leBasR3fsnrmlo+Qkyr0GRM3vs5OItP47dpTfP1yAK/S55JfflQFM/rbbWb/dxFd78f4jkeaj4MwfN/ejaGeqqyZqz1+ARK4w458T1bLNVLPxzxb9Ake7rFwwIt8WVEdaPdqq4h0LtHzNrdv/Rf0ceax09PRXFdcR0D9XFF0W03JyBQOOfdBIfopv7zI1uqi5CPyq6KLC6w3HXVl36PoiaHY9ARREJQzA8PBn5oZvLDiLpZEGH6jXTNc+vyziha76W2pCX+XOT29hDVVaP90Cluwnl8GCk8PF/OZnerb8cbdWsSOu4K4vde6iCiIN9qBzqpqeinrbdbVOtUUzgZd/kohNdObPoS14f05KFKQOJ5Ze1YSuBASAfid8hDwF4MY8JHUcoEjT5C9uR5149CNrNYAkzbg8YjNcTnyKaOQGBx3yLkHNCUpm0bGIU8ZmwT5n5SAmSXNiNu/YzduP47eRMyGQC0H+pJD6HaSVPIRwVUzY8rbOMMBuNMEeMGdn0APZlggjpnwojMG6Cgh4QbVqek2BvnTfwbpEJirmXxXm3YU6NIak2/d/z2eHRD38HszYid9q//eT7TueTSZUYe1RS38gxiKgp6EyD6z7iBw3aMjqLNARMsKSJqLhHj4kjU6+iVKckracgWCNFfOscWM06mPkzdJNrWWWsJ7WZmCUbnL3TXxOQzQzRm6gITwDDqkrHeIKfwMTXJ6O2uwPAFLsic+G3HG2KFxcZ9a1/5gqW2mBMVcYQ/KQGI0BN98myoqYPl4YLWVrwodaEo6+TOcVaRs2Ac72la6ItbW4qzTDMG7Taaa3uJKfJU034BeDZRltBep6AO14zAyOT3xDl+QcJt4z07sHynz755P//FzV2Ov9985OD8i9V1T3dkwYpz6AkBkq2fxcVq+P/fplXtOLWkA+ONBV7BtGxROTK0Ftvjb75liZtoVs3/a9fqJa7Qd1sAp+gYd8vAUUbalN8YdveDrz4Mz4kjmBhVrv5p2O7sH89u//AuvUHhDYIEs0uhrqRrwDaoOsL5Xa0u2+C6Xa5lweONK5aBfayRKKoxdW0GTEZv/BN2Pwe+rkTGS57YS/92Zf9N3A5P394woRZjNTktv+/A8vPy9/9OHd97feSAUcq1Mv+/DU/XkFdWzj5pw1qWVBeeQDb2PXa5s2/GXj66TG9jDCCtyMv8rtJm9i2TeJJexdrJ20OpFKPrIxtTNIrlh178tgypFge25gMBIQQlOg+QX7bCzux2BgcMyJjOpuOzQ4df+6k7h8p+hRFY9HGD95Py7saVRCFPciy8T7oIF4SoGqF6HaACkHEGBO/A3lED2Z8HoIgiGVnZ13qy8sqebs0pqBaPa3oNuZlvCWdeCSwbftkYM6b8GBwhDzYA7jYmfL6htfTbvX9Bf1lS4sAfQizepeyLqmtD4ZsQRMzXSlIAT4v64SF4R4648ZMqWqoU2nI/6jkfaYTdR/1R3ueCn+t9EzT38G/0N2bHFtDkUBhim8835bHFIaU0DQt0xgpLgHNVeMCWBZ9XhVp/WAwMuxQbAUexONLNiT4fBqxV1Z1lV/HHuBn3FYYjcDajn+RukePcbt5xwaSSkvSa4XMhljpwZTXedvU11MO9i03Od057js4U0PGZfaF7Q5LyCyv15eE1u4J2xUWn6l4qul6w38bmmgxtKLQdYUlSjBuee0FzrnfTMuMvo/PtO1/V4BGpOvuNqUX4yecbrG8MHVhwmKhqMzgZE7Lq4RDyzrydPKrvql27LhQeDCvOMSO/STLLowGb0f9556n73igyDOf+4dgf/nruRsOOAxGt56Xqxt5q54NBWDkSZ+hW9K3RJeuo+bVOlniiUccd3jVMME4kGMqyAWGF+z2ipOLeln1Au4TIiYXP76VF9ipXyRNSL67BOdl71SKOUUE808/rDSGCdNQhWR1Nr71SuppWFHwYc6B5colzUpa+gvMmmH4d3z2wJPPFUQFHZEoo5WzLNdO+pJl4z/Qnxe1ZKxbpDyj+EvyqtZWwLPgyEl2FzeXwSYXN9uPxWyDncpB5S7D1oRP/fA7Ng1Wrw64E138hvfEcOD3qQG7PbB1i3NgINDaKv3/Ko9Xjw+e2vDWWx0de4u8RFyleV6qq1tRFVfR5khSUX//rx4ZbOxXiJkHQcb4hBlCma1cnPzlBLQXqWfVNOlHkbdgnvcIozL/gVkeT3mEZaZDlp8SYq8hxF13YTAjQqbKMxK6nVnurrAQjfS4qIpKQKK2ltRbO6ZZSy8oVhdumbcH7vpHoAei3vro3od2Tqz/g7pD1Pyv+1yQ6BOuUTl9YXDowuSZp30J1Zqyd68m5SZdfbfMQcuaNFUJG/ctzbX0dNfm9+X25esTIIrph1DMCGN3M3jyc8zMjiH9fgbCasFn0zdD56HKqsHAln1qRVXl4PxzbPfujRvnjd3u9EAvywW4kIpan4ZcbfTKleChd195kuSgzs6dgzw/Gdqs3OpuHTph4wcPbMjY1ShOvyhwdVAcbz9vVN0pysgL/EYeBWLbek0FucBMp7ZkNnWbU2lV9GmaGh20UxP8uzEEo9siryFgbyZ8MLojk6lxeagV8ieQ/hUt3Avh4W8mHkocSHi5Gpzd4WsbGWZM8qerU0e7oYD9Lz7467Lbm4xZpxtsCs6t0PrB/pBpMx46UbqZWWf9dYrWo128/uKqZwpp5ZrrtSmV40i96uSneXkXmCNih49szCYyL+UtRStqjX+j4Y7D4eYkQfSFwcklsjaUBs9qQbbZJ7w59Wti102ksMvFzGwhu1Tp1LE5m7ul95R9ynt7q+9NhF9nsCd+D5BhOMbkZQhDeIZh5gRmhDGRvQk+eH/6MfMJAvZ7/Ej2adkkTUjGvf3QuSww7VkjIgZ5vRInrRX+t9VSvslSHp3lDrhB8GpRJJLzE1nyojKFumV/vPMbh4d4HJ/D1bbHb+cdzxsWRNgvV7S07G9tXVW0pvzGWKXbi7zIXXytRv75ZxKiVVMuW/yhLMWy1jpxlh1bBPo4K8GMXY9V/BSdmoOz4qTLNmHdup91Qc9oT2CsDvdZYKw+txAFZxzaKMs9rA6qwzL2UU70cJQ6aq+u3KU5JB8oKfN49bxdbYMo783oDccyjI+SD2r0hoHfmh+d3EwBtbB1PdPOqI5RHcrNn8VghswYFFrzVxoD606L762gqBW3VTdzGB2fcweARUQZKlGcIqgiLkgVJ1IyxIWRezr5SDLPiuW1cL/g8n7itmHcRvvE27g/cfh+Cm5jBcg0tLIXOLyNeyJ3d+eTrNi1DZD53Uh95BpBuKB52eaAkNbEq2cb1esenFQt4Sg5lZuYxoSAkAIOKnZ2Rme7yXFio3lC6Gs7rV8tVXDtSet1p62GBuAuvI7qt+Uz+8uMsyG3MqChlamjl7NeHTVk4dHXlPTZyqryOgUxlwTDLIvBG6w8PR5U79ZcoIt15cVZTS0nS2bujtXwZ+5e8frzktFvkLrUN7XVE6lfX0kSy6mV6QF8R2S1QW7Gf+5TcatiGbVcLsnl1jJiV8WBsz/4j2rCLQw8p6AJSaBoNN7BxFZp5v63erodD2VZ0tDW7nfq6q7pUGWY6+yFcJ5oLXKUq5NvD9T16z58wOkpTRbxtn++t19PK6UpkfWIUPLCLde04vKNdZxAXrtA0M4L5NTtxvDWFrGkIjsqu0IKg27dGho9FRYfzrxw0GJacSwe4YlIkrdH1gxnBKAP3epPj2t/QrJJV/m30xm6jt7e9bqcsAWPtbF6o7w+g89q9amXcJP/0Vt9gZ0XQOE7TSRGNKFfefAztmxVY4+pqo8d87i6x7+gCGwMIyjb1FgMAQDtPr3T1/mSx4Vh2JTF7rTbQSFis485m13wpLz1NTx4kul25AbXM/ulrGbQWJDktUcQCNaJWwcD8mP4mH1S7fO2DXvg6hFssIJRBrOZDPCKuZHdD6H8r99ZIvJd+JrfqwjjcQx6aLkmyS3DNOe9MeAe8aWMLD6R9/LV+avqY/NTIg54GLV3KFb+si+2HEMjDSsUG1YVXtvz9OW2TAqfx6nMtstP99SGoyUV69YIErz2Rzrdo/Zk1IdSKGlAKASzOBBckqZQEBmfi2Kg3RBzPHacGc9pjOjz7wQVm4mMM1+Ct2PE1JeFwdb7seb3dB0ZE3vXB2e6ozsK1t8py4w136eO7/xlijT8rkhFdC/IHxl7JzKAtffRcYmx9JTznprqxYLLJExOwnNqXKtuEQL9otibfDrM/BnFMQTDX35UuPZkugz1+URZzvdKaAwaejT9L80l9d9FKL5Ld7dmdGJ4caK319Pb2/zt0aOBVR0dVYFj79Y/1gl9lEQ4/Ywxy2dJuB5cgN3X3NPMHaGFdaPRptpaFTHtbfs8g0sWlZkk1QouqlFmrFwXSk3mRa8Sb6cFW/JyfJGTbAKjfpBq86U1/FZQ9iPHox6FAYsRY8QXRjhrlsb0E1qihQuQRmjxY24m3wADHMCeYxHzhN/poeBgE6a5bbV5/uR8Q6K0t9Qeddyn7RiV559LX13lzhPECY7D2c+uj8kF5ZsJwr9TV+hwFOqW+635fS7xKKV82Dd6gW4pOL89tN8z3B2abDLNVgAyS14x+vnTSj5T1fGeUZCFCbyIgmxrfnRt5fyj/uSdy3ilv0mfldD8/eRSwr8Y2tU598wHllQVprKkfvDMXOeu3TFoLfkBPyM9AFMnqxszbzoS/w1FcW6yQ+N7/7fTb58fs+s0mAGyNQz0UYQXhcdL2sDBVu+vLMoPsC9XhU5ZGaHGypURBKZXEu35T4vpt/dXbCs81Pfb/qKfzfD5SQYWaQM9fU13KyhYb2UGT7jdEBwW0bvvDEEWXlYWzwJV8PV/BUe35Ju56739hCLIX8pt+jTkb6t+9WJNtfXt8nQmV+ovVxD9XtD4rT/JBJBApH7Odijx6Tlhlyv7tkJT/PR3JuMq0x/xKy74c5v3ZpOIhbylNHy8XSn9GJzqAK7F0z/3wm4nvuqNJTXVnqLCVTSxvx/kzclxQ4G7yIpf6gGhy8v8/YR+ND+Cxuml3SS7aZl+GgatVJSP5zU8I2qVbGxuUOO4wtEPRW99YpVWlhvT7RE3KhDfcwcy3QGZwQEWqxh/FTStF+zYltXTuCJpyRro5diXNg8OK3z/+7FC6d5U6hJbxIB+6kr+OwG44D1SxrSI9qKeJkFexHxtXlpUcRSVPupY5RR3KmUloE8uG4tYjJBv8c4jekiPYbZlw6PHIj0cNpmwiEK5WP1YtvTcPit4SfLpM6N3tGRlbdLzUWZ9/c7czKXVxZvG8gEhRHFAN2yDllL8l9UyuNyZ5bsQM32jhG9iQ47hJDkPOGKWnMAf5sDNHxwnIRS5RWLfNHfmwFsBI6wAk0viz7W7TnMZZS5wc6zMaAzurWiGrWShpU9Y19WKld/5nSXTK513StfBrsdypxEMmZ4daHj0hwPHo59XMxgsTXrPpcSnwwoQseW9zRH6OhzfTkT7YXBvUlGEfzozQBbsSXW5XCAYqmIOTtH+Mj3HTjt0G0thMgHQEHZiAtiWxa74DP1MIKjCjntJqLVOjPthgr/7ExD5oLY8sCfpa3d9XJKO81lMUPohfpIknMbwo3o3k37fJoBe6mabzTfMInlf+NVEm2veb1NgDD609jxf4jzkcUt0Rh6fFbuTz9JbnGuW5EVi4bElxveSPiYIBWEgVrQ8Rr4WPG70gZJgU8HOHsTsys+Qz849AFIqs0pWZ4hocT5Bmzdt+op3A3ycVMpLDbc/ssLibe+3PqFiN8iRbUBN9/4/7NMFahosAowvKq3mwO3jtz9NqlhutE/fsndkU7soe2yWRXgTuYFi350RKL3lesM/D+YeFVnUPZoeNU6Vc2XjWxuuty9tPxz+14b3g6mwoqu/rLHVXDoQUxT+4VnvNw/+2fhLNCIDlbU1H9i/tu+QOveXINVo+qhKxlDntE2s7dH0ojC55sDJUx+dPxV7auSnjpMHKic/DP9wze/KrPFA4bgy63eQPVUYeIB9gZXDusDeKuf3hkZQB+Rwj2wfR/7XTlh+FKdCZxWZAbzafHOVPE+aly1QrFhxe/JzOgu2dvwAgE2RFOnyZXbci5xmLQdOH47JfeAJbkukTPkWru3btepBJGu/UXjNv7/RkxNjLtT713hdMG328TuCBl3nAQ4H5XA085rAzd2/0YsDjUVOZIjAiCF5boi2fS8k5Agh2bzsZmV7FeQyWrwfiB/U+J9+ZxPtJiuI/G1vfPT0AY2TcVMrcDWnEBSx8LIm50/RwjlkTrjnJ/4hvyY/ePnNvzWtQ6/KL4DWYdwzgrz+Xfa7CI68jaO4pdWDFnyyiEXsGqHA/MBmB2Q8b+RVZTA5bC06j1b9qKOhd1Gtc96pjcekaX/cm86v3JAUe14/O6fC+/zA0SA18NE5xNawmbLhY7iPcBL2xmHPkgDs8CHcrR3S5iA7REyUGfUWth1F0cKm62q3fT6HwW719YSvhbXK+/a1gm+S/QmMsDjGnGMd4+BRvx1NoQ5gXK72vFJzGrn/rZNh/ghWSiUr/8sLwn2YtC7B2tE3qVSBK2ur+ay7CwDZiH6qN+ZvP7jyzuCd5RbcMUUqT58bEoCwjiHSQg6UOwwHZwdmQfC+NB0oBFXqzpyGXSGukF3jkqnEWKfBslSKyIvtiB2zmfMqdqgzlKBkuhXtgKyQnwT1Kyyk1sdqUIkGJrW9XE4vZO3ea5VaZ6wTG9InrXZ7e2/v+HiTlLsX7d1GdBqmpsD87uqARj0XoYoYGh/uTcFjBb2YbuN/GfElP4FYb4HdIQgvN3qalh9GbPzHe6MBMB8CsE5DaixGf1zkFTtmF08JBe+GvysQFjnw7lo3tvSDEtlhRAu2CNBPTz09N2h7SGC2wblluXYbUUyApXFbvEzyVetSQ83fNpe2fiWRBW9bOWf6wrQjawe4X71730XQDAJMcD/kMg4aprGRZCbE8XKXFrVOGUM69cp+Jfri4TNnDr+IKg8rdeFT1EMK3P7s2ZTUM7ecbdvqTVFLci/4hwQLys4FSc+7t4mR7cJ/sBZjPp2zQc97SH1w3obbNFNHw9k4W/xBXmNvU1l8chihh/Sk3VxQl0JgBNQPiDEKa+JwES4HfWleQOtfiBHfcM7E/DJCYRiZUDYdmI4ZjLZOmx1krtDjind5hPQijWDKD8xqrNpkWmhpxfHWlsUZVX/sXGxtWdfSulD6hpHAiu0kiYTdowQGG9dTJFW0W+RG1etdtSYNDoct8cTxuheKT3ttTek5uikzq8HNF00TfbV44p9wcumw2sGUs0w7Dlb+CcRfeU5we87vmPuh7erZ37sBYOJEcGN3Y5F6O+T2nvTSaNnZzQGljN7DZ7z9uxeBsWEUhrGqBMBKVHX+8yjMFiQxF+nCHFMUMkhyKPvJQVBqs40BfTy9qaio4PLa4khlrOXC9GQsEasptBan3aJF0+pNLiq31gXvF7MVJEiyGxrSU3K7Hn6RHTY05EkSwrIZ/2080Pjj/XtLqhz1oY/YUxPYqz4RAr1c3Br/gadnKTTt0qpdasVAamTqToX6vDqiPaJ+CV6QmiQtHBQLCOuNgZffW3AveBbdi1hvNp8+za4KfhpT42D1/u7IuPjxGSFUILW5EZDsnxDcObU9DlYMbt8e2MAy4AUmqJ5lUBToKdCkXhoeNHmEUHQoDFaUUaz0c+t213e9Eo8QQvEMghQq7mllr5qAxZ5jOUNgs2I7qJK5y+BdERyOilwnLvmAsaY4kX0W3n9jx02mbJ8xwRDb299XoQGJSqy6jMJGycrjAv7xldKgHP+QP6i0d4kSrdx8wbg3CT5QpTEbhFb/SDb5E07HdsEfk9gNGP0Qsn1uCXMB2OE1JtQoR1KHlRrIIoQ6hVrVaYVOEyTeBaWVefKDIzQRwX7BGqEV0qhCL2oITQlWtXt2xGZzDQzOEYMgfYX6mFKvUVRP0B7CXRd/84300ZroYBrbx4Qa5bCyv/oKIEgrBnTJgvZg7NDPL5mheMNEZqbUalqd4eeHOiZLw9NmOWNnZi6x85MHhjM+fgqxcUdOEUYbiuHIhx+e79/d+AOO/0ZqjYHQQwWPjcj95DQSOfVLhQgU/P+BFn6cfqe/LXrI/+VP14XvWocqSlYu3UfT7G+vOkbtssN1GQHX33FSGGrbUWiL2EnlaJ+/U7bPDon+pJfvPyitOtXesTSSl6Q/xsevOmO3dxS7HAnThIhkfTWejy2Iv7GIYFrQoIwS8MTjmixVbXo/2kxGAdq/cwI2y0mgAJZIW4t/VLSylPjWi+NCijJq0k6vYgqwyDvmhvF85Jhx/dH8wq9u1/riw/e24Tl1kfaE5f8+8Akwbnlci9QSLslQJWgQJx9xaOSeyu35TSFo72+KQRt+K1JyvHM/SMqL38/59UKj27quHADTj0BfyUUgkJMeimFlZLRHDOrE/cOGHSQ2VlRdOhuAZrxKdLySzY+zM1iS9cYJyTbG2rdOiYNl+1OkVqtUMlYl6dleyfFw2F42Z4HN8bDXBD6zOUBuYQW0cQI2bwE1EvfG8Xa4H+qjPF5zgS9AYvRJ8e7LZQwOPStscNdOhE4gCEFHgu1iG1/Hf/JXTtkbEawMwcq/o+20piR9oe0+uD1MzPJraTm4VgWHpYR3i1ma0NCVC5hrmPTXVjcRqX8EDcG+pouuZW0jRbPadv8eCsdEAyAO4mrvfDD/v3luvY/PdZOew19sFAMFgM3YgALosN/50Y7YS3SCmivgS2T4txhuxy02jGC4U3KQ0fTDAx480fWrte8TOCEL7RLDvGkYnubB4q5QGYET76/9qugIcJZQh/RnolptJtofoiam2iBQWKqTPcmaB9hZPAfXD1XFjodRt/dT6o/DX3YoedNK+J0XV89ynXtvEC3LQeF70hyQ/Us1OAoFpmGYbtJtabEJS3m5O3v62uxPIozy/yxfCKCTUu1SaTslDY5aaEG9KP9Ubm4t3zTk8ruJC+ZBbSFGlg/hFsT9iJsSahuFiX+uPl48+/EnU/rhAJ3OAmtZs/tDQ559zqQ/QlEU2HcqbFot7PHDJjETtbiOBnQdTn8aq1/QsmwhDbOvK8HCc1x1fr9ZpOjuIyxMYGIPpLAGBGUovgGTUOlMrIC7NDDz7E1bcESLIvOgVs0ZXqxJPWLxDfjY8cQ0DcnfIF0hS7AlIV0IxLsIwxd5v14FzL4iHxgIZ97xvqnXv+m9o3/LNkQUalyawjNgMECRRAXDXI9qhiBTR/bDryBXJK+lHUAjeORnV6EcR8Ab8XLiyiEFyBW94zhxKlDtC2byEzxGEgEwa1J2LqLoDIrehHeq76vRoLozqbfc0t4ku2ZNau03/FBNcT9zWisO3ONjpfYxKQiWoANr2RBnk0SPh8zHBfFz1AMm9OplPfL7LZyw+LDPN+qZdI9ioirS0mCDrcZRY0NYxauN60EdPcv76ZYYeUsi1JX969Tqdf2UyqfkTamU73CVqn+mlaoP/4WnNPZCnPUpqJlbNDtbBCP+5PR60NW6I80KWR8/9gQMUtppSI8njjHYNJbNG2KsL5rLrJ89WOyOo3XJRWmnDVZwf5Nn/fv3uxzdu3cJB3bi539OAYqdth86Gx17UujtdD8hrXqLVL3YbG5eVGs8F2I0Q/knNYhJDJ94+TZ+++UTcFCKXehPt9IBZsGIw0EVV8k5bUuZSlIZmjcI+eHlKP4OYEBdIV8ryLERgXarhYijGK71RXG4DrJgOGAHFANOEXQoPBFJYBRGRJ4oxLrxOQwnAevPIEcoBoKJCqes4wa7zT7QabOZOKhSyuZSa9Tk/FjZmAZDMN7j6j9CcYY/gvhniIX/Vn+3XQMl0PKn+VpByfwbM7QAYM5+XKI5ry2KzKcnEJ4tdyz5qZg7KUNeFlAJnHY6s6SG0ZftTqfBgH0NXTdwYTGYz4cF0w8vCEEYfjKqW1CBVyh3AgUwhqUScyLSduu8A1IUL20QWHCLY+NwVedA0NKR2MSru5wf4V+oVFNc5SggPYnAsyeStiYDRYOmFTCsmP5YPFChCzY6eDkW1gybPcNi30UBAVR0IhCFETkTQn4IIcUHz0B0hv9Mtlb5Dk+JcVXoAsrb0XcxsfWp1sSUV3Nbt7YmiUmBln9l9gOCFFZ5LqNmwOt9Pb14b08nl6UXDNIB4f1hBv1aWDkjq5NdJGu+YgMmXBvS5jx37wIJcOBvh6UqTxxLn5ebcOiRsPR1yAMVMCDv7ta8PB0LLqTso6weD+X85F3PNPCtQLvGvvr5TuVYcUyDYXtSdyqCxQFqjMQcz/yt/LtquPIf8x3FqMeVw1Wz+3eH6P3BXLQ0prJQEiPRTiNwH6RXjIj47nN3xWDT3sDA8vI3/5wLnvFMBk/WVE/qd9o9NdUe4L2z6y7I2ZSicDLRSSNBpEMGpvp3WomX89Mk8fBsZbzSFI7H6C2E0RL8ugTLDy8IxwrCBnuMPHSdERSLjQ4Ko5rr5hCvJ2gDtUq5J5/pF4uH34uLf2Tq2TcowYF9TMCaYIeW66/zu8CZnuZc8LOwHY0M8buxSDOsKVpXNFyUN9cPnEbGYpCOIcAnd8g5pJz+RzuLiSUUVk8JnKXC9jAVcpNOYFB2URd8kQeB8HJXV0722Fh2TnSvHAUr2NSekx0BS9m/+NkW+OXlPs1BNVy6VabO0slys1j00Pex1m9ajEaDPX19t1+EBFycoLvaCPW7D7gC1UVIvhyfz9AHJSUuG7hi4qbDcTPai4hixBwisd/n7KZzxKIYhJfWQXo9NycCAibcAH/MeQvM3mWLXvKll9y//NwGBMg5pwv3+eikQXOGsbkxVxccgF8r1n9eCEdGdMJVkBFVzawex8aoMQyfcmFODJRfCJWUQJVVE8ET/ciqrGxrLy1tb99EhltyyNFS3ubKyl6ggGuup9/r+HClemfTFTIHVsPr4Tjrp/OAT8ZYAbPVY+3ZyD3msK6K8ZSUfoyXlnguSy9/DUIyzOTb4unwrb7aYbNZQXPbIVCm1nVYNpQ5+MzYNzt3sTe+WJrG/En4LS/g0OVBJqOqikPGvatpmbgx29O69OWt+HuX3TuPHjjK/WT2buALzwj/7VT6jwHhzn91JTXNlVn6Cz3gW3Rz3Wa/MPaXlVU1EUMGIApnLTH+tweJWcOspzMA7Y+deMNq1dMZ+rilNR4dW6dj0HWuDX3nl9OJpTPgu8drto//TpQ8k5Pz1FZPX18xvNDQsHgXqzk01NgAdKiph+vjch9xB++FbJ65rslm5Dj3CZfr5Y46HPfgxe8NL8eUXxDqQ/lnQl+fp7eXVnvqORnodh6rjWY9bAVLVuuDton+pvWBfi09NdVuT4F5jKvpKwY2EIbNYYBxzIVNSBeszMmV7fMxFEkRnZ2g6yooOD8oXFoHCaNDYQn53hRIi99dx1qxJgMr5PZPvOF9MYptkOIitCtkM/fR6ZqbkWPD2BPuMXTiAbddE8i+M4h8av9+P4aXoMDgedZ66W/gND40aLBhA5ahH6B+mID7ob81Gs3z8qHpj9nADniam6uxar+kZ2AAIOOjLmwrTuEO0hNsksZ9acNheX+xZIUyPKWtRdG8fLISWIm+1dwoSMKT1JaOHilux0NDbOsXfPVp58cR91WqKZ5KfupaXs24n+toeYzUKMeCkcctkthFg+rvDLvB9qZaqPON5KeMArDeMmGjHEYcNmB5SPmH+5D7T0oLY5/uZqEst/C2xRVvqQjZ0KHzSFVjTGJTNz50jXwUhTuMFA6IEAB7IrmgzmwnpZRVSmCxC6Uzu6lxg+9XEW4WjszYhzbcZrDVauIGHuxyArGfVPZEbPtbwDfRBL5Q0XZLTGt3wI7e8hhBHre0lQcgW1080pUfH79MLCFJ0ujAghewYQROkHaXA7uF+6uVkS08jCCVcwrDTqa3BNbqy3St27BTP6GL++VrsTggszbG7Jp52lpLje17j0zE5XxguxFkYYwj3LkY4Yg1bJESXNm4PUw4lmuhwqmgKVUhRRWqKOtJadakJRoaFSd2Z7BIjen9pzFn8j+GE5KaMIQqUXQ86Ydd0dFvJA5ebyTFBLxXfBBo3a/AHFbs7w58ECv2MYPqtuhL43vrWS2rZbsVvdPQyodXJI/4XXe0KA625nM+sFTrW3THOg+zpBw3dGvmlzmWwbc+C3nvH7S5T48TKgta1dA7ihnQ5zCtJPNPtAyoPfEGrTQX6zOUVvQMtEL36tDc58ATrf0i7U0iYOYx9qQ8mazv157GuLIWpDgbR2NxRmT7XU9Td0zsZzL3E8p7qxizSpl0suJ9IRssqsv21+2XE2NAmiOkcyo3N8pvEZANEMuiFfJ+/EqubS7Q8gWQMXMZm50bUbijGudiVqtxagbtnoS6JX8cIm2oma8Dm+Ivqnw/B1KfiqpYtNDHOY1Ge+VfnMukIZb1UdNM+Pbz579NPidFiOaUvrBj1WD9niz7X2htTUxEH2BPoXcEoso9NpyFl/msrknPQlaWBzi+kHgvJ0iudCYkHClqFPgJGotQVjniarzH114SA3v7ehB0/pKjaZZBDXKDobPrvk8iZIuK47gkSgIvGCd8Y5JrxMd4RaEUBoNOCDeutEThUf153JkNUVjUhoBncOzvTuSblon+qNYayXywAKiY8+Ff7NfowGlIf1JOcM5r7L8+pNQT7HD2hBoQzKP40Erxefv83Kwziw/A7qtrPqkJ332itg5GnfWpT2Bu0jrob1ikwT2yzRWb7Ac3W90mqqAAN6Oo3udqkE62c7QP38jXP1w3+l+Kv4/KFUwCeoxapOKJCz060XtOEmd+RF2XJGYvMJs6J9hS+69UPF6L1Xj+6SpYo5bCIlpIoBQX5xDD0GqdMIG5VOAaZkjafBI76UkHlzmdwijnED40OfNfSRY8k83Ni4k+nMKBuDl8E9jZKePGgUxu8B3Pm7PO6ef6kqJIMr89KB7FnfjmyYyM6pB3rn0Cnb/5oh4o8L0xfZIQtVKWF05n+Ld+YIm9BHZP7upCSKSri4RJdzvc8o7nprvL4S4o8Czzms3eZR7KXVWp8k2YCFVlJRQZxQ2RYkWRK1cCCZn7DcF6wwG9/oBBH2xYUSnFTQMmC0CqKOU3iGULhI1nPHyI9xAt7GS/3RPZVoR1wemR9LzfURx94FHMM44VhN47rTm/kcAIkHkj6EWphuqzqrHlNAAefSav4X6YBCdO37q1uFKeb4gJtvgCo8rscE3q2PPMUiOBMtEnt5P7+jzuwrpAnMmhP/PMZy+s76WfquCwRQG81xP9UVP2Ygl0nUajnRSBHt7jxmKOeJX/ByHupXeJmmB5YBhLalt5YEuHhAZBYiyqrUQp8dtiTwBAvaIdmWT1WJNwp8Xhg8k3OtvxE7kn0wCX4MUzgR3f6HI4LCaGO+/WAjyrXEpFO5mTI5HejRJGEwRHAuqzY6OS/qjo9lBxxBNPHGgVuPA0YhvGnUlhmxOeUakcDr4LdOpv8urw7rl9uM5r2vnd9bnbb75WUmyTN56ebT5pikSTliTCijPCdk7rZXRbxtNMn9ynma6Y5+Jj/j2TedykfPZrrKemxlNcDJBxxIXgCGl32UlsgMBZzxQnsGtC+p10k1TWs8WJO/uu2w3QOLWTdOAfx+LNLrM+Q2aXeXK40AyUU7Ue3Up4LlwoNNOAQ7U2ebaGlR925SqAYTu5BOExFzRP/e85d1bYfNiRyFXNts+xeQwIx98Y7Rq9sfvgU8I3hGVdc+uqDM/N/px5IJ0h+0I2FoP5wYFrx8fBvn1AvoXW1/Yy8OjI/MbG530H/LOyPp0B8C6Q6E81m48eJfENhDCQ2IA3NZ3cIA48CQdm9KWt2OJ17WkL9qeZC97rFQuh/v3ijqbo96m+qQwYdQHy1TjLSegzot/dTSaGsTF2WKi1/91oxpF1TywuFNp5FhazXg/YzQzoD6Awczf+8waWHg848kBezAt5LKRr6gdsmMc64xjxA/g+sDnUKhjXgP9VZRu1meNtBbYCR1HsU4Xgjj7Td2UIdg7yF4ZUp0duVMrpKX50UHdZBl3JYAguRB85v3+i99E+sTVjvGjogT6HXvqtn78fe+3a9TDt16PJjGPxKSo1WxfecXLJ3yarYuiOZVfQBM2P5nwzYbctQ3aEojwuOzt6926wkU1ZEc49R0RleRhvKir7owJbU3SeKpjAF6CI6m9XK7769nvz95uP14U0jLAAa6QhpO745u8Kv//2KwXvN6L6EH3E94OnH4JHoPijT7mFUXbNK6T+Je9neu3Tre3wBnga7gOJoJFzctnQkPRdrv6O90XLGnug+AfkXn3slWDDfn3wflmwXnYA6QcMIIKnw/pqhKfTRg6M4WOVLzeP4mhcouzNnYbnnjPk3ZHdV4c/UBhdGxjlzGbP3erqxYfJ6vb+SjX8eP750iAQvo/mBOcy6GAWpuF+f7+R23QOg2FzIMztbkAd02FoWgEEzpXfnYHFKqXvzSCXqucVyU6FwVzwXXeCYKdD8PvMYErCnxQBfu/elb0dZsOc7gZcWjo4eFrN8kBdGcnFx8BWXv4ogS9uerQ7K7MlQHwsNuKAlsys/vubXgxcAJK6HZpWjt25W9lqmgcwUj2H479d/IDAeQVxAVGMoFTbij8qeP+uvj5PSakMmUU4twNkmzZ5LmchKLsj3N44bGLVqGlN0Dt6ZeUTIf04pbmVlX+L4GkeuAKNvU/zEivKe7q/mQNMcB6xCj7skErSEWTWKZ5FkCRhxQrAkvae7KMwP7xtiME8B3uoAylmaM1q9dcrgZr8WzPbwvnwAdIDX2cwhtoMov1oztZzCVOksxAMHoXmQW0lJuOAn+UNmAbuaY5l0YvH58d5x6riM/KYq4Q5X38NZdWsZORLHSNlhYVXMXDd55+EZH0XYM3vTMEO3z/t7FWKwfy02TeKy0JgzTf/2CRGV6WjfOJTmHG02N+cFsPfGKvT+GcsX7c9nE4PpfsbiB7dxmhYC+uMHac31cEaUcyGdod/NoOeHLM2doNWRNsbQEPAe2oCCuqE/1T/4GG8P6t/C0VZKtCnnTCAaTCHK0j9lSfv+eCI4II73h2fG3dZSAIoEG5S8vDssODn8zxfqYMyay9QgEBhmYcDCRMOkiZiLikUUw8pDuZ2iMCIFCrQIZHSkRUtva9l4+ztndBFBbRhI8S7CJHS72YgOGfbMjYZu6bfIudovjqhofrbNUexEg2aEGFCwrOVJoUpPFyRbcpWjFyaW5kdzpHTBv5drwXAm/dt3DjWJ1uqQwgzdJf39b4agdGnyzzvPXEKENYJCwn/d+0R7tlfs++ybpCpW8r2vueR4f/2Mg/+2T7h1hVjY9f+J4Qoh7m7EmTbiUreLnrluZ9A1+mBrXvNWTWPEGwXvymABEh8YYbtEYkqSp8dU+39c6hc3zMSRL7Gp6iawwn48L+uPUcGFLgT20g6cQDcBNmBFE4NJWt5gxTPw5074S3cpjNoXL87WBJrsJryAIQMnokElBPAgWfEpFpRsj57R77CgOnveF/S61/y3tFjhlzZUUDJyOwn/glTOTlTy4/19Xns9o5Q1VBa2pAqtMNuB3zlJ1TxxE58/6BU9vpcTrY9zaBSBojGMPXqr1LEaeBYD/pJJjqINhWYzXZ2P2SSo8jU8g4Szv3+GbFx9/0exZUoLGkZpcFLJJYjjowdkbqgjBDwBhYXmxv5c6BpHywbeSu1WZcBE/eHTlZY6Onrc2S99eZbYLI34TsOdnY+X33/yXptOsDtto/eetsTt2OHLSorMwtcPf/bb4ddXfGJgjjBB7CBeEp8YdFsdmHy50yx6LFOuJ1dnzVFUR/KShbGPaUbtB4+HHIhcpPYtTrjWgqxkeC/+VgFNMF2uzLkTJQl/nlEtsLHjnk2bAiI/kTzaESGEf6NDcCFMQH/+iq02hWlvrqwULaPOY1PA0S/CXzbeLLFcL/MMoBHuSxpg9iODoQNvu+Wl/+Lp+JmBf4rVmA85TRXyZ3KBjdAve4Luywjd9JeavZV7meWw0UZcrHv+1TVhzxl4CGACF9L5OizpzbCz4k6Cirttjf2POLyaHwuxhVrf73w2okTntHR5ExKPcZ+rv/kNwL1OAQNaX2e9vb0X0x5ZEsl6FteUzsM77gsOHs4lDXJZjIh19iK0GhAx1gvJDnG35QIx5IFvo0gtpiY4fq5+0cUc0wD3fFUtR2AZav5PP0/kT0YmwPgP3xkjSgvb+x+13vl2oq49+9/I8UUh9K3nIfl3SzP6TNRm7So3vUerxQO5SBdoRE9K2vlMr53hPzUfG5ES0DmtCcMuAsXj7psFpBKiKMm8iRUiyccxDTY1ECEpsht7QvKDAmBv8/qzny78TdnxOqlDcFSuc8a365Wt8dbfZqFbd4l/WwCr7n1PXNz2TkBaGqLeIwXh298PlKEn6Tm8AcOknNeCwmymsGogqyQHMydv0t8WGsTaH4vjjP0ly5h7CjeVcyMMpR5oGq8GvKQlnOl9lk+u8BmUwiNmzEDSEhq6IQT8uplwAfsr73fAsW0Nei0/h2oKzifAt64WwC16NfoGuBZ/P1Ug7owEDaUBZzRlUOZloW/XHcmqxyx0AsGwlgCaGMqMbWmQrmL1N+BNL+z2nH7D2CG4at+J6igu2NJxjeG+Kse+o2HWl6vBVDewGetA0DS//1QpZz+B8fkvqNUTfEYL3pMSFqvoshEShAojydru/ZEG4ETLryHFeX5G+H+/RjMDmqLlFaXafbyIbaSPvctj/Aj3Hb3GgRdu9u26VVkZf0bKPpG0VbEZlQEKnKAqqP4uho212A2YCyaN7FfcCc+1XA1+eV0ugXLJZE+gnXLhXP/37kXwmcS3HTqUsVJyfbpEh61s93j4IpKPMAzBN7jGQpstSki5yWSzqTLZ2M9Jtn99a0mT+ysfDNi8tkI02pMkREhhdei1bbwXu2rcOzqVP3ZfrQgMi88F+XsWvOvWHh+2Ov+Uhw0UbdZJjs1W5mwH6kJuwKlgTSLpmE322joJJ1B0mmIRl/gRclqV/bQVNM81YXAksP5ZRK+1d6YZDfHyjKAMnWIjMWjRhIox79tqTfBa52wxPzdY8UlQIF3MfpMlxNzr44u4SJjCFd97iowRcJJRX/8lf/vNfgdWhwaXFyo7lyAGo/15k+vW9dzqicf8piIPeAl9AcD5eZtK1YcOCDCO6e28125a7vB2pXuyeDJGc/NArO7yxH79mF5v8mdtVu+e8bh9WZlDcuH+4P6o413V99M8Myk3n3ZboxTOgC9C4ILRttxKN0yj88bHZTHGNVFx4r+p0CV/wG/qCD/uIuNobHGjesZdDLFQ9GdMNBSl2j09b/r0izhijCI5oYsGDA9Dtl6HXWuMoQ8fJgKUUYHdSAZothDr5ZCDrN7Xexgp+Y6MRCcfMuL5Amf1MJk5/PZyV07Kd8OrQnYwgHKQYhBq7LDtyMl0D9HNOPNw9qR+BGWVs2zyLtsGL2GPnhS250tUT5Zj9IPQ9W0o0fEI+uuaud22tB7HX3g8PY7R6I88p5IPxbBw9Kmxn1HtHDHVitnPzoyIw2+8OSeXWUcfDvK49sQ8Xlezvry5dvbpTpORFhu1uyeUoKzRbJ7MxMG9gFNisxuA0msLufKE5CZfqsb2x7EwGHaUTNF95lv18VJtxq+OPnfq4ChP1+tu3X51G+efv79ps3NLldvG5BhUnBG84E+N22wr+V6OAMCk+eraZtqT3fK0Ww9FjCBllqPoZnz6P/aaU233cAiN/zBqBKAq7gsZHFW3+W2q1WXevLlcfvKyRtf0PqeHUF6FAEnSiOQQyYmChXR/GtR7/Fe1HfnOXRC9VDn+CnFwzTQEOIKaRiYTniIGrBGFTnWHaOOHc3kcjNvnFgSVWQdANkIjcbKIpY2MKokGbgus1PEwC5+DglgArsIEnPakGkSx69dvCMNXbIbx/C/cr1MDw5dWY2tvnLogalHofx4kauuHH5oWhfALVmi6tkF+moux+o8i7ppfHq23mNd71nf6+nt8HS8JN4VFb8+unh2wuMpMC+0hEMe6GkMlWA11yKxO9fLHNyYr7ovkGhh54nSwPgJUQdXj8Rmy7q/TdyWidLBsXGbXq8+mV0b8FRAbfbJ6tWylGqCjbEnVGDXGmuY1cM7BvlY7CESB0kXNkfN0b7fphYcWC+E3H+grYP5plcRkeoLkeiLKJEo6kuRmGPKygQKgIIAkT8LZMoMMkQRcrFahEuOPy2TnxsJkr9wTu5P+OMMpuy+moQ6O33oTVP8E5Ocr9j0KMsEAhLr5+fhJSz4gv3iLTEqvvXu5gvBWIRZPx1dpnntMldICZdwUS9KMMAMYnC+PdyRAz/38mtX7ujpFhNgiE3wGXaf/pzfEIEjQ6ZAmeiZFE8Pftg575z3cSjhnHcS4J25T4nUDlG+U+MUWwbXi8EzHQqy67Mr4P+rQivC/QDwDy8PVf0rKs/W24MAIq44WQGvX7yTlpQBh0VcUaHgszoWgK3L/z/gZGm3nT2RH4jjCJ84u02bJ2g0MGvFNzkojjoppxPPJFc5F33l2+7QsO6WsNDCxJtu900Paob1LewOuhXBeYT9lfiU5JOj3TX2F5ex1mQec4L3SHQ/bEhr5jAz4DCTvXrnavGE+MncGMioDCiD/lJuxJBmwiYjRVJc9eCSZsewMQsGkkANeLLkK5P9StbGFSPaKpKHsqyBc/QGT6QKPNfHVaiWnjn7A45dKgdF/VoS5v9+heFY9S7EDzfxAMIv2ILmchEoXLCGFP+8pyYpXFvFQ23xuUlsNODBVhDubCZY7oPAXppUfRSIgVuwuFEOH9lRH0tKqzgg5sj2egojAs85HNejmW0em7eRdtyOvbJuHeA/07Y4tERDwFiksXBfPSfUKaSOULIRiYlJ68TnlHCMc6RIzpOUJ7BxWeoPMvX2NR0dICCGECjV2YcelEAI1YRYc0reWj9365TWkbrnUzJsfieYUvs8YJaNulbjpuXL8zkA7j9GOxzkQDLv4qFD62daSMuxyubxKyDAYdwU/kDsA2OC1L7vTBNyQEcn0zkGIPZo3YdOrAN/m6TQ7X+ZQBCD+YoX9lQK179xUWe8dd4+JJu4ZdxUCRZOCPhfBVS5FlNQaGhWUKsqL3LgNZ4uG97OZOM55fohV78cR8p3vsuL4b6r5KCMUPyqHawPZ2GJLYqu1Uh/qYCou5IyNn1+5wTIPbwvN7cDsfKPHw362SD1yid/gMDq68ScHQKCRqilwYBDKBK7+lr49z/EVk/eLTWIOElV2CUVqRgVBNOG9ogLP/6CeVxEL3z8wvRD2uhrPpIMCbbUEo5kkJryh+X+P19Yp6ruiRGOfkZ/N1+CZghSHqViCRyuIcLhYoAYoPDtUl5vjsrbo2kO3/WmWge/fAFW/gsQ3RsTkxFDENGf1dUWMxgcf6Y/XezXF/Pk4M6tK2Sqiy/lvYfbcQTHcfBCF6t1Ar5cdLiEMNVlfc413BdsvrDrU+wGkAvVNpKtoIK9aDfN2DoGjNhkOyJOn80XPWRpVFQp2SsPLGaeY1Wx3exIGdm+NyfnLGmRf+F0s6sDXmgqDjwiJhvJ38kOwQBQbP8znKMmYeFhPHQRdfU54X8WkNmz0dNM5mlU1m2L4wUbntpLCLmWvRE81w104ca5MWxMW5tG+b+Xvh1UIW1BgbLj3gsvLXtC27LVB9bhtON2EaAKcK6m8Wmf4LC49HGygGadiBQRrrYdS+mMCDp9acZa3fkYESXStrDL7bH6jdGunrWFNzPohTFzR4tIfWw7nf41gXO2IkGSpP6qGK0KZB36COX/VPQZwK/1z3zUZxHX/hYWsP+dEaBGntsfwNeVWDS4NJ9Y0RwjZgHTi2HP8C4DdbnhDBvqBx7Ad3Ufpq1oz/bSyauOPCo+WOAXR6qw8KyxlWqI6bDif1F/HQ/mqrH6wkwrG5uduGtdfHEoCCtoCu8LMtkLXgWtZ7CgIDztym7vtby8Ff7j2lmT87PcrKXBKzJqajJWBC9d/Q0ws2fAgEWAd4CjV+TgyJCzMqIkOlyTfT92SM6uGw7QOzXjv55XOlR9CpVf/zqucWI2F+ECzWViYLDnSUT3wf+nwk13HhzAZb5hxPRit/7n8dzkt4vb477ruUv8pBls8/g8iSS/JKDGrgNj1zrWO9cPz66bW8cX/ARqzePPjl+dFwrnr47P8nkul2VNPeMgjuE+HzYAE1LtSAK9nUHglnScTtI1jKfILeEi3OtqhEAIFCE6xVwEQTQomYiAdpZz7zN75KaYVCSt6P2xemy+VW4ykQOYYaDNlPXOBru1gEq6675Jv22619CjMPiB9zoHZiu1ChgYTdSpY3vJTZECec3KxULqITXoGJpqLVrKXeQCiDmSjE0PGkaNoGl/INQPs2f+vQTUpYYzbLgfxICHK7OzTMpwTF3Z3z6gwZW8D1U4zJu+Pah99MIbmFhipJQQwPxEZ8wHztce1nunRyekUQnYEucH0c4EPgw+KGIeDtCmvWulxfNNJklJ0+vArN7/r9bQAJEw1ozYCn9Z17/6tll3i++99weiDTg8cBw+GGF+2HuQz0Wz/tulruXeKcxhJtBmfLk7RKU1XhBvzRJk9WEw+B2m5MpcFSerj8crwVUrOrkW1ZGdvP8Jig/lH4Yvz1xlMC13MD8TFO3Jf9teHLyP3keJ/wVEkMB1tZcK6wLpTPoLe3E76V9gJGWJ+d1wRcbPhfzt3QSgFoPHasHZB/fI+FqQzyZ19bK87uCl5F3QY6p/dbIK47K6R4tNHR0sxTV46aDFEWrWmHs78JtRLDalaKp9L+clUJr2UCyN6I1y2tzO6uvzFBbS/GhSLuG0NeeZ/BhyBqx/N+f49oVYfMUhgkVQg8jn4vgv+RIJ/8t40V0E9aLc6OeHfnb7WUshrv2r62Xo+Wgu6rUZuQzSYyLj+x4fwJ2hYbDn8b5xhFj2twT3I3Ur6z20+3TmTgmPJ+kpP92NvsdqW3uKxTqlEPaC21OvzguRhNggno3Hn80JLWIhVwJSuh5s4wUZq7Y4yLHSxSt+m8V7wRqscYyt+/r1uY5rc1WWtUkKA9ipY+7aic+9/jU/+CSmwaJ9PkhVB2ybfgGove/sDwDlH0nLCdSLCn4qegXwS9GzAPX2iLs//jfUaJkDhy4e95+NxDEnzLm+0ENnY5Gzv44DIAuoO/ugOTCKVDosFheZYQJ4exmBWW4umPY3cLNWR6/DuBeeOpMtC4so0oxgYptHivCyf/HYQBrjZCD+GVus1narewdqvem2tg++crRSKq08Gtyn++rPPzurau1Pn+p5imXGNytCRqdBWPLLq4H+4sTs7OlqoduRyDxLvfs/1aF/70ERscL3U7vNZj9ZiN1WzdeQhWuxulw8/tz41TmhcO7q+BwfGKfI99o8T3/zCksCm4dJTd/NJe7HCCwByfBHEgi1VvBx9zdwYEe2PlmRB+SU5o5EYoT14FKRUSK5s4+Obr/gPuKdAOHVufE5vrZJJy+IuqoBaz6/dLmuCgPeIa7JdU0+GXedAQBLBBABhYuBsGh9x0dPa0xT3uIjEoj4+OmTVJwpyI+iLrGcSad+f4kBKOQ0bhopwo4fBwXA5OhtV10eNYHGxrL9jvQF9RAJxFdjd7ZGj6+grXRCIeZ/o7PT43LcGzaACcVDQxmNtWv5m8IoD1ERu7ROp/fH4NIoTJGXnK3fgf9al7Dcobkv14YpeFsLLHepEs59mgkM2SUqv8PhdG4LuSiejWo5FBK01xcp155wmvbIPt97wqk9YpxHWX3oEKdw8TVr+heBQAxoG92YQhd25oJqMgoOF7Z3M9HiJOoIHB5bhpYIw84wuE5ddX0aOr3dlofx4X1R6ML4ZvVQOKDq0f+RTPe6k//mDK0XeFMI2WFOaM6vvSzDtJhq2znNvSt/u3HxowCybuJAudTB9IrnSao5YiSwm0o0Ft3nLTLqMwKvTvfWGxUR5uCXPE6nLvmCXpRs1mCykX0sX4lXkFjWFK74dc4XON63hbh+/fkdIvKNrRnRtx5P+e+TI7cvxDJOzBPGG/N//LMI/iCZNPb9/0b57q9NZy/MySi93fjHIytJYOPfh9mWvpsV6l1paGQvQxT5pZLcqrYnyepPmhv1f1DMcQqDxB+FC+OTMs49ODgwwpF2TByUZ9EYURF3Qtw0i6t3B/fY5/6rQyF/kzqYkT5LHMhwQFErjIndfXwDcRuM5ii8IslAjihyfHsWjeNPrndiI2p1QST2LMTwEgBEGiSFGbszFmgAN62DJ0RcV92xDGQFlCfk1qXfrhSC/2j/0i2HMYorj8/X14CyFEUwRJdHCOG5FO0R9kD3PkD4wc2MNiePPxH7Z3u61RFBdxHtEBG103GYaFi4HxsMuBi7s0WO2RaPoanjMl4K7HoBALHiDMFWomY/iDzeZJZIKEdld3CcONoF4DCRIxSLRY7WMgrcRNWx2ByNnZLwnijN8GjgRvzbx19ArcYUBEBL5cld56DSfSnEiXuGrZUUxbkujoTCxKTRU2mGH3NSYF8CtFl272sDzZGZDesMvFcsUFMkD4R76K+N0MIAX1DmLIqv0nh4UafeVhoVqgjlo9FyIzHDSInvEOMuNveO1evitkps8VvCJ3P6wrcQ/jRoavEOwKEcHDWeQXWBy4NHqyLvUGxJ/4itiI4pamBETFh3n0UwlpmkbME9OPBt1HPFYHZjni0W8gdZpEzwD5xrTEFcFEvzMuNgv1cvsjXiwvvj6PBOqccx9BJPY7rghPYJx50S/SKuy6k8ktt8KFCgKBXWdgKjpIoDMDNQkh8FzBeqcO5v5BtrVAkXBgLVPxktIVbO7Zl8APQKPmMnbB7zsS8p3Q1ChMEshvhmmxNVH8vVd3InUF74Mij7aTE73YZ23TRYC3psJmFxEJg5mvJKr/BSEWZFG2YP4sBJ+/exk3FRNiiPng8EkSOTPMP7JobxmKbNv2lZ+WWJASE8JBi9iKwvTVb5VbhYzrlK3pmqm4G9cIwHNJJEDrmn5KEC8+HgfPWkGNQq4seEt5BGVlWOyy0d5TXwMyn9C4sSXJS7EHHGaIhuP7Bv1zLcD1HcGFWcoDvBZsKgiMtI4tvKbV+5vWX59rRFuko9hv0MDU7p+UaynmGunDFyMNZSc1390M9A+oUFoHCskYqQHKwEYMGeDlHbMBmKNkWOKaVZA54dadjrA5JoCYOsoQkX77jiOqz0bV5iIP3dQ0DYu2a1/aICh3x4LQOvyx4vxfs6iGcYOJQ5PwdhZQOfg2L5wWcy3nVCOeCfAym8wy8UzlN+g5Xsajf728P2trWdvSxkEAMYyAiQ6Xa1q23tZGtLg8y0iy0tCzLRTnaykEU1eM+LurXHt7aHfVTdKpWca3N73YLb25xsnWlLu9pFYQ1sa++FunnBqxa811vdo+OtRaj96jpkVKlNRDQ2lL4MNlF6cCTLiOqeFQjqwhn3AysObzN6rbSMIL3jyx9q2Y0VAQ==) + format("woff2"); } .material-icons { - font-family: 'Material Icons'; /* stylelint-disable font-family-no-missing-generic-family-keyword */ + font-family: "Material Icons"; /* stylelint-disable font-family-no-missing-generic-family-keyword */ font-weight: normal; font-style: normal; - font-size: 20px; /* Default icon size */ + font-size: 20px; /* Default icon size */ display: inline-block; line-height: 1; text-transform: none; @@ -50,13 +51,24 @@ -moz-osx-font-smoothing: grayscale; /* Support for IE. */ - font-feature-settings: 'liga'; + font-feature-settings: "liga"; } -.material-icons.md-18 { font-size: 18px; } -.material-icons.md-24 { font-size: 24px; } -.material-icons.md-36 { font-size: 36px; } -.material-icons.md-48 { font-size: 48px; } +.material-icons.md-18 { + font-size: 18px; +} + +.material-icons.md-24 { + font-size: 24px; +} + +.material-icons.md-36 { + font-size: 36px; +} + +.material-icons.md-48 { + font-size: 48px; +} .dropdown-menu > li > a > .material-icons { margin-right: 6px; diff --git a/airflow/www/static/css/switch.css b/airflow/www/static/css/switch.css index 4890641f55a22..39d5db446127b 100644 --- a/airflow/www/static/css/switch.css +++ b/airflow/www/static/css/switch.css @@ -57,7 +57,7 @@ border-radius: 50%; width: 1.5rem; height: 1.5rem; - content: ''; + content: ""; background-color: #edecec; transition-timing-function: ease-in-out; transition-duration: 0.25s; diff --git a/airflow/www/static/js/App.tsx b/airflow/www/static/js/App.tsx index cbdd3fa09665e..6602a0ae9eeda 100644 --- a/airflow/www/static/js/App.tsx +++ b/airflow/www/static/js/App.tsx @@ -21,22 +21,22 @@ Base setup for anywhere we add react to the UI */ -import React, { PropsWithChildren } from 'react'; -import { BrowserRouter } from 'react-router-dom'; -import { ChakraProvider } from '@chakra-ui/react'; -import { CacheProvider } from '@emotion/react'; -import type { EmotionCache } from '@emotion/cache'; -import { QueryClient, QueryClientProvider } from 'react-query'; +import React, { PropsWithChildren } from "react"; +import { BrowserRouter } from "react-router-dom"; +import { ChakraProvider } from "@chakra-ui/react"; +import { CacheProvider } from "@emotion/react"; +import type { EmotionCache } from "@emotion/cache"; +import { QueryClient, QueryClientProvider } from "react-query"; -import theme from './theme'; -import { ContainerRefProvider, useContainerRef } from './context/containerRef'; -import { TimezoneProvider } from './context/timezone'; -import { AutoRefreshProvider } from './context/autorefresh'; +import theme from "./theme"; +import { ContainerRefProvider, useContainerRef } from "./context/containerRef"; +import { TimezoneProvider } from "./context/timezone"; +import { AutoRefreshProvider } from "./context/autorefresh"; const queryClient = new QueryClient({ defaultOptions: { queries: { - notifyOnChangeProps: 'tracked', + notifyOnChangeProps: "tracked", refetchOnWindowFocus: false, retry: 1, retryDelay: 500, @@ -59,13 +59,14 @@ interface AppProps extends PropsWithChildren { const ChakraApp = ({ children }: PropsWithChildren) => { const containerRef = useContainerRef(); return ( - + - - {children} - + {children} @@ -78,9 +79,7 @@ function App({ children, cache }: AppProps) { - - {children} - + {children} diff --git a/airflow/www/static/js/README.md b/airflow/www/static/js/README.md index c17c5849775f4..1b4c6607a6626 100644 --- a/airflow/www/static/js/README.md +++ b/airflow/www/static/js/README.md @@ -27,20 +27,17 @@ The most popular javascript framework for building user interfaces with reusable Written as javascript and html together in `.jsx` files. In-component state can be managed via `useState()`, application state that spans many components can be managed via a context provider (see `/context` for examples), API state can be managed by React Query (see below) - ## [Chakra UI](https://chakra-ui.com/) A good component and helper function library. Tooltips, modals, toasts, switches, etc are all out of the box Styles are applied via global theme when initializing the app or inline with individual components like `` - ## [React Query](https://react-query.tanstack.com/) A powerful async data handler that makes it easy to manage loading/error states as well as caching, refetching, background updates, etc. This is our state management for any data that comes from an API. Each API request is its own hook. Ie `useTasks` will get all the tasks for a DAG - ## [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) Easily write tests for react components and hooks diff --git a/airflow/www/static/js/api/index.ts b/airflow/www/static/js/api/index.ts index d055f737d965c..0749565f6f5d2 100644 --- a/airflow/www/static/js/api/index.ts +++ b/airflow/www/static/js/api/index.ts @@ -17,34 +17,34 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import camelcaseKeys from 'camelcase-keys'; +import axios, { AxiosResponse } from "axios"; +import camelcaseKeys from "camelcase-keys"; -import useClearRun from './useClearRun'; -import useQueueRun from './useQueueRun'; -import useMarkFailedRun from './useMarkFailedRun'; -import useMarkSuccessRun from './useMarkSuccessRun'; -import useClearTask from './useClearTask'; -import useMarkFailedTask from './useMarkFailedTask'; -import useMarkSuccessTask from './useMarkSuccessTask'; -import useExtraLinks from './useExtraLinks'; -import useConfirmMarkTask from './useConfirmMarkTask'; -import useGridData from './useGridData'; -import useMappedInstances from './useMappedInstances'; -import useDatasets from './useDatasets'; -import useDataset from './useDataset'; -import useDatasetDependencies from './useDatasetDependencies'; -import useDatasetEvents from './useDatasetEvents'; -import useSetDagRunNote from './useSetDagRunNote'; -import useSetTaskInstanceNote from './useSetTaskInstanceNote'; -import useUpstreamDatasetEvents from './useUpstreamDatasetEvents'; -import useTaskInstance from './useTaskInstance'; +import useClearRun from "./useClearRun"; +import useQueueRun from "./useQueueRun"; +import useMarkFailedRun from "./useMarkFailedRun"; +import useMarkSuccessRun from "./useMarkSuccessRun"; +import useClearTask from "./useClearTask"; +import useMarkFailedTask from "./useMarkFailedTask"; +import useMarkSuccessTask from "./useMarkSuccessTask"; +import useExtraLinks from "./useExtraLinks"; +import useConfirmMarkTask from "./useConfirmMarkTask"; +import useGridData from "./useGridData"; +import useMappedInstances from "./useMappedInstances"; +import useDatasets from "./useDatasets"; +import useDataset from "./useDataset"; +import useDatasetDependencies from "./useDatasetDependencies"; +import useDatasetEvents from "./useDatasetEvents"; +import useSetDagRunNote from "./useSetDagRunNote"; +import useSetTaskInstanceNote from "./useSetTaskInstanceNote"; +import useUpstreamDatasetEvents from "./useUpstreamDatasetEvents"; +import useTaskInstance from "./useTaskInstance"; -axios.interceptors.response.use( - (res: AxiosResponse) => (res.data ? camelcaseKeys(res.data, { deep: true }) : res), +axios.interceptors.response.use((res: AxiosResponse) => + res.data ? camelcaseKeys(res.data, { deep: true }) : res ); -axios.defaults.headers.common.Accept = 'application/json'; +axios.defaults.headers.common.Accept = "application/json"; export { useClearRun, diff --git a/airflow/www/static/js/api/useClearRun.ts b/airflow/www/static/js/api/useClearRun.ts index c7b32b79fb2a0..bc617290548e0 100644 --- a/airflow/www/static/js/api/useClearRun.ts +++ b/airflow/www/static/js/api/useClearRun.ts @@ -17,23 +17,23 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useMutation, useQueryClient } from "react-query"; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from 'src/utils'; -import { useAutoRefresh } from 'src/context/autorefresh'; -import useErrorToast from 'src/utils/useErrorToast'; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "src/utils"; +import { useAutoRefresh } from "src/context/autorefresh"; +import useErrorToast from "src/utils/useErrorToast"; -const csrfToken = getMetaValue('csrf_token'); -const clearRunUrl = getMetaValue('dagrun_clear_url'); +const csrfToken = getMetaValue("csrf_token"); +const clearRunUrl = getMetaValue("dagrun_clear_url"); export default function useClearRun(dagId: string, runId: string) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); const { startRefresh } = useAutoRefresh(); return useMutation( - ['dagRunClear', dagId, runId], + ["dagRunClear", dagId, runId], ({ confirmed = false }: { confirmed: boolean }) => { const params = new URLSearchParamsWrapper({ csrf_token: csrfToken, @@ -44,18 +44,18 @@ export default function useClearRun(dagId: string, runId: string) { return axios.post(clearRunUrl, params, { headers: { - 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Type": "application/x-www-form-urlencoded", }, }); }, { onSuccess: (_, { confirmed }) => { if (confirmed) { - queryClient.invalidateQueries('gridData'); + queryClient.invalidateQueries("gridData"); startRefresh(); } }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useClearTask.ts b/airflow/www/static/js/api/useClearTask.ts index b6c10f1637e83..ebe3b14b28b73 100644 --- a/airflow/www/static/js/api/useClearTask.ts +++ b/airflow/www/static/js/api/useClearTask.ts @@ -17,39 +17,54 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from '../utils'; -import { useAutoRefresh } from '../context/autorefresh'; -import useErrorToast from '../utils/useErrorToast'; +import axios, { AxiosResponse } from "axios"; +import { useMutation, useQueryClient } from "react-query"; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "../utils"; +import { useAutoRefresh } from "../context/autorefresh"; +import useErrorToast from "../utils/useErrorToast"; -const csrfToken = getMetaValue('csrf_token'); -const clearUrl = getMetaValue('clear_url'); +const csrfToken = getMetaValue("csrf_token"); +const clearUrl = getMetaValue("clear_url"); export default function useClearTask({ - dagId, runId, taskId, executionDate, isGroup, -}: { dagId: string, - runId: string, - taskId: string, - executionDate: string, - isGroup: boolean }) { + dagId, + runId, + taskId, + executionDate, + isGroup, +}: { + dagId: string; + runId: string; + taskId: string; + executionDate: string; + isGroup: boolean; +}) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); const { startRefresh } = useAutoRefresh(); return useMutation( - ['clearTask', dagId, runId, taskId], + ["clearTask", dagId, runId, taskId], ({ - past, future, upstream, downstream, recursive, failed, confirmed, mapIndexes = [], - }: { past: boolean, - future: boolean, - upstream: boolean, - downstream: boolean, - recursive: boolean, - failed: boolean, - confirmed: boolean, - mapIndexes: number[] }) => { + past, + future, + upstream, + downstream, + recursive, + failed, + confirmed, + mapIndexes = [], + }: { + past: boolean; + future: boolean; + upstream: boolean; + downstream: boolean; + recursive: boolean; + failed: boolean; + confirmed: boolean; + mapIndexes: number[]; + }) => { const params = new URLSearchParamsWrapper({ csrf_token: csrfToken, dag_id: dagId, @@ -65,30 +80,35 @@ export default function useClearTask({ }); if (isGroup) { - params.append('group_id', taskId); + params.append("group_id", taskId); } else { - params.append('task_id', taskId); + params.append("task_id", taskId); } mapIndexes.forEach((mi: number) => { - params.append('map_index', mi.toString()); + params.append("map_index", mi.toString()); }); return axios.post(clearUrl, params.toString(), { headers: { - 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Type": "application/x-www-form-urlencoded", }, }); }, { onSuccess: (_, { confirmed }) => { if (confirmed) { - queryClient.invalidateQueries('gridData'); - queryClient.invalidateQueries(['mappedInstances', dagId, runId, taskId]); + queryClient.invalidateQueries("gridData"); + queryClient.invalidateQueries([ + "mappedInstances", + dagId, + runId, + taskId, + ]); startRefresh(); } }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useConfirmMarkTask.ts b/airflow/www/static/js/api/useConfirmMarkTask.ts index ba654798c4235..4e69875ffb650 100644 --- a/airflow/www/static/js/api/useConfirmMarkTask.ts +++ b/airflow/www/static/js/api/useConfirmMarkTask.ts @@ -17,29 +17,41 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation } from 'react-query'; -import type { TaskState } from 'src/types'; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from '../utils'; -import useErrorToast from '../utils/useErrorToast'; +import axios, { AxiosResponse } from "axios"; +import { useMutation } from "react-query"; +import type { TaskState } from "src/types"; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "../utils"; +import useErrorToast from "../utils/useErrorToast"; -const confirmUrl = getMetaValue('confirm_url'); +const confirmUrl = getMetaValue("confirm_url"); export default function useConfirmMarkTask({ - dagId, runId, taskId, state, -}: { dagId: string, runId: string, taskId: string, state: TaskState }) { + dagId, + runId, + taskId, + state, +}: { + dagId: string; + runId: string; + taskId: string; + state: TaskState; +}) { const errorToast = useErrorToast(); return useMutation( - ['confirmStateChange', dagId, runId, taskId, state], + ["confirmStateChange", dagId, runId, taskId, state], ({ - past, future, upstream, downstream, mapIndexes = [], + past, + future, + upstream, + downstream, + mapIndexes = [], }: { - past: boolean, - future: boolean, - upstream: boolean, - downstream: boolean, - mapIndexes: number[], + past: boolean; + future: boolean; + upstream: boolean; + downstream: boolean; + mapIndexes: number[]; }) => { const params = new URLSearchParamsWrapper({ dag_id: dagId, @@ -53,12 +65,12 @@ export default function useConfirmMarkTask({ }); mapIndexes.forEach((mi: number) => { - params.append('map_index', mi.toString()); + params.append("map_index", mi.toString()); }); return axios.get(confirmUrl, { params }); }, { onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useDataset.ts b/airflow/www/static/js/api/useDataset.ts index 4633b47242b88..4793464fac378 100644 --- a/airflow/www/static/js/api/useDataset.ts +++ b/airflow/www/static/js/api/useDataset.ts @@ -17,22 +17,22 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; -import { getMetaValue } from 'src/utils'; -import type { API } from 'src/types'; +import { getMetaValue } from "src/utils"; +import type { API } from "src/types"; interface Props { uri: string; } export default function useDataset({ uri }: Props) { - return useQuery( - ['dataset', uri], - () => { - const datasetUrl = getMetaValue('dataset_api').replace('__URI__', encodeURIComponent(uri)); - return axios.get(datasetUrl); - }, - ); + return useQuery(["dataset", uri], () => { + const datasetUrl = getMetaValue("dataset_api").replace( + "__URI__", + encodeURIComponent(uri) + ); + return axios.get(datasetUrl); + }); } diff --git a/airflow/www/static/js/api/useDatasetDependencies.ts b/airflow/www/static/js/api/useDatasetDependencies.ts index a4167c6f8fbdb..12e46c266bd57 100644 --- a/airflow/www/static/js/api/useDatasetDependencies.ts +++ b/airflow/www/static/js/api/useDatasetDependencies.ts @@ -17,13 +17,13 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; -import ELK, { ElkShape, ElkExtendedEdge } from 'elkjs'; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; +import ELK, { ElkShape, ElkExtendedEdge } from "elkjs"; -import { getMetaValue } from 'src/utils'; -import type { DepEdge, DepNode } from 'src/types'; -import type { NodeType } from 'src/datasets/Graph/Node'; +import { getMetaValue } from "src/utils"; +import type { DepEdge, DepNode } from "src/types"; +import type { NodeType } from "src/datasets/Graph/Node"; interface DatasetDependencies { edges: DepEdge[]; @@ -52,7 +52,7 @@ interface Data { // Take text and font to calculate how long each node should be function getTextWidth(text: string, font: string) { - const context = document.createElement('canvas').getContext('2d'); + const context = document.createElement("canvas").getContext("2d"); if (context) { context.font = font; const metrics = context.measureText(text); @@ -62,18 +62,18 @@ function getTextWidth(text: string, font: string) { } const generateGraph = ({ nodes, edges, font }: GenerateProps) => ({ - id: 'root', + id: "root", layoutOptions: { - 'spacing.nodeNodeBetweenLayers': '40.0', - 'spacing.edgeNodeBetweenLayers': '10.0', - 'layering.strategy': 'INTERACTIVE', - algorithm: 'layered', - 'crossingMinimization.semiInteractive': 'true', - 'spacing.edgeEdgeBetweenLayers': '10.0', - 'spacing.edgeNode': '10.0', - 'spacing.edgeEdge': '10.0', - 'spacing.nodeNode': '20.0', - 'elk.direction': 'DOWN', + "spacing.nodeNodeBetweenLayers": "40.0", + "spacing.edgeNodeBetweenLayers": "10.0", + "layering.strategy": "INTERACTIVE", + algorithm: "layered", + "crossingMinimization.semiInteractive": "true", + "spacing.edgeEdgeBetweenLayers": "10.0", + "spacing.edgeNode": "10.0", + "spacing.edgeEdge": "10.0", + "spacing.nodeNode": "20.0", + "elk.direction": "DOWN", }, children: nodes.map(({ id, value }) => ({ id, @@ -82,7 +82,11 @@ const generateGraph = ({ nodes, edges, font }: GenerateProps) => ({ height: 40, value, })), - edges: edges.map((e) => ({ id: `${e.source}-${e.target}`, sources: [e.source], targets: [e.target] })), + edges: edges.map((e) => ({ + id: `${e.source}-${e.target}`, + sources: [e.source], + targets: [e.target], + })), }); interface SeparateGraphsProps { @@ -91,43 +95,49 @@ interface SeparateGraphsProps { } // find the downstream graph of each upstream edge -const findDownstreamGraph = ( - { edges, graphs = [] }: SeparateGraphsProps, -): EdgeGroup[] => { +const findDownstreamGraph = ({ + edges, + graphs = [], +}: SeparateGraphsProps): EdgeGroup[] => { let unassignedEdges = [...edges]; const mergedGraphs = graphs - .reduce( - (newGraphs, graph) => { - const otherGroupIndex = newGraphs.findIndex( - (otherGroup) => otherGroup.edges.some( - (otherEdge) => graph.edges.some( - (edge) => edge.target === otherEdge.target, - ), - ), - ); - if (otherGroupIndex === -1) { - return [...newGraphs, graph]; - } - - const mergedEdges = [...newGraphs[otherGroupIndex].edges, ...graph.edges] - .filter((edge, edgeIndex, otherEdges) => ( - edgeIndex === otherEdges.findIndex( - (otherEdge) => otherEdge.source === edge.source && otherEdge.target === edge.target, - ) - )); - return [ - ...newGraphs.filter((_, newGraphIndex) => newGraphIndex !== otherGroupIndex), - { edges: mergedEdges }, - ]; - }, - [] as EdgeGroup[], - ) + .reduce((newGraphs, graph) => { + const otherGroupIndex = newGraphs.findIndex((otherGroup) => + otherGroup.edges.some((otherEdge) => + graph.edges.some((edge) => edge.target === otherEdge.target) + ) + ); + if (otherGroupIndex === -1) { + return [...newGraphs, graph]; + } + + const mergedEdges = [ + ...newGraphs[otherGroupIndex].edges, + ...graph.edges, + ].filter( + (edge, edgeIndex, otherEdges) => + edgeIndex === + otherEdges.findIndex( + (otherEdge) => + otherEdge.source === edge.source && + otherEdge.target === edge.target + ) + ); + return [ + ...newGraphs.filter( + (_, newGraphIndex) => newGraphIndex !== otherGroupIndex + ), + { edges: mergedEdges }, + ]; + }, [] as EdgeGroup[]) .map((graph) => { // find the next set of downstream edges and filter them out of the unassigned edges list const downstreamEdges: DepEdge[] = []; unassignedEdges = unassignedEdges.filter((edge) => { - const isDownstream = graph.edges.some((graphEdge) => graphEdge.target === edge.source); + const isDownstream = graph.edges.some( + (graphEdge) => graphEdge.target === edge.source + ); if (isDownstream) downstreamEdges.push(edge); return !isDownstream; }); @@ -144,7 +154,10 @@ const findDownstreamGraph = ( }; // separate the list of nodes/edges into distinct dataset pipeline graphs -const separateGraphs = ({ edges, nodes }: DatasetDependencies): DatasetDependencies[] => { +const separateGraphs = ({ + edges, + nodes, +}: DatasetDependencies): DatasetDependencies[] => { const separatedGraphs: EdgeGroup[] = []; const remainingEdges: DepEdge[] = []; @@ -157,19 +170,20 @@ const separateGraphs = ({ edges, nodes }: DatasetDependencies): DatasetDependenc } }); - const edgeGraphs = findDownstreamGraph({ edges: remainingEdges, graphs: separatedGraphs }); + const edgeGraphs = findDownstreamGraph({ + edges: remainingEdges, + graphs: separatedGraphs, + }); // once all the edges are found, add the nodes return edgeGraphs.map((eg) => { - const graphNodes = nodes.filter( - (n) => eg.edges.some( - (e) => e.target === n.id || e.source === n.id, - ), + const graphNodes = nodes.filter((n) => + eg.edges.some((e) => e.target === n.id || e.source === n.id) ); - return ({ + return { edges: eg.edges, nodes: graphNodes, - }); + }; }); }; @@ -179,12 +193,16 @@ const formatDependencies = async ({ edges, nodes }: DatasetDependencies) => { const graphs = separateGraphs({ edges, nodes }); // get computed style to calculate how large each node should be - const font = `bold ${16}px ${window.getComputedStyle(document.body).fontFamily}`; + const font = `bold ${16}px ${ + window.getComputedStyle(document.body).fontFamily + }`; // Finally generate the graph data with elk - const subGraphs = await Promise.all(graphs.map(async (g) => ( - elk.layout(generateGraph({ nodes: g.nodes, edges: g.edges, font })) - ))); + const subGraphs = await Promise.all( + graphs.map(async (g) => + elk.layout(generateGraph({ nodes: g.nodes, edges: g.edges, font })) + ) + ); const fullGraph = await elk.layout(generateGraph({ nodes, edges, font })); return { @@ -194,12 +212,11 @@ const formatDependencies = async ({ edges, nodes }: DatasetDependencies) => { }; export default function useDatasetDependencies() { - return useQuery( - 'datasetDependencies', - async () => { - const datasetDepsUrl = getMetaValue('dataset_dependencies_url'); - const rawData = await axios.get(datasetDepsUrl); - return formatDependencies(rawData); - }, - ); + return useQuery("datasetDependencies", async () => { + const datasetDepsUrl = getMetaValue("dataset_dependencies_url"); + const rawData = await axios.get( + datasetDepsUrl + ); + return formatDependencies(rawData); + }); } diff --git a/airflow/www/static/js/api/useDatasetEvents.ts b/airflow/www/static/js/api/useDatasetEvents.ts index b67423a0bad2f..8caccd202cae8 100644 --- a/airflow/www/static/js/api/useDatasetEvents.ts +++ b/airflow/www/static/js/api/useDatasetEvents.ts @@ -17,31 +17,49 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; -import { getMetaValue } from 'src/utils'; -import type { API } from 'src/types'; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; +import { getMetaValue } from "src/utils"; +import type { API } from "src/types"; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; export default function useDatasetEvents({ - datasetId, sourceDagId, sourceRunId, sourceTaskId, sourceMapIndex, limit, offset, orderBy, + datasetId, + sourceDagId, + sourceRunId, + sourceTaskId, + sourceMapIndex, + limit, + offset, + orderBy, }: API.GetDatasetEventsVariables) { const query = useQuery( - ['datasets-events', datasetId, sourceDagId, sourceRunId, sourceTaskId, sourceMapIndex, limit, offset, orderBy], + [ + "datasets-events", + datasetId, + sourceDagId, + sourceRunId, + sourceTaskId, + sourceMapIndex, + limit, + offset, + orderBy, + ], () => { - const datasetsUrl = getMetaValue('dataset_events_api'); + const datasetsUrl = getMetaValue("dataset_events_api"); const params = new URLSearchParamsWrapper(); - if (limit) params.set('limit', limit.toString()); - if (offset) params.set('offset', offset.toString()); - if (orderBy) params.set('order_by', orderBy); - if (datasetId) params.set('dataset_id', datasetId.toString()); - if (sourceDagId) params.set('source_dag_id', sourceDagId); - if (sourceRunId) params.set('source_run_id', sourceRunId); - if (sourceTaskId) params.set('source_task_id', sourceTaskId); - if (sourceMapIndex) params.set('source_map_index', sourceMapIndex.toString()); + if (limit) params.set("limit", limit.toString()); + if (offset) params.set("offset", offset.toString()); + if (orderBy) params.set("order_by", orderBy); + if (datasetId) params.set("dataset_id", datasetId.toString()); + if (sourceDagId) params.set("source_dag_id", sourceDagId); + if (sourceRunId) params.set("source_run_id", sourceRunId); + if (sourceTaskId) params.set("source_task_id", sourceTaskId); + if (sourceMapIndex) + params.set("source_map_index", sourceMapIndex.toString()); return axios.get(datasetsUrl, { params, @@ -49,7 +67,7 @@ export default function useDatasetEvents({ }, { keepPreviousData: true, - }, + } ); return { ...query, diff --git a/airflow/www/static/js/api/useDatasets.ts b/airflow/www/static/js/api/useDatasets.ts index 6c459a15b4243..379d3c3e61b2e 100644 --- a/airflow/www/static/js/api/useDatasets.ts +++ b/airflow/www/static/js/api/useDatasets.ts @@ -17,12 +17,12 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; -import { getMetaValue } from 'src/utils'; -import type { DatasetListItem } from 'src/types'; -import type { unitOfTime } from 'moment'; +import { getMetaValue } from "src/utils"; +import type { DatasetListItem } from "src/types"; +import type { unitOfTime } from "moment"; interface DatasetsData { datasets: DatasetListItem[]; @@ -43,33 +43,39 @@ interface Props { } export default function useDatasets({ - limit, offset, order, uri, updatedAfter, + limit, + offset, + order, + uri, + updatedAfter, }: Props) { const query = useQuery( - ['datasets', limit, offset, order, uri, updatedAfter], + ["datasets", limit, offset, order, uri, updatedAfter], () => { - const datasetsUrl = getMetaValue('datasets_api'); + const datasetsUrl = getMetaValue("datasets_api"); const orderParam = order ? { order_by: order } : {}; const uriParam = uri ? { uri_pattern: uri } : {}; - const updatedAfterParam = updatedAfter && updatedAfter.count && updatedAfter.unit - ? { updated_after: moment().subtract(updatedAfter.count, updatedAfter.unit).toISOString() } - : {}; - return axios.get( - datasetsUrl, - { - params: { - offset, - limit, - ...orderParam, - ...uriParam, - ...updatedAfterParam, - }, + const updatedAfterParam = + updatedAfter && updatedAfter.count && updatedAfter.unit + ? { + updated_after: moment() + .subtract(updatedAfter.count, updatedAfter.unit) + .toISOString(), + } + : {}; + return axios.get(datasetsUrl, { + params: { + offset, + limit, + ...orderParam, + ...uriParam, + ...updatedAfterParam, }, - ); + }); }, { keepPreviousData: true, - }, + } ); return { ...query, diff --git a/airflow/www/static/js/api/useExtraLinks.ts b/airflow/www/static/js/api/useExtraLinks.ts index 76fe4610bbf46..a76cb2540c1fd 100644 --- a/airflow/www/static/js/api/useExtraLinks.ts +++ b/airflow/www/static/js/api/useExtraLinks.ts @@ -17,11 +17,11 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; -import { getMetaValue } from '../utils'; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; +import { getMetaValue } from "../utils"; -const extraLinksUrl = getMetaValue('extra_links_url'); +const extraLinksUrl = getMetaValue("extra_links_url"); interface LinkData { url: string | null; @@ -29,19 +29,26 @@ interface LinkData { } export default function useExtraLinks({ - dagId, taskId, executionDate, extraLinks, + dagId, + taskId, + executionDate, + extraLinks, }: { - dagId: string, taskId: string, executionDate: string, extraLinks: string[], + dagId: string; + taskId: string; + executionDate: string; + extraLinks: string[]; }) { - return useQuery( - ['extraLinks', dagId, taskId, executionDate], - async () => { - const data = await Promise.all(extraLinks.map(async (link) => { - const url = `${extraLinksUrl - }?task_id=${encodeURIComponent(taskId) - }&dag_id=${encodeURIComponent(dagId) - }&execution_date=${encodeURIComponent(executionDate) - }&link_name=${encodeURIComponent(link)}`; + return useQuery(["extraLinks", dagId, taskId, executionDate], async () => { + const data = await Promise.all( + extraLinks.map(async (link) => { + const url = `${extraLinksUrl}?task_id=${encodeURIComponent( + taskId + )}&dag_id=${encodeURIComponent( + dagId + )}&execution_date=${encodeURIComponent( + executionDate + )}&link_name=${encodeURIComponent(link)}`; try { const datum = await axios.get(url); return { @@ -52,11 +59,11 @@ export default function useExtraLinks({ console.error(e); return { name: link, - url: '', + url: "", }; } - })); - return data; - }, - ); + }) + ); + return data; + }); } diff --git a/airflow/www/static/js/api/useGridData.test.ts b/airflow/www/static/js/api/useGridData.test.ts index d84abf67e6963..929303efe1f5d 100644 --- a/airflow/www/static/js/api/useGridData.test.ts +++ b/airflow/www/static/js/api/useGridData.test.ts @@ -19,15 +19,15 @@ /* global describe, test, expect */ -import type { DagRun } from 'src/types'; -import { areActiveRuns } from './useGridData'; +import type { DagRun } from "src/types"; +import { areActiveRuns } from "./useGridData"; const commonDagRunParams = { - runId: 'runId', - executionDate: '2022-01-01T10:00+00:00', - dataIntervalStart: '2022-01-01T05:00+00:00', - dataIntervalEnd: '2022-01-01T10:00+00:00', - runType: 'scheduled' as DagRun['runType'], + runId: "runId", + executionDate: "2022-01-01T10:00+00:00", + dataIntervalStart: "2022-01-01T05:00+00:00", + dataIntervalEnd: "2022-01-01T10:00+00:00", + runType: "scheduled" as DagRun["runType"], queuedAt: null, startDate: null, endDate: null, @@ -35,29 +35,29 @@ const commonDagRunParams = { externalTrigger: false, conf: null, confIsJson: false, - note: '', + note: "", }; -describe('Test areActiveRuns()', () => { - test('Correctly detects active runs', () => { +describe("Test areActiveRuns()", () => { + test("Correctly detects active runs", () => { const runs: DagRun[] = [ - { state: 'success', ...commonDagRunParams }, - { state: 'queued', ...commonDagRunParams }, + { state: "success", ...commonDagRunParams }, + { state: "queued", ...commonDagRunParams }, ]; expect(areActiveRuns(runs)).toBe(true); }); - test('Returns false when all runs are resolved', () => { + test("Returns false when all runs are resolved", () => { const runs: DagRun[] = [ - { state: 'success', ...commonDagRunParams }, - { state: 'failed', ...commonDagRunParams }, - { state: 'failed', ...commonDagRunParams }, + { state: "success", ...commonDagRunParams }, + { state: "failed", ...commonDagRunParams }, + { state: "failed", ...commonDagRunParams }, ]; const result = areActiveRuns(runs); expect(result).toBe(false); }); - test('Returns false when there are no runs', () => { + test("Returns false when there are no runs", () => { const result = areActiveRuns(); expect(result).toBe(false); }); diff --git a/airflow/www/static/js/api/useGridData.ts b/airflow/www/static/js/api/useGridData.ts index 091127fee2401..7be2e0d2cf714 100644 --- a/airflow/www/static/js/api/useGridData.ts +++ b/airflow/www/static/js/api/useGridData.ts @@ -17,24 +17,28 @@ * under the License. */ -import { useQuery } from 'react-query'; -import axios, { AxiosResponse } from 'axios'; +import { useQuery } from "react-query"; +import axios, { AxiosResponse } from "axios"; -import { getMetaValue } from 'src/utils'; -import { useAutoRefresh } from 'src/context/autorefresh'; -import useErrorToast from 'src/utils/useErrorToast'; +import { getMetaValue } from "src/utils"; +import { useAutoRefresh } from "src/context/autorefresh"; +import useErrorToast from "src/utils/useErrorToast"; import useFilters, { - BASE_DATE_PARAM, NUM_RUNS_PARAM, RUN_STATE_PARAM, RUN_TYPE_PARAM, now, -} from 'src/dag/useFilters'; -import type { Task, DagRun, RunOrdering } from 'src/types'; -import { camelCase } from 'lodash'; + BASE_DATE_PARAM, + NUM_RUNS_PARAM, + RUN_STATE_PARAM, + RUN_TYPE_PARAM, + now, +} from "src/dag/useFilters"; +import type { Task, DagRun, RunOrdering } from "src/types"; +import { camelCase } from "lodash"; -const DAG_ID_PARAM = 'dag_id'; +const DAG_ID_PARAM = "dag_id"; // dagId comes from dag.html const dagId = getMetaValue(DAG_ID_PARAM); -const gridDataUrl = getMetaValue('grid_data_url'); -const urlRoot = getMetaValue('root'); +const gridDataUrl = getMetaValue("grid_data_url"); +const urlRoot = getMetaValue("root"); export interface GridData { dagRuns: DagRun[]; @@ -57,19 +61,18 @@ const formatOrdering = (data: GridData) => ({ ordering: data.ordering.map((o: string) => camelCase(o)) as RunOrdering, }); -export const areActiveRuns = (runs: DagRun[] = []) => runs.filter((run) => ['queued', 'running'].includes(run.state)).length > 0; +export const areActiveRuns = (runs: DagRun[] = []) => + runs.filter((run) => ["queued", "running"].includes(run.state)).length > 0; const useGridData = () => { const { isRefreshOn, stopRefresh } = useAutoRefresh(); const errorToast = useErrorToast(); const { - filters: { - baseDate, numRuns, runType, runState, - }, + filters: { baseDate, numRuns, runType, runState }, } = useFilters(); const query = useQuery( - ['gridData', baseDate, numRuns, runType, runState], + ["gridData", baseDate, numRuns, runType, runState], async () => { const params = { root: urlRoot || undefined, @@ -79,7 +82,9 @@ const useGridData = () => { [RUN_TYPE_PARAM]: runType, [RUN_STATE_PARAM]: runState, }; - const response = await axios.get(gridDataUrl, { params }); + const response = await axios.get(gridDataUrl, { + params, + }); // turn off auto refresh if there are no active runs if (!areActiveRuns(response.dagRuns)) stopRefresh(); return response; @@ -91,13 +96,13 @@ const useGridData = () => { onError: (error: Error) => { stopRefresh(); errorToast({ - title: 'Auto-refresh Error', + title: "Auto-refresh Error", error, }); - throw (error); + throw error; }, select: formatOrdering, - }, + } ); return { ...query, diff --git a/airflow/www/static/js/api/useMappedInstances.ts b/airflow/www/static/js/api/useMappedInstances.ts index c14557a03ad90..7a8c820113b04 100644 --- a/airflow/www/static/js/api/useMappedInstances.ts +++ b/airflow/www/static/js/api/useMappedInstances.ts @@ -17,32 +17,41 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; -import { getMetaValue } from 'src/utils'; -import { useAutoRefresh } from 'src/context/autorefresh'; -import type { API } from 'src/types'; +import { getMetaValue } from "src/utils"; +import { useAutoRefresh } from "src/context/autorefresh"; +import type { API } from "src/types"; -const mappedInstancesUrl = getMetaValue('mapped_instances_api'); +const mappedInstancesUrl = getMetaValue("mapped_instances_api"); export default function useMappedInstances({ - dagId, dagRunId, taskId, limit, offset, orderBy, + dagId, + dagRunId, + taskId, + limit, + offset, + orderBy, }: API.GetMappedTaskInstancesVariables) { - const url = mappedInstancesUrl.replace('_DAG_RUN_ID_', dagRunId).replace('_TASK_ID_', taskId); - const orderParam = orderBy && orderBy !== 'map_index' ? { order_by: orderBy } : {}; + const url = mappedInstancesUrl + .replace("_DAG_RUN_ID_", dagRunId) + .replace("_TASK_ID_", taskId); + const orderParam = + orderBy && orderBy !== "map_index" ? { order_by: orderBy } : {}; const { isRefreshOn } = useAutoRefresh(); return useQuery( - ['mappedInstances', dagId, dagRunId, taskId, offset, orderBy], - () => axios.get(url, { - params: { offset, limit, ...orderParam }, - }), + ["mappedInstances", dagId, dagRunId, taskId, offset, orderBy], + () => + axios.get(url, { + params: { offset, limit, ...orderParam }, + }), { keepPreviousData: true, initialData: { taskInstances: [], totalEntries: 0 }, refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000, // staleTime should be similar to the refresh interval staleTime: (autoRefreshInterval || 1) * 1000, - }, + } ); } diff --git a/airflow/www/static/js/api/useMarkFailedRun.ts b/airflow/www/static/js/api/useMarkFailedRun.ts index e1b7f2a21efaa..11a94e4264da4 100644 --- a/airflow/www/static/js/api/useMarkFailedRun.ts +++ b/airflow/www/static/js/api/useMarkFailedRun.ts @@ -17,23 +17,23 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useMutation, useQueryClient } from "react-query"; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from 'src/utils'; -import { useAutoRefresh } from 'src/context/autorefresh'; -import useErrorToast from 'src/utils/useErrorToast'; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "src/utils"; +import { useAutoRefresh } from "src/context/autorefresh"; +import useErrorToast from "src/utils/useErrorToast"; -const csrfToken = getMetaValue('csrf_token'); -const markFailedUrl = getMetaValue('dagrun_failed_url'); +const csrfToken = getMetaValue("csrf_token"); +const markFailedUrl = getMetaValue("dagrun_failed_url"); export default function useMarkFailedRun(dagId: string, runId: string) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); const { startRefresh } = useAutoRefresh(); return useMutation( - ['dagRunFailed', dagId, runId], + ["dagRunFailed", dagId, runId], ({ confirmed = false }: { confirmed: boolean }) => { const params = new URLSearchParamsWrapper({ csrf_token: csrfToken, @@ -44,18 +44,18 @@ export default function useMarkFailedRun(dagId: string, runId: string) { return axios.post(markFailedUrl, params, { headers: { - 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Type": "application/x-www-form-urlencoded", }, }); }, { onSuccess: (_, { confirmed }) => { if (confirmed) { - queryClient.invalidateQueries('gridData'); + queryClient.invalidateQueries("gridData"); startRefresh(); } }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useMarkFailedTask.ts b/airflow/www/static/js/api/useMarkFailedTask.ts index caac2fcd9d27b..23bbda60ab985 100644 --- a/airflow/www/static/js/api/useMarkFailedTask.ts +++ b/airflow/www/static/js/api/useMarkFailedTask.ts @@ -17,34 +17,42 @@ * under the License. */ -import axios from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from '../utils'; -import { useAutoRefresh } from '../context/autorefresh'; -import useErrorToast from '../utils/useErrorToast'; +import axios from "axios"; +import { useMutation, useQueryClient } from "react-query"; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "../utils"; +import { useAutoRefresh } from "../context/autorefresh"; +import useErrorToast from "../utils/useErrorToast"; -const failedUrl = getMetaValue('failed_url'); -const csrfToken = getMetaValue('csrf_token'); +const failedUrl = getMetaValue("failed_url"); +const csrfToken = getMetaValue("csrf_token"); export default function useMarkFailedTask({ - dagId, runId, taskId, + dagId, + runId, + taskId, }: { - dagId: string, runId: string, taskId: string, + dagId: string; + runId: string; + taskId: string; }) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); const { startRefresh } = useAutoRefresh(); return useMutation( - ['markFailed', dagId, runId, taskId], + ["markFailed", dagId, runId, taskId], ({ - past, future, upstream, downstream, mapIndexes = [], + past, + future, + upstream, + downstream, + mapIndexes = [], }: { - past: boolean, - future: boolean, - upstream: boolean, - downstream: boolean, - mapIndexes: number[] + past: boolean; + future: boolean; + upstream: boolean; + downstream: boolean; + mapIndexes: number[]; }) => { const params = new URLSearchParamsWrapper({ csrf_token: csrfToken, @@ -59,22 +67,27 @@ export default function useMarkFailedTask({ }); mapIndexes.forEach((mi: number) => { - params.append('map_index', mi.toString()); + params.append("map_index", mi.toString()); }); return axios.post(failedUrl, params.toString(), { headers: { - 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Type": "application/x-www-form-urlencoded", }, }); }, { onSuccess: () => { - queryClient.invalidateQueries('gridData'); - queryClient.invalidateQueries(['mappedInstances', dagId, runId, taskId]); + queryClient.invalidateQueries("gridData"); + queryClient.invalidateQueries([ + "mappedInstances", + dagId, + runId, + taskId, + ]); startRefresh(); }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useMarkSuccessRun.ts b/airflow/www/static/js/api/useMarkSuccessRun.ts index 545e42e9173bd..119fb29839d62 100644 --- a/airflow/www/static/js/api/useMarkSuccessRun.ts +++ b/airflow/www/static/js/api/useMarkSuccessRun.ts @@ -17,22 +17,22 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from '../utils'; -import { useAutoRefresh } from '../context/autorefresh'; -import useErrorToast from '../utils/useErrorToast'; +import axios, { AxiosResponse } from "axios"; +import { useMutation, useQueryClient } from "react-query"; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "../utils"; +import { useAutoRefresh } from "../context/autorefresh"; +import useErrorToast from "../utils/useErrorToast"; -const markSuccessUrl = getMetaValue('dagrun_success_url'); -const csrfToken = getMetaValue('csrf_token'); +const markSuccessUrl = getMetaValue("dagrun_success_url"); +const csrfToken = getMetaValue("csrf_token"); export default function useMarkSuccessRun(dagId: string, runId: string) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); const { startRefresh } = useAutoRefresh(); return useMutation( - ['dagRunSuccess', dagId, runId], + ["dagRunSuccess", dagId, runId], ({ confirmed = false }: { confirmed: boolean }) => { const params = new URLSearchParamsWrapper({ csrf_token: csrfToken, @@ -43,18 +43,18 @@ export default function useMarkSuccessRun(dagId: string, runId: string) { return axios.post(markSuccessUrl, params, { headers: { - 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Type": "application/x-www-form-urlencoded", }, }); }, { onSuccess: (_, { confirmed }) => { if (confirmed) { - queryClient.invalidateQueries('gridData'); + queryClient.invalidateQueries("gridData"); startRefresh(); } }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useMarkSuccessTask.ts b/airflow/www/static/js/api/useMarkSuccessTask.ts index 8120b58edfa63..2605a92526bb7 100644 --- a/airflow/www/static/js/api/useMarkSuccessTask.ts +++ b/airflow/www/static/js/api/useMarkSuccessTask.ts @@ -17,34 +17,42 @@ * under the License. */ -import axios from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from '../utils'; -import { useAutoRefresh } from '../context/autorefresh'; -import useErrorToast from '../utils/useErrorToast'; +import axios from "axios"; +import { useMutation, useQueryClient } from "react-query"; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "../utils"; +import { useAutoRefresh } from "../context/autorefresh"; +import useErrorToast from "../utils/useErrorToast"; -const csrfToken = getMetaValue('csrf_token'); -const successUrl = getMetaValue('success_url'); +const csrfToken = getMetaValue("csrf_token"); +const successUrl = getMetaValue("success_url"); export default function useMarkSuccessTask({ - dagId, runId, taskId, + dagId, + runId, + taskId, }: { - dagId: string, runId: string, taskId: string, + dagId: string; + runId: string; + taskId: string; }) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); const { startRefresh } = useAutoRefresh(); return useMutation( - ['markSuccess', dagId, runId, taskId], + ["markSuccess", dagId, runId, taskId], ({ - past, future, upstream, downstream, mapIndexes = [], + past, + future, + upstream, + downstream, + mapIndexes = [], }: { - past: boolean, - future: boolean, - upstream: boolean, - downstream: boolean, - mapIndexes: number[] + past: boolean; + future: boolean; + upstream: boolean; + downstream: boolean; + mapIndexes: number[]; }) => { const params = new URLSearchParamsWrapper({ csrf_token: csrfToken, @@ -59,22 +67,27 @@ export default function useMarkSuccessTask({ }); mapIndexes.forEach((mi: number) => { - params.append('map_index', mi.toString()); + params.append("map_index", mi.toString()); }); return axios.post(successUrl, params.toString(), { headers: { - 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Type": "application/x-www-form-urlencoded", }, }); }, { onSuccess: () => { - queryClient.invalidateQueries('gridData'); - queryClient.invalidateQueries(['mappedInstances', dagId, runId, taskId]); + queryClient.invalidateQueries("gridData"); + queryClient.invalidateQueries([ + "mappedInstances", + dagId, + runId, + taskId, + ]); startRefresh(); }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useQueueRun.ts b/airflow/www/static/js/api/useQueueRun.ts index 6438d2856874e..28157a1879ea2 100644 --- a/airflow/www/static/js/api/useQueueRun.ts +++ b/airflow/www/static/js/api/useQueueRun.ts @@ -17,22 +17,22 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; -import URLSearchParamsWrapper from 'src/utils/URLSearchParamWrapper'; -import { getMetaValue } from '../utils'; -import { useAutoRefresh } from '../context/autorefresh'; -import useErrorToast from '../utils/useErrorToast'; +import axios, { AxiosResponse } from "axios"; +import { useMutation, useQueryClient } from "react-query"; +import URLSearchParamsWrapper from "src/utils/URLSearchParamWrapper"; +import { getMetaValue } from "../utils"; +import { useAutoRefresh } from "../context/autorefresh"; +import useErrorToast from "../utils/useErrorToast"; -const csrfToken = getMetaValue('csrf_token'); -const queuedUrl = getMetaValue('dagrun_queued_url'); +const csrfToken = getMetaValue("csrf_token"); +const queuedUrl = getMetaValue("dagrun_queued_url"); export default function useQueueRun(dagId: string, runId: string) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); const { startRefresh } = useAutoRefresh(); return useMutation( - ['dagRunQueue', dagId, runId], + ["dagRunQueue", dagId, runId], ({ confirmed = false }: { confirmed: boolean }) => { const params = new URLSearchParamsWrapper({ csrf_token: csrfToken, @@ -42,18 +42,18 @@ export default function useQueueRun(dagId: string, runId: string) { }).toString(); return axios.post(queuedUrl, params, { headers: { - 'Content-Type': 'application/x-www-form-urlencoded', + "Content-Type": "application/x-www-form-urlencoded", }, }); }, { onSuccess: (_, { confirmed }) => { if (confirmed) { - queryClient.invalidateQueries('gridData'); + queryClient.invalidateQueries("gridData"); startRefresh(); } }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useSetDagRunNote.ts b/airflow/www/static/js/api/useSetDagRunNote.ts index 927adb0ae2b93..7f561d47feede 100644 --- a/airflow/www/static/js/api/useSetDagRunNote.ts +++ b/airflow/www/static/js/api/useSetDagRunNote.ts @@ -17,51 +17,50 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useMutation, useQueryClient } from "react-query"; -import { getMetaValue } from 'src/utils'; -import type { API } from 'src/types'; -import useErrorToast from 'src/utils/useErrorToast'; +import { getMetaValue } from "src/utils"; +import type { API } from "src/types"; +import useErrorToast from "src/utils/useErrorToast"; -import { emptyGridData } from './useGridData'; -import type { GridData } from './useGridData'; +import { emptyGridData } from "./useGridData"; +import type { GridData } from "./useGridData"; -const setDagRunNoteURI = getMetaValue('set_dag_run_note'); +const setDagRunNoteURI = getMetaValue("set_dag_run_note"); interface Props { dagId: string; runId: string; } -export default function useSetDagRunNote({ - dagId, runId, -}: Props) { +export default function useSetDagRunNote({ dagId, runId }: Props) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); - const setDagRunNote = setDagRunNoteURI.replace('_DAG_RUN_ID_', runId); + const setDagRunNote = setDagRunNoteURI.replace("_DAG_RUN_ID_", runId); return useMutation( - ['setDagRunNote', dagId, runId], - (note: string | null) => axios.patch(setDagRunNote, { note }), + ["setDagRunNote", dagId, runId], + (note: string | null) => + axios.patch(setDagRunNote, { note }), { onSuccess: async (data) => { const note = data.note ?? null; - const updateGridData = (oldGridData: GridData | undefined) => ( + const updateGridData = (oldGridData: GridData | undefined) => !oldGridData ? emptyGridData : { - ...oldGridData, - dagRuns: oldGridData.dagRuns.map((dr) => ( - dr.runId === runId ? { ...dr, note } : dr)), - } - ); + ...oldGridData, + dagRuns: oldGridData.dagRuns.map((dr) => + dr.runId === runId ? { ...dr, note } : dr + ), + }; - await queryClient.cancelQueries('gridData'); - queryClient.setQueriesData('gridData', updateGridData); + await queryClient.cancelQueries("gridData"); + queryClient.setQueriesData("gridData", updateGridData); }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useSetTaskInstanceNote.ts b/airflow/www/static/js/api/useSetTaskInstanceNote.ts index d35cedd6963b1..caca6c28065ab 100644 --- a/airflow/www/static/js/api/useSetTaskInstanceNote.ts +++ b/airflow/www/static/js/api/useSetTaskInstanceNote.ts @@ -17,16 +17,18 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useMutation, useQueryClient } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useMutation, useQueryClient } from "react-query"; -import { getMetaValue } from 'src/utils'; -import useErrorToast from 'src/utils/useErrorToast'; +import { getMetaValue } from "src/utils"; +import useErrorToast from "src/utils/useErrorToast"; -import type { API } from 'src/types'; +import type { API } from "src/types"; -const setTaskInstancesNoteURI = getMetaValue('set_task_instance_note'); -const setMappedTaskInstancesNoteURI = getMetaValue('set_mapped_task_instance_note'); +const setTaskInstancesNoteURI = getMetaValue("set_task_instance_note"); +const setMappedTaskInstancesNoteURI = getMetaValue( + "set_mapped_task_instance_note" +); interface Props { dagId: string; @@ -36,26 +38,34 @@ interface Props { } export default function useSetTaskInstanceNote({ - dagId, runId, taskId, mapIndex = -1, + dagId, + runId, + taskId, + mapIndex = -1, }: Props) { const queryClient = useQueryClient(); const errorToast = useErrorToast(); // Note: Werkzeug does not like the META URL on dag.html with an integer. It can not put // _MAP_INDEX_ there as it interprets that as the integer. Hence, we pass 0 as the integer. // To avoid we replace other stuff, we add the surrounding strings to the replacement query. - const url = (mapIndex >= 0 ? setMappedTaskInstancesNoteURI : setTaskInstancesNoteURI) - .replace('_DAG_RUN_ID_', runId) - .replace('_TASK_ID_/0/setNote', `_TASK_ID_/${mapIndex}/setNote`) - .replace('_TASK_ID_', taskId); + const url = ( + mapIndex >= 0 ? setMappedTaskInstancesNoteURI : setTaskInstancesNoteURI + ) + .replace("_DAG_RUN_ID_", runId) + .replace("_TASK_ID_/0/setNote", `_TASK_ID_/${mapIndex}/setNote`) + .replace("_TASK_ID_", taskId); return useMutation( - ['setTaskInstanceNotes', dagId, runId, taskId, mapIndex], - (note: string | null) => axios.patch(url, { note }), + ["setTaskInstanceNotes", dagId, runId, taskId, mapIndex], + (note: string | null) => + axios.patch(url, { note }), { onSuccess: async (data) => { const note = data.note ?? null; - const updateMappedInstancesResult = (oldMappedInstances?: API.TaskInstanceCollection) => { + const updateMappedInstancesResult = ( + oldMappedInstances?: API.TaskInstanceCollection + ) => { if (!oldMappedInstances) { return { taskInstances: [], @@ -65,23 +75,25 @@ export default function useSetTaskInstanceNote({ if (mapIndex === undefined || mapIndex < 0) return oldMappedInstances; return { ...oldMappedInstances, - taskInstances: oldMappedInstances.taskInstances?.map((ti) => ( - ti.dagRunId === runId && ti.taskId === taskId && ti.mapIndex === mapIndex + taskInstances: oldMappedInstances.taskInstances?.map((ti) => + ti.dagRunId === runId && + ti.taskId === taskId && + ti.mapIndex === mapIndex ? { ...ti, note } : ti - )), + ), }; }; - const updateTaskInstanceResult = (oldTaskInstance?: API.TaskInstance) => { - if (!oldTaskInstance) throw new Error('Unknown value...'); + const updateTaskInstanceResult = ( + oldTaskInstance?: API.TaskInstance + ) => { + if (!oldTaskInstance) throw new Error("Unknown value..."); if ( - oldTaskInstance.dagRunId === runId - && oldTaskInstance.taskId === taskId - && ( - (oldTaskInstance.mapIndex == null && mapIndex < 0) - || oldTaskInstance.mapIndex === mapIndex - ) + oldTaskInstance.dagRunId === runId && + oldTaskInstance.taskId === taskId && + ((oldTaskInstance.mapIndex == null && mapIndex < 0) || + oldTaskInstance.mapIndex === mapIndex) ) { return { ...oldTaskInstance, @@ -95,20 +107,23 @@ export default function useSetTaskInstanceNote({ Mutating the nested object is quite complicated, we should simplify the gridData API object first */ - await queryClient.invalidateQueries('gridData'); + await queryClient.invalidateQueries("gridData"); if (mapIndex >= 0) { - await queryClient.cancelQueries('mappedInstances'); - queryClient.setQueriesData('mappedInstances', updateMappedInstancesResult); + await queryClient.cancelQueries("mappedInstances"); + queryClient.setQueriesData( + "mappedInstances", + updateMappedInstancesResult + ); } - await queryClient.cancelQueries('taskInstance'); + await queryClient.cancelQueries("taskInstance"); queryClient.setQueriesData( - ['taskInstance', dagId, runId, taskId, mapIndex], - updateTaskInstanceResult, + ["taskInstance", dagId, runId, taskId, mapIndex], + updateTaskInstanceResult ); }, onError: (error: Error) => errorToast({ error }), - }, + } ); } diff --git a/airflow/www/static/js/api/useTaskInstance.ts b/airflow/www/static/js/api/useTaskInstance.ts index 3a7f5419e933c..2b2818bc217e2 100644 --- a/airflow/www/static/js/api/useTaskInstance.ts +++ b/airflow/www/static/js/api/useTaskInstance.ts @@ -17,35 +17,40 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import type { API, TaskInstance } from 'src/types'; -import { useQuery } from 'react-query'; -import { useAutoRefresh } from 'src/context/autorefresh'; +import axios, { AxiosResponse } from "axios"; +import type { API, TaskInstance } from "src/types"; +import { useQuery } from "react-query"; +import { useAutoRefresh } from "src/context/autorefresh"; -import { getMetaValue } from 'src/utils'; -import type { SetOptional } from 'type-fest'; +import { getMetaValue } from "src/utils"; +import type { SetOptional } from "type-fest"; /* GridData.TaskInstance and API.TaskInstance are not compatible at the moment. * Remove this function when changing the api response for grid_data_url to comply * with API.TaskInstance. */ -const convertTaskInstance = ( - ti: - API.TaskInstance, -) => ({ ...ti, runId: ti.dagRunId }) as TaskInstance; +const convertTaskInstance = (ti: API.TaskInstance) => + ({ ...ti, runId: ti.dagRunId } as TaskInstance); -const taskInstanceApi = getMetaValue('task_instance_api'); +const taskInstanceApi = getMetaValue("task_instance_api"); -interface Props extends SetOptional { +interface Props + extends SetOptional { enabled: boolean; } const useTaskInstance = ({ - dagId, dagRunId, taskId, mapIndex, enabled, + dagId, + dagRunId, + taskId, + mapIndex, + enabled, }: Props) => { - let url: string = ''; + let url: string = ""; if (taskInstanceApi) { - url = taskInstanceApi.replace('_DAG_RUN_ID_', dagRunId).replace('_TASK_ID_', taskId || ''); + url = taskInstanceApi + .replace("_DAG_RUN_ID_", dagRunId) + .replace("_TASK_ID_", taskId || ""); } if (mapIndex !== undefined && mapIndex >= 0) { @@ -55,14 +60,17 @@ const useTaskInstance = ({ const { isRefreshOn } = useAutoRefresh(); return useQuery( - ['taskInstance', dagId, dagRunId, taskId, mapIndex], - () => axios.get(url, { headers: { Accept: 'text/plain' } }), + ["taskInstance", dagId, dagRunId, taskId, mapIndex], + () => + axios.get(url, { + headers: { Accept: "text/plain" }, + }), { placeholderData: {}, refetchInterval: isRefreshOn && (autoRefreshInterval || 1) * 1000, enabled, select: convertTaskInstance, - }, + } ); }; diff --git a/airflow/www/static/js/api/useTaskLog.ts b/airflow/www/static/js/api/useTaskLog.ts index 53e0e57ca4add..fb8c6ee727071 100644 --- a/airflow/www/static/js/api/useTaskLog.ts +++ b/airflow/www/static/js/api/useTaskLog.ts @@ -17,59 +17,67 @@ * under the License. */ -import { useState } from 'react'; -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; -import { useAutoRefresh } from 'src/context/autorefresh'; -import type { API, TaskInstance } from 'src/types'; +import { useState } from "react"; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; +import { useAutoRefresh } from "src/context/autorefresh"; +import type { API, TaskInstance } from "src/types"; -import { getMetaValue } from 'src/utils'; +import { getMetaValue } from "src/utils"; -const taskLogApi = getMetaValue('task_log_api'); +const taskLogApi = getMetaValue("task_log_api"); interface Props extends API.GetLogVariables { - state?: TaskInstance['state']; + state?: TaskInstance["state"]; } const useTaskLog = ({ - dagId, dagRunId, taskId, taskTryNumber, mapIndex, fullContent = false, state, + dagId, + dagRunId, + taskId, + taskTryNumber, + mapIndex, + fullContent = false, + state, }: Props) => { - let url: string = ''; + let url: string = ""; const [isPreviousStatePending, setPrevState] = useState(true); if (taskLogApi) { - url = taskLogApi.replace('_DAG_RUN_ID_', dagRunId).replace('_TASK_ID_', taskId).replace(/-1$/, taskTryNumber.toString()); + url = taskLogApi + .replace("_DAG_RUN_ID_", dagRunId) + .replace("_TASK_ID_", taskId) + .replace(/-1$/, taskTryNumber.toString()); } const { isRefreshOn } = useAutoRefresh(); // Only refresh is the state is pending - const isStatePending = state === 'deferred' - || state === 'scheduled' - || state === 'running' - || state === 'up_for_reschedule' - || state === 'up_for_retry' - || state === 'queued' - || state === 'restarting'; + const isStatePending = + state === "deferred" || + state === "scheduled" || + state === "running" || + state === "up_for_reschedule" || + state === "up_for_retry" || + state === "queued" || + state === "restarting"; // We also want to get the last log when the task was finished const expectingLogs = isStatePending || isPreviousStatePending; return useQuery( - ['taskLogs', dagId, dagRunId, taskId, mapIndex, taskTryNumber, fullContent], + ["taskLogs", dagId, dagRunId, taskId, mapIndex, taskTryNumber, fullContent], () => { setPrevState(isStatePending); - return axios.get( - url, - { - headers: { Accept: 'text/plain' }, - params: { map_index: mapIndex, full_content: fullContent }, - }, - ); + return axios.get(url, { + headers: { Accept: "text/plain" }, + params: { map_index: mapIndex, full_content: fullContent }, + }); }, { - placeholderData: '', - refetchInterval: expectingLogs && isRefreshOn && (autoRefreshInterval || 1) * 1000, - }, + placeholderData: "", + refetchInterval: + expectingLogs && isRefreshOn && (autoRefreshInterval || 1) * 1000, + } ); }; diff --git a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts index 4fa1b765175fb..995941613cfde 100644 --- a/airflow/www/static/js/api/useUpstreamDatasetEvents.ts +++ b/airflow/www/static/js/api/useUpstreamDatasetEvents.ts @@ -17,28 +17,27 @@ * under the License. */ -import axios, { AxiosResponse } from 'axios'; -import { useQuery } from 'react-query'; +import axios, { AxiosResponse } from "axios"; +import { useQuery } from "react-query"; -import { getMetaValue } from 'src/utils'; -import type { API } from 'src/types'; +import { getMetaValue } from "src/utils"; +import type { API } from "src/types"; interface Props { runId: string; } export default function useUpstreamDatasetEvents({ runId }: Props) { - const query = useQuery( - ['upstreamDatasetEvents', runId], - () => { - const dagId = getMetaValue('dag_id'); - const upstreamEventsUrl = ( - getMetaValue('upstream_dataset_events_api') - || `api/v1/dags/${dagId}/dagRuns/_DAG_RUN_ID_/upstreamDatasetEvents` - ).replace('_DAG_RUN_ID_', runId); - return axios.get(upstreamEventsUrl); - }, - ); + const query = useQuery(["upstreamDatasetEvents", runId], () => { + const dagId = getMetaValue("dag_id"); + const upstreamEventsUrl = ( + getMetaValue("upstream_dataset_events_api") || + `api/v1/dags/${dagId}/dagRuns/_DAG_RUN_ID_/upstreamDatasetEvents` + ).replace("_DAG_RUN_ID_", runId); + return axios.get( + upstreamEventsUrl + ); + }); return { ...query, data: query.data || { datasetEvents: [], totalEntries: 0 }, diff --git a/airflow/www/static/js/calendar.js b/airflow/www/static/js/calendar.js index bb4b6e73cf194..330bd47344337 100644 --- a/airflow/www/static/js/calendar.js +++ b/airflow/www/static/js/calendar.js @@ -18,9 +18,9 @@ */ /* global calendarData, statesColors, document, window, $, d3, moment */ -import { getMetaValue } from './utils'; +import { getMetaValue } from "./utils"; -const gridUrl = getMetaValue('grid_url'); +const gridUrl = getMetaValue("grid_url"); function getGridViewURL(d) { return `${gridUrl}?base_date=${encodeURIComponent(d.toISOString())}`; @@ -28,7 +28,7 @@ function getGridViewURL(d) { // date helpers function formatDay(d) { - return ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][d]; + return ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][d]; } function toMoment(y, m, d) { @@ -48,7 +48,7 @@ function weekOfYear(y, m) { } function daysInMonth(y, m) { - const lastDay = toMoment(y, m, 1).add(1, 'month').subtract(1, 'day'); + const lastDay = toMoment(y, m, 1).add(1, "month").subtract(1, "day"); return lastDay.date(); } @@ -58,16 +58,17 @@ function weeksInMonth(y, m) { return Math.floor((daysInMonth(y, m) + monthOffset) / 7) + 1; } -const dateFormat = 'YYYY-MM-DD'; +const dateFormat = "YYYY-MM-DD"; -document.addEventListener('DOMContentLoaded', () => { - $('span.status_square').tooltip({ html: true }); +document.addEventListener("DOMContentLoaded", () => { + $("span.status_square").tooltip({ html: true }); // JSON.parse is faster for large payloads than an object literal const rootData = JSON.parse(calendarData); - const dayTip = d3.tip() - .attr('class', 'tooltip d3-tip') + const dayTip = d3 + .tip() + .attr("class", "tooltip d3-tip") .html((toolTipHtml) => toolTipHtml); // draw the calendar @@ -112,140 +113,165 @@ document.addEventListener('DOMContentLoaded', () => { .sort((data) => data.year); // root SVG element - const fullWidth = ( - leftRightMargin * 2 + yearLabelWidth + dayLabelWidth - + maxWeeksInYear * cellSize - ); - const yearsHeight = (yearHeight + yearPadding) * dagStates.length + yearPadding; + const fullWidth = + leftRightMargin * 2 + + yearLabelWidth + + dayLabelWidth + + maxWeeksInYear * cellSize; + const yearsHeight = + (yearHeight + yearPadding) * dagStates.length + yearPadding; const fullHeight = titleHeight + legendHeight + yearsHeight; const svg = d3 - .select('#calendar-svg') - .attr('width', fullWidth) - .attr('height', fullHeight) + .select("#calendar-svg") + .attr("width", fullWidth) + .attr("height", fullHeight) .call(dayTip); // Add the legend const legend = svg - .append('g') - .attr('transform', `translate(0, ${titleHeight + legendHeight / 2})`); + .append("g") + .attr("transform", `translate(0, ${titleHeight + legendHeight / 2})`); let legendXOffset = fullWidth - leftRightMargin; - function drawLegend(rightState, leftState, numSwatches = 1, swatchesWidth = cellSize) { + function drawLegend( + rightState, + leftState, + numSwatches = 1, + swatchesWidth = cellSize + ) { const startColor = statesColors[leftState || rightState]; const endColor = statesColors[rightState]; legendXOffset -= legendSwtchesTextWidth; legend - .append('text') - .attr('x', legendXOffset) - .attr('y', cellSize / 2) - .attr('text-anchor', 'start') - .attr('class', 'status-label') - .attr('alignment-baseline', 'middle') + .append("text") + .attr("x", legendXOffset) + .attr("y", cellSize / 2) + .attr("text-anchor", "start") + .attr("class", "status-label") + .attr("alignment-baseline", "middle") .text(rightState); legendXOffset -= legendSwatchesPadding; legendXOffset -= swatchesWidth; legend - .append('g') - .attr('transform', `translate(${legendXOffset}, 0)`) - .selectAll('g') + .append("g") + .attr("transform", `translate(${legendXOffset}, 0)`) + .selectAll("g") .data(d3.range(numSwatches)) .enter() - .append('rect') - .attr('x', (v) => v * (swatchesWidth / numSwatches)) - .attr('width', swatchesWidth / numSwatches) - .attr('height', cellSize) - .attr('class', 'day') - .attr('fill', (v) => (startColor.startsWith('url') ? startColor : d3.interpolateHsl(startColor, endColor)(v / numSwatches))); + .append("rect") + .attr("x", (v) => v * (swatchesWidth / numSwatches)) + .attr("width", swatchesWidth / numSwatches) + .attr("height", cellSize) + .attr("class", "day") + .attr("fill", (v) => + startColor.startsWith("url") + ? startColor + : d3.interpolateHsl(startColor, endColor)(v / numSwatches) + ); legendXOffset -= legendSwatchesPadding; if (leftState !== undefined) { legend - .append('text') - .attr('x', legendXOffset) - .attr('y', cellSize / 2) - .attr('text-anchor', 'end') - .attr('class', 'status-label') - .attr('alignment-baseline', 'middle') + .append("text") + .attr("x", legendXOffset) + .attr("y", cellSize / 2) + .attr("text-anchor", "end") + .attr("class", "status-label") + .attr("alignment-baseline", "middle") .text(leftState); legendXOffset -= legendSwtchesTextWidth; } } - drawLegend('no_status'); - drawLegend('planned'); - drawLegend('running'); - drawLegend('failed', 'success', 10, 100); + drawLegend("no_status"); + drawLegend("planned"); + drawLegend("running"); + drawLegend("failed", "success", 10, 100); // Add the years groups, each holding one year of data. const years = svg - .append('g') - .attr('transform', `translate(${leftRightMargin}, ${titleHeight + legendHeight})`); + .append("g") + .attr( + "transform", + `translate(${leftRightMargin}, ${titleHeight + legendHeight})` + ); const year = years - .selectAll('g') + .selectAll("g") .data(dagStates) .enter() - .append('g') - .attr('transform', (d, i) => `translate(0, ${yearPadding + (yearHeight + yearPadding) * i})`); + .append("g") + .attr( + "transform", + (d, i) => + `translate(0, ${yearPadding + (yearHeight + yearPadding) * i})` + ); year - .append('text') - .attr('x', -yearHeight * 0.5) - .attr('transform', 'rotate(270)') - .attr('text-anchor', 'middle') - .attr('class', 'year-label') + .append("text") + .attr("x", -yearHeight * 0.5) + .attr("transform", "rotate(270)") + .attr("text-anchor", "middle") + .attr("class", "year-label") .text((d) => d.year); // write day names year - .append('g') - .attr('transform', `translate(${yearLabelWidth}, ${dayLabelPadding})`) - .attr('text-anchor', 'end') - .selectAll('g') + .append("g") + .attr("transform", `translate(${yearLabelWidth}, ${dayLabelPadding})`) + .attr("text-anchor", "end") + .selectAll("g") .data(d3.range(7)) .enter() - .append('text') - .attr('y', (i) => (i + 0.5) * cellSize) - .attr('class', 'day-label') + .append("text") + .attr("y", (i) => (i + 0.5) * cellSize) + .attr("class", "day-label") .text(formatDay); // create months groups to old the individual day cells & month outline for each month. const months = year - .append('g') - .attr('transform', `translate(${yearLabelWidth + dayLabelWidth}, 0)`); + .append("g") + .attr("transform", `translate(${yearLabelWidth + dayLabelWidth}, 0)`); const month = months - .append('g') - .selectAll('g') - .data((data) => d3 - .range(12) - .map((i) => ({ + .append("g") + .selectAll("g") + .data((data) => + d3.range(12).map((i) => ({ year: data.year, month: i, dagStates: data.dagStates[i] || {}, - }))) + })) + ) .enter() - .append('g') - .attr('transform', (data) => `translate(${weekOfYear(data.year, data.month) * cellSize}, 0)`); + .append("g") + .attr( + "transform", + (data) => + `translate(${weekOfYear(data.year, data.month) * cellSize}, 0)` + ); const tipHtml = (data) => { - const stateCounts = d3.entries(data.dagStates).map((kv) => `${kv.value[0].count} ${kv.key}`); + const stateCounts = d3 + .entries(data.dagStates) + .map((kv) => `${kv.value[0].count} ${kv.key}`); const date = toMoment(data.year, data.month, data.day); const daySr = formatDay(date.day()); const dateStr = date.format(dateFormat); - return `${daySr} ${dateStr}
${stateCounts.join('
')}`; + return `${daySr} ${dateStr}
${stateCounts.join( + "
" + )}`; }; // Create the day cells month - .selectAll('g') - .data((data) => d3 - .range(daysInMonth(data.year, data.month)) - .map((i) => { + .selectAll("g") + .data((data) => + d3.range(daysInMonth(data.year, data.month)).map((i) => { const day = i + 1; const dagRunsByState = data.dagStates[day] || {}; return { @@ -254,23 +280,31 @@ document.addEventListener('DOMContentLoaded', () => { day, dagStates: dagRunsByState, }; - })) + }) + ) .enter() - .append('rect') - .attr('x', (data) => weekOfMonth(data.year, data.month, data.day) * cellSize) - .attr('y', (data) => toMoment(data.year, data.month, data.day).day() * cellSize) - .attr('width', cellSize) - .attr('height', cellSize) - .attr('class', 'day') - .attr('fill', (data) => { - const getCount = (state) => (data.dagStates[state] || [{ count: 0 }])[0].count; - const runningCount = getCount('running'); + .append("rect") + .attr( + "x", + (data) => weekOfMonth(data.year, data.month, data.day) * cellSize + ) + .attr( + "y", + (data) => toMoment(data.year, data.month, data.day).day() * cellSize + ) + .attr("width", cellSize) + .attr("height", cellSize) + .attr("class", "day") + .attr("fill", (data) => { + const getCount = (state) => + (data.dagStates[state] || [{ count: 0 }])[0].count; + const runningCount = getCount("running"); if (runningCount > 0) return statesColors.running; - const successCount = getCount('success'); - const failedCount = getCount('failed'); + const successCount = getCount("success"); + const failedCount = getCount("failed"); if (successCount + failedCount === 0) { - const plannedCount = getCount('planned'); + const plannedCount = getCount("planned"); if (plannedCount > 0) return statesColors.planned; return statesColors.no_status; } @@ -281,36 +315,44 @@ document.addEventListener('DOMContentLoaded', () => { // We use a minimum color interpolation floor, so that days with low failures ratios // don't appear almost as green as days with not failure at all. const floor = 0.5; - ratioFailures = floor + (failedCount / (failedCount + successCount)) * (1 - floor); + ratioFailures = + floor + (failedCount / (failedCount + successCount)) * (1 - floor); } - return d3.interpolateHsl(statesColors.success, statesColors.failed)(ratioFailures); + return d3.interpolateHsl( + statesColors.success, + statesColors.failed + )(ratioFailures); }) - .on('click', (data) => { + .on("click", (data) => { window.location.href = getGridViewURL( // add 1 day and subtract 1 ms to not show any run from the next day. - toMoment(data.year, data.month, data.day).add(1, 'day').subtract(1, 'ms'), + toMoment(data.year, data.month, data.day) + .add(1, "day") + .subtract(1, "ms") ); }) - .on('mouseover', function showTip(data) { + .on("mouseover", function showTip(data) { const tt = tipHtml(data); - dayTip.direction('n'); + dayTip.direction("n"); dayTip.show(tt, this); }) - .on('mouseout', function hideTip(data) { + .on("mouseout", function hideTip(data) { dayTip.hide(data, this); }); // add outline (path) around month month - .selectAll('g') + .selectAll("g") .data((data) => [data]) .enter() - .append('path') - .attr('class', 'month') - .style('fill', 'none') - .attr('d', (data) => { + .append("path") + .attr("class", "month") + .style("fill", "none") + .attr("d", (data) => { const firstDayOffset = toMoment(data.year, data.month, 1).day(); - const lastDayOffset = toMoment(data.year, data.month, 1).add(1, 'month').day(); + const lastDayOffset = toMoment(data.year, data.month, 1) + .add(1, "month") + .day(); const weeks = weeksInMonth(data.year, data.month); return d3.svg.line()([ [0, firstDayOffset * cellSize], @@ -327,7 +369,7 @@ document.addEventListener('DOMContentLoaded', () => { } function update() { - $('#loading').remove(); + $("#loading").remove(); draw(); } diff --git a/airflow/www/static/js/callModal.js b/airflow/www/static/js/callModal.js index d537c6256bbe8..a2cac9f26b422 100644 --- a/airflow/www/static/js/callModal.js +++ b/airflow/www/static/js/callModal.js @@ -19,12 +19,12 @@ /* global document, window, $ */ -import { getMetaValue } from './utils'; -import { formatDateTime } from './datetime_utils'; +import { getMetaValue } from "./utils"; +import { formatDateTime } from "./datetime_utils"; function updateQueryStringParameter(uri, key, value) { - const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i'); - const separator = uri.indexOf('?') !== -1 ? '&' : '?'; + const re = new RegExp(`([?&])${key}=.*?(&|$)`, "i"); + const separator = uri.indexOf("?") !== -1 ? "&" : "?"; if (uri.match(re)) { return uri.replace(re, `$1${key}=${value}$2`); } @@ -33,19 +33,30 @@ function updateQueryStringParameter(uri, key, value) { } function updateUriToFilterTasks(uri, taskId, filterUpstream, filterDownstream) { - const uriWithRoot = updateQueryStringParameter(uri, 'root', taskId); - const uriWithFilterUpstreamQuery = updateQueryStringParameter(uriWithRoot, 'filter_upstream', filterUpstream); - return updateQueryStringParameter(uriWithFilterUpstreamQuery, 'filter_downstream', filterDownstream); + const uriWithRoot = updateQueryStringParameter(uri, "root", taskId); + const uriWithFilterUpstreamQuery = updateQueryStringParameter( + uriWithRoot, + "filter_upstream", + filterUpstream + ); + return updateQueryStringParameter( + uriWithFilterUpstreamQuery, + "filter_downstream", + filterDownstream + ); } -const dagId = getMetaValue('dag_id'); -const logsWithMetadataUrl = getMetaValue('logs_with_metadata_url'); -const externalLogUrl = getMetaValue('external_log_url'); -const extraLinksUrl = getMetaValue('extra_links_url'); -const showExternalLogRedirect = getMetaValue('show_external_log_redirect') === 'True'; - -const buttons = Array.from(document.querySelectorAll('a[id^="btn_"][data-base-url]')).reduce((obj, elm) => { - obj[elm.id.replace('btn_', '')] = elm; +const dagId = getMetaValue("dag_id"); +const logsWithMetadataUrl = getMetaValue("logs_with_metadata_url"); +const externalLogUrl = getMetaValue("external_log_url"); +const extraLinksUrl = getMetaValue("extra_links_url"); +const showExternalLogRedirect = + getMetaValue("show_external_log_redirect") === "True"; + +const buttons = Array.from( + document.querySelectorAll('a[id^="btn_"][data-base-url]') +).reduce((obj, elm) => { + obj[elm.id.replace("btn_", "")] = elm; return obj; }, {}); @@ -55,10 +66,13 @@ function updateButtonUrl(elm, params) { url = url.replace(dagId, params.dag_id); delete params.dag_id; } - if (Object.prototype.hasOwnProperty.call(params, 'map_index') && params.map_index === undefined) { + if ( + Object.prototype.hasOwnProperty.call(params, "map_index") && + params.map_index === undefined + ) { delete params.map_index; } - elm.setAttribute('href', `${url}?${$.param(params)}`); + elm.setAttribute("href", `${url}?${$.param(params)}`); } function updateModalUrls({ @@ -91,7 +105,7 @@ function updateModalUrls({ _flt_3_dag_id: dagId, _flt_3_task_id: taskId, _flt_3_run_id: dagRunId, - _oc_TaskInstanceModelView: 'map_index', + _oc_TaskInstanceModelView: "map_index", }); if (buttons.rendered_k8s) { @@ -106,7 +120,7 @@ function updateModalUrls({ const tiButtonParams = { _flt_3_dag_id: dagId, _flt_3_task_id: taskId, - _oc_TaskInstanceModelView: 'dag_run.execution_date', + _oc_TaskInstanceModelView: "dag_run.execution_date", }; // eslint-disable-next-line no-underscore-dangle if (mapIndex >= 0) tiButtonParams._flt_0_map_index = mapIndex; @@ -139,92 +153,95 @@ function callModal({ mappedStates = [], }) { // Turn off previous event listeners - $('.map_index_item').off('click'); - $('form[data-action]').off('submit'); + $(".map_index_item").off("click"); + $("form[data-action]").off("submit"); const location = String(window.location); - $('#btn_filter_upstream').on('click', () => { - window.location = updateUriToFilterTasks(location, taskId, 'true', 'false'); + $("#btn_filter_upstream").on("click", () => { + window.location = updateUriToFilterTasks(location, taskId, "true", "false"); }); - $('#btn_filter_downstream').on('click', () => { - window.location = updateUriToFilterTasks(location, taskId, 'false', 'true'); + $("#btn_filter_downstream").on("click", () => { + window.location = updateUriToFilterTasks(location, taskId, "false", "true"); }); - $('#btn_filter_upstream_downstream').on('click', () => { - window.location = updateUriToFilterTasks(location, taskId, 'true', 'true'); + $("#btn_filter_upstream_downstream").on("click", () => { + window.location = updateUriToFilterTasks(location, taskId, "true", "true"); }); - $('#dag_run_id').text(dagRunId); - $('#task_id').text(taskId); - $('#execution_date').text(formatDateTime(executionDate)); - $('#taskInstanceModal').modal({}); - $('#taskInstanceModal').css('margin-top', '0'); - $('#extra_links').prev('hr').hide(); - $('#extra_links').empty().hide(); + $("#dag_run_id").text(dagRunId); + $("#task_id").text(taskId); + $("#execution_date").text(formatDateTime(executionDate)); + $("#taskInstanceModal").modal({}); + $("#taskInstanceModal").css("margin-top", "0"); + $("#extra_links").prev("hr").hide(); + $("#extra_links").empty().hide(); if (mapIndex >= 0) { - $('#modal_map_index').show(); - $('#modal_map_index .value').text(mapIndex); + $("#modal_map_index").show(); + $("#modal_map_index .value").text(mapIndex); } else { - $('#modal_map_index').hide(); - $('#modal_map_index .value').text(''); + $("#modal_map_index").hide(); + $("#modal_map_index .value").text(""); } let subDagId; if (isSubDag) { - $('#div_btn_subdag').show(); + $("#div_btn_subdag").show(); subDagId = `${dagId}.${taskId}`; } else { - $('#div_btn_subdag').hide(); + $("#div_btn_subdag").hide(); } // Show a span or dropdown for mapIndex if (mapIndex >= 0 && !mappedStates.length) { - $('#modal_map_index').show(); - $('#modal_map_index .value').text(mapIndex); - $('#mapped_dropdown').hide(); + $("#modal_map_index").show(); + $("#modal_map_index .value").text(mapIndex); + $("#mapped_dropdown").hide(); } else if (mapIndex >= 0 || isMapped) { - $('#modal_map_index').show(); - $('#modal_map_index .value').text(''); - $('#mapped_dropdown').show(); - - const dropdownText = mapIndex > -1 - ? mapIndex - : `All ${mappedStates.length} Mapped Instances`; - $('#mapped_dropdown #dropdown-label').text(dropdownText); - $('#mapped_dropdown .dropdown-menu').empty(); - $('#mapped_dropdown .dropdown-menu') - .append(`
  • All ${mappedStates.length} Mapped Instances
  • `); + $("#modal_map_index").show(); + $("#modal_map_index .value").text(""); + $("#mapped_dropdown").show(); + + const dropdownText = + mapIndex > -1 ? mapIndex : `All ${mappedStates.length} Mapped Instances`; + $("#mapped_dropdown #dropdown-label").text(dropdownText); + $("#mapped_dropdown .dropdown-menu").empty(); + $("#mapped_dropdown .dropdown-menu").append( + `
  • All ${mappedStates.length} Mapped Instances
  • ` + ); mappedStates.forEach((state, i) => { - $('#mapped_dropdown .dropdown-menu') - .append(`
  • ${i} - ${state}
  • `); + $("#mapped_dropdown .dropdown-menu").append( + `
  • ${i} - ${state}
  • ` + ); }); } else { - $('#modal_map_index').hide(); - $('#modal_map_index .value').text(''); - $('#mapped_dropdown').hide(); + $("#modal_map_index").hide(); + $("#modal_map_index .value").text(""); + $("#mapped_dropdown").hide(); } if (isMapped) { - $('#task_actions').text(`Task Actions for all ${mappedStates.length} instances`); - $('#btn_mapped').show(); - $('#mapped_dropdown').css('display', 'inline-block'); - $('#btn_rendered').hide(); - $('#btn_xcom').hide(); - $('#btn_log').hide(); - $('#btn_task').hide(); + $("#task_actions").text( + `Task Actions for all ${mappedStates.length} instances` + ); + $("#btn_mapped").show(); + $("#mapped_dropdown").css("display", "inline-block"); + $("#btn_rendered").hide(); + $("#btn_xcom").hide(); + $("#btn_log").hide(); + $("#btn_task").hide(); } else { - $('#task_actions').text('Task Actions'); - $('#btn_rendered').show(); - $('#btn_xcom').show(); - $('#btn_log').show(); - $('#btn_mapped').hide(); - $('#btn_task').show(); + $("#task_actions").text("Task Actions"); + $("#btn_rendered").show(); + $("#btn_xcom").show(); + $("#btn_log").show(); + $("#btn_mapped").hide(); + $("#btn_task").show(); } - $('#dag_dl_logs').hide(); - $('#dag_redir_logs').hide(); + $("#dag_dl_logs").hide(); + $("#dag_redir_logs").hide(); if (tryNumber > 0 && !isMapped) { - $('#dag_dl_logs').show(); + $("#dag_dl_logs").show(); if (showExternalLogRedirect) { - $('#dag_redir_logs').show(); + $("#dag_redir_logs").show(); } } @@ -236,83 +253,89 @@ function callModal({ dagRunId, }); - $('#try_index > li').remove(); - $('#redir_log_try_index > li').remove(); - const startIndex = (tryNumber > 2 ? 0 : 1); + $("#try_index > li").remove(); + $("#redir_log_try_index > li").remove(); + const startIndex = tryNumber > 2 ? 0 : 1; const query = new URLSearchParams({ dag_id: dagId, task_id: taskId, execution_date: executionDate, - metadata: 'null', + metadata: "null", }); if (mapIndex !== undefined) { - query.set('map_index', mapIndex); + query.set("map_index", mapIndex); } for (let index = startIndex; index < tryNumber; index += 1) { let showLabel = index; if (index !== 0) { - query.set('try_number', index); + query.set("try_number", index); } else { - showLabel = 'All'; + showLabel = "All"; } - $('#try_index').append(`
  • + $("#try_index").append(`
  • ${showLabel}
  • `); if (index !== 0 || showExternalLogRedirect) { - $('#redir_log_try_index').append(`
  • + $("#redir_log_try_index") + .append(`
  • ${showLabel}
  • `); } } - query.delete('try_number'); + query.delete("try_number"); if (!isMapped && extraLinks && extraLinks.length > 0) { const markupArr = []; extraLinks.sort(); $.each(extraLinks, (i, link) => { - query.set('link_name', link); - const externalLink = $(''); - const linkTooltip = $(''); + query.set("link_name", link); + const externalLink = $( + '' + ); + const linkTooltip = $( + '' + ); linkTooltip.append(externalLink); externalLink.text(link); - $.ajax( - { - url: `${extraLinksUrl}?${query}`, - cache: false, - success(data) { - externalLink.attr('href', data.url); - // open absolute (external) links in a new tab/window and relative (local) links - // directly - if (/^(?:[a-z]+:)?\/\//.test(data.url)) { - externalLink.attr('target', '_blank'); - } - externalLink.removeClass('disabled'); - linkTooltip.tooltip('disable'); - }, - error(data) { - linkTooltip.tooltip('hide').attr('title', data.responseJSON.error).tooltip('fixTitle'); - }, + $.ajax({ + url: `${extraLinksUrl}?${query}`, + cache: false, + success(data) { + externalLink.attr("href", data.url); + // open absolute (external) links in a new tab/window and relative (local) links + // directly + if (/^(?:[a-z]+:)?\/\//.test(data.url)) { + externalLink.attr("target", "_blank"); + } + externalLink.removeClass("disabled"); + linkTooltip.tooltip("disable"); }, - ); + error(data) { + linkTooltip + .tooltip("hide") + .attr("title", data.responseJSON.error) + .tooltip("fixTitle"); + }, + }); markupArr.push(linkTooltip); }); - const extraLinksSpan = $('#extra_links'); - extraLinksSpan.prev('hr').show(); + const extraLinksSpan = $("#extra_links"); + extraLinksSpan.prev("hr").show(); extraLinksSpan.append(markupArr).show(); extraLinksSpan.find('[data-toggle="tooltip"]').tooltip(); } // Switch the modal from a mapped task summary to a specific mapped task instance function switchMapItem() { - const mi = $(this).attr('data-mapIndex'); - if (mi === 'all') { + const mi = $(this).attr("data-mapIndex"); + if (mi === "all") { callModal({ taskId, executionDate, @@ -353,13 +376,13 @@ function callModal({ } else if (form.map_index) { form.map_index.remove(); } - form.action = $(this).data('action'); + form.action = $(this).data("action"); form.submit(); } } - $('form[data-action]').on('submit', submit); - $('.map_index_item').on('click', switchMapItem); + $("form[data-action]").on("submit", submit); + $(".map_index_item").on("click", switchMapItem); } export default callModal; diff --git a/airflow/www/static/js/components/AutoRefresh.tsx b/airflow/www/static/js/components/AutoRefresh.tsx index 7eb59bca04153..9e1e9644c62a6 100644 --- a/airflow/www/static/js/components/AutoRefresh.tsx +++ b/airflow/www/static/js/components/AutoRefresh.tsx @@ -17,22 +17,22 @@ * under the License. */ -import React from 'react'; -import { - Switch, - FormControl, - FormLabel, - Spinner, -} from '@chakra-ui/react'; +import React from "react"; +import { Switch, FormControl, FormLabel, Spinner } from "@chakra-ui/react"; -import { useAutoRefresh } from 'src/context/autorefresh'; +import { useAutoRefresh } from "src/context/autorefresh"; const AutoRefresh = () => { const { isRefreshOn, toggleRefresh, isPaused } = useAutoRefresh(); return ( - + { isDisabled={isPaused} isChecked={isRefreshOn} size="lg" - title={isPaused ? 'Autorefresh is disabled while the DAG is paused' : ''} + title={ + isPaused ? "Autorefresh is disabled while the DAG is paused" : "" + } /> ); diff --git a/airflow/www/static/js/components/Clipboard.test.tsx b/airflow/www/static/js/components/Clipboard.test.tsx index a27cdf16ceaaa..1d7b39bdb46e3 100644 --- a/airflow/www/static/js/components/Clipboard.test.tsx +++ b/airflow/www/static/js/components/Clipboard.test.tsx @@ -19,21 +19,24 @@ /* global describe, test, expect, jest, window */ -import React from 'react'; -import '@testing-library/jest-dom'; -import { render, fireEvent } from '@testing-library/react'; +import React from "react"; +import "@testing-library/jest-dom"; +import { render, fireEvent } from "@testing-library/react"; -import { ClipboardButton } from './Clipboard'; +import { ClipboardButton } from "./Clipboard"; -describe('ClipboardButton', () => { - test('Loads button', async () => { +describe("ClipboardButton", () => { + test("Loads button", async () => { const windowPrompt = window.prompt; window.prompt = jest.fn(); const { getByText } = render(); const button = getByText(/copy/i); fireEvent.click(button); - expect(window.prompt).toHaveBeenCalledWith('Copy to clipboard: Ctrl+C, Enter', 'lorem ipsum'); + expect(window.prompt).toHaveBeenCalledWith( + "Copy to clipboard: Ctrl+C, Enter", + "lorem ipsum" + ); window.prompt = windowPrompt; }); }); diff --git a/airflow/www/static/js/components/Clipboard.tsx b/airflow/www/static/js/components/Clipboard.tsx index eca0e94dbf027..0e0a5d451b8ef 100644 --- a/airflow/www/static/js/components/Clipboard.tsx +++ b/airflow/www/static/js/components/Clipboard.tsx @@ -17,31 +17,31 @@ * under the License. */ -import React from 'react'; +import React from "react"; import { Button, IconButton, Tooltip, useClipboard, forwardRef, -} from '@chakra-ui/react'; -import { FiCopy } from 'react-icons/fi'; +} from "@chakra-ui/react"; +import { FiCopy } from "react-icons/fi"; -import { useContainerRef } from 'src/context/containerRef'; +import { useContainerRef } from "src/context/containerRef"; export const ClipboardButton = forwardRef( ( { value, - variant = 'outline', + variant = "outline", iconOnly = false, - label = 'copy', - title = 'Copy', - colorScheme = 'blue', - 'aria-label': ariaLabel = 'Copy', + label = "copy", + title = "Copy", + colorScheme = "blue", + "aria-label": ariaLabel = "Copy", ...rest }, - ref, + ref ) => { const { hasCopied, onCopy } = useClipboard(value); const containerRef = useContainerRef(); @@ -64,7 +64,11 @@ export const ClipboardButton = forwardRef( portalProps={{ containerRef }} > {iconOnly ? ( - } aria-label={ariaLabel} {...commonProps} /> + } + aria-label={ariaLabel} + {...commonProps} + /> ) : ( - + diff --git a/airflow/www/static/js/components/InfoTooltip.tsx b/airflow/www/static/js/components/InfoTooltip.tsx index 0cf593d466a3b..b0c7263593470 100644 --- a/airflow/www/static/js/components/InfoTooltip.tsx +++ b/airflow/www/static/js/components/InfoTooltip.tsx @@ -17,13 +17,11 @@ * under the License. */ -import React, { ReactNode } from 'react'; -import { - Box, Tooltip, -} from '@chakra-ui/react'; -import { MdInfo } from 'react-icons/md'; -import { useContainerRef } from 'src/context/containerRef'; -import type { IconBaseProps } from 'react-icons'; +import React, { ReactNode } from "react"; +import { Box, Tooltip } from "@chakra-ui/react"; +import { MdInfo } from "react-icons/md"; +import { useContainerRef } from "src/context/containerRef"; +import type { IconBaseProps } from "react-icons"; interface InfoTooltipProps extends IconBaseProps { label: ReactNode; diff --git a/airflow/www/static/js/components/LinkButton.test.tsx b/airflow/www/static/js/components/LinkButton.test.tsx index 0fc9181a58097..fe11d8e8bf25e 100644 --- a/airflow/www/static/js/components/LinkButton.test.tsx +++ b/airflow/www/static/js/components/LinkButton.test.tsx @@ -19,20 +19,20 @@ /* global describe, test, expect */ -import React from 'react'; -import { render } from '@testing-library/react'; +import React from "react"; +import { render } from "@testing-library/react"; -import LinkButton from './LinkButton'; +import LinkButton from "./LinkButton"; -describe('Test LinkButton Component.', () => { - test('LinkButton should be rendered as a link.', () => { +describe("Test LinkButton Component.", () => { + test("LinkButton should be rendered as a link.", () => { const { getByText, container } = render(
    The link
    -
    , + ); - expect(getByText('The link')).toBeDefined(); - expect(container.querySelector('a')).not.toBeNull(); + expect(getByText("The link")).toBeDefined(); + expect(container.querySelector("a")).not.toBeNull(); }); }); diff --git a/airflow/www/static/js/components/LinkButton.tsx b/airflow/www/static/js/components/LinkButton.tsx index 787157c694f26..5bd665a2d5bbd 100644 --- a/airflow/www/static/js/components/LinkButton.tsx +++ b/airflow/www/static/js/components/LinkButton.tsx @@ -17,18 +17,18 @@ * under the License. */ -import React from 'react'; -import { - Button, - ButtonProps, - Link, -} from '@chakra-ui/react'; +import React from "react"; +import { Button, ButtonProps, Link } from "@chakra-ui/react"; interface Props extends ButtonProps { href?: string; target?: string; } -const LinkButton = ({ children, ...rest }: Props) => (); +const LinkButton = ({ children, ...rest }: Props) => ( + +); export default LinkButton; diff --git a/airflow/www/static/js/components/MultiSelect.tsx b/airflow/www/static/js/components/MultiSelect.tsx index f326c78e5d7dd..7c5899bf3266e 100644 --- a/airflow/www/static/js/components/MultiSelect.tsx +++ b/airflow/www/static/js/components/MultiSelect.tsx @@ -17,9 +17,9 @@ * under the License. */ -import React from 'react'; -import { Select } from 'chakra-react-select'; -import type { SelectComponent } from 'chakra-react-select'; +import React from "react"; +import { Select } from "chakra-react-select"; +import type { SelectComponent } from "chakra-react-select"; const MultiSelect: SelectComponent = ({ chakraStyles, ...props }) => (