From ec4bf7dc88bda6642ef146fc7026d50ed2afde6c Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Fri, 21 Aug 2020 14:03:49 -0700 Subject: [PATCH 001/194] Adding the keycloak local user postman to the initial database seed, so that we can run postman against the API --- .../sources/database/initial-data/InitialAdmins.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/api/api_sources/sources/database/initial-data/InitialAdmins.ts b/api/api_sources/sources/database/initial-data/InitialAdmins.ts index 0da5290f8..dc5f35652 100644 --- a/api/api_sources/sources/database/initial-data/InitialAdmins.ts +++ b/api/api_sources/sources/database/initial-data/InitialAdmins.ts @@ -73,7 +73,16 @@ export const InitialUsers = [ additionalInitDataInfo: { roles: [1] } - } + }, + { + email: 'rstens@stens.ca', + preferred_username: 'postman', + first_name: 'Postman', + last_name: 'Test', + additionalInitDataInfo: { + roles: [1] + } + } ]; // ------------------------------------------------------------- From 77eb173748aef97e85392aa23273e79ddde63d50 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Fri, 21 Aug 2020 14:13:18 -0700 Subject: [PATCH 002/194] Removing trailing whitespace --- api/api_sources/sources/database/initial-data/InitialAdmins.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/api_sources/sources/database/initial-data/InitialAdmins.ts b/api/api_sources/sources/database/initial-data/InitialAdmins.ts index dc5f35652..2b1c5d403 100644 --- a/api/api_sources/sources/database/initial-data/InitialAdmins.ts +++ b/api/api_sources/sources/database/initial-data/InitialAdmins.ts @@ -82,7 +82,7 @@ export const InitialUsers = [ additionalInitDataInfo: { roles: [1] } - } + } ]; // ------------------------------------------------------------- From 15995fa99f92b4b0bf55330a03a03f8f0a70541f Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Wed, 29 Jul 2020 16:06:21 -0700 Subject: [PATCH 003/194] 628: api-mobile setup - Swagger spec + routes - Route controllers - User authentication + route authorization - Database connection --- api-mobile/.editorconfig | 23 + api-mobile/.eslintignore | 13 + api-mobile/.eslintrc | 35 + api-mobile/.gitignore | 1 + api-mobile/.prettierignore | 13 + api-mobile/.prettierrc | 15 + api-mobile/.vscode/launch.json | 14 + api-mobile/.vscode/settings.json | 6 + api-mobile/LICENSE | 201 + api-mobile/README.md | 144 + api-mobile/app.ts | 76 + api-mobile/package-lock.json | 4803 +++++++++++++++++ api-mobile/package.json | 66 + api-mobile/src/constants/misc.ts | 31 + .../src/controllers/activity-controller.ts | 57 + api-mobile/src/controllers/code-controller.ts | 138 + .../observation-plant-controller.ts | 80 + api-mobile/src/controllers/user-controller.ts | 42 + api-mobile/src/database/db.ts | 59 + api-mobile/src/models/activity.ts | 21 + api-mobile/src/models/observation-plant.ts | 127 + api-mobile/src/queries/activity-queries.ts | 30 + api-mobile/src/queries/code-queries.ts | 83 + api-mobile/src/queries/observation-queries.ts | 26 + api-mobile/src/queries/query-types.ts | 10 + api-mobile/src/queries/user-queries.ts | 23 + api-mobile/src/swagger/swagger.yaml | 845 +++ api-mobile/src/utils/auth-utils.ts | 227 + api-mobile/src/utils/logger.ts | 82 + api-mobile/src/utils/query-actions.ts | 19 + api-mobile/src/utils/utils.ts | 79 + api-mobile/tsconfig.json | 27 + api/.vscode/settings.json | 0 33 files changed, 7416 insertions(+) create mode 100644 api-mobile/.editorconfig create mode 100644 api-mobile/.eslintignore create mode 100644 api-mobile/.eslintrc create mode 100644 api-mobile/.gitignore create mode 100644 api-mobile/.prettierignore create mode 100644 api-mobile/.prettierrc create mode 100644 api-mobile/.vscode/launch.json create mode 100644 api-mobile/.vscode/settings.json create mode 100644 api-mobile/LICENSE create mode 100644 api-mobile/README.md create mode 100644 api-mobile/app.ts create mode 100644 api-mobile/package-lock.json create mode 100644 api-mobile/package.json create mode 100644 api-mobile/src/constants/misc.ts create mode 100644 api-mobile/src/controllers/activity-controller.ts create mode 100644 api-mobile/src/controllers/code-controller.ts create mode 100644 api-mobile/src/controllers/observation-plant-controller.ts create mode 100644 api-mobile/src/controllers/user-controller.ts create mode 100644 api-mobile/src/database/db.ts create mode 100644 api-mobile/src/models/activity.ts create mode 100644 api-mobile/src/models/observation-plant.ts create mode 100644 api-mobile/src/queries/activity-queries.ts create mode 100644 api-mobile/src/queries/code-queries.ts create mode 100644 api-mobile/src/queries/observation-queries.ts create mode 100644 api-mobile/src/queries/query-types.ts create mode 100644 api-mobile/src/queries/user-queries.ts create mode 100644 api-mobile/src/swagger/swagger.yaml create mode 100644 api-mobile/src/utils/auth-utils.ts create mode 100644 api-mobile/src/utils/logger.ts create mode 100644 api-mobile/src/utils/query-actions.ts create mode 100644 api-mobile/src/utils/utils.ts create mode 100644 api-mobile/tsconfig.json create mode 100644 api/.vscode/settings.json diff --git a/api-mobile/.editorconfig b/api-mobile/.editorconfig new file mode 100644 index 000000000..a3710eddb --- /dev/null +++ b/api-mobile/.editorconfig @@ -0,0 +1,23 @@ +# prettier vscode extension + .prettierrc config takes presedence over .editorconfig config + +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false + +[*.html] +indent_style = space +indent_size = 2 + +[*.scss] +indent_style = space +indent_size = 2 diff --git a/api-mobile/.eslintignore b/api-mobile/.eslintignore new file mode 100644 index 000000000..bcf1e4522 --- /dev/null +++ b/api-mobile/.eslintignore @@ -0,0 +1,13 @@ +node_modules + +dist +coverage + +migrations +migrations_data + +openshift +sonar-runner +uploads + +.vscode diff --git a/api-mobile/.eslintrc b/api-mobile/.eslintrc new file mode 100644 index 000000000..6c32e038b --- /dev/null +++ b/api-mobile/.eslintrc @@ -0,0 +1,35 @@ +{ + "extends": [ + "eslint:recommended", + "prettier/@typescript-eslint", + "plugin:prettier/recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "plugins": ["prettier", "@typescript-eslint"], + "env": { + "es6": true, + "node": true, + "mongo": true, + "mocha": true, + "jest": true, + "jasmine": true + }, + "rules": { + "prettier/prettier": [ + "error", + { + "endOfLine": "auto" + } + ], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/ban-types": ["error", { "types": { "object": false, "extendDefaults": true } }], + "no-var": "error" + } +} diff --git a/api-mobile/.gitignore b/api-mobile/.gitignore new file mode 100644 index 000000000..1521c8b76 --- /dev/null +++ b/api-mobile/.gitignore @@ -0,0 +1 @@ +dist diff --git a/api-mobile/.prettierignore b/api-mobile/.prettierignore new file mode 100644 index 000000000..bcf1e4522 --- /dev/null +++ b/api-mobile/.prettierignore @@ -0,0 +1,13 @@ +node_modules + +dist +coverage + +migrations +migrations_data + +openshift +sonar-runner +uploads + +.vscode diff --git a/api-mobile/.prettierrc b/api-mobile/.prettierrc new file mode 100644 index 000000000..ecaf4d232 --- /dev/null +++ b/api-mobile/.prettierrc @@ -0,0 +1,15 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "none", + "bracketSpacing": true, + "jsxBracketSameLine": true, + "arrowParens": "avoid", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "never", + "htmlWhitespaceSensitivity": "ignore" +} diff --git a/api-mobile/.vscode/launch.json b/api-mobile/.vscode/launch.json new file mode 100644 index 000000000..354182c71 --- /dev/null +++ b/api-mobile/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch API using Node", + "program": "${workspaceFolder}/app.ts" + } + ] +} diff --git a/api-mobile/.vscode/settings.json b/api-mobile/.vscode/settings.json new file mode 100644 index 000000000..b55450f6d --- /dev/null +++ b/api-mobile/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } +} diff --git a/api-mobile/LICENSE b/api-mobile/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/api-mobile/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/api-mobile/README.md b/api-mobile/README.md new file mode 100644 index 000000000..b9991f051 --- /dev/null +++ b/api-mobile/README.md @@ -0,0 +1,144 @@ +# bcgov/lucy-web/api-mobile + +# Technologies Used + +| Technology | Version | Website | Description | +| ---------- | ------- | ------------------------------------ | -------------------- | +| node | 10.x.x | https://nodejs.org/en/ | JavaScript Runtime | +| npm | 6.x.x | https://www.npmjs.com/ | Node Package Manager | +| PostgreSQL | 10.x | https://www.postgresql.org/download/ | PSQL database | + +# Build and Run + +1. Download dependencies + +``` +npm install +``` + +2. Run the app + +``` +npm start +``` + +3. Go to http://localhost:3002/api/docs/ to verify that the application is running. + +# Linting and Formatting + +## Info + +Linting and formatting is handled by a combiation of `ESlint` and `Prettier`. The reason for this, is that you get the best of both worlds: ESlint's larger selection of linting rules with Prettier's robust formatting rules. EditorConfig is additionally used to add enforce some basic IDE formatting rules. + +### Technolgies used + +[ESlint](https://eslint.org/), [Prettier](https://prettier.io/), [EditorConfig](http://editorconfig.org) + +### Configuration files + +- ESlint + - .eslintrc + - .eslintignore +- Prettier + - .prettierrc + - .prettierignore +- EditorConfig + - .editorconfig + +## Run Linters + +- Lint the `*.ts` files using `ESLint`. + +``` +npm run lint +``` + +## Run Linters + Formatters + +_Note: In the worst case scenario, where linting/formatting has been neglected, then these `lint-fix` commands have the potential to create 100's of file changes. In this case, it is recommended to only run these commands as part of a separate commit._ + +_Note: Not all linting/formatting errors can be automatically fixed, and will require human intervention._ + +- Lint and fix the `*.ts` files using `ESLint` + `Prettier`. + +``` +npm run lint-fix +``` + +# API Specification + +The API is defined in `swagger.yaml`. + +If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` + +This project uses npm package `swagger-tools` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `swagger.yaml`. + +- The controller file is specified by the `x-swagger-router-controller` field. +- The controller function, within the controller file, is specified by the `operationId` field. + +Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `swagger.yaml` file. + +_Note: This API currently uses OpenAPI 2.0, as 3.0 is not yet fully supported by many of the swagger libraries/tools used._ + +# Logging + +A centralized logger has been created (see `api/utils/logger.ts`). + +## Logger configuration + +The loggers log level can be configured via an environment variable: `LOG_LEVEL` + +Set this variable to one of: `error`, `warn`, `info`, `debug` + +Default value: `info` + +## Instantiating the logger in your class/file + +``` +const log = require('./logger)('a meaningful label, typically the class name`) +``` + +## Using the logger + +``` +log.error({ label: 'functionName', message: 'Used when logging unexpected errors. Generally these will only exist in catch() blocks', error }) + +log.warn({ label: 'functionName', message: 'Used when logging soft errors. For example, if your request finished but returned a 404 not found' }); + +log.info({ label: 'functionName', message: 'General log messages about the state of the application' }); + +log.debug({ label: 'functionName', message: 'Useful for logging objects and other developer data', aJSONObjectToPrint, anotherObject); +or +log.debug({ label: 'functionName', message: 'Useful for logging objects and other developer data', someLabel: aJSONObjectToPrint, anotherObject }); +``` + +Supported log properties: + +``` +- timestamp: overwrite the default time of `now` with your own timestamp. +- level: overwrite the default level (via log.()) with your own level string. +- label: adds an additional label to the log message. +- message: a log message. +- error: an Error object. +- : any additional object properties will be JSON.stringify'd and appended to the log message. +``` + +# Testing + +## Info + +### Technolgies used + +[Mocha](https://www.npmjs.com/package/mocha), [Chai](https://www.npmjs.com/package/chai), [SuperTest](https://www.npmjs.com/package/supertest), [Nock](https://www.npmjs.com/package/nock) + +## Run Tests + +- Run the unit tests + +``` +npm run test +``` + +# Keycloak + +This project uses [Keycloak](https://www.keycloak.org/) to handle authentication. diff --git a/api-mobile/app.ts b/api-mobile/app.ts new file mode 100644 index 000000000..d32393785 --- /dev/null +++ b/api-mobile/app.ts @@ -0,0 +1,76 @@ +'use strict'; + +import express from 'express'; +import * as swaggerTools from 'swagger-tools'; +import * as YAML from 'yamljs'; +import * as bodyParser from 'body-parser'; +const swaggerConfig = YAML.load('./src/swagger/swagger.yaml'); + +import { getLogger } from './src/utils/logger'; +const defaultLog = getLogger('app'); + +import { authenticate } from './src/utils/auth-utils'; + +const API_HOSTNAME = process.env.API_HOSTNAME || 'localhost:3002'; + +// Get initial express app +const app: express.Express = express(); + +// Increase post body sizing +app.use(bodyParser.json({ limit: '10mb' })); +app.use(bodyParser.urlencoded({ limit: '10mb', extended: true })); + +// Enable CORS +app.use(function (req: any, res: any, next: any) { + defaultLog.info(`${req.method} ${req.url}`); + + res.setHeader('Access-Control-Allow-Credentials', true); + res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Authorization,responseType'); + res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE, HEAD'); + res.setHeader('Access-Control-Allow-Origin', '*'); + res.setHeader('Cache-Control', 'max-age=4'); + next(); +}); + +// Overwrite swagger to set the hostname based on current environment +swaggerConfig.host = API_HOSTNAME; + +// Overwrite swagger to only allow 'https' when not running locally +if (API_HOSTNAME !== 'localhost:3002') { + swaggerConfig.schemes = ['https']; +} + +swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { + // add base swagger route handling middleware + app.use(middleware.swaggerMetadata()); + + app.use(middleware.swaggerValidator({ validateResponse: false })); + + // add swagger security for authenticated routes + app.use( + middleware.swaggerSecurity({ + Bearer: authenticate + }) + ); + + // add swagger route controllers + app.use( + middleware.swaggerRouter({ + controllers: ['./src/controllers'], + useStubs: false + }) + ); + + // add swagger documentation route + app.use(middleware.swaggerUi({ apiDocs: '/api/docs', swaggerUi: '/api/docs' })); + + // start api + try { + app.listen(3002, '0.0.0.0', function () { + defaultLog.info({ label: 'start api', message: 'started api-mobile on port 3002' }); + }); + } catch (error) { + defaultLog.error({ label: 'start api', message: 'error', error }); + process.exit(1); + } +}); diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json new file mode 100644 index 000000000..7fbd0cf73 --- /dev/null +++ b/api-mobile/package-lock.json @@ -0,0 +1,4803 @@ +{ + "name": "lucy-api-mobile", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/chai": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", + "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", + "dev": true + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "@types/connect": { + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "requires": { + "@types/node": "*" + } + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/express": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", + "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-jwt": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", + "requires": { + "@types/express": "*", + "@types/express-unless": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", + "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/express-unless": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", + "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", + "requires": { + "@types/express": "*" + } + }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "optional": true + }, + "@types/jsonwebtoken": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", + "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/memory-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", + "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", + "dev": true + }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + }, + "@types/mocha": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", + "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", + "dev": true + }, + "@types/node": { + "version": "14.0.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.26.tgz", + "integrity": "sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA==" + }, + "@types/pg": { + "version": "7.14.4", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", + "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/pg-types": "*" + } + }, + "@types/pg-types": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", + "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", + "dev": true + }, + "@types/qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", + "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/swagger-tools": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@types/swagger-tools/-/swagger-tools-0.10.6.tgz", + "integrity": "sha512-6d44Amrtm0vOgv6OtGCN6U4gRxJ9WRvwP1yMADUh8q6Cess3fyONaA2nh86i+ojAQvq5Ht8OYdN+AeXDhu3qIw==", + "dev": true, + "requires": { + "@types/connect": "*" + } + }, + "@types/yamljs": { + "version": "0.2.31", + "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", + "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", + "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "3.7.1", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", + "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.7.1", + "@typescript-eslint/typescript-estree": "3.7.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", + "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "3.7.1", + "@typescript-eslint/types": "3.7.1", + "@typescript-eslint/typescript-estree": "3.7.1", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/types": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", + "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", + "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "3.7.1", + "@typescript-eslint/visitor-keys": "3.7.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", + "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + }, + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chance": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", + "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" + }, + "database-cleaner": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", + "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", + "dev": true + }, + "db-migrate": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", + "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", + "requires": { + "balanced-match": "^1.0.0", + "bluebird": "^3.1.1", + "db-migrate-shared": "^1.2.0", + "deep-extend": "^0.6.0", + "dotenv": "^5.0.1", + "final-fs": "^1.6.0", + "inflection": "^1.10.0", + "mkdirp": "~0.5.0", + "parse-database-url": "~0.3.0", + "prompt": "^1.0.0", + "rc": "^1.2.8", + "resolve": "^1.1.6", + "semver": "^5.3.0", + "tunnel-ssh": "^4.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "db-migrate-pg": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", + "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", + "requires": { + "bluebird": "^3.1.1", + "db-migrate-base": "^2.3.0", + "pg": "^8.0.3", + "semver": "^5.0.3" + }, + "dependencies": { + "db-migrate-base": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/db-migrate-base/-/db-migrate-base-2.3.0.tgz", + "integrity": "sha512-mxaCkSe7JC2uksvI/rKs+wOQGBSZ6B87xa4b3i+QhB+XRBpGdpMzldKE6INf+EnM6kwhbIPKjyJZgyxui9xBfQ==", + "requires": { + "bluebird": "^3.1.1" + } + } + } + }, + "db-migrate-shared": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", + "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", + "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" + }, + "dottie": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", + "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.2.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-plugin-prettier": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", + "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", + "dev": true, + "requires": { + "acorn": "^7.3.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, + "factory-girl": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", + "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", + "dev": true, + "requires": { + "babel-runtime": "^6.11.6", + "chance": "^1.0.4" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, + "fecha": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", + "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "final-fs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/final-fs/-/final-fs-1.6.1.tgz", + "integrity": "sha1-1tzZLvb+T+jAer1WjHE1YQ7eMjY=", + "requires": { + "node-fs": "~0.1.5", + "when": "~2.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", + "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "requires": { + "lodash": "^4.17.15" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "i": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", + "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, + "requires": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-refs": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", + "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", + "requires": { + "commander": "~4.1.1", + "graphlib": "^2.1.8", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "native-promise-only": "^0.8.1", + "path-loader": "^1.0.10", + "slash": "^3.0.0", + "uri-js": "^4.2.2" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + } + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jwks-rsa": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.8.1.tgz", + "integrity": "sha512-CcE8ypsATHwGmzELwzeFjLzPBXTXTrMmDYbn92LTQwYsZdOedp+ZIuYTofUdrWreu8CKRuXmhk17+6/li2sR6g==", + "requires": { + "@types/express-jwt": "0.0.42", + "axios": "^0.19.2", + "debug": "^4.1.0", + "jsonwebtoken": "^8.5.1", + "limiter": "^1.1.5", + "lru-memoizer": "^2.1.2", + "ms": "^2.1.2" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, + "lodash._arraypool": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._arraypool/-/lodash._arraypool-2.4.1.tgz", + "integrity": "sha1-6I7suS4ruEyQZWEv2VigcZzUf5Q=" + }, + "lodash._basebind": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.4.1.tgz", + "integrity": "sha1-6UC5690nwyfgqNqxtVkWxTQelXU=", + "requires": { + "lodash._basecreate": "~2.4.1", + "lodash._setbinddata": "~2.4.1", + "lodash._slice": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash._baseclone": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-2.4.1.tgz", + "integrity": "sha1-MPgj5X4X43NdODvWK2Czh1Q7QYY=", + "requires": { + "lodash._getarray": "~2.4.1", + "lodash._releasearray": "~2.4.1", + "lodash._slice": "~2.4.1", + "lodash.assign": "~2.4.1", + "lodash.foreach": "~2.4.1", + "lodash.forown": "~2.4.1", + "lodash.isarray": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash._basecreate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.4.1.tgz", + "integrity": "sha1-+Ob1tXip405UEXm1a47uv0oofgg=", + "requires": { + "lodash._isnative": "~2.4.1", + "lodash.isobject": "~2.4.1", + "lodash.noop": "~2.4.1" + } + }, + "lodash._basecreatecallback": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.4.1.tgz", + "integrity": "sha1-fQsmdknLKeehOdAQO3wR+uhOSFE=", + "requires": { + "lodash._setbinddata": "~2.4.1", + "lodash.bind": "~2.4.1", + "lodash.identity": "~2.4.1", + "lodash.support": "~2.4.1" + } + }, + "lodash._basecreatewrapper": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.4.1.tgz", + "integrity": "sha1-TTHy595+E0+/KAN2K4FQsyUZZm8=", + "requires": { + "lodash._basecreate": "~2.4.1", + "lodash._setbinddata": "~2.4.1", + "lodash._slice": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash._createwrapper": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.4.1.tgz", + "integrity": "sha1-UdaVeXPaTtVW43KQ2MGhjFPeFgc=", + "requires": { + "lodash._basebind": "~2.4.1", + "lodash._basecreatewrapper": "~2.4.1", + "lodash._slice": "~2.4.1", + "lodash.isfunction": "~2.4.1" + } + }, + "lodash._getarray": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._getarray/-/lodash._getarray-2.4.1.tgz", + "integrity": "sha1-+vH3+BD6mFolHCGHQESBCUg55e4=", + "requires": { + "lodash._arraypool": "~2.4.1" + } + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=" + }, + "lodash._maxpoolsize": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._maxpoolsize/-/lodash._maxpoolsize-2.4.1.tgz", + "integrity": "sha1-nUgvRjuOZq++WcLBTtsRcGAXIzQ=" + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=" + }, + "lodash._releasearray": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._releasearray/-/lodash._releasearray-2.4.1.tgz", + "integrity": "sha1-phOWMNdtFTawfdyAliiJsIL2pkE=", + "requires": { + "lodash._arraypool": "~2.4.1", + "lodash._maxpoolsize": "~2.4.1" + } + }, + "lodash._setbinddata": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.4.1.tgz", + "integrity": "sha1-98IAzRuS7yNrOZ7s9zxkjReqlNI=", + "requires": { + "lodash._isnative": "~2.4.1", + "lodash.noop": "~2.4.1" + } + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash._slice": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.4.1.tgz", + "integrity": "sha1-dFz0GlNZexj2iImFREBe+isG2Q8=" + }, + "lodash.assign": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-2.4.1.tgz", + "integrity": "sha1-hMOVlt1xGBqXsGUpE6fJZ15Jsao=", + "requires": { + "lodash._basecreatecallback": "~2.4.1", + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.bind": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.4.1.tgz", + "integrity": "sha1-XRn6AFyMTSNvr0dCx7eh/Kvikmc=", + "requires": { + "lodash._createwrapper": "~2.4.1", + "lodash._slice": "~2.4.1" + } + }, + "lodash.clonedeep": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-2.4.1.tgz", + "integrity": "sha1-8pIDtAsS/uCkXTYxZIJZvrq8eGg=", + "requires": { + "lodash._baseclone": "~2.4.1", + "lodash._basecreatecallback": "~2.4.1" + } + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.foreach": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.4.1.tgz", + "integrity": "sha1-/j/Do0yGyUyrb5UiVgKCdB4BYwk=", + "requires": { + "lodash._basecreatecallback": "~2.4.1", + "lodash.forown": "~2.4.1" + } + }, + "lodash.forown": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-2.4.1.tgz", + "integrity": "sha1-eLQer+FAX6lmRZ6kGT/VAtCEUks=", + "requires": { + "lodash._basecreatecallback": "~2.4.1", + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.identity": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.4.1.tgz", + "integrity": "sha1-ZpTP+mX++TH3wxzobHRZfPVg9PE=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isarray": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-2.4.1.tgz", + "integrity": "sha1-tSoybB9i9tfac6MdVAHfbvRPD6E=", + "requires": { + "lodash._isnative": "~2.4.1" + } + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.isfunction": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz", + "integrity": "sha1-LP1XXHPkmKtX4xm3f6Aq3vE6lNE=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.noop": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.4.1.tgz", + "integrity": "sha1-T7VPgWZS5a4Q6PcvcXo4jHMmU4o=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.support": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.4.1.tgz", + "integrity": "sha1-Mg4LZwMWc8KNeiu12eAzGkUkBRU=", + "requires": { + "lodash._isnative": "~2.4.1" + } + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "logform": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "lru-memoizer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", + "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", + "requires": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + }, + "dependencies": { + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=" + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.1.tgz", + "integrity": "sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.3.1", + "debug": "3.2.6", + "diff": "4.0.2", + "escape-string-regexp": "1.0.5", + "find-up": "4.1.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "ms": "2.1.2", + "object.assign": "4.1.0", + "promise.allsettled": "1.0.2", + "serialize-javascript": "4.0.0", + "strip-json-comments": "3.0.1", + "supports-color": "7.1.0", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.0.0", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + }, + "moment-timezone": { + "version": "0.5.31", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", + "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "mongodb-uri": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/mongodb-uri/-/mongodb-uri-0.9.7.tgz", + "integrity": "sha1-D3ca0W9IOuZfQoeWlCjp+8SqYYE=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multer": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", + "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + } + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", + "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nock": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", + "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "node-fs": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/node-fs/-/node-fs-0.1.7.tgz", + "integrity": "sha1-MjI8zLRsn78PwRgS1FAhzDHTJbs=" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-database-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/parse-database-url/-/parse-database-url-0.3.0.tgz", + "integrity": "sha1-NpZmMh6SfJreY838Gqr2+zdFPQ0=", + "requires": { + "mongodb-uri": ">= 0.9.7" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-loader": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", + "integrity": "sha512-CMP0v6S6z8PHeJ6NFVyVJm6WyJjIwFvyz2b0n2/4bKdS/0uZa/9sKUlYZzubrn3zuDRU0zIuEDX9DZYQ2ZI8TA==", + "requires": { + "native-promise-only": "^0.8.1", + "superagent": "^3.8.3" + } + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pg": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", + "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", + "requires": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.3.0", + "pg-pool": "^3.2.1", + "pg-protocol": "^1.2.5", + "pg-types": "^2.1.0", + "pgpass": "1.x", + "semver": "4.3.2" + }, + "dependencies": { + "semver": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", + "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" + } + } + }, + "pg-connection-string": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", + "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", + "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" + }, + "pg-protocol": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", + "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "pgpass": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", + "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", + "requires": { + "split": "^1.0.0" + } + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" + }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" + }, + "postgres-date": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz", + "integrity": "sha512-pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise.allsettled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", + "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.1", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "iterate-value": "^1.0.0" + } + }, + "prompt": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz", + "integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=", + "requires": { + "colors": "^1.1.2", + "pkginfo": "0.x.x", + "read": "1.0.x", + "revalidator": "0.1.x", + "utile": "0.3.x", + "winston": "2.1.x" + }, + "dependencies": { + "async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "winston": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz", + "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", + "requires": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "pkginfo": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" + } + } + } + } + }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", + "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "retry-as-promised": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", + "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", + "requires": { + "any-promise": "^1.3.0" + } + }, + "revalidator": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", + "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "sequelize": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.3.3.tgz", + "integrity": "sha512-WO/b1ehjSFKlBCHzwZoaPhoW3WyXXy9x74yPrOP8NpE67wzbv0dIucDO4a+THLVyl3lnv3nFMZdJRdkUgb/ZAw==", + "requires": { + "debug": "^4.1.1", + "dottie": "^2.0.0", + "inflection": "1.12.0", + "lodash": "^4.17.15", + "moment": "^2.26.0", + "moment-timezone": "^0.5.31", + "retry-as-promised": "^3.2.0", + "semver": "^7.3.2", + "sequelize-pool": "^6.0.0", + "toposort-class": "^1.0.1", + "uuid": "^8.1.0", + "validator": "^10.11.0", + "wkx": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "validator": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + }, + "wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "requires": { + "@types/node": "*" + } + } + } + }, + "sequelize-pool": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", + "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "spark-md5": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", + "integrity": "sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "ssh2": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.5.4.tgz", + "integrity": "sha1-G/a2soyW6u8mf01sRqWiUXpZnic=", + "requires": { + "ssh2-streams": "~0.1.15" + } + }, + "ssh2-streams": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.1.20.tgz", + "integrity": "sha1-URGNFUVV31Rp7h9n4M8efoosDjo=", + "requires": { + "asn1": "~0.2.0", + "semver": "^5.1.0", + "streamsearch": "~0.1.2" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "supertest": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", + "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", + "dev": true, + "requires": { + "methods": "^1.1.2", + "superagent": "^3.8.3" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "swagger-converter": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/swagger-converter/-/swagger-converter-0.1.7.tgz", + "integrity": "sha1-oJdRnG8e5N1n4wjZtT3cnCslf5c=", + "requires": { + "lodash.clonedeep": "^2.4.1" + } + }, + "swagger-tools": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/swagger-tools/-/swagger-tools-0.10.4.tgz", + "integrity": "sha512-VQpijIi8cpB/frUZOZlVpS7U3CrdSAZBfiHu448R1njiNXUnE7heF3Svz3qFBr5SYtaPvaqWpHMbvboirCXVzA==", + "requires": { + "async": "^2.5.0", + "body-parser": "1.18.2", + "commander": "~2.11.0", + "debug": "^3.1.0", + "js-yaml": "^3.3.1", + "json-refs": "^3.0.2", + "lodash": "^4.17.4", + "multer": "^1.1.0", + "parseurl": "^1.3.0", + "path-to-regexp": "^2.0.0", + "qs": "^6.0.3", + "serve-static": "^1.10.0", + "spark-md5": "^3.0.0", + "superagent": "^3.5.2", + "swagger-converter": "^0.1.7", + "traverse": "^0.6.6", + "z-schema": "^3.15.4" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "path-to-regexp": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", + "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "ts-mocha": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", + "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", + "requires": { + "ts-node": "7.0.1", + "tsconfig-paths": "^3.5.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=" + } + } + }, + "ts-node": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", + "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "optional": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "optional": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "optional": true + } + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-ssh": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", + "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", + "requires": { + "debug": "2.6.9", + "lodash.defaults": "^4.1.0", + "ssh2": "0.5.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utile": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", + "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=", + "requires": { + "async": "~0.9.0", + "deep-equal": "~0.2.1", + "i": "0.3.x", + "mkdirp": "0.x.x", + "ncp": "1.0.x", + "rimraf": "2.x.x" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validator": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", + "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "when": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/when/-/when-2.0.1.tgz", + "integrity": "sha1-jYcv4V5oQkyRtLck6EjggH2rZkI=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "winston": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.1.0", + "is-stream": "^2.0.0", + "logform": "^2.2.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + }, + "dependencies": { + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "winston-transport": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "requires": { + "readable-stream": "^2.3.7", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "workerpool": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", + "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "requires": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + } + }, + "yargs-unparser": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", + "integrity": "sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "decamelize": "^1.2.0", + "flat": "^4.1.0", + "is-plain-obj": "^1.1.0", + "yargs": "^14.2.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + }, + "z-schema": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.25.1.tgz", + "integrity": "sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==", + "requires": { + "commander": "^2.7.1", + "core-js": "^2.5.7", + "lodash.get": "^4.0.0", + "lodash.isequal": "^4.0.0", + "validator": "^10.0.0" + }, + "dependencies": { + "validator": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + } + } + } + } +} diff --git a/api-mobile/package.json b/api-mobile/package.json new file mode 100644 index 000000000..ef8a77a6f --- /dev/null +++ b/api-mobile/package.json @@ -0,0 +1,66 @@ +{ + "name": "lucy-api-mobile", + "description": "API for InvasivesBC iOS app", + "version": "0.0.0", + "license": "Apache-2.0", + "main": "app", + "repository": { + "type": "git", + "url": "https://github.com/bcgov/lucy-web.git" + }, + "scripts": { + "start": "ts-node app", + "test": "ts-mocha --timeout 60000", + "lint": "eslint . --ignore-pattern 'node_modules' --ext .ts", + "lint-fix": "eslint . --fix --ignore-pattern 'node_modules' --ext .ts" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 6.0.0" + }, + "dependencies": { + "axios": "~0.19.2", + "body-parser": "~1.19.0", + "db-migrate-pg": "~1.2.2", + "db-migrate": "~0.11.11", + "express": "~4.17.1", + "jsonwebtoken": "~8.5.1", + "jwks-rsa": "~1.8.1", + "memory-cache": "~0.2.0", + "moment": "~2.27.0", + "pg": "~8.3.0", + "qs": "~6.9.4", + "sequelize": "~6.3.3", + "swagger-tools": "~0.10.4", + "ts-mocha": "~7.0.0", + "ts-node": "~8.10.2", + "typescript": "~3.9.7", + "validator": "~13.1.1", + "winston": "~3.3.3", + "yamljs": "~0.3.0" + }, + "devDependencies": { + "@types/body-parser": "~1.19.0", + "@types/chai": "~4.2.12", + "@types/express": "~4.17.0", + "@types/jsonwebtoken": "~8.5.0", + "@types/memory-cache": "~0.2.1", + "@types/mocha": "~8.0.1", + "@types/pg": "~7.14.4", + "@types/swagger-tools": "~0.10.6", + "@types/yamljs": "~0.2.31", + "@typescript-eslint/eslint-plugin": "~3.7.1", + "@typescript-eslint/parser": "~3.7.1", + "chai": "~4.2.0", + "database-cleaner": "~1.3.0", + "eslint-config-prettier": "~6.11.0", + "eslint-plugin-prettier": "~3.1.4", + "eslint": "~7.5.0", + "factory-girl": "~5.0.4", + "mocha": "~8.1.1", + "nock": "~13.0.3", + "npm-run-all": "~4.1.5", + "prettier": "~2.0.5", + "supertest": "~4.0.2" + } +} diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts new file mode 100644 index 000000000..670c546d0 --- /dev/null +++ b/api-mobile/src/constants/misc.ts @@ -0,0 +1,31 @@ +/** + * Caching keys, for use with `memory-cache`. + * + * @export + * @enum {number} + */ +export enum CacheKeys { + ObservationCodePlant = 'observationCodePlant' +} + +/** + * Supported activity types. + * + * @export + * @enum {number} + */ +export enum ActivityType { + Plant = 'plant', + Animal = 'animal' +} + +/** + * Supported activity sub types. + * + * @export + * @enum {number} + */ +export enum ActivitySubType { + Terrestrial = 'terrestrial', + Aquatic = 'aquatic' +} diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts new file mode 100644 index 000000000..bedf5fd27 --- /dev/null +++ b/api-mobile/src/controllers/activity-controller.ts @@ -0,0 +1,57 @@ +'use strict'; + +import { getDBConnection } from '../database/db'; +import { ActivityPostBody } from '../models/activity'; +import { postActivitySQL } from '../queries/activity-queries'; +import { getLogger } from '../utils/logger'; +import { sendResponse } from '../utils/query-actions'; +import { ParameterizedQuery } from '../queries/query-types'; + +const defaultLog = getLogger('observation-controller'); + +/** + * Authenticated route handler for OPTIONS + * + * @param {*} args + * @param {*} res + * @param {*} next + */ +exports.authenticatedOptions = async function (args: any, res: any, next: any) { + res.status(200).send(); +}; + +/** + * Authenticated route handler for POST + * + * @param {*} args + * @param {*} res + * @param {*} next + * @returns response containing the newly created activity record. + */ +exports.authenticatedPost = async function (args: any, res: any, next: any) { + defaultLog.debug({ label: 'authenticatedPost', message: 'params', arguments: args.swagger.params }); + + const data: ActivityPostBody = args.swagger.params.postBody.value; + + const sanitizedActivityData = new ActivityPostBody(data); + + const connection = await getDBConnection(); + + if (!connection) { + return sendResponse(res, 503); + } + + const parameterizedQuery: ParameterizedQuery = postActivitySQL(sanitizedActivityData); + + if (!parameterizedQuery) { + return sendResponse(res, 400); + } + + const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); + + const result = (response && response.rows && response.rows[0]) || null; + + connection.release(); + + return sendResponse(res, 200, result); +}; diff --git a/api-mobile/src/controllers/code-controller.ts b/api-mobile/src/controllers/code-controller.ts new file mode 100644 index 000000000..e2e60bd22 --- /dev/null +++ b/api-mobile/src/controllers/code-controller.ts @@ -0,0 +1,138 @@ +'use strict'; + +import { PoolClient } from 'pg'; +import { getDBConnection } from '../database/db'; +import { + getJurisdictionCodesSQL, + getObservationAspectCodesSQL, + getObservationGeometryCodesSQL, + getObservationProposedActionCodesSQL, + getObservationSlopeCodesSQL, + getObservationTypeCodesSQL, + getSoilTextureCodesSQL, + getSpeciesAgencyCodesSQL, + getSpeciesCodesSQL, + getSpeciesDensityCodesSQL, + getSpeciesDistributionCodesSQL, + getSpecificUseCodesSQL +} from '../queries/code-queries'; +import { getLogger } from '../utils/logger'; +import { sendResponse } from '../utils/query-actions'; +import { cached } from '../utils/utils'; +import { CacheKeys } from '../constants/misc'; + +const defaultLog = getLogger('observation-controller'); + +/** + * Authenticated route handler for OPTIONS + * + * @param {*} args + * @param {*} res + * @param {*} next + */ +exports.authenticatedOptions = async function (args: any, res: any, next: any) { + res.status(200).send(); +}; + +/** + * Authenticated route handler for GET: observation plant codes + * + * @param {*} args + * @param {*} res + * @param {*} next + * @returns response with an object containing arrays of all of the code values related to plant observations. + */ +exports.authenticatedGet_ObservationPlant = async function (args: any, res: any, next: any) { + defaultLog.debug({ label: 'authenticatedGet', message: 'params', arguments: args.swagger.params }); + + const connection = await getDBConnection(); + + if (!connection) { + return sendResponse(res, 503); + } + + const result = await cached(CacheKeys.ObservationCodePlant, 3600000, () => + getCodesForPlantObservations(connection) + )(); + + connection.release(); + + return sendResponse(res, 200, result); +}; + +/** + * Fetch all code values for plant observations. + * + * @param {PoolClient} connection + * @returns {Promise} + */ +export const getCodesForPlantObservations = async function (connection: PoolClient): Promise { + if (!connection) { + return null; + } + + const result: { + message: string; + data: { + observation_aspect_code: object; + jurisdiction_code: object; + observation_geometry_code: object; + observation_type_code: object; + observation_proposed_action_code: object; + observation_slope_code: object; + soil_texture_code: object; + species_agency_code: object; + species_density_code: object; + species_distribution_code: object; + species: object; + specific_use_code: object; + }; + } = { + message: 'observation codes', + data: { + observation_aspect_code: [], + jurisdiction_code: [], + observation_geometry_code: [], + observation_type_code: [], + observation_proposed_action_code: [], + observation_slope_code: [], + soil_texture_code: [], + species_agency_code: [], + species_density_code: [], + species_distribution_code: [], + species: [], + specific_use_code: [] + } + }; + + // Fetch all observation codes + const observation_aspect_code = await connection.query(getObservationAspectCodesSQL()); + const jurisdiction_code = await connection.query(getJurisdictionCodesSQL()); + const observation_geometry_code = await connection.query(getObservationGeometryCodesSQL()); + const observation_type_code = await connection.query(getObservationTypeCodesSQL()); + const observation_proposed_action_code = await connection.query(getObservationProposedActionCodesSQL()); + const observation_slope_code = await connection.query(getObservationSlopeCodesSQL()); + const soil_texture_code = await connection.query(getSoilTextureCodesSQL()); + const species_agency_code = await connection.query(getSpeciesAgencyCodesSQL()); + const species_density_code = await connection.query(getSpeciesDensityCodesSQL()); + const species_distribution_code = await connection.query(getSpeciesDistributionCodesSQL()); + const species = await connection.query(getSpeciesCodesSQL()); + const specific_use_code = await connection.query(getSpecificUseCodesSQL()); + + // Add code responses to results object + result.data.observation_aspect_code = (observation_aspect_code && observation_aspect_code.rows) || []; + result.data.jurisdiction_code = (jurisdiction_code && jurisdiction_code.rows) || []; + result.data.observation_geometry_code = (observation_geometry_code && observation_geometry_code.rows) || []; + result.data.observation_type_code = (observation_type_code && observation_type_code.rows) || []; + result.data.observation_proposed_action_code = + (observation_proposed_action_code && observation_proposed_action_code.rows) || []; + result.data.observation_slope_code = (observation_slope_code && observation_slope_code.rows) || []; + result.data.soil_texture_code = (soil_texture_code && soil_texture_code.rows) || []; + result.data.species_agency_code = (species_agency_code && species_agency_code.rows) || []; + result.data.species_density_code = (species_density_code && species_density_code.rows) || []; + result.data.species_distribution_code = (species_distribution_code && species_distribution_code.rows) || []; + result.data.species = (species && species.rows) || []; + result.data.specific_use_code = (specific_use_code && specific_use_code.rows) || []; + + return result; +}; diff --git a/api-mobile/src/controllers/observation-plant-controller.ts b/api-mobile/src/controllers/observation-plant-controller.ts new file mode 100644 index 000000000..d578eaf02 --- /dev/null +++ b/api-mobile/src/controllers/observation-plant-controller.ts @@ -0,0 +1,80 @@ +'use strict'; + +import { ParameterizedQuery } from '../queries/query-types'; +import { getDBConnection } from '../database/db'; +import { getAllObservationPlantSQL, getSingleObservationPlantSQL } from '../queries/observation-queries'; +import { getLogger } from '../utils/logger'; +import { sendResponse } from '../utils/query-actions'; + +const defaultLog = getLogger('observation-plant-controller'); + +/** + * Authenticated route handler for OPTIONS + * + * @param {*} args + * @param {*} res + * @param {*} next + */ +exports.authenticatedOptions = async function (args: any, res: any, next: any) { + res.status(200).send(); +}; + +/** + * Authenticated route handler for GET + * + * @param {*} args + * @param {*} res + * @param {*} next + * @returns response containing an array of all observations, or an empty array if none found. + */ +exports.authenticatedGet_All = async function (args: any, res: any, next: any) { + defaultLog.debug({ label: 'authenticatedGet', message: 'params', arguments: args.swagger.params }); + + const connection = await getDBConnection(); + + if (!connection) { + return sendResponse(res, 503); + } + + const response = await connection.query(getAllObservationPlantSQL()); + + const result = (response && response.rowCount && response.rows[0]) || []; + + connection.release(); + + return sendResponse(res, 200, result); +}; + +/** + * Authenticated route handler for GET + * + * @param {*} args + * @param {*} res + * @param {*} next + * @returns response containing the single observation found, or null if no matching observation found. + */ +exports.authenticatedGet_One = async function (args: any, res: any, next: any) { + defaultLog.debug({ label: 'authenticatedGet', message: 'params', arguments: args.swagger.params }); + + const observationId = args.swagger.params.observationId.value; + + const connection = await getDBConnection(); + + if (!connection) { + return sendResponse(res, 503); + } + + const parameterizedQuery: ParameterizedQuery = getSingleObservationPlantSQL(observationId); + + if (!parameterizedQuery) { + return sendResponse(res, 400); + } + + const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); + + const result = (response && response.rowCount && response.rows[0]) || null; + + connection.release(); + + return sendResponse(res, 200, result); +}; diff --git a/api-mobile/src/controllers/user-controller.ts b/api-mobile/src/controllers/user-controller.ts new file mode 100644 index 000000000..daa42f0c5 --- /dev/null +++ b/api-mobile/src/controllers/user-controller.ts @@ -0,0 +1,42 @@ +'use strict'; + +import { getDBConnection } from '../database/db'; +import { getUserWithRolesSQL } from '../queries/user-queries'; + +import { getLogger } from '../utils/logger'; +import { ParameterizedQuery } from '../queries/query-types'; +const defaultLog = getLogger('user-controller'); + +/** + * Finds a single user based on their email. + * + * @param {string} email + * @returns user + */ +export const getUserWithRoles = async function (email: string) { + defaultLog.debug({ label: 'getUserWithRoles', message: 'params', email }); + + if (!email) { + return null; + } + + const connection = await getDBConnection(); + + if (!connection) { + return null; + } + + const parameterizedQuery: ParameterizedQuery = getUserWithRolesSQL(email); + + if (!parameterizedQuery) { + return null; + } + + const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); + + const result = (response && response.rowCount && response.rows[0]) || null; + + connection.release(); + + return result; +}; diff --git a/api-mobile/src/database/db.ts b/api-mobile/src/database/db.ts new file mode 100644 index 000000000..afb763169 --- /dev/null +++ b/api-mobile/src/database/db.ts @@ -0,0 +1,59 @@ +'use strict'; + +import { Pool, PoolConfig, PoolClient } from 'pg'; + +import { getLogger } from '../utils/logger'; +const defaultLog = getLogger('db'); + +const DB_HOST: string = process.env.DB_HOST || 'localhost'; +const DB_PORT: number = Number(process.env.DB_PORT) || 5432; +const DB_USERNAME: string = process.env.DB_USER || 'lucy'; +const DB_PASSWORD: string = process.env.DB_PASS || 'lucy'; +const DB_DATABASE: string = process.env.DB_DATABASE || 'lucy'; +const DB_SCHEMA: string = process.env.DB_SCHEMA || 'invasivesbc'; + +const poolConfig: PoolConfig = { + user: DB_USERNAME, + password: DB_PASSWORD, + database: DB_DATABASE, + port: DB_PORT, + host: DB_HOST, + max: 20, + connectionTimeoutMillis: 10000, + idleTimeoutMillis: 45000 +}; + +defaultLog.debug({ label: 'create db pool', message: 'pool config', poolConfig }); + +let pool: Pool = null; + +try { + pool = new Pool(poolConfig); +} catch (error) { + defaultLog.error({ label: 'create db pool', message: 'failed to create pool', error, poolConfig }); + process.exit(1); +} + +/** + * Waits for availability, and returns a pool client from the existing `pool`. + * + * Note: Sets the initial `search_path` and `SCHEMA` based on the DB_SCHEMA env variable. + * Note: Callers should call `client.release()` when finished with the pool client. + * + * @returns {Promise} + */ +export const getDBConnection = async function (): Promise { + let client: PoolClient = null; + + try { + client = await pool.connect(); + + await client.query(`SET search_path TO ${client.escapeLiteral(DB_SCHEMA)}, public;`); + await client.query(`SET SCHEMA ${client.escapeLiteral(DB_SCHEMA)};`); + } catch (error) { + defaultLog.error({ label: 'getDBConnection', message: 'error', error }); + throw error; + } + + return client; +}; diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts new file mode 100644 index 000000000..c557ef0fb --- /dev/null +++ b/api-mobile/src/models/activity.ts @@ -0,0 +1,21 @@ +/** + * Activity post body. + * + * @export + * @class ActivityPostBody + */ +export class ActivityPostBody { + type: string; + subType: string; + date: string; + locationAndGeometry: object; + data: object; + + constructor(obj?: any) { + this.type = (obj && obj.type) || null; + this.subType = (obj && obj.subType) || null; + this.date = (obj && obj.date) || null; + this.locationAndGeometry = (obj && obj.locationAndGeometry) || null; + this.data = (obj && obj.data) || null; + } +} diff --git a/api-mobile/src/models/observation-plant.ts b/api-mobile/src/models/observation-plant.ts new file mode 100644 index 000000000..d5815521d --- /dev/null +++ b/api-mobile/src/models/observation-plant.ts @@ -0,0 +1,127 @@ +/** + * Observation plant data model. + * + * @export + * @class ObservationPlant + */ +export class ObservationPlant { + observation_id: number; + observation_date: string; + access_description: string; + observer_first_name: string; + observer_last_name: string; + sample_identifier: string; + range_unit_number: string; + general_comment: string; + legacy_site_ind: boolean; + early_detection_rapid_resp_ind: boolean; + research_detection_ind: boolean; + sample_taken_ind: boolean; + well_ind: boolean; + special_care_ind: boolean; + biological_ind: boolean; + aquatic_ind: boolean; + species_id: number; + jurisdiction_code_id: number; + species_density_code_id: number; + species_distribution_code_id: number; + observation_type_code_id: number; + species_agency_code_id: number; + soil_texture_code_id: number; + specific_use_code_id: number; + observation_slope_code_id: number; + observation_aspect_code_id: number; + observation_proposed_action_code_id: number; + createdAt: string; + updateAt: string; + updated_by_user_id: number; + created_by_user_id: number; + space_geom_id: number; + hex_id: number; + hex_sub_id: number; + total_area: number; + negative_occurance_ind: boolean; + paper_id_primary: string; + paper_id_secondary: string; + elevation_meters: number; + well_proximity: number; + well_tag: number; + observation_geometry_code_id: number; + photo_indicator: boolean; + flowering: boolean; + bec_zone: string; + riso: string; + ipma: string; + ownership: string; + regional_district: string; + flnro_district: string; + moti_district: string; + raw_longitude: number; + raw_latitude: number; + raw_utm_zone: number; + raw_utm_easting: number; + raw_utm_northing: number; + raw_albers_x: number; + raw_albers_y: number; + + constructor(obj?: any) { + this.observation_id = (obj && obj.observation_id) || null; + this.observation_date = (obj && obj.observation_date) || null; + this.access_description = (obj && obj.access_description) || null; + this.observer_first_name = (obj && obj.observer_first_name) || null; + this.observer_last_name = (obj && obj.observer_last_name) || null; + this.sample_identifier = (obj && obj.sample_identifier) || null; + this.range_unit_number = (obj && obj.range_unit_number) || null; + this.general_comment = (obj && obj.general_comment) || null; + this.legacy_site_ind = (obj && obj.legacy_site_ind) || null; + this.early_detection_rapid_resp_ind = (obj && obj.early_detection_rapid_resp_ind) || null; + this.research_detection_ind = (obj && obj.research_detection_ind) || null; + this.sample_taken_ind = (obj && obj.sample_taken_ind) || null; + this.well_ind = (obj && obj.well_ind) || null; + this.special_care_ind = (obj && obj.special_care_ind) || null; + this.biological_ind = (obj && obj.biological_ind) || null; + this.aquatic_ind = (obj && obj.aquatic_ind) || null; + this.species_id = (obj && obj.species_id) || null; + this.jurisdiction_code_id = (obj && obj.jurisdiction_code_id) || null; + this.species_density_code_id = (obj && obj.species_density_code_id) || null; + this.species_distribution_code_id = (obj && obj.species_distribution_code_id) || null; + this.observation_type_code_id = (obj && obj.observation_type_code_id) || null; + this.species_agency_code_id = (obj && obj.species_agency_code_id) || null; + this.soil_texture_code_id = (obj && obj.soil_texture_code_id) || null; + this.specific_use_code_id = (obj && obj.specific_use_code_id) || null; + this.observation_slope_code_id = (obj && obj.observation_slope_code_id) || null; + this.observation_aspect_code_id = (obj && obj.observation_aspect_code_id) || null; + this.observation_proposed_action_code_id = (obj && obj.observation_proposed_action_code_id) || null; + this.updateAt = (obj && obj.updateAt) || null; + this.createdAt = (obj && obj.createdAt) || null; + this.updated_by_user_id = (obj && obj.updated_by_user_id) || null; + this.created_by_user_id = (obj && obj.created_by_user_id) || null; + this.space_geom_id = (obj && obj.space_geom_id) || null; + this.hex_id = (obj && obj.hex_id) || null; + this.hex_sub_id = (obj && obj.hex_sub_id) || null; + this.total_area = (obj && obj.total_area) || null; + this.negative_occurance_ind = (obj && obj.negative_occurance_ind) || null; + this.paper_id_primary = (obj && obj.paper_id_primary) || null; + this.paper_id_secondary = (obj && obj.paper_id_secondary) || null; + this.elevation_meters = (obj && obj.elevation_meters) || null; + this.well_proximity = (obj && obj.well_proximity) || null; + this.well_tag = (obj && obj.well_tag) || null; + this.observation_geometry_code_id = (obj && obj.observation_geometry_code_id) || null; + this.photo_indicator = (obj && obj.photo_indicator) || null; + this.flowering = (obj && obj.flowering) || null; + this.bec_zone = (obj && obj.bec_zone) || null; + this.riso = (obj && obj.riso) || null; + this.ipma = (obj && obj.ipma) || null; + this.ownership = (obj && obj.ownership) || null; + this.regional_district = (obj && obj.regional_district) || null; + this.flnro_district = (obj && obj.flnro_district) || null; + this.moti_district = (obj && obj.moti_district) || null; + this.raw_longitude = (obj && obj.raw_longitude) || null; + this.raw_latitude = (obj && obj.raw_latitude) || null; + this.raw_utm_zone = (obj && obj.raw_utm_zone) || null; + this.raw_utm_easting = (obj && obj.raw_utm_easting) || null; + this.raw_utm_northing = (obj && obj.raw_utm_northing) || null; + this.raw_albers_x = (obj && obj.raw_albers_x) || null; + this.raw_albers_y = (obj && obj.raw_albers_y) || null; + } +} diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts new file mode 100644 index 000000000..b08d20424 --- /dev/null +++ b/api-mobile/src/queries/activity-queries.ts @@ -0,0 +1,30 @@ +import { ActivityPostBody } from '../models/activity'; +import { ParameterizedQuery } from './query-types'; + +/** + * SQL query to insert a new activity, and return the inserted record. + * + * @param {ActivityPostBody} activityData + * @returns {ParameterizedQuery} sql parameterized query object + */ +export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQuery => { + if (!activityData) { + return null; + } + + const sql = + 'INSERT INTO api_audit_and_staging ' + + '(type, sub_type, date, location_and_geometry, data) ' + + 'VALUES ($1, $2, $3, $4, $5) ' + + 'RETURNING *;'; + + const values = [ + activityData.type, + activityData.subType, + activityData.date, + activityData.locationAndGeometry, + activityData + ]; + + return { sql, values }; +}; diff --git a/api-mobile/src/queries/code-queries.ts b/api-mobile/src/queries/code-queries.ts new file mode 100644 index 000000000..269f5d103 --- /dev/null +++ b/api-mobile/src/queries/code-queries.ts @@ -0,0 +1,83 @@ +/** + * SQL query to fetch observation aspect codes. + * + * @returns {string} sql query string + */ +export const getObservationAspectCodesSQL = (): string => `SELECT * from observation_aspect_code;`; + +/** + * SQL query to fetch jurisdiction codes. + * + * @returns {string} sql query string + */ +export const getJurisdictionCodesSQL = (): string => `SELECT * from jurisdiction_code;`; + +/** + * SQL query to fetch observation geometry codes. + * + * @returns {string} sql query string + */ +export const getObservationGeometryCodesSQL = (): string => `SELECT * from observation_geometry_code;`; + +/** + * SQL query to fetch observation type codes. + * + * @returns {string} sql query string + */ +export const getObservationTypeCodesSQL = (): string => `SELECT * from observation_type_code;`; + +/** + * SQL query to fetch observation proposed action codes. + * + * @returns {string} sql query string + */ +export const getObservationProposedActionCodesSQL = (): string => `SELECT * from observation_proposed_action_code;`; + +/** + * SQL query to fetch observation slope codes. + * + * @returns {string} sql query string + */ +export const getObservationSlopeCodesSQL = (): string => `SELECT * from observation_slope_code;`; + +/** + * SQL query to fetch texture codes. + * + * @returns {string} sql query string + */ +export const getSoilTextureCodesSQL = (): string => `SELECT * from soil_texture_code;`; + +/** + * SQL query to fetch agency codes. + * + * @returns {string} sql query string + */ +export const getSpeciesAgencyCodesSQL = (): string => `SELECT * from species_agency_code;`; + +/** + * SQL query to fetch density codes. + * + * @returns {string} sql query string + */ +export const getSpeciesDensityCodesSQL = (): string => `SELECT * from species_density_code;`; + +/** + * SQL query to fetch distribution codes. + * + * @returns {string} sql query string + */ +export const getSpeciesDistributionCodesSQL = (): string => `SELECT * from species_distribution_code;`; + +/** + * SQL query to fetch species codes. + * + * @returns {string} sql query string + */ +export const getSpeciesCodesSQL = (): string => `SELECT * from species;`; + +/** + * SQL query to fetch specific use codes. + * + * @returns {string} sql query string + */ +export const getSpecificUseCodesSQL = (): string => `SELECT * from specific_use_code;`; diff --git a/api-mobile/src/queries/observation-queries.ts b/api-mobile/src/queries/observation-queries.ts new file mode 100644 index 000000000..e3f77a1f8 --- /dev/null +++ b/api-mobile/src/queries/observation-queries.ts @@ -0,0 +1,26 @@ +import { ParameterizedQuery } from './query-types'; + +/** + * SQL query to fetch all plant observations. + * + * @returns {string} sql query string + */ +export const getAllObservationPlantSQL = (): string => `SELECT * FROM observation;`; + +/** + * SQL query to fetch a single plant observation. + * + * @param {string} observationId observation primary key + * @returns {string} sql query string + */ +export const getSingleObservationPlantSQL = (observationId: string): ParameterizedQuery => { + if (!observationId) { + return null; + } + + const sql = 'SELECT * FROM observation WHERE observation_id = $1;'; + + const values = [observationId]; + + return { sql, values }; +}; diff --git a/api-mobile/src/queries/query-types.ts b/api-mobile/src/queries/query-types.ts new file mode 100644 index 000000000..0c4e0ecd1 --- /dev/null +++ b/api-mobile/src/queries/query-types.ts @@ -0,0 +1,10 @@ +/** + * Return value type for building parameterized sql queries. + * + * @export + * @class IQuery + */ +export class ParameterizedQuery { + sql: string; + values: any[]; +} diff --git a/api-mobile/src/queries/user-queries.ts b/api-mobile/src/queries/user-queries.ts new file mode 100644 index 000000000..ab6ef800f --- /dev/null +++ b/api-mobile/src/queries/user-queries.ts @@ -0,0 +1,23 @@ +import { ParameterizedQuery } from '../queries/query-types'; + +/** + * SQL query to fetch a user and their associated role. + * + * @param {string} email user email + * @returns {string} sql query string + */ +export const getUserWithRolesSQL = (email: string): ParameterizedQuery => { + if (!email) { + return null; + } + + const sql = + 'SELECT * FROM application_user ' + + 'LEFT JOIN user_role USING (user_id) ' + + 'LEFT JOIN app_role_code USING (role_code_id) ' + + 'WHERE email = $1;'; + + const values = [email.toLowerCase()]; + + return { sql, values }; +}; diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml new file mode 100644 index 000000000..ff793614f --- /dev/null +++ b/api-mobile/src/swagger/swagger.yaml @@ -0,0 +1,845 @@ +swagger: '2.0' # npm library `swagger-tools` does not yet support 3.0 + +info: + version: '0.0.0' + title: lucy-api-mobile + description: API for lucy mobile. + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +host: localhost:3002 +basePath: /api + +tags: + - name: activity + description: | + Activity endpoints + An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' + - name: observation + description: Observation activity endpoints + - name: treatment + description: Treatment activity endpoints + - name: monitor + description: Monitor activity endpoints + - name: plant + description: Plant endpoints + - name: animal + description: Animal endpoints + - name: code + description: Code endpoints + +externalDocs: + description: Visit GitHub to find out more about this API + url: 'https://github.com/bcgov/lucy-web.git' + +schemes: + - http + - https + +securityDefinitions: + Bearer: + type: apiKey + name: Authorization + in: header + description: | + To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. + The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` + +consumes: + - application/json +produces: + - application/json + +paths: + # Activity Routes + + /activity: + x-swagger-router-controller: activity-controller + options: + tags: + - activity + summary: Pre-flight request + description: Options on authenticated activity route + operationId: authenticatedOptions + responses: + '200': + description: Success + '401': + description: Unauthorized user + schema: + $ref: '#/definitions/Error' + post: + tags: + - activity + summary: Create a new activity + description: Create a new activity + operationId: authenticatedPost + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAE # data editor + - SUP # super user + parameters: + - in: body + required: true + name: postBody + schema: + $ref: '#/definitions/ActivityPostBody' + responses: + '201': + description: Created + schema: + $ref: '#/definitions/ActivityResponse' + '401': + description: Unauthorized user + schema: + $ref: '#/definitions/Error' + + # Observation/Plant Routes + + /observation/plant: + x-swagger-router-controller: observation-plant-controller + options: + tags: + - observation + - plant + summary: Pre-flight request + description: Options on authenticated plant observation route + operationId: authenticatedOptions + responses: + '200': + description: Success + '401': + description: Unauthorized user + schema: + $ref: '#/definitions/Error' + get: + tags: + - observation + - plant + summary: Pre-flight request + description: Get all plant observations + operationId: authenticatedGet_All + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAV # data viewer + - DAE # data editor + - SUP # super user + responses: + '200': + description: Fetched observation with id + schema: + $ref: '#/definitions/ObservationPlantResponse' + '422': + description: Validation error - no observation with id + schema: + $ref: '#/definitions/Error' + + /observation/plant/{observationId}: + x-swagger-router-controller: observation-plant-controller + options: + tags: + - observation + - plant + summary: Pre-flight request + description: Options on authenticated plant observation route + operationId: authenticatedOptions + parameters: + - in: path + required: true + name: observationId + type: number + responses: + '200': + description: Success + '401': + description: Unauthorized user + schema: + $ref: '#/definitions/Error' + get: + tags: + - observation + - plant + summary: Pre-flight request + description: Get a single plant observation based on its id (observation id) + operationId: authenticatedGet_One + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAV # data viewer + - DAE # data editor + - SUP # super user + parameters: + - in: path + required: true + name: observationId + type: number + responses: + '200': + description: Fetched observation with id + schema: + $ref: '#/definitions/ObservationPlantResponse' + '422': + description: Validation error - no observation with id + schema: + $ref: '#/definitions/Error' + + # Code Routes + + /code/observation/plant: + x-swagger-router-controller: code-controller + options: + tags: + - code + - observation + summary: Pre-flight request + description: Options on authenticated observation code route + operationId: authenticatedOptions + responses: + '200': + description: Success + '401': + description: Unauthorized user + schema: + $ref: '#/definitions/Error' + get: + tags: + - code + summary: Get all observation code values + description: API to get all observation code values + operationId: authenticatedGet_ObservationPlant + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAV # data viewer + - DAE # data editor + - SUP # super user + responses: + '200': + description: Fetched code values + schema: + $ref: '#/definitions/ObservationCodeResponse' + '401': + description: Unauthorized user + schema: + $ref: '#/definitions/Error' + +definitions: + # Misc definitions + Error: + description: | + Error response object. + Returned in the non-200 responses for all routes. + required: + - message + - errors + properties: + message: + type: string + errors: + type: array + items: + type: string + + # Activity Definitions + + ActivityPostBody: + description: Activity post body object. + type: object + required: + - type + - subType + - date + - locationAndGeometry + - data + properties: + type: + type: string + subType: + type: string + date: + type: string + description: Date in YYYY-MM-DD format + locationAndGeometry: + type: object + data: + type: object + + ActivityResponse: + description: Activity response object. + type: object + required: + - type + - subType + - date + - locationAndGeometry + - data + properties: + type: + type: string + subType: + type: string + date: + type: string + description: Date in YYYY-MM-DD format + locationAndGeometry: + type: object + data: + type: object + + # Observation Plant Definitions + + ObservationPlantResponse: + description: | + Observation plant response object. + Returned in the 200 responses for all `/observation/plant/*` routes. + type: object + required: + - observation_id + - observation_date + - access_description + - observer_first_name + - observer_last_name + - sample_identifier + - range_unit_number + - general_comment + - legacy_site_ind + - early_detection_rapid_resp_ind + - research_detection_ind + - sample_taken_ind + - well_ind + - special_care_ind + - biological_ind + - aquatic_ind + - species_id + - jurisdiction_code_id + - species_density_code_id + - species_distribution_code_id + - observation_type_code_id + - species_agency_code_id + - soil_texture_code_id + - specific_use_code_id + - observation_slope_code_id + - observation_aspect_code_id + - observation_proposed_action_code_id + - created_at + - updated_at + - updated_by_user_id + - created_by_user_id + - space_geom_id + - hex_id + - hex_sub_id + - total_area + - negative_occurance_ind + - paper_id_primary + - paper_id_secondary + - elevation_meters + - well_proximity + - well_tag + - observation_geometry_code_id + - photo_indicator + - flowering + - bec_zone + - riso + - ipma + - ownership + - regional_district + - flnro_district + - moti_district + - raw_longitude + - raw_latitude + - raw_utm_zone + - raw_utm_easting + - raw_utm_northing + - raw_albers_x + - raw_albers_y + properties: + observation_id: + type: number + observation_date: + type: string + access_description: + type: string + observer_first_name: + type: string + observer_last_name: + type: string + sample_identifier: + type: string + range_unit_number: + type: string + general_comment: + type: string + legacy_site_ind: + type: boolean + early_detection_rapid_resp_ind: + type: boolean + research_detection_ind: + type: boolean + sample_taken_ind: + type: boolean + well_ind: + type: boolean + special_care_ind: + type: boolean + biological_ind: + type: boolean + aquatic_ind: + type: boolean + species_id: + type: object + jurisdiction_code_id: + type: object + species_density_code_id: + type: object + species_distribution_code_id: + type: object + observation_type_code_id: + type: object + species_agency_code_id: + type: object + soil_texture_code_id: + type: object + specific_use_code_id: + type: object + observation_slope_code_id: + type: object + observation_aspect_code_id: + type: object + observation_proposed_action_code_id: + type: object + created_at: + type: string + updated_at: + type: string + updated_by_user_id: + type: number + created_by_user_id: + type: number + space_geom_id: + type: number + hex_id: + type: number + hex_sub_id: + type: number + total_area: + type: number + negative_occurance_ind: + type: boolean + paper_id_primary: + type: string + paper_id_secondary: + type: string + elevation_meters: + type: number + well_proximity: + type: number + well_tag: + type: number + observation_geometry_code_id: + type: object + photo_indicator: + type: boolean + flowering: + type: boolean + bec_zone: + type: string + riso: + type: string + ipma: + type: string + ownership: + type: string + regional_district: + type: string + flnro_district: + type: string + moti_district: + type: string + raw_longitude: + type: number + raw_latitude: + type: number + raw_utm_zone: + type: number + raw_utm_easting: + type: number + raw_utm_northing: + type: number + raw_albers_x: + type: number + raw_albers_y: + type: number + + # Observation Code Definitions + + ObservationCodeResponse: + required: + - message + - data + properties: + message: + type: string + data: + type: object + $ref: '#/definitions/ObservationCode' + + ObservationCode: + description: Observation code tables. + required: + - observation_aspect_code + - jurisdiction_code + - observation_geometry_code + - observation_type_code + - observation_proposed_action_code + - observation_slope_code + - soil_texture_code + - species_agency_code + - species_density_code + - species_distribution_code + - species + - specific_use_code + properties: + observation_aspect_code: + type: array + items: + $ref: '#/definitions/AspectCode' + jurisdiction_code: + type: array + items: + $ref: '#/definitions/JurisdictionCode' + observation_geometry_code: + type: array + items: + $ref: '#/definitions/ObservationGeometryCode' + observation_type_code: + type: array + items: + $ref: '#/definitions/ObservationTypeCode' + observation_proposed_action_code: + type: array + items: + $ref: '#/definitions/ProposedActionCode' + observation_slope_code: + type: array + items: + $ref: '#/definitions/SlopeCode' + soil_texture_code: + type: array + items: + $ref: '#/definitions/SoilTextureCode' + species: + type: array + items: + $ref: '#/definitions/Species' + species_density_code: + type: array + items: + $ref: '#/definitions/SpeciesDensityCode' + species_distribution_code: + type: array + items: + $ref: '#/definitions/SpeciesDistributionCode' + species_agency_code: + type: array + items: + $ref: '#/definitions/SpeciesAgencyCode' + specific_use_code: + type: array + items: + $ref: '#/definitions/SpecificUseCode' + + # Code Definitions + + AspectCode: + type: object + required: + - observation_aspect_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_aspect_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + JurisdictionCode: + type: object + required: + - jurisdiction_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + jurisdiction_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationGeometryCode: + type: object + required: + - observation_geometry_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_geometry_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationTypeCode: + type: object + required: + - observation_type_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_type_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ProposedActionCode: + type: object + required: + - observation_proposed_action_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_proposed_action_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SlopeCode: + type: object + required: + - observation_slope_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_slope_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SoilTextureCode: + type: object + required: + - soil_texture_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + soil_texture_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + Species: + type: object + required: + - species_id + - mapCode + - earlyDetection + - containmentSpecies + - containmentSpacialRef + - species + - genus + - commonName + - latinName + - updateAt + - createdAt + properties: + species_id: + type: number + mapCode: + type: string + earlyDetection: + type: boolean + containmentSpecies: + type: number + containmentSpacialRef: + type: number + species: + type: string + genus: + type: string + commonName: + type: string + latinName: + type: string + updateAt: + type: string + createdAt: + type: string + + SpeciesDensityCode: + type: object + required: + - species_density_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_density_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesDistributionCode: + type: object + required: + - species_distribution_code_id + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_distribution_code_id: + type: number + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesAgencyCode: + type: object + required: + - species_agency_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_agency_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpecificUseCode: + type: object + required: + - specific_use_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + specific_use_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts new file mode 100644 index 000000000..de5ff0249 --- /dev/null +++ b/api-mobile/src/utils/auth-utils.ts @@ -0,0 +1,227 @@ +'use strict'; + +import { decode, verify } from 'jsonwebtoken'; +import JwksRsa, { JwksClient } from 'jwks-rsa'; +import { promisify } from 'util'; +import { getUserWithRoles } from '../controllers/user-controller'; +import { getLogger } from './logger'; + +const defaultLog = getLogger('auth-utils'); + +const APP_CERTIFICATE_ISSUER = + process.env.APP_CERTIFICATE_ISSUER || 'https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z'; +const APP_CERTIFICATE_URL = + process.env.APP_CERTIFICATE_URL || + 'https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs'; + +const TOKEN_IGNORE_EXPIRATION: boolean = + process.env.TOKEN_IGNORE_EXPIRATION === 'true' || + process.env.NODE_ENV === 'dev' || + process.env.DB_HOST === 'localhost' || + false; + +/** + * Authenticate the current user against the current route. + * + * @param {*} req + * @param {*} authOrSecDef + * @param {*} token + * @param {*} callback + * @returns {*} + */ +export const authenticate = async function (req: any, authOrSecDef: any, token: any, callback: any): Promise { + try { + defaultLog.debug({ label: 'authenticate', message: 'authenticating user', token }); + + if (!token) { + defaultLog.warn({ label: 'authenticate', message: 'token was null' }); + return callback(setError(req)); + } + + if (token.indexOf('Bearer ') !== 0) { + defaultLog.warn({ label: 'authenticate', message: 'token did not have a bearer' }); + return callback(setError(req)); + } + + // Validate the 'Authorization' header. + // Authorization header should be a string with format: Bearer xxxxxx.yyyyyyy.zzzzzz + const tokenString = token.split(' ')[1]; + + if (!tokenString) { + defaultLog.warn({ label: 'authenticate', message: 'token string was null' }); + return callback(setError(req)); + } + + // Decode token without verifying signature + const decodedToken = decode(tokenString, { complete: true, json: true }); + + if (!decodedToken) { + defaultLog.warn({ label: 'authenticate', message: 'decoded token was null' }); + return callback(setError(req)); + } + + // Get token header kid + const kid = decodedToken.header && decodedToken.header.kid; + + if (!decodedToken) { + defaultLog.warn({ label: 'authenticate', message: 'decoded token header kid was null' }); + return callback(setError(req)); + } + + const jwksClient: JwksClient = JwksRsa({ jwksUri: APP_CERTIFICATE_URL }); + + const getSigningKeyAsync = promisify(jwksClient.getSigningKey); + + // Get signing key from certificate issuer + const key = await getSigningKeyAsync(kid); + + if (!key) { + defaultLog.warn({ label: 'authenticate', message: 'get signing key' }); + return callback(setError(req)); + } + + const signingKey = key['publicKey'] || key['rsaPublicKey']; + + // Verify token using signing key + const verifiedToken = verifyToken(tokenString, signingKey); + + if (!verifiedToken) { + return callback(setError(req)); + } + + // Add the verified token to the request for future use, if needed + req.swagger.params.auth_payload = verifiedToken; + + // Verify user + const verifiedUser = await verifyUser(req); + + if (!verifiedUser) { + return callback(setError(req)); + } + + // Add the user to the request for future use, if needed + req.swagger.params.auth_user = verifiedUser; + } catch (error) { + defaultLog.error({ label: 'authenticate', message: 'unexpected error', error }); + return callback(setError(req)); + } + + return callback(null); +}; + +/** + * Verify jwt token. + * + * @param {*} tokenString + * @param {*} secretOrPublicKey + * @returns {*} verifiedToken + */ +const verifyToken = function (tokenString: any, secretOrPublicKey: any): any { + return verify(tokenString, secretOrPublicKey, { ignoreExpiration: TOKEN_IGNORE_EXPIRATION }, function ( + verificationError: any, + verifiedToken: any + ): any { + if (verificationError) { + defaultLog.warn({ label: 'verifyToken', message: 'jwt verification error', verificationError }); + return null; + } + + defaultLog.debug({ label: 'verifyToken', message: 'verifiedToken', verifiedToken }); + + if (verifiedToken.iss !== APP_CERTIFICATE_ISSUER) { + defaultLog.warn({ + label: 'verifyToken', + message: 'jwt verification error: issuer mismatch', + actual: verifiedToken.iss, + expected: APP_CERTIFICATE_ISSUER + }); + return null; + } + + defaultLog.debug({ label: 'verifyToken', message: 'jwt verification success' }); + + return verifiedToken; + }); +}; + +/** + * Verify the user. + * + * - Fetches the matching user and their assigned roles based on the users email + * - Checks that the user has at least one of the required roles for the current route + * + * @param {*} req + * @returns + */ +export const verifyUser = async function (req: any) { + // get user and their role + const response = await getUserWithRoles(req.swagger.params.auth_payload.email); + + if (!response) { + defaultLog.warn({ + label: 'verifyUser', + message: 'failed to find user with matching email', + email: req.swagger.params.auth_payload.email, + response + }); + return null; + } + + // allowed scopes/roles for the current endpoint + const currentSecurityScopes = req.swagger.operation['x-security-scopes']; + + const userHasRole = verifyUserRoles(currentSecurityScopes, response['role_code']); + + if (!userHasRole) { + defaultLog.warn({ label: 'verifyUser', message: 'user verification error: insufficient roles' }); + defaultLog.debug({ + label: 'verifyUser', + message: 'user verification error: insufficient roles', + userRoles: response['role_code'], + requiredRoles: currentSecurityScopes + }); + return null; + } + + defaultLog.debug({ label: 'verifyUser', message: 'user verification success' }); + + // return verified user + return response; +}; + +/** + * Checks if at least one of the the userRoles matches one of the allowedRoles. + * + * @param {(string[] | string)} allowedRoles allowed user roles + * @param {(string[] | string)} userRoles roles possessed by the user. + * @returns {boolean} true if userRoles contains at least one of the allowdRoles, false otherwise. + */ +export const verifyUserRoles = function (allowedRoles: string[] | string, userRoles: string[] | string): boolean { + if (!Array.isArray(allowedRoles)) { + allowedRoles = [allowedRoles]; + } + + if (!Array.isArray(userRoles)) { + userRoles = [userRoles]; + } + + for (const allowedRole of allowedRoles) { + // if the user contains at least one of the allowedRoles, then return true + if (userRoles.includes(allowedRole)) { + return true; + } + } + + // user contains none of the allowedRoles, return false + return false; +}; + +/** + * Set default error status on response when authentication fails. + * + * @param {*} req + * @returns response with default error status set + */ +function setError(req: any) { + return req.res.status(401).json({ message: 'Error: Access Denied' }); +} diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts new file mode 100644 index 000000000..a1dbc8d5c --- /dev/null +++ b/api-mobile/src/utils/logger.ts @@ -0,0 +1,82 @@ +'use strict'; + +import * as winston from 'winston'; + +/** + * Logger input. + * + * @export + * @interface ILoggerMessage + * @extends {winston.Logform.TransformableInfo} + */ +export interface ILoggerMessage extends winston.Logform.TransformableInfo { + timestamp?: string; // Optionally overwrite the default timestamp + label: string; // Add a label to this message (generally the name of the parent function) + error?: Error; // An Error object +} + +/** + * Get or create a logger for the given logLabel. + * + * Centralized logger that uses Winston 3.x. + * + * Initializing the logger: + * + * import { getLogger } from './logger'; + * const defaultLog = getLogger('class-or-file-name'); + * + * Usage: + * + * log.info({ label: 'functionName', message: 'Some info!' }) + * + * log.error({ label: 'functionName', message: 'An error!:', error }) + * + * log.debug({ label: 'functionName', message: 'A debug message!:', debugInfo1, debugInfo2 }) + * + * ...etc + * + * Example Output: + * + * [15-09-2019 14:44:30] [info] (class-or-file-name): functionName - Some info! + * + * [02-12-2019 14:45:02] [error] (class-or-file-name): functionName - An error! + * { + * error: 404 Not Found + * } + * + * [02-12-2019 14:46:15] [error] (class-or-file-name): functionName - A debug message! + * { + * debugInfo1: 'someDebugInfo1' + * } + * { + * debugInfo2: 'someDebugInfo2' + * } + * + * ...etc + * + * Valid `LOG_LEVEL` values (from least logging to most logging) (default: info): + * error, warn, info, debug + * + * @param {string} logLabel common label for the instance of the logger. + * @returns + */ +export const getLogger = function (logLabel: string) { + return winston.loggers.get(logLabel || 'default', { + transports: [ + new winston.transports.Console({ + level: process.env.LOG_LEVEL || 'info', + format: winston.format.combine( + winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), + winston.format.errors({ stack: true }), + winston.format.colorize(), + winston.format.printf(({ timestamp, level, label, message, error, ...other }: ILoggerMessage) => { + const namespace = label ? ` ${label} -` : ''; + const errorStack = error ? `\n${error}` : ''; + const otherMeta = other && Object.keys(other).length ? `\n${JSON.stringify(other, undefined, 2)}` : ''; + return `[${timestamp}] (${level}) (${logLabel}):${namespace} ${message} ${otherMeta} ${errorStack}`; + }) + ) + }) + ] + }); +}; diff --git a/api-mobile/src/utils/query-actions.ts b/api-mobile/src/utils/query-actions.ts new file mode 100644 index 000000000..502bff55f --- /dev/null +++ b/api-mobile/src/utils/query-actions.ts @@ -0,0 +1,19 @@ +'use strict'; + +import { getLogger } from './logger'; +const defaultLog = getLogger('query-actions'); + +/** + * Sends an http response. + * + * @param {*} res an http response + * @param {number} code an http code (200, 404, etc) + * @param {*} [object] the response data. + * @returns {*} res an http response + */ +export const sendResponse = function (res: any, code: number, object?: any) { + defaultLog.debug({ label: 'sendResponse', code, res }); + + res.writeHead(code, { 'Content-Type': 'application/json' }); + return res.end(JSON.stringify(object)); +}; diff --git a/api-mobile/src/utils/utils.ts b/api-mobile/src/utils/utils.ts new file mode 100644 index 000000000..ade8bc770 --- /dev/null +++ b/api-mobile/src/utils/utils.ts @@ -0,0 +1,79 @@ +import cache from 'memory-cache'; + +/** + * Wraps a function in a debounce function, which prevents it from being called until a delay period has elapsed. + * Repeated calls within the delay period will reset the delay. + * + * @param {number} delay delay in milliseconds between calls that must elapse before the function will be executed + * @param {(...args: any) => any} fn function to debounce + * @returns {(...args: any) => any} + */ +export const debounced = function (delay: number, fn: (...args: any) => any): (...args: any) => any { + let timerId: NodeJS.Timeout; + + return (...args) => { + if (timerId) { + clearTimeout(timerId); + } + + timerId = setTimeout(() => { + fn(...args); + timerId = null; + }, delay); + }; +}; + +/** + * Wraps a function in a throttle function, which prevents it from being called again until a delay period has + * elapsed. Repeated calls within the delay period will be ignored. + * + * @param {number} delay delay in milliseconds between calls that must elapse before the function will be executed again + * @param {(...args: any) => any} fn function to throttle + * @returns {(...args: any) => any} + */ +export const throttled = function (delay: number, fn: (...args: any) => any): (...args: any) => any { + let lastCall = 0; + + return (...args) => { + const now = new Date().getTime(); + + if (now - lastCall < delay) { + return; + } + + lastCall = now; + + return fn(...args); + }; +}; + +/** + * Wraps a function in a cache function. If the cache is unset or has expired, the original function will be called and + * the response will be stored in the cache for use in subsequent calls. Repeated calls within the expiration period + * will return the last cached value. + * + * @param {string} key key to store the cached value against + * @param {number} expiration time to maintain the cache, in milliseconds + * @param {((...args: any) => any | Promise)} fn function to cache + * @returns {(...args: any) => Promise} original function wrapped in an async function that provides caching + */ +export const cached = function ( + key: string, + expiration: number, + fn: (...args: any) => any | Promise +): (...args: any) => Promise { + return async (...args) => { + // Get a cached copy, if available + const cachedResult = cache.get(key); + + // Set the result using the non-null cached copy, or else fetch a new copy + const result = cachedResult || (await fn(...args)); + + // If the cached copy was null, then set the cache + if (!cachedResult) { + cache.put(key, result, expiration); + } + + return result; + }; +}; diff --git a/api-mobile/tsconfig.json b/api-mobile/tsconfig.json new file mode 100644 index 000000000..d7e3481ac --- /dev/null +++ b/api-mobile/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "lib": ["es2018"], + "moduleResolution": "node", + "sourceMap": true, + "outDir": "dist", + "baseUrl": ".", + "paths": { + "*": ["node_modules/*"] + }, + "esModuleInterop": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "suppressImplicitAnyIndexErrors": true + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts"] +} diff --git a/api/.vscode/settings.json b/api/.vscode/settings.json new file mode 100644 index 000000000..e69de29bb From fc52d5e84d86e590ff9a875cd5cac1602470b3fd Mon Sep 17 00:00:00 2001 From: Mike Wells Date: Fri, 7 Aug 2020 16:59:15 -0700 Subject: [PATCH 004/194] 781, 776: misc api-mobile updates - add base sql for activity common fields view - add base sql for observation common fields view - add base sql for terrestrial plant specific fields view - make db default creds consistent between new api and existing db container for dev - comment invalid docker compose line for naming local network - make Nick's staging table query/insert work with Jamie's staging table schema- - add example curl command for testing new endpoint - add testing instructions to readme for new endpoint/api - add knex and boilerplate migration --- ...L_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh | 23 + api-mobile/README.md | 12 + api-mobile/src/database/db.ts | 4 +- .../db_source/activity_common_data_view.sql | 19 + ...invasive_terrestrial_plant_observation.sql | 26 + .../observation_common_data_view.sql | 20 + api-mobile/src/queries/activity-queries.ts | 8 +- api-mobile/src/utils/auth-utils.ts | 4 +- api/api_sources/knexfile.js | 79 +++ api/api_sources/package-lock.json | 464 +++++------------- api/api_sources/package.json | 3 +- .../migrations/20200811120312_stagingTable.js | 9 + api/docker-compose.yml | 2 +- 13 files changed, 333 insertions(+), 340 deletions(-) create mode 100644 api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh create mode 100644 api-mobile/src/database/db_source/activity_common_data_view.sql create mode 100644 api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql create mode 100644 api-mobile/src/database/db_source/observation_common_data_view.sql create mode 100644 api/api_sources/knexfile.js create mode 100644 api/api_sources/src/migrations/20200811120312_stagingTable.js diff --git a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh new file mode 100644 index 000000000..e58fa7c6c --- /dev/null +++ b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh @@ -0,0 +1,23 @@ +echo $1 +curl --location --request POST 'localhost:3002/api/activity' \ +--header 'Authorization: Bearer '${1} \ +--header 'Content-Type: application/json' \ +--data-raw ' + { + "type": "Observation", + "subType": "Invasive Terrestrial Plant", + "date" : "2014-01-01T23:28:56.782Z", + "locationAndGeometry": { + "test": "banana" + }, + "data": { + "ObservationData": { + "date": "12-2020-21", + "key activity species name": "bla" + }, + "InvasiveTerrestrialPlantObservation":{ + "pokyness": 11, + "smells": "ok" + } + } +}' diff --git a/api-mobile/README.md b/api-mobile/README.md index b9991f051..c60388595 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -125,6 +125,18 @@ Supported log properties: # Testing +- To access the API without logging in to the front end, you can manually add a user this way: +``` +$ make database +$ psql +psql_prompt: insert into application_user (first_name, last_name, email,preferred_username) values ('micheal', 'wells', 'micheal.w +.wells@bananasInPajamas.ca','officialUserName@idir'); + +psql_prompt: insert into user_role (user_id, role_code_id) values (8 +,3); +``` + + ## Info ### Technolgies used diff --git a/api-mobile/src/database/db.ts b/api-mobile/src/database/db.ts index afb763169..d6edf032a 100644 --- a/api-mobile/src/database/db.ts +++ b/api-mobile/src/database/db.ts @@ -7,8 +7,8 @@ const defaultLog = getLogger('db'); const DB_HOST: string = process.env.DB_HOST || 'localhost'; const DB_PORT: number = Number(process.env.DB_PORT) || 5432; -const DB_USERNAME: string = process.env.DB_USER || 'lucy'; -const DB_PASSWORD: string = process.env.DB_PASS || 'lucy'; +const DB_USERNAME: string = process.env.DB_USER || 'hello'; +const DB_PASSWORD: string = process.env.DB_PASS || 'world'; const DB_DATABASE: string = process.env.DB_DATABASE || 'lucy'; const DB_SCHEMA: string = process.env.DB_SCHEMA || 'invasivesbc'; diff --git a/api-mobile/src/database/db_source/activity_common_data_view.sql b/api-mobile/src/database/db_source/activity_common_data_view.sql new file mode 100644 index 000000000..8b4cd6c39 --- /dev/null +++ b/api-mobile/src/database/db_source/activity_common_data_view.sql @@ -0,0 +1,19 @@ +CREATE OR REPLACE VIEW activity_common_fields_view as ( +select +'banana' as activity_id, +'banana' as activity_type, +'banana' as activity_subtype, +'banana' as planned_activity_date_time, +'banana' as actual_activity_date_time, +'banana' as primary_user_first_name, +'banana' as primary_user_last_name, +'banana' as secondary_user_first_name, +'banana' as secondary_user_last_name, +'banana' as species, +'banana' as business_area, +'banana' as jurisdiction, +'banana' as agency + +from activity_incoming_data +) +COMMENT ON VIEW activity_common_fields_view IS 'View on fields common to all types of activities, with table activity_incoming_data as source.'; diff --git a/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql b/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql new file mode 100644 index 000000000..ffcb125a6 --- /dev/null +++ b/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql @@ -0,0 +1,26 @@ +CREATE OR REPLACE VIEW invasive_terrestrial_plant_observation_specific_fields_view as ( +select +'banana' as activity_id, +'banana' as species, +'banana' as distribution, +'banana' as density, +'banana' as soil_texture, +'banana' as slope, +'banana' as aspect, +'banana' as flowering, +'banana' as specific_use, +'banana' as proposed_action, +'banana' as seed_stage, +'banana' as plant_health, +'banana' as plant_life_stage, +'banana' as early_detection, +'banana' as research, +'banana' as well_on_site_ind, +'banana' as special_care_ind, +'banana' as biological_care_ind, +'banana' as legacy_site_ind, +'banana' as range_unit + +from activity_incoming_data +) +COMMENT ON VIEW invasive_terrestrial_plant_observation_specific_fields_view IS 'View on fields specific to invasive terrestrial plant of observations, with table activity_incoming_data as source.'; diff --git a/api-mobile/src/database/db_source/observation_common_data_view.sql b/api-mobile/src/database/db_source/observation_common_data_view.sql new file mode 100644 index 000000000..23c230042 --- /dev/null +++ b/api-mobile/src/database/db_source/observation_common_data_view.sql @@ -0,0 +1,20 @@ +CREATE OR REPLACE VIEW observation_common_fields_view as ( +select +'banana' as activity_id, +'banana' as observation_type, +'banana' as negative_observation_ind, +'banana' as aquatic_observation_ind, +'banana' as primary_user_last_name, +'banana' as secondary_user_first_name, +'banana' as secondary_user_last_name, +'banana' as species, +'banana' as primary_file_id, +'banana' as secondary_file_id, +'banana' as location_comment, +'banana' as general_observation_comment, +'banana' as sample_taken_ind, +'banana' as sample_label_number + +from activity_incoming_data +) +COMMENT ON VIEW observation_common_fields_view IS 'View on fields common to all types of observations, with table activity_incoming_data as source.'; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index b08d20424..47e575519 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -11,18 +11,18 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu if (!activityData) { return null; } + //activityData.locationAndGeometry needs to be added to below: const sql = - 'INSERT INTO api_audit_and_staging ' + - '(type, sub_type, date, location_and_geometry, data) ' + - 'VALUES ($1, $2, $3, $4, $5) ' + + 'INSERT INTO activity_incoming_data ' + + '(type, sub_type, received_timestamp, activity_payload) ' + + 'VALUES ($1, $2, $3, $4) ' + 'RETURNING *;'; const values = [ activityData.type, activityData.subType, activityData.date, - activityData.locationAndGeometry, activityData ]; diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts index de5ff0249..2a982e1a8 100644 --- a/api-mobile/src/utils/auth-utils.ts +++ b/api-mobile/src/utils/auth-utils.ts @@ -9,10 +9,10 @@ import { getLogger } from './logger'; const defaultLog = getLogger('auth-utils'); const APP_CERTIFICATE_ISSUER = - process.env.APP_CERTIFICATE_ISSUER || 'https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z'; + process.env.APP_CERTIFICATE_ISSUER || 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z'; const APP_CERTIFICATE_URL = process.env.APP_CERTIFICATE_URL || - 'https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs'; + 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs'; const TOKEN_IGNORE_EXPIRATION: boolean = process.env.TOKEN_IGNORE_EXPIRATION === 'true' || diff --git a/api/api_sources/knexfile.js b/api/api_sources/knexfile.js new file mode 100644 index 000000000..94a5f24fc --- /dev/null +++ b/api/api_sources/knexfile.js @@ -0,0 +1,79 @@ +// Update with your config settings. + +const dotenv = require('dotenv'); + +const env = process.env.NODE_ENV || 'development'; + +if (env === 'development') { + dotenv.config(); +} + +module.exports = { + test: { + client: 'postgresql', + connection: { + host: process.env.POSTGRESQL_HOST, + port: process.env.POSTGRESQL_PORT || 5432, + database: process.env.POSTGRESQL_DATABASE_TEST, + user: process.env.POSTGRESQL_USER, + password: process.env.POSTGRESQL_PASSWORD, + }, + pool: { + min: 2, + max: 10, + }, + migrations: { + // stub: './config/knex-migration-stub.js', + tableName: 'migration', + directory: 'src/migrations', + }, + }, + development: { + client: 'postgresql', + connection: { + host: process.env.POSTGRESQL_HOST, + port: process.env.POSTGRESQL_PORT || 5432, + database: process.env.POSTGRESQL_DATABASE, + user: process.env.POSTGRESQL_USER, + password: process.env.POSTGRESQL_PASSWORD, + }, + pool: { + min: 2, + max: 10, + }, + migrations: { + // stub: './config/knex-migration-stub.js', + tableName: 'migration', + directory: 'src/migrations', + }, + seeds: { + // stub: './config/knex-migration-stub.js', + tableName: 'seed', + directory: 'src/seeds', + }, + }, + + production: { + client: 'postgresql', + connection: { + host: process.env.POSTGRESQL_HOST, + port: process.env.POSTGRESQL_PORT || 5432, + database: process.env.POSTGRESQL_DATABASE, + user: process.env.POSTGRESQL_USER, + password: process.env.POSTGRESQL_PASSWORD, + }, + pool: { + min: 2, + max: 10, + }, + migrations: { + tableName: 'migration', + directory: 'src/migrations', + }, + seeds: { + // stub: './config/knex-migration-stub.js', + tableName: 'seed', + directory: 'src/seeds', + }, + }, +}; diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index 1683f3b20..50de4c5f0 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -143,37 +143,6 @@ "winston": "^3.0.0" } }, - "@gulp-sourcemaps/identity-map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", - "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", - "dev": true, - "requires": { - "acorn": "^5.0.3", - "css": "^2.2.1", - "normalize-path": "^2.1.1", - "source-map": "^0.6.0", - "through2": "^2.0.3" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", - "dev": true, - "requires": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - } - }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", @@ -555,12 +524,6 @@ } } }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, "agent-base": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", @@ -732,8 +695,7 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, "arr-filter": { "version": "1.1.2", @@ -747,8 +709,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-map": { "version": "2.0.2", @@ -762,8 +723,7 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, "array-differ": { "version": "1.0.0", @@ -774,8 +734,7 @@ "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" }, "array-flatten": { "version": "1.1.1", @@ -820,8 +779,7 @@ "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" }, "array-sort": { "version": "1.0.0", @@ -860,8 +818,7 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "arrify": { "version": "1.0.1", @@ -895,8 +852,7 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "ast-types": { "version": "0.13.2", @@ -954,8 +910,7 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "awesome-typescript-loader": { "version": "3.5.0", @@ -1024,7 +979,6 @@ "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -1039,7 +993,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -1048,7 +1001,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -1057,7 +1009,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -1066,7 +1017,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -1220,7 +1170,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -1238,7 +1187,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -1355,7 +1303,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -1550,7 +1497,6 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -1562,7 +1508,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -1869,7 +1814,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -1912,6 +1856,11 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, "colornames": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", @@ -1954,8 +1903,7 @@ "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "concat-map": { "version": "0.0.1", @@ -2037,8 +1985,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "copy-props": { "version": "2.0.4", @@ -2118,26 +2065,6 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "csvtojson": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.8.tgz", @@ -2194,34 +2121,6 @@ "ms": "2.0.0" } }, - "debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "requires": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -2230,8 +2129,7 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress": { "version": "4.2.0", @@ -2425,7 +2323,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -2435,7 +2332,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2444,7 +2340,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2453,7 +2348,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -2524,14 +2418,7 @@ "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, "diagnostics": { "version": "1.1.1", @@ -2945,16 +2832,6 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -2973,7 +2850,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -2988,7 +2864,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -2997,7 +2872,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3008,7 +2882,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, "requires": { "homedir-polyfill": "^1.0.1" } @@ -3094,7 +2967,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -3104,7 +2976,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -3125,7 +2996,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -3141,7 +3011,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -3150,7 +3019,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3159,7 +3027,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -3168,7 +3035,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -3177,7 +3043,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -3288,7 +3153,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -3300,7 +3164,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3364,7 +3227,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, "requires": { "detect-file": "^1.0.0", "is-glob": "^4.0.0", @@ -3376,7 +3238,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, "requires": { "expand-tilde": "^2.0.2", "is-plain-object": "^2.0.3", @@ -3388,8 +3249,7 @@ "flagged-respawn": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" }, "flush-write-stream": { "version": "1.1.1", @@ -3494,7 +3354,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, "requires": { "map-cache": "^0.2.2" } @@ -4192,8 +4051,12 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getopts": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", + "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" }, "getpass": { "version": "0.1.7", @@ -4298,7 +4161,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, "requires": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -4309,7 +4171,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, "requires": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -4451,33 +4312,6 @@ } } }, - "gulp-sourcemaps": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz", - "integrity": "sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==", - "dev": true, - "requires": { - "@gulp-sourcemaps/identity-map": "1.X", - "@gulp-sourcemaps/map-sources": "1.X", - "acorn": "5.X", - "convert-source-map": "1.X", - "css": "2.X", - "debug-fabulous": "1.X", - "detect-newline": "2.X", - "graceful-fs": "4.X", - "source-map": "~0.6.0", - "strip-bom-string": "1.X", - "through2": "2.X" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "gulp-typescript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", @@ -4693,7 +4527,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -4704,7 +4537,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -4714,7 +4546,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4744,7 +4575,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, "requires": { "parse-passwd": "^1.0.0" } @@ -4992,7 +4822,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, "requires": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" @@ -5002,7 +4831,6 @@ "version": "0.1.6", "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -5011,7 +4839,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -5059,7 +4886,6 @@ "version": "0.1.4", "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -5068,7 +4894,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -5079,7 +4904,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -5089,8 +4913,7 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -5102,8 +4925,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -5117,7 +4939,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -5152,7 +4973,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -5161,7 +4981,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -5230,7 +5049,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, "requires": { "is-unc-path": "^1.0.0" } @@ -5262,7 +5080,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, "requires": { "unc-path-regex": "^0.1.2" } @@ -5281,8 +5098,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-wsl": { "version": "1.1.0", @@ -5616,8 +5432,87 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "knex": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.21.4.tgz", + "integrity": "sha512-vUrR4mJBKWJPouV9C7kqvle9cTpiuuzBWqrQXP7bAv+Ua9oeKkEhhorJwArzcjVrVBojZYPMMtNVliW9B00sTA==", + "requires": { + "colorette": "1.2.1", + "commander": "^5.1.0", + "debug": "4.1.1", + "esm": "^3.2.25", + "getopts": "2.2.5", + "inherits": "~2.0.4", + "interpret": "^2.2.0", + "liftoff": "3.1.0", + "lodash": "^4.17.19", + "mkdirp": "^1.0.4", + "pg-connection-string": "2.3.0", + "tarn": "^3.0.0", + "tildify": "2.0.0", + "uuid": "^7.0.3", + "v8flags": "^3.2.0" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "pg-connection-string": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", + "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" + }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==" + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + } + } }, "kuler": { "version": "1.0.1", @@ -5697,7 +5592,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, "requires": { "extend": "^3.0.0", "findup-sync": "^3.0.0", @@ -5987,15 +5881,6 @@ "yallist": "^2.1.2" } }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "dev": true, - "requires": { - "es5-ext": "~0.10.2" - } - }, "macos-release": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", @@ -6026,7 +5911,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, "requires": { "kind-of": "^6.0.2" } @@ -6042,14 +5926,12 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, "requires": { "object-visit": "^1.0.0" } @@ -6104,22 +5986,6 @@ "p-is-promise": "^2.0.0" } }, - "memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", - "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -6161,7 +6027,6 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -6290,7 +6155,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -6300,7 +6164,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -6458,7 +6321,6 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -6949,7 +6811,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -6960,7 +6821,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -6969,7 +6829,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -6991,7 +6850,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, "requires": { "isobject": "^3.0.0" } @@ -7012,7 +6870,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, "requires": { "array-each": "^1.0.1", "array-slice": "^1.0.0", @@ -7024,7 +6881,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, "requires": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" @@ -7034,7 +6890,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -7329,7 +7184,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, "requires": { "is-absolute": "^1.0.0", "map-cache": "^0.2.0", @@ -7354,8 +7208,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parse-path": { "version": "4.0.1", @@ -7390,8 +7243,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "passport": { "version": "0.4.0", @@ -7469,14 +7321,12 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, "requires": { "path-root-regex": "^0.1.0" } @@ -7484,8 +7334,7 @@ "path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" }, "path-to-regexp": { "version": "0.1.7", @@ -7636,8 +7485,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postgres-array": { "version": "2.0.0", @@ -7908,7 +7756,6 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, "requires": { "resolve": "^1.1.6" } @@ -7922,7 +7769,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -7992,14 +7838,12 @@ "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "replace-ext": { "version": "1.0.0", @@ -8104,7 +7948,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -8113,7 +7956,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, "requires": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -8131,8 +7973,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "responselike": { "version": "1.0.2", @@ -8155,8 +7996,7 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "rimraf": { "version": "2.6.3", @@ -8196,7 +8036,6 @@ "version": "1.1.0", "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, "requires": { "ret": "~0.1.10" } @@ -8310,7 +8149,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -8322,7 +8160,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -8403,7 +8240,6 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -8419,7 +8255,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -8428,7 +8263,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -8439,7 +8273,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -8450,7 +8283,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -8459,7 +8291,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -8468,7 +8299,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -8477,7 +8307,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -8490,7 +8319,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, "requires": { "kind-of": "^3.2.0" }, @@ -8499,7 +8327,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -9100,7 +8927,6 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, "requires": { "atob": "^2.1.1", "decode-uri-component": "^0.2.0", @@ -9128,8 +8954,7 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "sparkles": { "version": "1.0.1", @@ -9195,7 +9020,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, "requires": { "extend-shallow": "^3.0.0" } @@ -9230,7 +9054,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -9240,7 +9063,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -9314,12 +9136,6 @@ "is-utf8": "^0.2.0" } }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "dev": true - }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -9443,6 +9259,11 @@ "xtend": "^4.0.0" } }, + "tarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.0.tgz", + "integrity": "sha512-PKUnlDFODZueoA8owLehl8vLcgtA8u4dRuVbZc92tspDYZixjJL6TqYOmryf/PfP/EBX+2rgNcrj96NO+RPkdQ==" + }, "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", @@ -9617,6 +9438,11 @@ "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" }, + "tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" + }, "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", @@ -9628,16 +9454,6 @@ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -9672,7 +9488,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -9681,7 +9496,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -9692,7 +9506,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -9704,7 +9517,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -10194,8 +10006,7 @@ "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" }, "undefsafe": { "version": "2.0.2", @@ -10238,7 +10049,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -10273,7 +10083,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -10283,7 +10092,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -10294,7 +10102,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "requires": { "isarray": "1.0.0" } @@ -10304,8 +10111,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" } } }, @@ -10348,8 +10154,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, "url-parse-lax": { "version": "1.0.0", @@ -10368,8 +10173,7 @@ "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "util": { "version": "0.10.4", @@ -10799,4 +10603,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/api/api_sources/package.json b/api/api_sources/package.json index 3205a376b..6c66e1fe6 100644 --- a/api/api_sources/package.json +++ b/api/api_sources/package.json @@ -92,6 +92,7 @@ "js-yaml": "^3.13.1", "jsonwebtoken": "^8.5.1", "jwt-decode": "^2.2.0", + "knex": "^0.21.4", "minimist": "^1.2.3", "mocha": "^5.2.0", "moment": "^2.24.0", @@ -110,4 +111,4 @@ "underscore": "^1.9.1" }, "snyk": true -} \ No newline at end of file +} diff --git a/api/api_sources/src/migrations/20200811120312_stagingTable.js b/api/api_sources/src/migrations/20200811120312_stagingTable.js new file mode 100644 index 000000000..3223f4dc2 --- /dev/null +++ b/api/api_sources/src/migrations/20200811120312_stagingTable.js @@ -0,0 +1,9 @@ + +exports.up = async (knex) { + await knex.raw(` `); + +}; + +exports.down = async (knex) { + await knex.raw(` `); +}; diff --git a/api/docker-compose.yml b/api/docker-compose.yml index e676b3928..f48e27555 100755 --- a/api/docker-compose.yml +++ b/api/docker-compose.yml @@ -110,7 +110,7 @@ services: networks: local-network: driver: bridge - name: ${PROJECT_NAME}-${TAG}-network + # name: ${PROJECT_NAME}-${TAG}-network volumes: postgres: name: ${PROJECT_NAME}-${TAG}-vol-postgres From 8582c59db8510496193e71abda8b0cdc7d9e5735 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Tue, 11 Aug 2020 12:40:33 -0700 Subject: [PATCH 005/194] 628: New observation migration for original api - Testing data - Testing script --- api-mobile/test/observation-fake.json | 77 +++++++++ api-mobile/test/observation.sh | 5 + .../ActivityIncomingData.sql | 33 ++++ ...tionSchema-mobileInception-20200732-up.sql | 150 ++++++++++++++++++ 4 files changed, 265 insertions(+) create mode 100644 api-mobile/test/observation-fake.json create mode 100644 api-mobile/test/observation.sh create mode 100644 api/api_sources/schema-migration-sql/ActivityIncomingDataSchema/ActivityIncomingData.sql create mode 100644 api/api_sources/schema-migration-sql/ObservationSchema/ObservationSchema-mobileInception-20200732-up.sql diff --git a/api-mobile/test/observation-fake.json b/api-mobile/test/observation-fake.json new file mode 100644 index 000000000..fc9f1f9a0 --- /dev/null +++ b/api-mobile/test/observation-fake.json @@ -0,0 +1,77 @@ +{ + "data": { + "ObservationData": { + "access_description": "Quos dolor blanditiis perferendis. Nesciunt ipsum reprehenderit. Numquam quasi exercitationem et ut quis ex facere eius. Exercitationem voluptatem ducimus quo dolor saepe ut est. Et porro animi labore alias.", + "aquatic_ind": true, + "bec_zone": null, + "biological_ind": true, + "created_at": "2020-06-24T17:29:55.53743", + "created_by_user_id": 1, + "early_detection_rapid_resp_ind": false, + "elevation_metes": 5, + "flnro_district": null, + "flowering": false, + "general_comment": "Non tempore itaque dignissimos corporis est. Qui sit molestias enim.", + "hex_id": null, + "hex_sub_id": null, + "ipma": "jfkdsljfklds", + "jurisdiction_code_id": 19, + "legacy_site_ind": false, + "moti_district": null, + "negative_occurance_id": false, + "observation_aspect_code_id": 6, + "observation_date": "2020-01-24", + "observation_geometry_code_id": 1, + "observation_proposed_action_code_id": 9, + "observation_slope_code_id": 6, + "observation_type_code_id": 13, + "observer_first_name": "facilis", + "observer_last_name": "nostrum", + "ownership": "Private", + "paper_id_primary": "1", + "paper_id_secondary": "1", + "photo_indicator": false, + "range_unit_number": "possimus", + "raw_albers_x": null, + "raw_albers_y": null, + "raw_latitude": 52.543534, + "raw_longitude": -135.4328492, + "raw_utm_easting": null, + "raw_utm_northing": null, + "raw_utm_zone": null, + "regional_district": null, + "research_detection_ind": false, + "riso": null, + "sample_identifier": "aut", + "sample_taken_ind": false, + "soil_texture_code_id": 5, + "space_geom_id": 627, + "special_care_ind": false, + "species_agency_code_id": 17, + "species_density_code_id": 4, + "species_distribution_code_id": 9, + "species_id": 152, + "specific_use_code_id": 9, + "total_area": 20000, + "updated_at": "2020-06-24T17:29:55.53743", + "updated_by_user_id": 1, + "well_ind": false, + "well_proximity": 20000, + "well_tag": 1234 + } + }, + "date": "2014-01-01T23:28:56.782Z", + "locationAndGeometry": { + "type": "FeatureCollection", + "features": [{ + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [-125.6, 48.3] + }, + "properties": {} + }] + }, + "subType": "Invasive Terrestrial Plant", + "type": "Observation" +} diff --git a/api-mobile/test/observation.sh b/api-mobile/test/observation.sh new file mode 100644 index 000000000..b657f8260 --- /dev/null +++ b/api-mobile/test/observation.sh @@ -0,0 +1,5 @@ +echo $1 +curl --location --request POST 'localhost:3002/api/activity' \ +-d @./observation-fake.json +--header 'Authorization: Bearer '${1} \ +--header 'Content-Type: application/json' \ \ No newline at end of file diff --git a/api/api_sources/schema-migration-sql/ActivityIncomingDataSchema/ActivityIncomingData.sql b/api/api_sources/schema-migration-sql/ActivityIncomingDataSchema/ActivityIncomingData.sql new file mode 100644 index 000000000..7a6dc5dbb --- /dev/null +++ b/api/api_sources/schema-migration-sql/ActivityIncomingDataSchema/ActivityIncomingData.sql @@ -0,0 +1,33 @@ +-- ### Creating Table: activity_incoming_data ### -- + + +CREATE TABLE activity_incoming_data (); +COMMENT ON TABLE activity_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; + +ALTER TABLE activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; +COMMENT ON COLUMN activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; + +ALTER TABLE activity_incoming_data ADD COLUMN activity_id INTEGER NOT NULL CHECK (activity_id > 0); +COMMENT ON COLUMN activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; + +ALTER TABLE activity_incoming_data ADD COLUMN version INTEGER NULL; +COMMENT ON COLUMN activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; + +ALTER TABLE activity_incoming_data ADD COLUMN type VARCHAR(20) NULL; +COMMENT ON COLUMN activity_incoming_data.type IS 'Type of record'; +CREATE index type_idx on activity_incoming_data (type); + +ALTER TABLE activity_incoming_data ADD COLUMN sub_type VARCHAR(20) NULL; +COMMENT ON COLUMN activity_incoming_data.sub_type IS 'Sub Type of record'; +CREATE index sub_type_idx on activity_incoming_data (sub_type); + +ALTER TABLE activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); +COMMENT ON COLUMN activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; + +ALTER TABLE activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,4326) CHECK (st_isValid(geom)); +COMMENT ON COLUMN activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; +CREATE index activity_incoming_data_gist on activity_incoming_data using gist ("geom"); + +ALTER TABLE activity_incoming_data ADD COLUMN activity_payload JSONB; +COMMENT ON COLUMN activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; + diff --git a/api/api_sources/schema-migration-sql/ObservationSchema/ObservationSchema-mobileInception-20200732-up.sql b/api/api_sources/schema-migration-sql/ObservationSchema/ObservationSchema-mobileInception-20200732-up.sql new file mode 100644 index 000000000..1d4671a01 --- /dev/null +++ b/api/api_sources/schema-migration-sql/ObservationSchema/ObservationSchema-mobileInception-20200732-up.sql @@ -0,0 +1,150 @@ +-- ## Changing table: observation +-- ## Version: mobileInception +-- ## Info: None +-- ## Adding New Columns ## -- + +/*select * +from observation +order by observation_id desc +limit 1;*/ + +/*select * +from observation_geometry_code +limit 1;*/ + +-- ## Adding Column hex_id on table observation +ALTER TABLE observation ADD COLUMN hex_id BIGINT NULL; +COMMENT ON COLUMN observation.hex_id IS 'Calculated from the geometry (albers)'; +-- ## -- + +-- ## Adding Column hex_sub_id on table observation +ALTER TABLE observation ADD COLUMN hex_sub_id BIGINT NULL; +COMMENT ON COLUMN observation.hex_sub_id IS 'Calculated from the geometry (albers)'; +-- ## -- + +-- ## Adding Column total_area on table observation +ALTER TABLE observation ADD COLUMN total_area DOUBLE PRECISION NULL; +COMMENT ON COLUMN observation.total_area IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Adding Column negative_occurance_id on table observation +ALTER TABLE observation ADD COLUMN negative_occurance_id BOOLEAN NOT NULL DEFAULT FALSE; +COMMENT ON COLUMN observation.negative_occurance_id IS 'The observation is for absence of the species'; +-- ## -- + +-- ## Adding Column paper_id_primary on table observation +ALTER TABLE observation ADD COLUMN paper_id_primary VARCHAR(50) NULL; +COMMENT ON COLUMN observation.paper_id_primary IS 'General user identifier'; +-- ## -- + +-- ## Adding Column paper_id_secondary on table observation +ALTER TABLE observation ADD COLUMN paper_id_secondary VARCHAR(50) NULL; +COMMENT ON COLUMN observation.paper_id_secondary IS 'General user identifier'; +-- ## -- + +-- ## Adding Column elevation_metes on table observation +ALTER TABLE observation ADD COLUMN elevation_metes INTEGER NULL; +COMMENT ON COLUMN observation.elevation_metes IS 'Look up from BC Warehouse layer (metres)'; +-- ## -- + +-- ## Adding Column well_proximity on table observation +ALTER TABLE observation ADD COLUMN well_proximity INTEGER NULL; +COMMENT ON COLUMN observation.well_proximity IS 'Calculated from proximity measer (metres)'; +-- ## -- + +-- ## Adding Column well_tag on table observation +ALTER TABLE observation ADD COLUMN well_tag INTEGER NULL; +COMMENT ON COLUMN observation.well_tag IS 'Look up from BC warehouse layer'; +-- ## -- + +-- ## Adding Column observation_geometry_code_id on table observation +ALTER TABLE observation ADD COLUMN observation_geometry_code_id INTEGER NULL + REFERENCES observation_geometry_code(observation_geometry_code_id) + ON DELETE SET NULL; +COMMENT ON COLUMN observation.observation_geometry_code_id IS 'Foreign key reference to observation geometry table'; +-- ## -- + +-- ## Adding Column photo_indicator on table observation +ALTER TABLE observation ADD COLUMN photo_indicator BOOLEAN NOT NULL DEFAULT FALSE; +COMMENT ON COLUMN observation.photo_indicator IS 'Indicates a photo was captured'; +-- ## -- + +-- ## Adding Column flowering on table observation +ALTER TABLE observation ADD COLUMN flowering BOOLEAN NOT NULL DEFAULT FALSE; +COMMENT ON COLUMN observation.flowering IS 'Indicates the plant is flowering'; +-- ## -- + +-- ## Adding Column bec_zone on table observation +ALTER TABLE observation ADD COLUMN bec_zone VARCHAR(30) NULL; +COMMENT ON COLUMN observation.bec_zone IS 'Look up from BC warehouse layer'; +-- ## -- + +-- ## Adding Column riso on table observation +ALTER TABLE observation ADD COLUMN riso VARCHAR(30) NULL; +COMMENT ON COLUMN observation.riso IS 'Look up from BC warehouse layer'; +-- ## -- + +-- ## Adding Column ipma on table observation +ALTER TABLE observation ADD COLUMN ipma VARCHAR(30) NULL; +COMMENT ON COLUMN observation.ipma IS 'Look up from BC warehouse layer'; +-- ## -- + +-- ## Adding Column ownership on table observation +ALTER TABLE observation ADD COLUMN ownership VARCHAR(30) NULL; +COMMENT ON COLUMN observation.ownership IS 'Look up from BC warehouse layer'; +-- ## -- + +-- ## Adding Column regional_district on table observation +ALTER TABLE observation ADD COLUMN regional_district VARCHAR(30) NULL; +COMMENT ON COLUMN observation.regional_district IS 'Look up from BC warehouse layer'; +-- ## -- + +-- ## Adding Column flnro_district on table observation +ALTER TABLE observation ADD COLUMN flnro_district VARCHAR(30) NULL; +COMMENT ON COLUMN observation.flnro_district IS 'Look up from BC warehouse layer'; +-- ## -- + +-- ## Adding Column moti_district on table observation +ALTER TABLE observation ADD COLUMN moti_district VARCHAR(30) NULL; +COMMENT ON COLUMN observation.moti_district IS 'Look up from BC warehouse layer'; +-- ## -- + + +-------------------------------- Geometry columns ------------------------------------ + +-- ## Adding Column raw_longitude on table observation +ALTER TABLE observation ADD COLUMN raw_longitude DOUBLE PRECISION NULL; +COMMENT ON COLUMN observation.raw_longitude IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Adding Column raw_latitude on table observation +ALTER TABLE observation ADD COLUMN raw_latitude DOUBLE PRECISION NULL; +COMMENT ON COLUMN observation.raw_latitude IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Adding Column raw_utm_zone on table observation +ALTER TABLE observation ADD COLUMN raw_utm_zone INTEGER NULL; +COMMENT ON COLUMN observation.raw_utm_zone IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Adding Column raw_utm_easting on table observation +ALTER TABLE observation ADD COLUMN raw_utm_easting DOUBLE PRECISION NULL; +COMMENT ON COLUMN observation.raw_utm_easting IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Adding Column raw_utm_northing on table observation +ALTER TABLE observation ADD COLUMN raw_utm_northing DOUBLE PRECISION NULL; +COMMENT ON COLUMN observation.raw_utm_northing IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Adding Column raw_albers_x on table observation +ALTER TABLE observation ADD COLUMN raw_albers_x DOUBLE PRECISION NULL; +COMMENT ON COLUMN observation.raw_albers_x IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Adding Column raw_albers_y on table observation +ALTER TABLE observation ADD COLUMN raw_albers_y DOUBLE PRECISION NULL; +COMMENT ON COLUMN observation.raw_albers_y IS 'Calculated from the geometry (square meters)'; +-- ## -- + +-- ## Updating observation ## -- From e6fb2f4c4595f5cc8b904e2683671a4270c2d94f Mon Sep 17 00:00:00 2001 From: Mike Wells Date: Tue, 11 Aug 2020 13:52:36 -0700 Subject: [PATCH 006/194] 776: update knex migrations - add sample .env and command to set up new and old api with db creds that will work - Move knex to new api dir and get ActivityIncoming sql into a knex migration. Add new sample .env and shell script to automate synching up the different api dirs to play nice - add location and geometry inputs to create activity interface --- api-mobile/.env.sample | 35 + api-mobile/knexfile.js | 79 + api-mobile/package-lock.json | 1975 ++++++++++++++--- api-mobile/package.json | 3 +- api-mobile/setup_env.sh | 3 + .../migrations/20200811120312_stagingTable.js | 46 + api-mobile/src/swagger/swagger.yaml | 23 + 7 files changed, 1795 insertions(+), 369 deletions(-) create mode 100644 api-mobile/.env.sample create mode 100644 api-mobile/knexfile.js create mode 100644 api-mobile/setup_env.sh create mode 100644 api-mobile/src/database/migrations/20200811120312_stagingTable.js diff --git a/api-mobile/.env.sample b/api-mobile/.env.sample new file mode 100644 index 000000000..3e8b5902b --- /dev/null +++ b/api-mobile/.env.sample @@ -0,0 +1,35 @@ +# ------------------------------------------------------------------------------ +# Project Details +# ------------------------------------------------------------------------------ +PROJECT_NAME=lucy +ENVIRONMENT=dev +TAG=dev +API_PORT=7070 +BUILD_TARGET=base +APP_VERSION=0-dev.1 +APP_PORT=3033 + +# ------------------------------------------------------------------------------ +# Postgrest Database +# ------------------------------------------------------------------------------ +DB_HOST=db +DB_HOST_FOR_LOCAL_API=localhost +DB_USER=hello +DB_PASS=world +DB_PORT=5432 +DB_DATABASE=lucy + + +# ------------------------------------------------------------------------------ +# KeyClock URLS +# ------------------------------------------------------------------------------ +APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs + +# ------------------------------------------------------------------------------ +# Mailer Config +# ------------------------------------------------------------------------------ +APP_EMAIL_SENDER= +APP_EMAIL_SENDER_PWD= +APP_EMAIL_TEST_RECEIVER= +APP_REPORT_RECEIVER= diff --git a/api-mobile/knexfile.js b/api-mobile/knexfile.js new file mode 100644 index 000000000..ea6db946b --- /dev/null +++ b/api-mobile/knexfile.js @@ -0,0 +1,79 @@ +// Update with your config settings. + +const dotenv = require('dotenv'); + +const env = process.env.NODE_ENV || 'development'; + +if (env === 'development') { + dotenv.config(); +} + +module.exports = { + test: { + client: 'postgresql', + connection: { + host: process.env.DB_HOST_FOR_LOCAL_API, + port: process.env.DB_PORT || 5432, + database: process.env.DB_DATABASE, + user: process.env.DB_USER, + password: process.env.DB_PASS, + }, + pool: { + min: 2, + max: 10, + }, + migrations: { + // stub: './config/knex-migration-stub.js', + tableName: 'migration', + directory: 'src/database/migrations', + }, + }, + development: { + client: 'postgresql', + connection: { + host: process.env.DB_HOST_FOR_LOCAL_API, + port: process.env.DB_PORT || 5432, + database: process.env.DB_DATABASE, + user: process.env.DB_USER, + password: process.env.DB_PASS, + }, + pool: { + min: 2, + max: 10, + }, + migrations: { + // stub: './config/knex-migration-stub.js', + tableName: 'migration', + directory: 'src/database/migrations', + }, + seeds: { + // stub: './config/knex-migration-stub.js', + tableName: 'seed', + directory: 'src/database/seeds', + }, + }, + + production: { + client: 'postgresql', + connection: { + host: process.env.DB_HOST_FOR_LOCAL_API, + port: process.env.DB_PORT || 5432, + database: process.env.DB_DATABASE, + user: process.env.DB_USER, + password: process.env.DB_PASS, + }, + pool: { + min: 2, + max: 10, + }, + migrations: { + tableName: 'migration', + directory: 'src/database/migrations', + }, + seeds: { + // stub: './config/knex-migration-stub.js', + tableName: 'seed', + directory: 'src/database/seeds', + }, + }, +}; diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 7fbd0cf73..2744cdca3 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -7,7 +7,7 @@ "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -16,13 +16,13 @@ "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=", "dev": true }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -33,7 +33,7 @@ "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "integrity": "sha1-KQ0I97OBuPlGB9yPRxoSxnX52zE=", "requires": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -43,7 +43,7 @@ "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", "requires": { "@types/connect": "*", "@types/node": "*" @@ -52,18 +52,18 @@ "@types/chai": { "version": "4.2.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", - "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", + "integrity": "sha1-YWCuRUzYna4FrcO7l5l/SItgggE=", "dev": true }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=" }, "@types/connect": { "version": "3.4.33", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "integrity": "sha1-MWEMkB7KVzuHE8MzCrxua59YhUY=", "requires": { "@types/node": "*" } @@ -71,13 +71,13 @@ "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=", "dev": true }, "@types/express": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "integrity": "sha1-QgRb5kdWNtmAE2nNRBjvZc2w3Vk=", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -88,7 +88,7 @@ "@types/express-jwt": { "version": "0.0.42", "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", + "integrity": "sha1-TwTh+t+dGHJZUNwEGAikpK339a4=", "requires": { "@types/express": "*", "@types/express-unless": "*" @@ -97,7 +97,7 @@ "@types/express-serve-static-core": { "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", + "integrity": "sha1-LXs03P0l7GY8JchddmCPiySWZ/E=", "requires": { "@types/node": "*", "@types/qs": "*", @@ -107,7 +107,7 @@ "@types/express-unless": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", + "integrity": "sha1-T0QLkF5Cu/Uzgrgge8M33F/5/R8=", "requires": { "@types/express": "*" } @@ -115,7 +115,7 @@ "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "integrity": "sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=", "dev": true }, "@types/json5": { @@ -127,7 +127,7 @@ "@types/jsonwebtoken": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", - "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", + "integrity": "sha1-JTHV4wCAOqYyebIywBSs94DJgcU=", "dev": true, "requires": { "@types/node": "*" @@ -136,18 +136,18 @@ "@types/memory-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", + "integrity": "sha1-AMr11zfkrMEA9bmBUsY17avbANc=", "dev": true }, "@types/mime": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=" }, "@types/mocha": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", + "integrity": "sha1-gTtP+N2ZINZS4ea0Uf8eNxpFYdI=", "dev": true }, "@types/node": { @@ -158,7 +158,7 @@ "@types/pg": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", - "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", + "integrity": "sha1-Fc/P2TAPlP1E5hkaGwuhjS3iCfY=", "dev": true, "requires": { "@types/node": "*", @@ -168,23 +168,23 @@ "@types/pg-types": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", - "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", + "integrity": "sha1-Huu+YrZ3L8x1wYlXqQ+TPRVeAFs=", "dev": true }, "@types/qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" + "integrity": "sha1-pZ6FHBuhbAUT6hI4MN1jmgoVy2o=" }, "@types/range-parser": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=" }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "integrity": "sha1-PSXZQaGEFdOrCS3vhG4TWgi7z1M=", "requires": { "@types/express-serve-static-core": "*", "@types/mime": "*" @@ -193,7 +193,7 @@ "@types/swagger-tools": { "version": "0.10.6", "resolved": "https://registry.npmjs.org/@types/swagger-tools/-/swagger-tools-0.10.6.tgz", - "integrity": "sha512-6d44Amrtm0vOgv6OtGCN6U4gRxJ9WRvwP1yMADUh8q6Cess3fyONaA2nh86i+ojAQvq5Ht8OYdN+AeXDhu3qIw==", + "integrity": "sha1-IWiii7Dh19kKtz8SbqP9IjMDhBE=", "dev": true, "requires": { "@types/connect": "*" @@ -202,13 +202,13 @@ "@types/yamljs": { "version": "0.2.31", "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", - "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", + "integrity": "sha1-saYgsRXJbbezv98M9UruDFcTkkU=", "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", + "integrity": "sha1-0UTEmpoP/o3XBLsXnCQ992wRG8k=", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "3.7.1", @@ -222,7 +222,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -231,13 +231,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true } } @@ -245,7 +245,7 @@ "@typescript-eslint/experimental-utils": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", + "integrity": "sha1-qwNsqu1Mhw0iUx1B+TUvMUc2TWE=", "dev": true, "requires": { "@types/json-schema": "^7.0.3", @@ -258,7 +258,7 @@ "@typescript-eslint/parser": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", + "integrity": "sha1-XZzOyxFtEtnGBz6YYcV8mxqogSg=", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", @@ -271,13 +271,13 @@ "@typescript-eslint/types": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", + "integrity": "sha1-kDdWBrL9c8EiT+njl+4VHij6Hgw=", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", + "integrity": "sha1-zh/70PpT801M6FGno2TjkkMvbrM=", "dev": true, "requires": { "@typescript-eslint/types": "3.7.1", @@ -293,7 +293,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -302,13 +302,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true } } @@ -316,7 +316,7 @@ "@typescript-eslint/visitor-keys": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", + "integrity": "sha1-uQGR50797mVr6MWjD0KO0W3aRtE=", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -325,7 +325,7 @@ "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -340,13 +340,13 @@ "acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", "dev": true }, "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -358,13 +358,13 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", "dev": true }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=" }, "ansi-styles": { "version": "3.2.1", @@ -383,7 +383,7 @@ "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -398,25 +398,55 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "integrity": "sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=" }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "requires": { "sprintf-js": "~1.0.2" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, "array.prototype.map": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "integrity": "sha1-mkFZ9BZFiiPpSDB43hEGsu9o+Ow=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -433,7 +463,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", "requires": { "safer-buffer": "~2.1.0" } @@ -441,13 +471,18 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", "dev": true }, "async": { @@ -460,10 +495,15 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", "requires": { "follow-redirects": "1.5.10" } @@ -483,21 +523,71 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", "dev": true }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=" }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -514,7 +604,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -522,14 +612,14 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" } } }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -538,7 +628,7 @@ "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -547,7 +637,7 @@ "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", "dev": true }, "buffer-equal-constant-time": { @@ -558,7 +648,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" }, "buffer-shims": { "version": "1.0.0", @@ -568,7 +658,7 @@ "buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + "integrity": "sha1-zn64Gjj3gp2wnIc/L7t5LAyY7AQ=" }, "busboy": { "version": "0.2.14", @@ -605,23 +695,39 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "integrity": "sha1-dgqnLPION5XoSxKHfODoNzeqKeU=", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -646,7 +752,7 @@ "chance": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", - "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", + "integrity": "sha1-lnoKEp4PNC98Zc1dIPWuhwomuK8=", "dev": true }, "check-error": { @@ -658,7 +764,7 @@ "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "integrity": "sha1-yE5bPRjZpNd1WP70ZrG/FrvrNFA=", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -671,10 +777,40 @@ "readdirp": "~3.3.0" } }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -696,21 +832,26 @@ "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" + }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "integrity": "sha1-xQSRR51MG9rtLJztMs98fcI2D3g=" }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "integrity": "sha1-4BKJUNCCuGohaFgHlqCqXWxo2MU=", "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -719,7 +860,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", "requires": { "delayed-stream": "~1.0.0" } @@ -727,12 +868,12 @@ "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=" }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" }, "concat-map": { "version": "0.0.1", @@ -742,7 +883,7 @@ "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", "requires": { "safe-buffer": "5.1.2" } @@ -750,12 +891,12 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" }, "cookie-signature": { "version": "1.0.6", @@ -765,12 +906,17 @@ "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" }, "core-util-is": { "version": "1.0.2", @@ -798,13 +944,13 @@ "database-cleaner": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", - "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", + "integrity": "sha1-MGwAFb0uuWjQimvmok/lLdkf1lY=", "dev": true }, "db-migrate": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", - "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", + "integrity": "sha1-ZWdkrYyIiPai6TeGafppGyiVjqI=", "requires": { "balanced-match": "^1.0.0", "bluebird": "^3.1.1", @@ -935,7 +1081,7 @@ "db-migrate-pg": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", - "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", + "integrity": "sha1-ZkNtutC6OYwFhR0gD3aNtrLlvBo=", "requires": { "bluebird": "^3.1.1", "db-migrate-base": "^2.3.0", @@ -956,12 +1102,12 @@ "db-migrate-shared": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", - "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" + "integrity": "sha1-YSW+GzpeZhIp/HXVDIX2w/+tvt4=" }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "requires": { "ms": "2.0.0" } @@ -971,10 +1117,15 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -988,7 +1139,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" }, "deep-is": { "version": "0.1.3", @@ -999,12 +1150,49 @@ "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", "dev": true, "requires": { "object-keys": "^1.0.12" } }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1020,6 +1208,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, "dicer": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", @@ -1060,7 +1253,7 @@ "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", "dev": true, "requires": { "esutils": "^2.0.2" @@ -1069,17 +1262,17 @@ "dotenv": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" + "integrity": "sha1-pTF0Wb09eauIz/bkQFemo/ux/O8=" }, "dottie": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + "integrity": "sha1-zJHAcmzjoFTr8RxV+8kqfyZt0VQ=" }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", "requires": { "safe-buffer": "^5.0.1" } @@ -1092,12 +1285,12 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" }, "enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + "integrity": "sha1-+d2S7C1vS7wNXR5k4h1hzUZl58I=" }, "encodeurl": { "version": "1.0.2", @@ -1107,7 +1300,7 @@ "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "integrity": "sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -1116,7 +1309,7 @@ "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -1125,7 +1318,7 @@ "es-abstract": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "integrity": "sha1-kUIHFweFeyysx7iey2cDFsPi1So=", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -1144,13 +1337,13 @@ "es-array-method-boxes-properly": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "integrity": "sha1-hz8+hEGN5O4Zxb51KZCy5EcY0J4=", "dev": true }, "es-get-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "integrity": "sha1-u5itnW1jsxqs3I+J1dDuV7y1tMg=", "dev": true, "requires": { "es-abstract": "^1.17.4", @@ -1165,7 +1358,7 @@ "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "integrity": "sha1-ivHkwSISRMxiRZ+vOJQNTmRKVyM=", "dev": true } } @@ -1173,7 +1366,7 @@ "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -1195,7 +1388,7 @@ "eslint": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", + "integrity": "sha1-nsv61iIW0iO4Ksn/6n7zREZx0TU=", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -1285,7 +1478,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -1309,7 +1502,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "path-key": { @@ -1321,7 +1514,7 @@ "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true }, "shebang-command": { @@ -1342,7 +1535,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", "dev": true }, "supports-color": { @@ -1368,7 +1561,7 @@ "eslint-config-prettier": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", + "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -1377,7 +1570,7 @@ "eslint-plugin-prettier": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "integrity": "sha1-Foq0MVTi6lfbmSos0JfIKBcfdcI=", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -1386,7 +1579,7 @@ "eslint-scope": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -1396,7 +1589,7 @@ "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -1405,13 +1598,18 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", "dev": true }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" + }, "espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", + "integrity": "sha1-HCY9W1E9utCsMMSZG5OsNU6UjWk=", "dev": true, "requires": { "acorn": "^7.3.1", @@ -1422,12 +1620,12 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -1444,7 +1642,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -1453,13 +1651,13 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", "dev": true }, "etag": { @@ -1467,10 +1665,58 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -1507,7 +1753,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -1515,14 +1761,92 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" } } }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } }, "eyes": { "version": "0.1.8", @@ -1532,7 +1856,7 @@ "factory-girl": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", - "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", + "integrity": "sha1-N4yqvgOqx7Mn1H2eKLTwLO0MPAs=", "dev": true, "requires": { "babel-runtime": "^6.11.6", @@ -1542,19 +1866,19 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=", "dev": true }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", "dev": true }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=", "dev": true }, "fast-levenshtein": { @@ -1566,17 +1890,17 @@ "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + "integrity": "sha1-EkqohYmSYfaK7bQqfAgN6dpgh0M=" }, "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" + "integrity": "sha1-P/tjlUU+Pz7/+FBATwpZtnR/X0E=" }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", "dev": true, "requires": { "flat-cache": "^2.0.1" @@ -1585,7 +1909,7 @@ "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -1603,7 +1927,7 @@ "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -1617,7 +1941,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -1627,17 +1951,45 @@ "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + }, "flat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "integrity": "sha1-CQvsiwXjnLowl0fx1YjwTbr5jbI=", "dev": true, "requires": { "is-buffer": "~2.0.3" @@ -1654,7 +2006,7 @@ "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", "dev": true, "requires": { "flatted": "^2.0.0", @@ -1665,7 +2017,7 @@ "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", "dev": true, "requires": { "glob": "^7.1.3" @@ -1676,22 +2028,35 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", "dev": true }, "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + "integrity": "sha1-JsrYAXlnrqhzG8QpYdBKPVmIrMw=" }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", "requires": { "debug": "=3.1.0" } }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "^1.0.1" + } + }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -1705,13 +2070,21 @@ "formidable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" + "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=" }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -1732,7 +2105,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", "dev": true }, "functional-red-black-tree": { @@ -1744,7 +2117,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=" }, "get-func-name": { "version": "2.0.0", @@ -1755,13 +2128,23 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", "dev": true }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getopts": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", + "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1774,22 +2157,44 @@ "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", "dev": true, "requires": { "is-glob": "^4.0.1" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", "dev": true }, "graphlib": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "integrity": "sha1-V2HUFHN4cAhMkux7XbywWSydNdo=", "requires": { "lodash": "^4.17.15" } @@ -1797,13 +2202,13 @@ "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", "dev": true }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -1818,25 +2223,80 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", "dev": true }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", "dev": true }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -1853,7 +2313,7 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -1861,13 +2321,13 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", "dev": true }, "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1902,17 +2362,49 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=", "dev": true }, "is-arrayish": { @@ -1924,40 +2416,83 @@ "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", "dev": true, "requires": { "binary-extensions": "^2.0.0" } }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", "dev": true }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", "dev": true }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=" }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", "requires": { "is-extglob": "^2.1.1" } @@ -1965,13 +2500,13 @@ "is-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "integrity": "sha1-Ug2vxDB7uOvDO4E95c58lADWRKE=", "dev": true }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", "dev": true }, "is-plain-obj": { @@ -1980,6 +2515,14 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, "is-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", @@ -1989,27 +2532,48 @@ "has-symbols": "^1.0.1" } }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, "is-set": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "integrity": "sha1-0WBK/asXJJhtMAkVdfVJRdp+X0M=", "dev": true }, "is-string": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=", "dev": true }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", "dev": true, "requires": { "has-symbols": "^1.0.1" } }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2018,8 +2582,12 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "isstream": { "version": "0.1.2", @@ -2029,13 +2597,13 @@ "iterate-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "integrity": "sha1-FpOnaMHd15yWkFFFlFPwgv6C6fY=", "dev": true }, "iterate-value": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "integrity": "sha1-k1EVvTfQBqUgRlNevI0H6ckzf1c=", "dev": true, "requires": { "es-get-iterator": "^1.0.2", @@ -2045,13 +2613,13 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", "dev": true }, "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -2060,13 +2628,13 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", "dev": true }, "json-refs": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", - "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", + "integrity": "sha1-EIn0rPJjoxUseQR5SFGVzWRJ6FU=", "requires": { "commander": "~4.1.1", "graphlib": "^2.1.8", @@ -2081,14 +2649,14 @@ "commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + "integrity": "sha1-n9YCvZNilOnp70aj9NaWQESxgGg=" } } }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", "dev": true }, "json-stable-stringify-without-jsonify": { @@ -2106,7 +2674,7 @@ "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "integrity": "sha1-AOceC431TCEhofJhN98igGc7zA0=", "requires": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -2123,14 +2691,14 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" } } }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -2140,7 +2708,7 @@ "jwks-rsa": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.8.1.tgz", - "integrity": "sha512-CcE8ypsATHwGmzELwzeFjLzPBXTXTrMmDYbn92LTQwYsZdOedp+ZIuYTofUdrWreu8CKRuXmhk17+6/li2sR6g==", + "integrity": "sha1-N1xipQxMqAWtW9aCwSyKaV3hPd8=", "requires": { "@types/express-jwt": "0.0.42", "axios": "^0.19.2", @@ -2154,7 +2722,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "requires": { "ms": "^2.1.1" } @@ -2162,38 +2730,115 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" } } }, "jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", "requires": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "knex": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.21.4.tgz", + "integrity": "sha512-vUrR4mJBKWJPouV9C7kqvle9cTpiuuzBWqrQXP7bAv+Ua9oeKkEhhorJwArzcjVrVBojZYPMMtNVliW9B00sTA==", + "requires": { + "colorette": "1.2.1", + "commander": "^5.1.0", + "debug": "4.1.1", + "esm": "^3.2.25", + "getopts": "2.2.5", + "inherits": "~2.0.4", + "interpret": "^2.2.0", + "liftoff": "3.1.0", + "lodash": "^4.17.19", + "mkdirp": "^1.0.4", + "pg-connection-string": "2.3.0", + "tarn": "^3.0.0", + "tildify": "2.0.0", + "uuid": "^7.0.3", + "v8flags": "^3.2.0" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==" + } + } + }, "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + "integrity": "sha1-4sVwo4ADiPtEQH6FFTHB1nCwYbM=" }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=", "dev": true, "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" } }, "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" }, "load-json-file": { "version": "4.0.0", @@ -2218,7 +2863,7 @@ "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -2227,7 +2872,7 @@ "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=" }, "lodash._arraypool": { "version": "2.4.1", @@ -2512,7 +3157,7 @@ "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "integrity": "sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q=", "dev": true, "requires": { "chalk": "^2.4.2" @@ -2521,7 +3166,7 @@ "logform": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "integrity": "sha1-QPA20ZFh/Ha2irUP3H/klVREkvI=", "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -2533,7 +3178,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" } } }, @@ -2549,7 +3194,7 @@ "lru-memoizer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", + "integrity": "sha1-XGtDZZx4rQ6eZb+BqeXvHuEJot0=", "requires": { "lodash.clonedeep": "^4.5.0", "lru-cache": "~4.0.0" @@ -2565,7 +3210,28 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=" + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } }, "media-typer": { "version": "0.3.0", @@ -2593,20 +3259,117 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", "requires": { "mime-db": "1.44.0" } @@ -2614,7 +3377,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } @@ -2622,12 +3385,31 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", "requires": { "minimist": "^1.2.5" } @@ -2635,7 +3417,7 @@ "mocha": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.1.tgz", - "integrity": "sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ==", + "integrity": "sha1-HeG6TposlV2WuE5GnXVAhIIjWS0=", "dev": true, "requires": { "ansi-colors": "4.1.1", @@ -2668,13 +3450,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", "dev": true }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", "dev": true, "requires": { "string-width": "^3.1.0", @@ -2685,7 +3467,7 @@ "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", "dev": true, "requires": { "ms": "^2.1.1" @@ -2694,13 +3476,13 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", "dev": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", "dev": true }, "is-fullwidth-code-point": { @@ -2712,7 +3494,7 @@ "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", "dev": true, "requires": { "argparse": "^1.0.7", @@ -2722,7 +3504,7 @@ "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", "dev": true, "requires": { "p-locate": "^3.0.0", @@ -2732,13 +3514,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", "dev": true, "requires": { "p-limit": "^2.0.0" @@ -2753,7 +3535,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -2764,7 +3546,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -2773,13 +3555,13 @@ "strip-json-comments": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "integrity": "sha1-hXE5dakfuHvxswXMp3OV5A0qZKc=", "dev": true }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -2797,7 +3579,7 @@ "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -2808,7 +3590,7 @@ "yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=", "dev": true, "requires": { "cliui": "^5.0.0", @@ -2826,7 +3608,7 @@ "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "dev": true, "requires": { "locate-path": "^3.0.0" @@ -2837,7 +3619,7 @@ "yargs-parser": { "version": "13.1.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -2849,12 +3631,12 @@ "moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + "integrity": "sha1-i/9OPiaiNiIN/j423nVrbrqgEF0=" }, "moment-timezone": { "version": "0.5.31", "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", - "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", + "integrity": "sha1-nEDYxQJvDHq0bto9Y+ScFVFI3gU=", "requires": { "moment": ">= 2.9.0" } @@ -2872,7 +3654,7 @@ "multer": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "integrity": "sha1-Lx9NEtuu66dMs35iPyNL9NPSBXo=", "requires": { "append-field": "^1.0.0", "busboy": "^0.2.11", @@ -2900,7 +3682,25 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } }, "native-promise-only": { "version": "0.8.1", @@ -2921,18 +3721,18 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", "dev": true }, "nock": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", - "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", + "integrity": "sha1-n4HwRJmvaof5xBmgI5ILYj1xURA=", "dev": true, "requires": { "debug": "^4.1.0", @@ -2944,7 +3744,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -2953,7 +3753,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true } } @@ -2966,7 +3766,7 @@ "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -2978,13 +3778,13 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", "dev": true }, "npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "integrity": "sha1-BEdiAqFe4OLiFAgIYb/xKlHZj7o=", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -3003,22 +3803,58 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "integrity": "sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA=", "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", "dev": true }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", "dev": true, "requires": { "define-properties": "^1.1.2", @@ -3027,6 +3863,34 @@ "object-keys": "^1.0.11" } }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -3046,7 +3910,7 @@ "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "integrity": "sha1-4GvBdK7SFO1Y7e3lc7Qzu/gny0U=", "requires": { "fn.name": "1.x.x" } @@ -3054,7 +3918,7 @@ "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -3068,7 +3932,7 @@ "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", "requires": { "p-try": "^2.0.0" } @@ -3076,7 +3940,7 @@ "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -3085,17 +3949,17 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" }, "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + "integrity": "sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ=" }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", "dev": true, "requires": { "callsites": "^3.0.0" @@ -3109,6 +3973,16 @@ "mongodb-uri": ">= 0.9.7" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -3119,15 +3993,25 @@ "json-parse-better-errors": "^1.0.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", "dev": true }, "path-is-absolute": { @@ -3144,7 +4028,7 @@ "path-loader": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", - "integrity": "sha512-CMP0v6S6z8PHeJ6NFVyVJm6WyJjIwFvyz2b0n2/4bKdS/0uZa/9sKUlYZzubrn3zuDRU0zIuEDX9DZYQ2ZI8TA==", + "integrity": "sha1-3T0b1Uy28uZCOvKtM0pBzAvOTPY=", "requires": { "native-promise-only": "^0.8.1", "superagent": "^3.8.3" @@ -3153,7 +4037,20 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" }, "path-to-regexp": { "version": "0.1.7", @@ -3163,7 +4060,7 @@ "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", "dev": true, "requires": { "pify": "^3.0.0" @@ -3178,7 +4075,7 @@ "pg": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", - "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", + "integrity": "sha1-lBODMA047vUey4igGIzsRBq2TYE=", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -3200,27 +4097,27 @@ "pg-connection-string": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", - "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" + "integrity": "sha1-wT/LhMKY0L+puhK0DdbCPZRvVdY=" }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + "integrity": "sha1-lDvUY79bcbQXARX4D478mgwOt4w=" }, "pg-pool": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", - "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" + "integrity": "sha1-X0r8D1gGNlmu76lS02r0n6KLMOA=" }, "pg-protocol": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", - "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" + "integrity": "sha1-KKFJLN4RZG/y0tBr3uQqO6BfEmw=" }, "pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "integrity": "sha1-LQJQ1jZFT3z6O2rgOC/fqAYyVKM=", "requires": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -3240,13 +4137,13 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", "dev": true }, "pidtree": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "integrity": "sha1-7wmsLMBTPfHzJQzPLE02aw0SEUo=", "dev": true }, "pify": { @@ -3260,10 +4157,15 @@ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + "integrity": "sha1-SPj84FT7xpZxmZMpuINLdyZS2C4=" }, "postgres-bytea": { "version": "1.0.0", @@ -3278,7 +4180,7 @@ "postgres-interval": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "integrity": "sha1-tGDILLFYdQd4iBmgaqD//bNURpU=", "requires": { "xtend": "^4.0.0" } @@ -3286,19 +4188,19 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", "dev": true }, "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "integrity": "sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -3312,13 +4214,13 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", "dev": true }, "promise.allsettled": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "integrity": "sha1-1m94+7YA6D6GPYk+mLPUN2qcR8k=", "dev": true, "requires": { "array.prototype.map": "^1.0.1", @@ -3377,13 +4279,13 @@ "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "integrity": "sha1-QM3tqxgIXHkjNOZPCsFyVtOPmkU=", "dev": true }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" @@ -3397,12 +4299,12 @@ "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + "integrity": "sha1-kJCykNH5FyjTwi5UhDykSupatoc=" }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -3411,12 +4313,12 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -3427,7 +4329,7 @@ "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -3471,24 +4373,51 @@ "readdirp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "integrity": "sha1-mERY0ToeQuLp9YQbEp4WLzaa/xc=", "dev": true, "requires": { "picomatch": "^2.0.7" } }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", "dev": true }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", "dev": true }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -3497,26 +4426,45 @@ "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=" }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", "requires": { "path-parse": "^1.0.6" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, "retry-as-promised": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", - "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", + "integrity": "sha1-dp9j1Ta+xHg1SdsHd8tW2t2dhUM=", "requires": { "any-promise": "^1.3.0" } @@ -3529,7 +4477,7 @@ "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", "requires": { "glob": "^7.1.3" } @@ -3537,22 +4485,30 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -3572,7 +4528,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" }, @@ -3587,7 +4543,7 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" } } }, @@ -3647,12 +4603,12 @@ "sequelize-pool": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", - "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" + "integrity": "sha1-yqoMHjJNPCw6OZ/tLHmYlwkl1mg=" }, "serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -3661,7 +4617,7 @@ "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -3674,10 +4630,31 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" }, "shebang-command": { "version": "1.2.0", @@ -3697,7 +4674,7 @@ "shell-quote": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=", "dev": true }, "simple-swizzle": { @@ -3718,12 +4695,12 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=" }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -3739,10 +4716,132 @@ } } }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -3755,15 +4854,20 @@ } } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, "spark-md5": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", - "integrity": "sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig==" + "integrity": "sha1-g6DiVXNPKrTlxGblos/JuiqiEk0=" }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -3773,13 +4877,13 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -3789,17 +4893,25 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", "dev": true }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "integrity": "sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=", "requires": { "through": "2" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -3828,6 +4940,25 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -3841,7 +4972,7 @@ "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3861,7 +4992,7 @@ "string.prototype.padend": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", - "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "integrity": "sha1-3Aj1eoAQ3FwVNVAxj2fhOtu3KsM=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -3871,7 +5002,7 @@ "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -3881,7 +5012,7 @@ "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -3899,7 +5030,7 @@ "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -3913,7 +5044,7 @@ "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "integrity": "sha1-Rg6g29t9WxG8T3jeulZfhqF44Sg=", "requires": { "component-emitter": "^1.2.0", "cookiejar": "^2.1.0", @@ -3959,7 +5090,7 @@ "supertest": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", - "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", + "integrity": "sha1-wiNNvdbcebbxW5nI1ld7kOTOPzY=", "dev": true, "requires": { "methods": "^1.1.2", @@ -3969,7 +5100,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -3986,7 +5117,7 @@ "swagger-tools": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/swagger-tools/-/swagger-tools-0.10.4.tgz", - "integrity": "sha512-VQpijIi8cpB/frUZOZlVpS7U3CrdSAZBfiHu448R1njiNXUnE7heF3Svz3qFBr5SYtaPvaqWpHMbvboirCXVzA==", + "integrity": "sha1-KUmwDKF9oNT5GtdMRAJ94lDE2Ek=", "requires": { "async": "^2.5.0", "body-parser": "1.18.2", @@ -4010,7 +5141,7 @@ "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", "requires": { "lodash": "^4.17.14" } @@ -4035,7 +5166,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -4043,7 +5174,7 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" } } }, @@ -4066,12 +5197,12 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" }, "path-to-regexp": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", - "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" + "integrity": "sha1-Nc5/Mz1WFvHB4b/iZsOrouWy5wQ=" }, "raw-body": { "version": "2.3.2", @@ -4110,14 +5241,14 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" } } }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", "dev": true, "requires": { "ajv": "^6.10.2", @@ -4129,13 +5260,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", "dev": true }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", "dev": true }, "is-fullwidth-code-point": { @@ -4147,7 +5278,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -4158,7 +5289,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -4166,10 +5297,15 @@ } } }, + "tarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.0.tgz", + "integrity": "sha512-PKUnlDFODZueoA8owLehl8vLcgtA8u4dRuVbZc92tspDYZixjJL6TqYOmryf/PfP/EBX+2rgNcrj96NO+RPkdQ==" + }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" }, "text-table": { "version": "0.2.0", @@ -4182,10 +5318,44 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", "dev": true, "requires": { "is-number": "^7.0.0" @@ -4194,7 +5364,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" }, "toposort-class": { "version": "1.0.1", @@ -4209,12 +5379,12 @@ "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk=" }, "ts-mocha": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", - "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", + "integrity": "sha1-8VSbSLRvU9euHcy7JjE8eHmssZA=", "requires": { "ts-node": "7.0.1", "tsconfig-paths": "^3.5.0" @@ -4228,7 +5398,7 @@ "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", "requires": { "arrify": "^1.0.0", "buffer-from": "^1.1.0", @@ -4250,7 +5420,7 @@ "ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "integrity": "sha1-7uA3ZGM7EjTd03+NuewQt17H+40=", "requires": { "arg": "^4.1.0", "diff": "^4.0.1", @@ -4262,7 +5432,7 @@ "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "integrity": "sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=", "optional": true, "requires": { "@types/json5": "^0.0.29", @@ -4291,13 +5461,13 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=", "dev": true }, "tsutils": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", "dev": true, "requires": { "tslib": "^1.8.1" @@ -4306,7 +5476,7 @@ "tunnel-ssh": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", - "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", + "integrity": "sha1-swH3czxz3OoWFkZrnIe2B/SVi0U=", "requires": { "debug": "2.6.9", "lodash.defaults": "^4.1.0", @@ -4316,7 +5486,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -4326,7 +5496,7 @@ "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -4335,19 +5505,19 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", "dev": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", "dev": true }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -4361,17 +5531,69 @@ "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + "integrity": "sha1-mNYApevcOPQMsndSLxLcgA6eJfo=" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", "requires": { "punycode": "^2.1.0" }, @@ -4383,6 +5605,16 @@ } } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4409,18 +5641,26 @@ "uuid": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" + "integrity": "sha1-q3OAhcoi3JqMknJeRZsdUH311uo=" }, "v8-compile-cache": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", "dev": true }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -4430,7 +5670,7 @@ "validator": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", - "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" + "integrity": "sha1-+IETaEc9IXOp2GEVcrWMV4PyI78=" }, "vary": { "version": "1.1.2", @@ -4446,7 +5686,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -4459,7 +5698,7 @@ "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=", "dev": true, "requires": { "string-width": "^1.0.2 || 2" @@ -4480,7 +5719,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -4501,7 +5740,7 @@ "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "integrity": "sha1-rmFyBCyvspeGr6PQnI/4M6t8kXA=", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.1.0", @@ -4517,7 +5756,7 @@ "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + "integrity": "sha1-s6JoXF67ZB094C0WEALGD8n4VyA=" }, "is-stream": { "version": "2.0.0", @@ -4527,7 +5766,7 @@ "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4552,7 +5791,7 @@ "winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "integrity": "sha1-F69RjappDVsuzMqnrPeyDKeSXlk=", "requires": { "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" @@ -4590,13 +5829,13 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", "dev": true }, "workerpool": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "integrity": "sha1-harWf6GiyO+ThqG0NTmQD2HQPVg=", "dev": true }, "wrappy": { @@ -4607,7 +5846,7 @@ "write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -4616,12 +5855,12 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" }, "yallist": { "version": "2.1.2", @@ -4631,7 +5870,7 @@ "yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "integrity": "sha1-3AYL8mdEezn3ME6bK/votafdsDs=", "requires": { "argparse": "^1.0.7", "glob": "^7.0.5" @@ -4640,7 +5879,7 @@ "yargs-unparser": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", - "integrity": "sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA==", + "integrity": "sha1-vUsO4FtMlNBYkpwyywnj/OcdPF8=", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -4653,13 +5892,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", "dev": true }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", "dev": true, "requires": { "string-width": "^3.1.0", @@ -4670,13 +5909,13 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "dev": true, "requires": { "locate-path": "^3.0.0" @@ -4691,7 +5930,7 @@ "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", "dev": true, "requires": { "p-locate": "^3.0.0", @@ -4701,7 +5940,7 @@ "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", "dev": true, "requires": { "p-limit": "^2.0.0" @@ -4716,7 +5955,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -4727,7 +5966,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -4736,7 +5975,7 @@ "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -4747,7 +5986,7 @@ "yargs": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "integrity": "sha1-Ghw+3O0a+yov6jNgS8bR2NaIpBQ=", "dev": true, "requires": { "cliui": "^5.0.0", @@ -4766,7 +6005,7 @@ "yargs-parser": { "version": "15.0.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", - "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "integrity": "sha1-VHhq9AuCDcsvuAJbEbTWWddjI7M=", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -4783,7 +6022,7 @@ "z-schema": { "version": "3.25.1", "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.25.1.tgz", - "integrity": "sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==", + "integrity": "sha1-fhRmO+K5YAPZOKVvZE+4VhZD+34=", "requires": { "commander": "^2.7.1", "core-js": "^2.5.7", @@ -4795,7 +6034,7 @@ "validator": { "version": "10.11.0", "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + "integrity": "sha1-ADEI6m6amHTTHMyeUAaFbM12sig=" } } } diff --git a/api-mobile/package.json b/api-mobile/package.json index ef8a77a6f..6a12ebfe2 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -21,11 +21,12 @@ "dependencies": { "axios": "~0.19.2", "body-parser": "~1.19.0", - "db-migrate-pg": "~1.2.2", "db-migrate": "~0.11.11", + "db-migrate-pg": "~1.2.2", "express": "~4.17.1", "jsonwebtoken": "~8.5.1", "jwks-rsa": "~1.8.1", + "knex": "^0.21.4", "memory-cache": "~0.2.0", "moment": "~2.27.0", "pg": "~8.3.0", diff --git a/api-mobile/setup_env.sh b/api-mobile/setup_env.sh new file mode 100644 index 000000000..edddfd07b --- /dev/null +++ b/api-mobile/setup_env.sh @@ -0,0 +1,3 @@ +cp .env.sample .env +cp .env ../api/.env +cp .env ../api/env_config/env.local diff --git a/api-mobile/src/database/migrations/20200811120312_stagingTable.js b/api-mobile/src/database/migrations/20200811120312_stagingTable.js new file mode 100644 index 000000000..fdfd22b24 --- /dev/null +++ b/api-mobile/src/database/migrations/20200811120312_stagingTable.js @@ -0,0 +1,46 @@ + +exports.up = async (knex) => { + await knex.raw(` + +-- ### Creating Table: activity_incoming_data ### -- + + +CREATE TABLE activity_incoming_data (); +COMMENT ON TABLE activity_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; + +ALTER TABLE activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; +COMMENT ON COLUMN activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; + +ALTER TABLE activity_incoming_data ADD COLUMN activity_id INTEGER NOT NULL CHECK (activity_id > 0); +COMMENT ON COLUMN activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; + +ALTER TABLE activity_incoming_data ADD COLUMN version INTEGER NULL; +COMMENT ON COLUMN activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; + +ALTER TABLE activity_incoming_data ADD COLUMN type VARCHAR(20) NULL; +COMMENT ON COLUMN activity_incoming_data.type IS 'Type of record'; +CREATE index type_idx on activity_incoming_data (type); + +ALTER TABLE activity_incoming_data ADD COLUMN sub_type VARCHAR(20) NULL; +COMMENT ON COLUMN activity_incoming_data.sub_type IS 'Sub Type of record'; +CREATE index sub_type_idx on activity_incoming_data (sub_type); + +ALTER TABLE activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); +COMMENT ON COLUMN activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; + +ALTER TABLE activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,4326) CHECK (st_isValid(geom)); +COMMENT ON COLUMN activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; +CREATE index activity_incoming_data_gist on activity_incoming_data using gist ("geom"); + +ALTER TABLE activity_incoming_data ADD COLUMN activity_payload JSONB; +COMMENT ON COLUMN activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; + + + +`); + +}; + +exports.down = async (knex) => { + await knex.raw(`drop table activity_incoming_data`); +}; diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml index ff793614f..64cb5b6a0 100644 --- a/api-mobile/src/swagger/swagger.yaml +++ b/api-mobile/src/swagger/swagger.yaml @@ -267,6 +267,29 @@ definitions: description: Date in YYYY-MM-DD format locationAndGeometry: type: object + properties: + anchorPointY: + type: integer + anchorPointX: + type: integer + area: + type: integer + geometry: + type: object + jurisdiction: + type: string + agency: + type: string + observer1FirstName: + type: string + observer1LastName: + type: string + locationComment: + type: string + generalComment: + type: string + photoTaken: + type: boolean data: type: object From f9c92620fe7bbb22146d23ac51e7413606fbc85f Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Tue, 11 Aug 2020 14:27:13 -0700 Subject: [PATCH 007/194] 776: update test curl command and add doc --- api-mobile/test/observation.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) mode change 100644 => 100755 api-mobile/test/observation.sh diff --git a/api-mobile/test/observation.sh b/api-mobile/test/observation.sh old mode 100644 new mode 100755 index b657f8260..15d303f0e --- a/api-mobile/test/observation.sh +++ b/api-mobile/test/observation.sh @@ -1,5 +1,4 @@ -echo $1 -curl --location --request POST 'localhost:3002/api/activity' \ --d @./observation-fake.json +# TODO: Assign DB environment variables +curl -X POST -d @./observation-fake.json "localhost:3002/api/activity" \ +--header "Content-Type: application/json" \ --header 'Authorization: Bearer '${1} \ ---header 'Content-Type: application/json' \ \ No newline at end of file From 95d897e9a703296a2e718d6a257c95b148d493a0 Mon Sep 17 00:00:00 2001 From: Mike Wells Date: Thu, 13 Aug 2020 07:54:40 -0700 Subject: [PATCH 008/194] 776: update migrations, update views, add swagger object validation - clean up knex in wrong dir and update activity request spec yaml - add correct search path to staging table migration - adjust char length of activity type and subtype, fix rolback - change activity_id to be serial not unique so it auto increments if none provided - stop using swagger-tools for request validation and use swagger-object-validator instead --- api-mobile/app.ts | 3 +- api-mobile/package-lock.json | 40 +++++++++- api-mobile/package.json | 1 + .../src/controllers/activity-controller.ts | 13 +++ .../migrations/20200811120312_stagingTable.js | 13 ++- api-mobile/src/swagger/swagger.yaml | 2 + api/api_sources/knexfile.js | 79 ------------------- .../migrations/20200811120312_stagingTable.js | 9 --- 8 files changed, 63 insertions(+), 97 deletions(-) delete mode 100644 api/api_sources/knexfile.js delete mode 100644 api/api_sources/src/migrations/20200811120312_stagingTable.js diff --git a/api-mobile/app.ts b/api-mobile/app.ts index d32393785..e79e67554 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -40,11 +40,12 @@ if (API_HOSTNAME !== 'localhost:3002') { swaggerConfig.schemes = ['https']; } + swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { // add base swagger route handling middleware app.use(middleware.swaggerMetadata()); - app.use(middleware.swaggerValidator({ validateResponse: false })); +// app.use(middleware.swaggerValidator({ validateResponse: false })); // add swagger security for authenticated routes app.use( diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 2744cdca3..387be2b47 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -40,6 +40,11 @@ "kuler": "^2.0.0" } }, + "@types/bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha1-osKL4CwIVfUm5DeF+jJvKCQC4pA=" + }, "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", @@ -190,6 +195,11 @@ "@types/mime": "*" } }, + "@types/swagger-schema-official": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.1.tgz", + "integrity": "sha1-xU9998/nBHdKbLI6zjOTd3o0rPA=" + }, "@types/swagger-tools": { "version": "0.10.6", "resolved": "https://registry.npmjs.org/@types/swagger-tools/-/swagger-tools-0.10.6.tgz", @@ -4570,7 +4580,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "requires": { "ms": "^2.1.1" } @@ -4578,17 +4588,17 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=" }, "validator": { "version": "10.11.0", "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + "integrity": "sha1-ADEI6m6amHTTHMyeUAaFbM12sig=" }, "wkx": { "version": "0.5.0", @@ -5114,6 +5124,28 @@ "lodash.clonedeep": "^2.4.1" } }, + "swagger-object-validator": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/swagger-object-validator/-/swagger-object-validator-1.2.2.tgz", + "integrity": "sha512-cI9lVOyzKHXDQY0DwNBNM/DfW6xQzT4sDS3pcjfdLuSYAkOZpmpXGitRI6dkm+xIrONKZz4oNODmrs8rjOoQ3g==", + "requires": { + "@types/bluebird": "3.5.3", + "@types/swagger-schema-official": "2.0.1", + "bluebird": "^3.5.0", + "js-yaml": "3.13.1" + }, + "dependencies": { + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, "swagger-tools": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/swagger-tools/-/swagger-tools-0.10.4.tgz", diff --git a/api-mobile/package.json b/api-mobile/package.json index 6a12ebfe2..9900770b7 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -32,6 +32,7 @@ "pg": "~8.3.0", "qs": "~6.9.4", "sequelize": "~6.3.3", + "swagger-object-validator": "^1.2.2", "swagger-tools": "~0.10.4", "ts-mocha": "~7.0.0", "ts-node": "~8.10.2", diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index bedf5fd27..10e59ed33 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -6,6 +6,9 @@ import { postActivitySQL } from '../queries/activity-queries'; import { getLogger } from '../utils/logger'; import { sendResponse } from '../utils/query-actions'; import { ParameterizedQuery } from '../queries/query-types'; +import * as SwaggerValidator from 'swagger-object-validator'; + + const defaultLog = getLogger('observation-controller'); @@ -29,7 +32,14 @@ exports.authenticatedOptions = async function (args: any, res: any, next: any) { * @returns response containing the newly created activity record. */ exports.authenticatedPost = async function (args: any, res: any, next: any) { + try { + defaultLog.debug({ label: 'authenticatedPost', message: 'params', arguments: args.swagger.params }); + let validator = new SwaggerValidator.Handler('./src/swagger/swagger.yaml') + + validator.validateModel(args.swagger.params.postBody.value, 'ActivityPostBody', (err:any, result: any ) => { + console.log(result.humanReadable()); + }); const data: ActivityPostBody = args.swagger.params.postBody.value; @@ -54,4 +64,7 @@ exports.authenticatedPost = async function (args: any, res: any, next: any) { connection.release(); return sendResponse(res, 200, result); + } catch (error) { + console.log(error.message) + } }; diff --git a/api-mobile/src/database/migrations/20200811120312_stagingTable.js b/api-mobile/src/database/migrations/20200811120312_stagingTable.js index fdfd22b24..862da3029 100644 --- a/api-mobile/src/database/migrations/20200811120312_stagingTable.js +++ b/api-mobile/src/database/migrations/20200811120312_stagingTable.js @@ -2,6 +2,8 @@ exports.up = async (knex) => { await knex.raw(` + set search_path = invasivesbc,public; + -- ### Creating Table: activity_incoming_data ### -- @@ -11,17 +13,17 @@ COMMENT ON TABLE activity_incoming_data IS 'Store all incoming data if valid. Al ALTER TABLE activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; COMMENT ON COLUMN activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; -ALTER TABLE activity_incoming_data ADD COLUMN activity_id INTEGER NOT NULL CHECK (activity_id > 0); +ALTER TABLE activity_incoming_data ADD COLUMN activity_id SERIAL ; COMMENT ON COLUMN activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; ALTER TABLE activity_incoming_data ADD COLUMN version INTEGER NULL; COMMENT ON COLUMN activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; -ALTER TABLE activity_incoming_data ADD COLUMN type VARCHAR(20) NULL; +ALTER TABLE activity_incoming_data ADD COLUMN type VARCHAR(200) NULL; COMMENT ON COLUMN activity_incoming_data.type IS 'Type of record'; CREATE index type_idx on activity_incoming_data (type); -ALTER TABLE activity_incoming_data ADD COLUMN sub_type VARCHAR(20) NULL; +ALTER TABLE activity_incoming_data ADD COLUMN sub_type VARCHAR(200) NULL; COMMENT ON COLUMN activity_incoming_data.sub_type IS 'Sub Type of record'; CREATE index sub_type_idx on activity_incoming_data (sub_type); @@ -42,5 +44,8 @@ COMMENT ON COLUMN activity_incoming_data.activity_payload IS 'Raw data upload in }; exports.down = async (knex) => { - await knex.raw(`drop table activity_incoming_data`); + await knex.raw(` + set search_path = invasivesbc,public; + + drop table activity_incoming_data`); }; diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml index 64cb5b6a0..1eb13f60c 100644 --- a/api-mobile/src/swagger/swagger.yaml +++ b/api-mobile/src/swagger/swagger.yaml @@ -265,6 +265,8 @@ definitions: date: type: string description: Date in YYYY-MM-DD format + deviceRequestUID: + type: string locationAndGeometry: type: object properties: diff --git a/api/api_sources/knexfile.js b/api/api_sources/knexfile.js deleted file mode 100644 index 94a5f24fc..000000000 --- a/api/api_sources/knexfile.js +++ /dev/null @@ -1,79 +0,0 @@ -// Update with your config settings. - -const dotenv = require('dotenv'); - -const env = process.env.NODE_ENV || 'development'; - -if (env === 'development') { - dotenv.config(); -} - -module.exports = { - test: { - client: 'postgresql', - connection: { - host: process.env.POSTGRESQL_HOST, - port: process.env.POSTGRESQL_PORT || 5432, - database: process.env.POSTGRESQL_DATABASE_TEST, - user: process.env.POSTGRESQL_USER, - password: process.env.POSTGRESQL_PASSWORD, - }, - pool: { - min: 2, - max: 10, - }, - migrations: { - // stub: './config/knex-migration-stub.js', - tableName: 'migration', - directory: 'src/migrations', - }, - }, - development: { - client: 'postgresql', - connection: { - host: process.env.POSTGRESQL_HOST, - port: process.env.POSTGRESQL_PORT || 5432, - database: process.env.POSTGRESQL_DATABASE, - user: process.env.POSTGRESQL_USER, - password: process.env.POSTGRESQL_PASSWORD, - }, - pool: { - min: 2, - max: 10, - }, - migrations: { - // stub: './config/knex-migration-stub.js', - tableName: 'migration', - directory: 'src/migrations', - }, - seeds: { - // stub: './config/knex-migration-stub.js', - tableName: 'seed', - directory: 'src/seeds', - }, - }, - - production: { - client: 'postgresql', - connection: { - host: process.env.POSTGRESQL_HOST, - port: process.env.POSTGRESQL_PORT || 5432, - database: process.env.POSTGRESQL_DATABASE, - user: process.env.POSTGRESQL_USER, - password: process.env.POSTGRESQL_PASSWORD, - }, - pool: { - min: 2, - max: 10, - }, - migrations: { - tableName: 'migration', - directory: 'src/migrations', - }, - seeds: { - // stub: './config/knex-migration-stub.js', - tableName: 'seed', - directory: 'src/seeds', - }, - }, -}; diff --git a/api/api_sources/src/migrations/20200811120312_stagingTable.js b/api/api_sources/src/migrations/20200811120312_stagingTable.js deleted file mode 100644 index 3223f4dc2..000000000 --- a/api/api_sources/src/migrations/20200811120312_stagingTable.js +++ /dev/null @@ -1,9 +0,0 @@ - -exports.up = async (knex) { - await knex.raw(` `); - -}; - -exports.down = async (knex) { - await knex.raw(` `); -}; From 6b444f8991589d97bf084b4886514a90a2e58d73 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Mon, 17 Aug 2020 14:37:38 -0700 Subject: [PATCH 009/194] 792: Update swagger request object validation - Update knexfile.js and migrations/*.js files from .js to .ts files - Run `npm run lint-fix` --- api-mobile/app.ts | 3 +- api-mobile/{knexfile.js => knexfile.ts} | 32 +++++------ api-mobile/package-lock.json | 12 +++-- api-mobile/package.json | 1 + .../src/controllers/activity-controller.ts | 54 ++++++++++--------- .../migrations/20200811120312_stagingTable.js | 51 ------------------ .../migrations/20200811120312_stagingTable.ts | 50 +++++++++++++++++ api-mobile/src/queries/activity-queries.ts | 7 +-- api-mobile/src/utils/auth-utils.ts | 2 +- api-mobile/src/utils/controller-utils.ts | 43 +++++++++++++++ api-mobile/tsconfig.json | 1 + 11 files changed, 152 insertions(+), 104 deletions(-) rename api-mobile/{knexfile.js => knexfile.ts} (76%) delete mode 100644 api-mobile/src/database/migrations/20200811120312_stagingTable.js create mode 100644 api-mobile/src/database/migrations/20200811120312_stagingTable.ts create mode 100644 api-mobile/src/utils/controller-utils.ts diff --git a/api-mobile/app.ts b/api-mobile/app.ts index e79e67554..f4b03afdc 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -40,12 +40,11 @@ if (API_HOSTNAME !== 'localhost:3002') { swaggerConfig.schemes = ['https']; } - swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { // add base swagger route handling middleware app.use(middleware.swaggerMetadata()); -// app.use(middleware.swaggerValidator({ validateResponse: false })); + // app.use(middleware.swaggerValidator({ validateResponse: false })); // add swagger security for authenticated routes app.use( diff --git a/api-mobile/knexfile.js b/api-mobile/knexfile.ts similarity index 76% rename from api-mobile/knexfile.js rename to api-mobile/knexfile.ts index ea6db946b..bd013e86b 100644 --- a/api-mobile/knexfile.js +++ b/api-mobile/knexfile.ts @@ -1,6 +1,6 @@ // Update with your config settings. -const dotenv = require('dotenv'); +import dotenv from 'dotenv'; const env = process.env.NODE_ENV || 'development'; @@ -16,17 +16,17 @@ module.exports = { port: process.env.DB_PORT || 5432, database: process.env.DB_DATABASE, user: process.env.DB_USER, - password: process.env.DB_PASS, + password: process.env.DB_PASS }, pool: { min: 2, - max: 10, + max: 10 }, migrations: { // stub: './config/knex-migration-stub.js', tableName: 'migration', - directory: 'src/database/migrations', - }, + directory: 'src/database/migrations' + } }, development: { client: 'postgresql', @@ -35,22 +35,22 @@ module.exports = { port: process.env.DB_PORT || 5432, database: process.env.DB_DATABASE, user: process.env.DB_USER, - password: process.env.DB_PASS, + password: process.env.DB_PASS }, pool: { min: 2, - max: 10, + max: 10 }, migrations: { // stub: './config/knex-migration-stub.js', tableName: 'migration', - directory: 'src/database/migrations', + directory: 'src/database/migrations' }, seeds: { // stub: './config/knex-migration-stub.js', tableName: 'seed', - directory: 'src/database/seeds', - }, + directory: 'src/database/seeds' + } }, production: { @@ -60,20 +60,20 @@ module.exports = { port: process.env.DB_PORT || 5432, database: process.env.DB_DATABASE, user: process.env.DB_USER, - password: process.env.DB_PASS, + password: process.env.DB_PASS }, pool: { min: 2, - max: 10, + max: 10 }, migrations: { tableName: 'migration', - directory: 'src/database/migrations', + directory: 'src/database/migrations' }, seeds: { // stub: './config/knex-migration-stub.js', tableName: 'seed', - directory: 'src/database/seeds', - }, - }, + directory: 'src/database/seeds' + } + } }; diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 387be2b47..6420dad40 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -1011,6 +1011,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" + }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -1270,9 +1275,10 @@ } }, "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha1-pTF0Wb09eauIz/bkQFemo/ux/O8=" + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true }, "dottie": { "version": "2.0.2", diff --git a/api-mobile/package.json b/api-mobile/package.json index 9900770b7..f0a349528 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -55,6 +55,7 @@ "@typescript-eslint/parser": "~3.7.1", "chai": "~4.2.0", "database-cleaner": "~1.3.0", + "dotenv": "~8.2.0", "eslint-config-prettier": "~6.11.0", "eslint-plugin-prettier": "~3.1.4", "eslint": "~7.5.0", diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index 10e59ed33..5e5bbc7e6 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -3,12 +3,10 @@ import { getDBConnection } from '../database/db'; import { ActivityPostBody } from '../models/activity'; import { postActivitySQL } from '../queries/activity-queries'; +import { ParameterizedQuery } from '../queries/query-types'; import { getLogger } from '../utils/logger'; import { sendResponse } from '../utils/query-actions'; -import { ParameterizedQuery } from '../queries/query-types'; -import * as SwaggerValidator from 'swagger-object-validator'; - - +import { validateSwaggerObject } from '../utils/controller-utils'; const defaultLog = getLogger('observation-controller'); @@ -33,38 +31,44 @@ exports.authenticatedOptions = async function (args: any, res: any, next: any) { */ exports.authenticatedPost = async function (args: any, res: any, next: any) { try { + defaultLog.debug({ label: 'authenticatedPost', message: 'params', arguments: args.swagger.params }); - defaultLog.debug({ label: 'authenticatedPost', message: 'params', arguments: args.swagger.params }); - let validator = new SwaggerValidator.Handler('./src/swagger/swagger.yaml') + const validationResult = await validateSwaggerObject(args.swagger.params.postBody.value, 'ActivityPostBody'); - validator.validateModel(args.swagger.params.postBody.value, 'ActivityPostBody', (err:any, result: any ) => { - console.log(result.humanReadable()); - }); + if (validationResult.errors) { + defaultLog.warn({ + label: 'authenticatedPost', + message: validationResult.message, + 'post body params were invalid': validationResult.errors + }); + return sendResponse(res, 400, { 'post body params were invalid': validationResult.errors }); + } - const data: ActivityPostBody = args.swagger.params.postBody.value; + const data: ActivityPostBody = args.swagger.params.postBody.value; - const sanitizedActivityData = new ActivityPostBody(data); + const sanitizedActivityData = new ActivityPostBody(data); - const connection = await getDBConnection(); + const connection = await getDBConnection(); - if (!connection) { - return sendResponse(res, 503); - } + if (!connection) { + return sendResponse(res, 503); + } - const parameterizedQuery: ParameterizedQuery = postActivitySQL(sanitizedActivityData); + const parameterizedQuery: ParameterizedQuery = postActivitySQL(sanitizedActivityData); - if (!parameterizedQuery) { - return sendResponse(res, 400); - } + if (!parameterizedQuery) { + return sendResponse(res, 400); + } - const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); + const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); - const result = (response && response.rows && response.rows[0]) || null; + const result = (response && response.rows && response.rows[0]) || null; - connection.release(); + connection.release(); - return sendResponse(res, 200, result); + return sendResponse(res, 200, result); } catch (error) { - console.log(error.message) - } + defaultLog.error({ label: 'authenticatedPost', message: 'unexpected error', error }); + return sendResponse(res, 500); + } }; diff --git a/api-mobile/src/database/migrations/20200811120312_stagingTable.js b/api-mobile/src/database/migrations/20200811120312_stagingTable.js deleted file mode 100644 index 862da3029..000000000 --- a/api-mobile/src/database/migrations/20200811120312_stagingTable.js +++ /dev/null @@ -1,51 +0,0 @@ - -exports.up = async (knex) => { - await knex.raw(` - - set search_path = invasivesbc,public; - --- ### Creating Table: activity_incoming_data ### -- - - -CREATE TABLE activity_incoming_data (); -COMMENT ON TABLE activity_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; - -ALTER TABLE activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; -COMMENT ON COLUMN activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; - -ALTER TABLE activity_incoming_data ADD COLUMN activity_id SERIAL ; -COMMENT ON COLUMN activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; - -ALTER TABLE activity_incoming_data ADD COLUMN version INTEGER NULL; -COMMENT ON COLUMN activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; - -ALTER TABLE activity_incoming_data ADD COLUMN type VARCHAR(200) NULL; -COMMENT ON COLUMN activity_incoming_data.type IS 'Type of record'; -CREATE index type_idx on activity_incoming_data (type); - -ALTER TABLE activity_incoming_data ADD COLUMN sub_type VARCHAR(200) NULL; -COMMENT ON COLUMN activity_incoming_data.sub_type IS 'Sub Type of record'; -CREATE index sub_type_idx on activity_incoming_data (sub_type); - -ALTER TABLE activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); -COMMENT ON COLUMN activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; - -ALTER TABLE activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,4326) CHECK (st_isValid(geom)); -COMMENT ON COLUMN activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; -CREATE index activity_incoming_data_gist on activity_incoming_data using gist ("geom"); - -ALTER TABLE activity_incoming_data ADD COLUMN activity_payload JSONB; -COMMENT ON COLUMN activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; - - - -`); - -}; - -exports.down = async (knex) => { - await knex.raw(` - set search_path = invasivesbc,public; - - drop table activity_incoming_data`); -}; diff --git a/api-mobile/src/database/migrations/20200811120312_stagingTable.ts b/api-mobile/src/database/migrations/20200811120312_stagingTable.ts new file mode 100644 index 000000000..c7018ffba --- /dev/null +++ b/api-mobile/src/database/migrations/20200811120312_stagingTable.ts @@ -0,0 +1,50 @@ +import Knex from 'knex'; + +exports.up = async (knex: Knex) => { + await knex.raw(` + set search_path = invasivesbc,public; + set schema 'invasivesbc'; + + -- ### Creating Table: activity_incoming_data ### -- + + CREATE TABLE activity_incoming_data (); + COMMENT ON TABLE activity_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; + + ALTER TABLE activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; + COMMENT ON COLUMN activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; + + ALTER TABLE activity_incoming_data ADD COLUMN activity_id SERIAL ; + COMMENT ON COLUMN activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; + + ALTER TABLE activity_incoming_data ADD COLUMN version INTEGER NULL; + COMMENT ON COLUMN activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; + + ALTER TABLE activity_incoming_data ADD COLUMN type VARCHAR(200) NULL; + COMMENT ON COLUMN activity_incoming_data.type IS 'Type of record'; + CREATE index type_idx on activity_incoming_data (type); + + ALTER TABLE activity_incoming_data ADD COLUMN sub_type VARCHAR(200) NULL; + COMMENT ON COLUMN activity_incoming_data.sub_type IS 'Sub Type of record'; + CREATE index sub_type_idx on activity_incoming_data (sub_type); + + ALTER TABLE activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); + COMMENT ON COLUMN activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; + + ALTER TABLE activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,4326) CHECK (st_isValid(geom)); + COMMENT ON COLUMN activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; + CREATE index activity_incoming_data_gist on activity_incoming_data using gist ("geom"); + + ALTER TABLE activity_incoming_data ADD COLUMN activity_payload JSONB; + COMMENT ON COLUMN activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; + `); + +}; + +exports.down = async (knex: Knex) => { + await knex.raw(` + set search_path = invasivesbc,public; + set schema 'invasivesbc'; + + drop table activity_incoming_data + `); +}; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 47e575519..610cea9c7 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -19,12 +19,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu 'VALUES ($1, $2, $3, $4) ' + 'RETURNING *;'; - const values = [ - activityData.type, - activityData.subType, - activityData.date, - activityData - ]; + const values = [activityData.type, activityData.subType, activityData.date, activityData]; return { sql, values }; }; diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts index 2a982e1a8..12616236a 100644 --- a/api-mobile/src/utils/auth-utils.ts +++ b/api-mobile/src/utils/auth-utils.ts @@ -16,7 +16,7 @@ const APP_CERTIFICATE_URL = const TOKEN_IGNORE_EXPIRATION: boolean = process.env.TOKEN_IGNORE_EXPIRATION === 'true' || - process.env.NODE_ENV === 'dev' || + process.env.NODE_ENV === 'development' || process.env.DB_HOST === 'localhost' || false; diff --git a/api-mobile/src/utils/controller-utils.ts b/api-mobile/src/utils/controller-utils.ts new file mode 100644 index 000000000..46d476d94 --- /dev/null +++ b/api-mobile/src/utils/controller-utils.ts @@ -0,0 +1,43 @@ +import { Handler, ValidationErrorType } from 'swagger-object-validator'; + +const validator = new Handler('./src/swagger/swagger.yaml'); + +export interface IValidateSwaggerObjectErrors { + // overall error message + message: string; + // array of errors + errors: Array<{ errorType: ValidationErrorType; trace: string }>; +} + +/** + * Validate a swagger params object against the expected swagger params object definition. + * + * @param {*} swaggerParamsObject A swagger params object. + * - Example: args.swagger.params.MyPostBody.value + * @param {string} swaggerDefinitionName The name of the swagger object definition that the swagger params object is + * expected to match. + * - Example: 'MyPostBodyDefinition' + * @returns {Promise} + */ +export const validateSwaggerObject = async function ( + swaggerParamsObject: any, + swaggerDefinitionName: string +): Promise { + const validationResult = await validator.validateModel(swaggerParamsObject, swaggerDefinitionName); + + if (validationResult.errors && validationResult.errors.length) { + return { + message: 'swagger params object is invalid', + // convert the original validation errors array into a more condensed and human readable version. + errors: validationResult.errorsWithStringTypes().map(validationError => { + return { + errorType: validationError.errorType, + // condense the original array of trace strings into a single period delimited string + trace: validationError.trace.map(traceStep => traceStep.stepName).join('.') + }; + }) + }; + } + + return { message: 'swagger params object is valid', errors: null }; +}; diff --git a/api-mobile/tsconfig.json b/api-mobile/tsconfig.json index d7e3481ac..d1d8e85f2 100644 --- a/api-mobile/tsconfig.json +++ b/api-mobile/tsconfig.json @@ -5,6 +5,7 @@ "lib": ["es2018"], "moduleResolution": "node", "sourceMap": true, + "allowJs": false, "outDir": "dist", "baseUrl": ".", "paths": { From a56e5166d7453e264196a559a082a4401e427414 Mon Sep 17 00:00:00 2001 From: Mike Wells Date: Mon, 17 Aug 2020 15:21:37 -0700 Subject: [PATCH 010/194] 776: update migrations, models, activity endpoint + validation, test scripts - api-mobile updates change activity endpoint params to accept obj for parent and child record types, and make names in db and api consiistent - fix migration - make swagger and database and ts queries all sync up - log whole activity post body - updated curl test file for activity endpoint - allow for swagger validation config to ignore additional properties (WIP) - make activity-query fields line up with db changes - update model - add migrations for common activity fields view and observation common fields view - minor activity view changes --- ...L_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh | 73 ++++++++++++++----- .../src/controllers/activity-controller.ts | 13 +++- .../db_source/activity_common_data_view.sql | 4 + ...invasive_terrestrial_plant_observation.sql | 1 + .../observation_common_data_view.sql | 33 +++++---- .../migrations/20200811120312_stagingTable.ts | 25 +++++-- .../20200818104413_spatialfields.ts | 10 +++ .../20200819074819_activity_view.ts | 41 +++++++++++ .../20200819083337_observation_view.ts | 49 +++++++++++++ api-mobile/src/models/activity.ts | 17 +++-- api-mobile/src/queries/activity-queries.ts | 6 +- api-mobile/src/swagger/swagger.yaml | 27 +++---- api-mobile/src/utils/controller-utils.ts | 9 ++- 13 files changed, 243 insertions(+), 65 deletions(-) create mode 100644 api-mobile/src/database/migrations/20200818104413_spatialfields.ts create mode 100644 api-mobile/src/database/migrations/20200819074819_activity_view.ts create mode 100644 api-mobile/src/database/migrations/20200819083337_observation_view.ts diff --git a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh index e58fa7c6c..9105540b5 100644 --- a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh +++ b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh @@ -3,21 +3,58 @@ curl --location --request POST 'localhost:3002/api/activity' \ --header 'Authorization: Bearer '${1} \ --header 'Content-Type: application/json' \ --data-raw ' - { - "type": "Observation", - "subType": "Invasive Terrestrial Plant", - "date" : "2014-01-01T23:28:56.782Z", - "locationAndGeometry": { - "test": "banana" - }, - "data": { - "ObservationData": { - "date": "12-2020-21", - "key activity species name": "bla" - }, - "InvasiveTerrestrialPlantObservation":{ - "pokyness": 11, - "smells": "ok" - } - } -}' +{ + "activityType": "Observation", + "activitySubType": "Terrestrial Invasive Plant", + "date": "2019-04-12", + "deviceRequestUID": "string", + "locationAndGeometry": { + "anchorPointY": 0, + "anchorPointX": 0, + "area": 0, + "geometry": {}, + "jurisdiction": "string", + "agency": "string", + "observer1FirstName": "string", + "observer1LastName": "string", + "locationComment": "string", + "generalComment": "string", + "photoTaken": true + }, + "activityTypeData": { + "negative_observation_ind": false, + "aquatic_observation_ind": false, + "primary_user_last_name": "mike", + "secondary_user_first_name": "mike", + "secondary_user_last_name": "mike", + "species": "banana", + "primary_file_id": "test", + "secondary_file_id": "test", + "location_comment": "test", + "general_observation_comment": "general comment", + "sample_taken_ind": true, + "sample_label_number": "string" + }, + "activitySubTypeData": { + "species": "banana", + "distribution": 123, + "density": 123, + "soil_texture": 1, + "slope": 123, + "aspect": 123, + "flowering": true, + "specific_use": 123, + "proposed_action": 123, + "seed_stage": 123, + "plant_health": 123, + "plant_life_stage": 123, + "early_detection": 1, + "research": true, + "well_on_site_ind": true, + "special_care_ind": true, + "biological_care_ind": true, + "legacy_site_ind": true, + "range_unit": "Canyon" + } +} +' diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index 5e5bbc7e6..8600934b2 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -7,6 +7,7 @@ import { ParameterizedQuery } from '../queries/query-types'; import { getLogger } from '../utils/logger'; import { sendResponse } from '../utils/query-actions'; import { validateSwaggerObject } from '../utils/controller-utils'; +import { ValidationErrorType, IValidatorConfig } from 'swagger-object-validator'; const defaultLog = getLogger('observation-controller'); @@ -33,7 +34,16 @@ exports.authenticatedPost = async function (args: any, res: any, next: any) { try { defaultLog.debug({ label: 'authenticatedPost', message: 'params', arguments: args.swagger.params }); - const validationResult = await validateSwaggerObject(args.swagger.params.postBody.value, 'ActivityPostBody'); + + let config: IValidatorConfig = { + ignoreError: (error: { errorType: ValidationErrorType; trace: { stepName: string; }[]; }, value: string, schema: { type: string; }, spec: any) => { + // ignore type mismatches on Pet/id when a certain value occures + return error.errorType === ValidationErrorType.ADDITIONAL_PROPERTY + && error.trace[0].stepName.includes('activityTypeData') + } + }; + + const validationResult = await validateSwaggerObject(args.swagger.params.postBody.value, 'ActivityPostBody', config, './src/swagger/swagger.yaml' ); if (validationResult.errors) { defaultLog.warn({ @@ -47,6 +57,7 @@ exports.authenticatedPost = async function (args: any, res: any, next: any) { const data: ActivityPostBody = args.swagger.params.postBody.value; const sanitizedActivityData = new ActivityPostBody(data); + sanitizedActivityData.activityPostBody = args.swagger.params.postBody.value; const connection = await getDBConnection(); diff --git a/api-mobile/src/database/db_source/activity_common_data_view.sql b/api-mobile/src/database/db_source/activity_common_data_view.sql index 8b4cd6c39..c72f5cdb7 100644 --- a/api-mobile/src/database/db_source/activity_common_data_view.sql +++ b/api-mobile/src/database/db_source/activity_common_data_view.sql @@ -13,6 +13,10 @@ select 'banana' as business_area, 'banana' as jurisdiction, 'banana' as agency +'banana' as created_at, +'banana' as updated_at, +'banana' as updated_by_user_id, +'banana' as created_by_user_id, from activity_incoming_data ) diff --git a/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql b/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql index ffcb125a6..4fb314d61 100644 --- a/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql +++ b/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql @@ -22,5 +22,6 @@ select 'banana' as range_unit from activity_incoming_data +where activity_incoming_data.activity_type = 'Observation' and activity_incoming_data.activity_sub_type = 'Terrestrial Plant Observation' ) COMMENT ON VIEW invasive_terrestrial_plant_observation_specific_fields_view IS 'View on fields specific to invasive terrestrial plant of observations, with table activity_incoming_data as source.'; diff --git a/api-mobile/src/database/db_source/observation_common_data_view.sql b/api-mobile/src/database/db_source/observation_common_data_view.sql index 23c230042..ca7ef3d57 100644 --- a/api-mobile/src/database/db_source/observation_common_data_view.sql +++ b/api-mobile/src/database/db_source/observation_common_data_view.sql @@ -1,20 +1,25 @@ CREATE OR REPLACE VIEW observation_common_fields_view as ( select -'banana' as activity_id, -'banana' as observation_type, -'banana' as negative_observation_ind, -'banana' as aquatic_observation_ind, -'banana' as primary_user_last_name, -'banana' as secondary_user_first_name, -'banana' as secondary_user_last_name, -'banana' as species, -'banana' as primary_file_id, -'banana' as secondary_file_id, -'banana' as location_comment, -'banana' as general_observation_comment, -'banana' as sample_taken_ind, -'banana' as sample_label_number +id as activity_id, +activity_sub_type as observation_type, +activity_payload::json->'negative_observation_ind' as negative_observation_ind, +activity_payload::json->'negative_observation_ind' as negative_observation_ind, +activity_payload::json->'aquatic_observation_ind' as aquatic_observation_ind, +activity_payload::json->'primary_user_last_name' as primary_user_last_name, +activity_payload::json->'secondary_user_first_name' as secondary_user_first_name, +activity_payload::json->'secondary_user_last_name' as secondary_user_last_name, +activity_payload::json->'species' as species, +activity_payload::json->'primary_file_id' as primary_file_id, +activity_payload::json->'secondary_file_id' as secondary_file_id, +activity_payload::json->'location_comment' as location_comment, +activity_payload::json->'general_observation_comment' as general_observation_comment, +activity_payload::json->'sample_taken_ind' as sample_taken_ind, +activity_payload::json-> 'sample_label_number' as sample_label_number from activity_incoming_data +where activity_incoming_data.activity_type = 'Observation' ) COMMENT ON VIEW observation_common_fields_view IS 'View on fields common to all types of observations, with table activity_incoming_data as source.'; + + + diff --git a/api-mobile/src/database/migrations/20200811120312_stagingTable.ts b/api-mobile/src/database/migrations/20200811120312_stagingTable.ts index c7018ffba..1028de4e2 100644 --- a/api-mobile/src/database/migrations/20200811120312_stagingTable.ts +++ b/api-mobile/src/database/migrations/20200811120312_stagingTable.ts @@ -2,8 +2,9 @@ import Knex from 'knex'; exports.up = async (knex: Knex) => { await knex.raw(` - set search_path = invasivesbc,public; set schema 'invasivesbc'; + set search_path = invasivesbc,public; + -- ### Creating Table: activity_incoming_data ### -- @@ -19,13 +20,13 @@ exports.up = async (knex: Knex) => { ALTER TABLE activity_incoming_data ADD COLUMN version INTEGER NULL; COMMENT ON COLUMN activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; - ALTER TABLE activity_incoming_data ADD COLUMN type VARCHAR(200) NULL; - COMMENT ON COLUMN activity_incoming_data.type IS 'Type of record'; - CREATE index type_idx on activity_incoming_data (type); + ALTER TABLE activity_incoming_data ADD COLUMN activity_type VARCHAR(200) NULL; + COMMENT ON COLUMN activity_incoming_data.activity_type IS 'Type of record'; + CREATE index type_idx on activity_incoming_data (activity_type); - ALTER TABLE activity_incoming_data ADD COLUMN sub_type VARCHAR(200) NULL; - COMMENT ON COLUMN activity_incoming_data.sub_type IS 'Sub Type of record'; - CREATE index sub_type_idx on activity_incoming_data (sub_type); + ALTER TABLE activity_incoming_data ADD COLUMN activity_sub_type VARCHAR(200) NULL; + COMMENT ON COLUMN activity_incoming_data.activity_sub_type IS 'Sub Type of record'; + CREATE index sub_type_idx on activity_incoming_data (activity_sub_type); ALTER TABLE activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); COMMENT ON COLUMN activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; @@ -36,6 +37,16 @@ exports.up = async (knex: Knex) => { ALTER TABLE activity_incoming_data ADD COLUMN activity_payload JSONB; COMMENT ON COLUMN activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; + + + ALTER TABLE activity_incoming_data ADD COLUMN activity_type_data JSONB; + COMMENT ON COLUMN activity_incoming_data.activity_type_data IS 'Raw data upload in compressed JSON format.'; + + ALTER TABLE activity_incoming_data ADD COLUMN activity_sub_type_data JSONB; + COMMENT ON COLUMN activity_incoming_data.activity_sub_type_data IS 'Raw data upload in compressed JSON format.'; + + + `); }; diff --git a/api-mobile/src/database/migrations/20200818104413_spatialfields.ts b/api-mobile/src/database/migrations/20200818104413_spatialfields.ts new file mode 100644 index 000000000..eab72990a --- /dev/null +++ b/api-mobile/src/database/migrations/20200818104413_spatialfields.ts @@ -0,0 +1,10 @@ +import * as Knex from "knex"; + + +export async function up(knex: Knex): Promise { +} + + +export async function down(knex: Knex): Promise { +} + diff --git a/api-mobile/src/database/migrations/20200819074819_activity_view.ts b/api-mobile/src/database/migrations/20200819074819_activity_view.ts new file mode 100644 index 000000000..30d391398 --- /dev/null +++ b/api-mobile/src/database/migrations/20200819074819_activity_view.ts @@ -0,0 +1,41 @@ +import * as Knex from "knex"; + + +export async function up(knex: Knex): Promise { + + await knex.raw(` + set schema 'invasivesbc'; + set search_path = invasivesbc,public; + + CREATE OR REPLACE VIEW activity_common_fields_view as ( + select + activity_id, + activity_type, + activity_sub_type, + cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointX' as decimal) as anchor_point_x, + cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointY' as decimal) as anchor_point_y, + received_timestamp + + from activity_incoming_data + ); + + COMMENT ON VIEW activity_common_fields_view IS 'View on fields common to all types of activities, with table activity_incoming_data as source.'; + + + + + + + `) + +} + + +export async function down(knex: Knex): Promise { + await knex.raw(` + set schema 'invasivesbc'; + set search_path = invasivesbc,public; + drop view activity_common_fields_view; + `) +} + diff --git a/api-mobile/src/database/migrations/20200819083337_observation_view.ts b/api-mobile/src/database/migrations/20200819083337_observation_view.ts new file mode 100644 index 000000000..79e2df0bc --- /dev/null +++ b/api-mobile/src/database/migrations/20200819083337_observation_view.ts @@ -0,0 +1,49 @@ +import * as Knex from "knex"; + + +export async function up(knex: Knex): Promise { + + await knex.raw(` + set schema 'invasivesbc'; + set search_path = invasivesbc,public; + +CREATE OR REPLACE VIEW observation_common_fields_view as ( +select activity_id, +activity_sub_type as observation_type, +cast(activity_payload -> 'activityTypeData' ->> 'negative_observation_ind' as bool) as negative_observation_ind, +cast(activity_payload -> 'activityTypeData' ->> 'aquatic_observation_ind' as bool) as aquatic_observation_ind, +cast(activity_payload -> 'activityTypeData' ->> 'primary_user_first_name' as text) as primary_user_first_name, +cast(activity_payload -> 'activityTypeData' ->> 'primary_user_last_name' as text) as primary_user_last_name, +cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_first_name' as text) as secondary_user_first_name, +cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_last_name' as text) as secondary_user_last_name, +cast(activity_payload -> 'activityTypeData' ->> 'species' as text) as species, +cast(activity_payload -> 'activityTypeData' ->> 'primary_file_id' as text) as primary_file_id, +cast(activity_payload -> 'activityTypeData' ->> 'secondary_file_id' as text) as secondary_file_id, +cast(activity_payload -> 'activityTypeData' ->> 'location_comment' as text) as location_comment, +cast(activity_payload -> 'activityTypeData' ->> 'general_observation_comment' as text) as general_observation_comment, +cast(activity_payload -> 'activityTypeData' ->> 'sample_taken_ind' as bool) as sample_taken_ind, +cast(activity_payload -> 'activityTypeData' ->> 'sample_label_number' as text) as sample_label_number + +from activity_incoming_data +where activity_incoming_data.activity_type = 'Observation' +); +COMMENT ON VIEW observation_common_fields_view IS 'View on fields common to all types of observations, with table activity_incoming_data as source.'; + + + + + + + `) + +} + + +export async function down(knex: Knex): Promise { + await knex.raw(` + set schema 'invasivesbc'; + set search_path = invasivesbc,public; + drop view observation_common_fields_view; + `) +} + diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index c557ef0fb..c210ac945 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -5,17 +5,22 @@ * @class ActivityPostBody */ export class ActivityPostBody { - type: string; - subType: string; + activityType: string; + activitySubType: string; date: string; locationAndGeometry: object; - data: object; + activityPostBody: object; + activityResponseBody: object; + activityTypeData: object; + activitySubTypeData: object; constructor(obj?: any) { - this.type = (obj && obj.type) || null; - this.subType = (obj && obj.subType) || null; + this.activityType = (obj && obj.activityType) || null; + this.activitySubType = (obj && obj.activitySubType) || null; this.date = (obj && obj.date) || null; this.locationAndGeometry = (obj && obj.locationAndGeometry) || null; - this.data = (obj && obj.data) || null; + this.activityPostBody = null; + this.activityTypeData = (obj && obj.activityTypeData) || null; + this.activitySubTypeData = (obj && obj.activitySubTypeData) || null; } } diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 610cea9c7..2016a3c1b 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -15,11 +15,11 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu const sql = 'INSERT INTO activity_incoming_data ' + - '(type, sub_type, received_timestamp, activity_payload) ' + - 'VALUES ($1, $2, $3, $4) ' + + '(activity_type, activity_sub_type, received_timestamp, activity_payload, activity_type_data, activity_sub_type_data) ' + + 'VALUES ($1, $2, $3, $4, $5, $6) ' + 'RETURNING *;'; - const values = [activityData.type, activityData.subType, activityData.date, activityData]; + const values = [activityData.activityType, activityData.activitySubType, activityData.date, activityData.activityPostBody, activityData.activityTypeData, activityData.activitySubTypeData]; return { sql, values }; }; diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml index 1eb13f60c..5323ff051 100644 --- a/api-mobile/src/swagger/swagger.yaml +++ b/api-mobile/src/swagger/swagger.yaml @@ -252,19 +252,21 @@ definitions: description: Activity post body object. type: object required: - - type - - subType + - activityType + - activityTypeData + - activitySubType + - activitySubTypeData - date - locationAndGeometry - - data properties: - type: + activityType: type: string - subType: + activitySubType: type: string date: type: string description: Date in YYYY-MM-DD format + format: date deviceRequestUID: type: string locationAndGeometry: @@ -292,30 +294,29 @@ definitions: type: string photoTaken: type: boolean - data: + activityTypeData: + type: object + activitySubTypeData: type: object ActivityResponse: description: Activity response object. type: object required: - - type - - subType + - activityType + - activitySubType - date - locationAndGeometry - - data properties: - type: + activityType: type: string - subType: + activitySubType: type: string date: type: string description: Date in YYYY-MM-DD format locationAndGeometry: type: object - data: - type: object # Observation Plant Definitions diff --git a/api-mobile/src/utils/controller-utils.ts b/api-mobile/src/utils/controller-utils.ts index 46d476d94..8aa8841cf 100644 --- a/api-mobile/src/utils/controller-utils.ts +++ b/api-mobile/src/utils/controller-utils.ts @@ -1,6 +1,5 @@ -import { Handler, ValidationErrorType } from 'swagger-object-validator'; +import { Handler, ValidationErrorType, IValidatorConfig } from 'swagger-object-validator'; -const validator = new Handler('./src/swagger/swagger.yaml'); export interface IValidateSwaggerObjectErrors { // overall error message @@ -21,8 +20,12 @@ export interface IValidateSwaggerObjectErrors { */ export const validateSwaggerObject = async function ( swaggerParamsObject: any, - swaggerDefinitionName: string + swaggerDefinitionName: string, + swaggerValidatorConfig: IValidatorConfig, + swaggerFilePath: string ): Promise { +const validator = new Handler(swaggerFilePath, swaggerValidatorConfig); +//const validator = new Handler('./src/swagger/swagger.yaml'); const validationResult = await validator.validateModel(swaggerParamsObject, swaggerDefinitionName); if (validationResult.errors && validationResult.errors.length) { From c12a82f6825ba0ecd1f440578f888fe654ce8b1a Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Thu, 20 Aug 2020 11:24:07 -0700 Subject: [PATCH 011/194] 776: add spatial fields to api-mobile - update test data - add Geojson to postgis logic - set srid - add geo projection --- .../migrations/20200811120312_stagingTable.ts | 2 +- api-mobile/src/models/activity.ts | 2 + api-mobile/src/queries/activity-queries.ts | 36 ++++- api-mobile/test/observation-fake.json | 151 +++++++++--------- api-mobile/test/observation-fake2.json | 64 ++++++++ api-mobile/test/observation.sh | 2 +- 6 files changed, 174 insertions(+), 83 deletions(-) create mode 100644 api-mobile/test/observation-fake2.json diff --git a/api-mobile/src/database/migrations/20200811120312_stagingTable.ts b/api-mobile/src/database/migrations/20200811120312_stagingTable.ts index 1028de4e2..289f366ba 100644 --- a/api-mobile/src/database/migrations/20200811120312_stagingTable.ts +++ b/api-mobile/src/database/migrations/20200811120312_stagingTable.ts @@ -31,7 +31,7 @@ exports.up = async (knex: Knex) => { ALTER TABLE activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); COMMENT ON COLUMN activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; - ALTER TABLE activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,4326) CHECK (st_isValid(geom)); + ALTER TABLE activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,3005) CHECK (st_isValid(geom)); COMMENT ON COLUMN activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; CREATE index activity_incoming_data_gist on activity_incoming_data using gist ("geom"); diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index c210ac945..8f983dcb0 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -13,6 +13,7 @@ export class ActivityPostBody { activityResponseBody: object; activityTypeData: object; activitySubTypeData: object; + geom: object; constructor(obj?: any) { this.activityType = (obj && obj.activityType) || null; @@ -22,5 +23,6 @@ export class ActivityPostBody { this.activityPostBody = null; this.activityTypeData = (obj && obj.activityTypeData) || null; this.activitySubTypeData = (obj && obj.activitySubTypeData) || null; + this.geom = (obj && obj.geom) || null; } } diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 2016a3c1b..692bd93b1 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -13,13 +13,37 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu } //activityData.locationAndGeometry needs to be added to below: - const sql = - 'INSERT INTO activity_incoming_data ' + - '(activity_type, activity_sub_type, received_timestamp, activity_payload, activity_type_data, activity_sub_type_data) ' + - 'VALUES ($1, $2, $3, $4, $5, $6) ' + - 'RETURNING *;'; + const sql = ` + INSERT INTO activity_incoming_data ( + activity_type, + activity_sub_type, + received_timestamp, + activity_payload, + activity_type_data, + activity_sub_type_data, + geom + ) VALUES ( + $1, + $2, + $3, + $4, + $5, + $6, + ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON($7),4326),3005) + ) + RETURNING + activity_incoming_data_id + `; - const values = [activityData.activityType, activityData.activitySubType, activityData.date, activityData.activityPostBody, activityData.activityTypeData, activityData.activitySubTypeData]; + const values = [ + activityData.activityType, + activityData.activitySubType, + activityData.date, + activityData.activityPostBody, + activityData.activityTypeData, + activityData.activitySubTypeData, + activityData.geom + ]; return { sql, values }; }; diff --git a/api-mobile/test/observation-fake.json b/api-mobile/test/observation-fake.json index fc9f1f9a0..150a529f7 100644 --- a/api-mobile/test/observation-fake.json +++ b/api-mobile/test/observation-fake.json @@ -1,77 +1,78 @@ { - "data": { - "ObservationData": { - "access_description": "Quos dolor blanditiis perferendis. Nesciunt ipsum reprehenderit. Numquam quasi exercitationem et ut quis ex facere eius. Exercitationem voluptatem ducimus quo dolor saepe ut est. Et porro animi labore alias.", - "aquatic_ind": true, - "bec_zone": null, - "biological_ind": true, - "created_at": "2020-06-24T17:29:55.53743", - "created_by_user_id": 1, - "early_detection_rapid_resp_ind": false, - "elevation_metes": 5, - "flnro_district": null, - "flowering": false, - "general_comment": "Non tempore itaque dignissimos corporis est. Qui sit molestias enim.", - "hex_id": null, - "hex_sub_id": null, - "ipma": "jfkdsljfklds", - "jurisdiction_code_id": 19, - "legacy_site_ind": false, - "moti_district": null, - "negative_occurance_id": false, - "observation_aspect_code_id": 6, - "observation_date": "2020-01-24", - "observation_geometry_code_id": 1, - "observation_proposed_action_code_id": 9, - "observation_slope_code_id": 6, - "observation_type_code_id": 13, - "observer_first_name": "facilis", - "observer_last_name": "nostrum", - "ownership": "Private", - "paper_id_primary": "1", - "paper_id_secondary": "1", - "photo_indicator": false, - "range_unit_number": "possimus", - "raw_albers_x": null, - "raw_albers_y": null, - "raw_latitude": 52.543534, - "raw_longitude": -135.4328492, - "raw_utm_easting": null, - "raw_utm_northing": null, - "raw_utm_zone": null, - "regional_district": null, - "research_detection_ind": false, - "riso": null, - "sample_identifier": "aut", - "sample_taken_ind": false, - "soil_texture_code_id": 5, - "space_geom_id": 627, - "special_care_ind": false, - "species_agency_code_id": 17, - "species_density_code_id": 4, - "species_distribution_code_id": 9, - "species_id": 152, - "specific_use_code_id": 9, - "total_area": 20000, - "updated_at": "2020-06-24T17:29:55.53743", - "updated_by_user_id": 1, - "well_ind": false, - "well_proximity": 20000, - "well_tag": 1234 - } - }, - "date": "2014-01-01T23:28:56.782Z", - "locationAndGeometry": { - "type": "FeatureCollection", - "features": [{ - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [-125.6, 48.3] - }, - "properties": {} - }] - }, - "subType": "Invasive Terrestrial Plant", - "type": "Observation" + "data": { + "activityData": { + "access_description": "Quos dolor blanditiis perferendis. Nesciunt ipsum reprehenderit. Numquam quasi exercitationem et ut quis ex facere eius. Exercitationem voluptatem ducimus quo dolor saepe ut est. Et porro animi labore alias.", + "aquatic_ind": true, + "bec_zone": null, + "biological_ind": true, + "created_at": "2020-06-24T17:29:55.53743", + "created_by_user_id": 1, + "early_detection_rapid_resp_ind": false, + "elevation_metes": 5, + "flnro_district": null, + "flowering": false, + "general_comment": "Non tempore itaque dignissimos corporis est. Qui sit molestias enim.", + "hex_id": null, + "hex_sub_id": null, + "ipma": "jfkdsljfklds", + "jurisdiction_code_id": 19, + "legacy_site_ind": false, + "moti_district": null, + "negative_occurance_id": false, + "observation_aspect_code_id": 6, + "observation_date": "2020-01-24", + "observation_geometry_code_id": 1, + "observation_proposed_action_code_id": 9, + "observation_slope_code_id": 6, + "observation_type_code_id": 13, + "observer_first_name": "facilis", + "observer_last_name": "nostrum", + "ownership": "Private", + "paper_id_primary": "1", + "paper_id_secondary": "1", + "photo_indicator": false, + "range_unit_number": "possimus", + "raw_albers_x": null, + "raw_albers_y": null, + "raw_latitude": 52.543534, + "raw_longitude": -135.4328492, + "raw_utm_easting": null, + "raw_utm_northing": null, + "raw_utm_zone": null, + "regional_district": null, + "research_detection_ind": false, + "riso": null, + "sample_identifier": "aut", + "sample_taken_ind": false, + "soil_texture_code_id": 5, + "space_geom_id": 627, + "special_care_ind": false, + "species_agency_code_id": 17, + "species_density_code_id": 4, + "species_distribution_code_id": 9, + "species_id": 152, + "specific_use_code_id": 9, + "total_area": 20000, + "updated_at": "2020-06-24T17:29:55.53743", + "updated_by_user_id": 1, + "well_ind": false, + "well_proximity": 20000, + "well_tag": 1234 + } + }, + "date": "2014-01-01T23:28:56.782Z", + "locationAndGeometry": { + "type": "FeatureCollection", + "features": [{ + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [-125.6, 48.3] + }, + "properties": {} + }] + }, + "activitySubType": "Invasive Terrestrial Plant", + "activityType": "Observation", + "deviceRequestUID": "84dc813c-e307-11ea-87d0-0242ac130003" } diff --git a/api-mobile/test/observation-fake2.json b/api-mobile/test/observation-fake2.json new file mode 100644 index 000000000..89dabf91b --- /dev/null +++ b/api-mobile/test/observation-fake2.json @@ -0,0 +1,64 @@ +{ + "activityType": "Observation", + "activitySubType": "Terrestrial Invasive Plant", + "date": "2019-04-12", + "deviceRequestUID": "string", + "locationAndGeometry": { + "anchorPointY": 0, + "anchorPointX": 0, + "area": 0, + "geometry": { + "type": "FeatureCollection", + "features": [{ + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [-125.6, 48.3] + }, + "properties": {} + }] + }, + "jurisdiction": "string", + "agency": "string", + "observer1FirstName": "string", + "observer1LastName": "string", + "locationComment": "string", + "generalComment": "string", + "photoTaken": true + }, + "activityTypeData": { + "negative_observation_ind": false, + "aquatic_observation_ind": false, + "primary_user_last_name": "mike", + "secondary_user_first_name": "mike", + "secondary_user_last_name": "mike", + "species": "banana", + "primary_file_id": "test", + "secondary_file_id": "test", + "location_comment": "test", + "general_observation_comment": "general comment", + "sample_taken_ind": true, + "sample_label_number": "string" + }, + "activitySubTypeData": { + "species": "banana", + "distribution": 123, + "density": 123, + "soil_texture": 1, + "slope": 123, + "aspect": 123, + "flowering": true, + "specific_use": 123, + "proposed_action": 123, + "seed_stage": 123, + "plant_health": 123, + "plant_life_stage": 123, + "early_detection": 1, + "research": true, + "well_on_site_ind": true, + "special_care_ind": true, + "biological_care_ind": true, + "legacy_site_ind": true, + "range_unit": "Canyon" + } +} diff --git a/api-mobile/test/observation.sh b/api-mobile/test/observation.sh index 15d303f0e..46fc30208 100755 --- a/api-mobile/test/observation.sh +++ b/api-mobile/test/observation.sh @@ -1,4 +1,4 @@ # TODO: Assign DB environment variables -curl -X POST -d @./observation-fake.json "localhost:3002/api/activity" \ +curl -X POST -d @./observation-fake2.json "localhost:3002/api/activity" \ --header "Content-Type: application/json" \ --header 'Authorization: Bearer '${1} \ From 24580a33ec94f9fdd1de2ab4c098a8ca04ed5366 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Fri, 21 Aug 2020 16:22:02 -0700 Subject: [PATCH 012/194] 792: Update swagger object validator ignoreErrors config --- .../src/controllers/activity-controller.ts | 19 ++-- api-mobile/src/utils/controller-utils.ts | 101 ++++++++++++++---- 2 files changed, 86 insertions(+), 34 deletions(-) diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index 8600934b2..0a4a1215d 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -4,10 +4,9 @@ import { getDBConnection } from '../database/db'; import { ActivityPostBody } from '../models/activity'; import { postActivitySQL } from '../queries/activity-queries'; import { ParameterizedQuery } from '../queries/query-types'; +import { validateSwaggerObject, ignoreAdditionalPropertyErrorsOnAnyObjectFields } from '../utils/controller-utils'; import { getLogger } from '../utils/logger'; import { sendResponse } from '../utils/query-actions'; -import { validateSwaggerObject } from '../utils/controller-utils'; -import { ValidationErrorType, IValidatorConfig } from 'swagger-object-validator'; const defaultLog = getLogger('observation-controller'); @@ -34,16 +33,12 @@ exports.authenticatedPost = async function (args: any, res: any, next: any) { try { defaultLog.debug({ label: 'authenticatedPost', message: 'params', arguments: args.swagger.params }); - - let config: IValidatorConfig = { - ignoreError: (error: { errorType: ValidationErrorType; trace: { stepName: string; }[]; }, value: string, schema: { type: string; }, spec: any) => { - // ignore type mismatches on Pet/id when a certain value occures - return error.errorType === ValidationErrorType.ADDITIONAL_PROPERTY - && error.trace[0].stepName.includes('activityTypeData') - } - }; - - const validationResult = await validateSwaggerObject(args.swagger.params.postBody.value, 'ActivityPostBody', config, './src/swagger/swagger.yaml' ); + const validationResult = await validateSwaggerObject( + args.swagger.params.postBody.value, + 'ActivityPostBody', + './src/swagger/swagger.yaml', + ignoreAdditionalPropertyErrorsOnAnyObjectFields + ); if (validationResult.errors) { defaultLog.warn({ diff --git a/api-mobile/src/utils/controller-utils.ts b/api-mobile/src/utils/controller-utils.ts index 8aa8841cf..d4a4015d9 100644 --- a/api-mobile/src/utils/controller-utils.ts +++ b/api-mobile/src/utils/controller-utils.ts @@ -1,11 +1,18 @@ -import { Handler, ValidationErrorType, IValidatorConfig } from 'swagger-object-validator'; +import { + Handler, + IValidatorConfig, + ValidationErrorType, + IValidationError, + ValidationResult +} from 'swagger-object-validator'; +import { Schema, Spec } from 'swagger-schema-official'; - -export interface IValidateSwaggerObjectErrors { +export type IValidateSwaggerObjectCondensedErrors = Array<{ errorType: ValidationErrorType; trace: string }>; +export interface IValidateSwaggerObject { // overall error message message: string; // array of errors - errors: Array<{ errorType: ValidationErrorType; trace: string }>; + errors: IValidateSwaggerObjectCondensedErrors; } /** @@ -16,31 +23,81 @@ export interface IValidateSwaggerObjectErrors { * @param {string} swaggerDefinitionName The name of the swagger object definition that the swagger params object is * expected to match. * - Example: 'MyPostBodyDefinition' - * @returns {Promise} + * @param {string} swaggerFilePath The filepath to the swagger file that contains the swaggerDefinitionName to validate + * against. + * - Example: './src/swagger/swagger.yaml' + * @param {IValidatorConfig} [swaggerValidatorConfig=null] An optional custom validator config. + * - See: https://www.npmjs.com/package/swagger-object-validator#config + * @returns {Promise} */ export const validateSwaggerObject = async function ( swaggerParamsObject: any, swaggerDefinitionName: string, - swaggerValidatorConfig: IValidatorConfig, - swaggerFilePath: string -): Promise { -const validator = new Handler(swaggerFilePath, swaggerValidatorConfig); -//const validator = new Handler('./src/swagger/swagger.yaml'); + swaggerFilePath: string, + swaggerValidatorConfig: IValidatorConfig = null +): Promise { + const validator = new Handler(swaggerFilePath, swaggerValidatorConfig); + const validationResult = await validator.validateModel(swaggerParamsObject, swaggerDefinitionName); - if (validationResult.errors && validationResult.errors.length) { + if (!validationResult) { + return { message: 'unable to validate swagger params object', errors: null }; + } + + const errors = getCondensedErrorTraceString(validationResult); + + if (!errors) { + return { message: 'swagger params object is valid', errors: null }; + } + + return { message: 'swagger params object is invalid', errors: errors }; +}; + +/** + * Convert the original validation errors array into a more condensed and human readable version. + * + * @param {ValidationResult} validationResult + * @returns {IValidateSwaggerObjectCondensedErrors} condensed error string or null if no errors present + */ +export const getCondensedErrorTraceString = function ( + validationResult: ValidationResult +): IValidateSwaggerObjectCondensedErrors { + if (!validationResult) { + return null; + } + + const validationErrors = validationResult.errorsWithStringTypes(); + + if (!validationErrors || !validationErrors.length) { + return null; + } + + return validationErrors.map(validationError => { return { - message: 'swagger params object is invalid', - // convert the original validation errors array into a more condensed and human readable version. - errors: validationResult.errorsWithStringTypes().map(validationError => { - return { - errorType: validationError.errorType, - // condense the original array of trace strings into a single period delimited string - trace: validationError.trace.map(traceStep => traceStep.stepName).join('.') - }; - }) + errorType: validationError.errorType, + // condense the original array of trace objects into a single period delimited string + trace: validationError.trace.map(traceStep => `"${traceStep.stepName}"`).join('.') }; - } + }); +}; + +/** + * A custom validator config that ignores ADDITIONAL_PROPERTY errors on fields that are defined as being ANY object. + * - IE: they have `type: object` and NO additional properties + */ +export const ignoreAdditionalPropertyErrorsOnAnyObjectFields: IValidatorConfig = { + ignoreError: (error: IValidationError, value: any, schema: Schema, spec: Spec) => { + // Only ADDITIONAL_PROPERTY errors are potentially ignorable + if (error.errorType !== ValidationErrorType.ADDITIONAL_PROPERTY) { + return false; + } + + // Only ignore if schema has `type: object` and no additional properties + if (Object.keys(schema).length !== 1 || schema.type !== 'object') { + return false; + } - return { message: 'swagger params object is valid', errors: null }; + // Ignore additional property errors, as this field was defined as being ANY object. + return true; + } }; From 7e38d20b896127f2cd51a3f0ba0f3289281f8eda Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Wed, 19 Aug 2020 10:51:16 -0700 Subject: [PATCH 013/194] 778: api-mobile pipeline/openshift support - add .pipeline and openshift files - add Dockerfile (used in pipeline build) - update github workflows to run api-mobile build/deploy/etc - update knexfile.ts - update package.json - add misc/version route for readiness/liveness probe --- .config/config.json | 8 +- .github/workflows/deploy.yml | 258 +- .github/workflows/deployStatic.yml | 379 ++- api-mobile/.gitignore | 6 + api-mobile/.pipeline/README.md | 85 + api-mobile/.pipeline/api.build.js | 9 + api-mobile/.pipeline/api.deploy.js | 9 + api-mobile/.pipeline/api.test.js | 9 + api-mobile/.pipeline/clean.js | 9 + api-mobile/.pipeline/config.js | 117 + api-mobile/.pipeline/lib/api.build.js | 36 + api-mobile/.pipeline/lib/api.deploy.js | 46 + api-mobile/.pipeline/lib/api.test.js | 59 + api-mobile/.pipeline/lib/clean.js | 83 + api-mobile/.pipeline/lib/setup.js | 77 + api-mobile/.pipeline/npmw | 12 + api-mobile/.pipeline/package-lock.json | 46 + api-mobile/.pipeline/package.json | 23 + api-mobile/.pipeline/setup.js | 9 + api-mobile/.pipeline/utils/checkAndClean.js | 39 + api-mobile/.pipeline/utils/wait.js | 109 + api-mobile/Dockerfile | 56 + api-mobile/app.ts | 13 +- api-mobile/gulpfile.ts | 18 + api-mobile/knexfile.ts | 49 +- api-mobile/openshift/api.bc.yaml | 114 + api-mobile/openshift/api.dc.yaml | 300 ++ api-mobile/openshift/api.is.yaml | 25 + api-mobile/openshift/api.test.yaml | 135 + api-mobile/openshift/db.migrations.yaml | 109 + api-mobile/package-lock.json | 2436 +++++++++++++++-- api-mobile/package.json | 9 +- api-mobile/src/controllers/misc-controller.ts | 36 + api-mobile/src/swagger/swagger.yaml | 132 +- api-mobile/tsconfig.json | 22 +- api/api_sources/package-lock.json | 732 ++--- 36 files changed, 4567 insertions(+), 1047 deletions(-) create mode 100644 api-mobile/.pipeline/README.md create mode 100644 api-mobile/.pipeline/api.build.js create mode 100644 api-mobile/.pipeline/api.deploy.js create mode 100644 api-mobile/.pipeline/api.test.js create mode 100644 api-mobile/.pipeline/clean.js create mode 100644 api-mobile/.pipeline/config.js create mode 100644 api-mobile/.pipeline/lib/api.build.js create mode 100644 api-mobile/.pipeline/lib/api.deploy.js create mode 100644 api-mobile/.pipeline/lib/api.test.js create mode 100644 api-mobile/.pipeline/lib/clean.js create mode 100644 api-mobile/.pipeline/lib/setup.js create mode 100644 api-mobile/.pipeline/npmw create mode 100644 api-mobile/.pipeline/package-lock.json create mode 100644 api-mobile/.pipeline/package.json create mode 100644 api-mobile/.pipeline/setup.js create mode 100644 api-mobile/.pipeline/utils/checkAndClean.js create mode 100644 api-mobile/.pipeline/utils/wait.js create mode 100644 api-mobile/Dockerfile create mode 100644 api-mobile/gulpfile.ts create mode 100644 api-mobile/openshift/api.bc.yaml create mode 100644 api-mobile/openshift/api.dc.yaml create mode 100644 api-mobile/openshift/api.is.yaml create mode 100644 api-mobile/openshift/api.test.yaml create mode 100644 api-mobile/openshift/db.migrations.yaml create mode 100644 api-mobile/src/controllers/misc-controller.ts diff --git a/.config/config.json b/.config/config.json index ad3998d36..53a8c6110 100644 --- a/.config/config.json +++ b/.config/config.json @@ -12,7 +12,8 @@ "olderVersions": [], "module": { "app": "invasivesbc-app", - "api": "invasivesbc-api" + "api": "invasivesbc-api", + "api-mobile": "invasivesbc-api-mobile" }, "staticBranches": ["dev", "staging", "prod"], "staticUrls": { @@ -25,6 +26,11 @@ "staging": "api-test-invasivesbc.pathfinder.gov.bc.ca", "prod": "api-invasivesbc.pathfinder.gov.bc.ca" }, + "staticUrlsAPIMobile": { + "dev": "api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca", + "staging": "api-mobile-test-invasivesbc.pathfinder.gov.bc.ca", + "prod": "api-mobile-invasivesbc.pathfinder.gov.bc.ca" + }, "certificateURL": { "dev": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", "test": "https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a5ffb4f04..1a14021f0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,5 @@ -# Test Deploy On OpensShift +# PR Based Deploy On OpensShift +# Builds and Deploys unmerged PR's to temporary pods/services/routes/etc in the OpenShift Dev environment. name: Deploy on OpensShift on: @@ -6,148 +7,213 @@ on: types: [opened, reopened, synchronize] jobs: + # Print variables for logging and debugging purposes + checkEnv: + name: Check Env variables + runs-on: ubuntu-latest + steps: + - name: Print Env Vars + run: | + echo Git Base Ref: ${{ github.base_ref }} + echo Git Build ID: ${{ github.event.number }} + echo Git Pull Request Ref: ${{ github.event.pull_request.head.sha }} + echo OC CLI Version: $(oc version) + + # Build the API buildAPI: name: Build API runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == false}} + env: + BUILD_ID: ${{ github.event.number }} steps: - - name: Print Target Branch details - env: - TARGET: ${{ github.event.pull_request.head.sha }} - run: | - echo "$TARGET" - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - export PATH=$PATH_TO_OC - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Build the api images - name: Build API Images - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" + run: | + npm ci + DEBUG=* npm run build -- --pr=$BUILD_ID + + # Build the `api-mobile` API + # Note: This job relies on setup (database, etc) executed as part of the previous `buildAPI` job + buildAPIMobile: + name: Build "api-mobile" + runs-on: ubuntu-latest + if: ${{ github.event.pull_request.merged == false }} # Only run when the PR is opened/updated + env: + BUILD_ID: ${{ github.event.number }} + steps: + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 10.16 + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Build the api-mobile images + - name: Build API Mobile Images + working-directory: "./api-mobile/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci - DEBUG=* npm run build -- --pr=${{ github.event.number }} - # End buildAPI + DEBUG=* npm run build -- --pr=$BUILD_ID + + # Build the web frontend app buildAPP: name: Build App runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == false}} + env: + BUILD_ID: ${{ github.event.number }} steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Build the app images - name: Build APP Images - working-directory: './app/.pipeline/' + working-directory: "./app/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci - DEBUG=* npm run build -- --pr=${{ github.event.number }} - # End buildAPP + DEBUG=* npm run build -- --pr=$BUILD_ID + + # Deploy App, API, and API-MOBILE images deploy: - name: Deploy App and API + name: Deploy App, API, and API-MOBILE runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == false}} - needs: + env: + BUILD_ID: ${{ github.event.number }} + needs: - buildAPI + - buildAPIMobile - buildAPP steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Deploy the api - name: Deploy API - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" + run: | + npm ci + DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev + DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev + DEBUG=* npm run test -- --pr=$BUILD_ID --env=dev + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev + DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev + + # Deploy the api-mobile + - name: Deploy API Mobile + working-directory: "./api-mobile/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci - DEBUG=* npm run pre-deploy -- --pr=${{ github.event.number }} --env=dev - DEBUG=* npm run setup -- --pr=${{ github.event.number }} --env=dev - DEBUG=* npm run seed -- --pr=${{ github.event.number }} --env=dev - DEBUG=* npm run test -- --pr=${{ github.event.number }} --env=dev - DEBUG=* npm run deploy -- --pr=${{ github.event.number }} --env=dev - DEBUG=* npm run deploy-tools -- --pr=${{ github.event.number }} --env=dev + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev + # TODO disable test while there are no tests to run. Test command (see api.test.yaml) will need updating. + # DEBUG=* npm run test -- --pr=$BUILD_ID --env=dev + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev + + # Deploy the app - name: Deploy App - working-directory: './app/.pipeline' + working-directory: "./app/.pipeline" run: | - export PATH=$PATH_TO_OC npm ci - DEBUG=* npm run deploy -- --pr=${{ github.event.number }} --env=dev - # End deploy + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev + + # Deploy App, API, and API-MOBILE images and related build/deployment artifacts clean: - name: Clean PR based deployment + name: Clean Deployment Artifacts for App, API, and API-MOBILE runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && (github.base_ref != 'dev' && github.base_ref != 'prod') }} + env: + BUILD_ID: ${{ github.event.number }} steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - export PATH=$PATH_TO_OC - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Clean the api deployment artifacts - name: Clean API Deployment - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci - DEBUG=* npm run clean -- --pr=${{ github.event.number }} --env=build - DEBUG=* npm run clean -- --pr=${{ github.event.number }} --env=dev + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the api-mobile deployment artifacts + - name: Clean API Mobile Deployment + working-directory: "./api-mobile/.pipeline/" + run: | + npm ci + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the app deployment artifacts - name: Clean APP Deployment - working-directory: './app/.pipeline/' + working-directory: "./app/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci - DEBUG=* npm run clean -- --pr=${{ github.event.number }} --env=build - DEBUG=* npm run clean -- --pr=${{ github.event.number }} --env=dev - # End clean + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index 804cc5f0f..33082cb48 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -1,4 +1,5 @@ -# Test Deploy On OpensShift +# Static Deploy On OpensShift +# Builds and Deploys merged PR's to persistent pods/services/routes/etc in the OpenShift Dev environment. name: Static Deploy on OpensShift on: @@ -7,18 +8,21 @@ on: branches: - dev - prod + jobs: + # Print variables for logging and debugging purposes checkEnv: name: Check Env variables runs-on: ubuntu-latest steps: - name: Print Env Vars run: | - echo ${{ github.base_ref }} - echo $GITHUB_BASE_REF - echo $GITHUB_HEAD_REF - #end steps - #end checkEnv + echo Git Base Ref: ${{ github.base_ref }} + echo Git Build ID: ${{ github.event.number }} + echo Git Pull Request Ref: ${{ github.event.pull_request.head.sha }} + echo OC CLI Version: $(oc version) + + # Build the API buildAPI: name: Build API Static runs-on: ubuntu-latest @@ -26,31 +30,64 @@ jobs: env: BUILD_ID: ${{ github.event.number }} steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - export PATH=$PATH_TO_OC - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Build the api images - name: Build API Images - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" + run: | + npm ci + DEBUG=* npm run build -- --pr=$BUILD_ID --branch=${{ github.base_ref }} --type=static + + # Build the `api-mobile` API + # Note: This job relies on setup (database, etc) executed as part of the previous `buildAPI` job + buildAPIMobile: + name: Build "api-mobile" Static + runs-on: ubuntu-latest + if: ${{ github.event.pull_request.merged == true}} # Only run when the PR is merged + env: + BUILD_ID: ${{ github.event.number }} + needs: + - buildAPI + steps: + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 10.16 + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Build the api-mobile images + - name: Build API Mobile Images + working-directory: "./api-mobile/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run build -- --pr=$BUILD_ID --branch=${{ github.base_ref }} --type=static - # End buildAPI + + # Build the web frontend app buildAPP: name: Build App Static runs-on: ubuntu-latest @@ -58,248 +95,294 @@ jobs: env: BUILD_ID: ${{ github.event.number }} steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Build the app images - name: Build APP Images - working-directory: './app/.pipeline/' + working-directory: "./app/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run build -- --pr=$BUILD_ID --branch=${{ github.base_ref }} --type=static # End buildAPP + + # Deploy App, API, and API-MOBILE images in Dev deployDev: - name: Deploy App and API in DEV + name: Deploy App, API, and API-MOBILE to DEV environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: BUILD_ID: ${{ github.event.number }} - needs: + needs: - buildAPI + - buildAPIMobile - buildAPP steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Deploy the api - name: Deploy API - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + + # Deploy the api-mobile + - name: Deploy API Mobile + working-directory: "./api-mobile/.pipeline/" + run: | + npm ci + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + + # Deploy the app - name: Deploy App - working-directory: './app/.pipeline' + working-directory: "./app/.pipeline" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - # End deployDev + + # Deploy App, API, and API-MOBILE images in Test deployTest: - name: Deploy App and API in TEST + name: Deploy App, API, and API-MOBILE to TEST environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: BUILD_ID: ${{ github.event.number }} - needs: + needs: - buildAPI + - buildAPIMobile - buildAPP steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Deploy the api - name: Deploy API - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} DEBUG=* npm run setup -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} DEBUG=* npm run seed -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} + + # Deploy the api-mobile + - name: Deploy API Mobile + working-directory: "./api-mobile/.pipeline/" + run: | + npm ci + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} + + # Deploy the app - name: Deploy App - working-directory: './app/.pipeline' + working-directory: "./app/.pipeline" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - # End deployTest + + # Deploy App, API, and API-MOBILE images in Prod deployProd: - name: Deploy App and API in PROD + name: Deploy App, API, and API-MOBILE to PROD environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'prod'}} env: BUILD_ID: ${{ github.event.number }} - needs: + needs: - buildAPI + - buildAPIMobile - buildAPP steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Deploy the api - name: Deploy API - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} DEBUG=* npm run setup -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + + # Deploy the api-mobile + - name: Deploy API Mobile + working-directory: "./api-mobile/.pipeline/" + run: | + npm ci + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + + # Deploy the app - name: Deploy App - working-directory: './app/.pipeline' + working-directory: "./app/.pipeline" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - # End deployProd + + # Deploy App, API, and API-MOBILE images and related build/deployment artifacts clean: - name: Clean PR based deployment + name: Clean Deployment Artifacts for App, API, and API-MOBILE in DEV and Test environments runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'dev' }} - needs: + needs: - buildAPI + - buildAPIMobile - buildAPP - deployDev - deployTest env: BUILD_ID: ${{ github.event.number }} steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - export PATH=$PATH_TO_OC - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Clean the api deployment artifacts - name: Clean API Deployment - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the api-mobile deployment artifacts + - name: Clean API Mobile Deployment + working-directory: "./api-mobile/.pipeline/" + run: | + npm ci + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the app deployment artifacts - name: Clean APP Deployment - working-directory: './app/.pipeline/' + working-directory: "./app/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # End clean + + # Clean App, API, and API-MOBILE images and related build/deployment artifacts cleanProd: - name: Clean PR based deployment for Production Env + name: Clean Deployment Artifacts for App, API, and API-MOBILE in PROD environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'prod' }} - needs: + needs: - buildAPI + - buildAPIMobile - buildAPP - deployProd env: BUILD_ID: ${{ github.event.number }} steps: - - uses: actions/checkout@v1 - - name: Use Node.js + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 10.16 - - name: Install OpenShift - run: | - cd $HOME - curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - tar -xf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz - cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit - chmod +x oc - echo "::set-env name=PATH_TO_OC::$PATH:$(pwd)" - export PATH=$PATH_TO_OC - - name: Login into OpenShift - run: | - export PATH=$PATH_TO_OC - oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Log in to OpenShift. + # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. + # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Clean the api deployment artifacts - name: Clean API Deployment - working-directory: './api/.pipeline/' + working-directory: "./api/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the api-mobile deployment artifacts + - name: Clean API Mobile Deployment + working-directory: "./api-mobile/.pipeline/" + run: | + npm ci + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the app deployment artifacts - name: Clean APP Deployment - working-directory: './app/.pipeline/' + working-directory: "./app/.pipeline/" run: | - export PATH=$PATH_TO_OC npm ci DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # End clean -# -- \ No newline at end of file diff --git a/api-mobile/.gitignore b/api-mobile/.gitignore index 1521c8b76..5b4c3e32d 100644 --- a/api-mobile/.gitignore +++ b/api-mobile/.gitignore @@ -1 +1,7 @@ +**/node_modules + dist + +coverage + +.env diff --git a/api-mobile/.pipeline/README.md b/api-mobile/.pipeline/README.md new file mode 100644 index 000000000..87dd1665e --- /dev/null +++ b/api-mobile/.pipeline/README.md @@ -0,0 +1,85 @@ +# Openshift PR-Based Pipeline via GitHub Actions + +## Important files/folders + +- ### _./.github/workflows/_ + + The workflows executed by the GitHub Actions mechanism + + - #### _./github/workflows/deploy.yml_ + + The workflow that runs when a PR is opened. + + - #### _./github/workflows/deployStatic.yml_ + + The workflow that runs when a PR is closed/merged. + +- ### _./.config/config.json_ + + Root config object used in various parts of the pipeline + +- ### _./api-mobile/.pipeline/_ + + Contains all of the jobs executed as part of one or more GitHub workflows + + - #### _./api-mobile/.pipeline/package.json_ + + Defines the scripts executed in one or more steps (in a GitHub Workflow->job) + + - #### _./api-mobile/.pipeline/config.js_ + + Defines the scripts executed in one or more steps (in a GitHub Workflow->job) + + - #### _./api-mobile/.pipeline/lib/_ + + Defines additional config used by the pipeline, extending the root config. + + - #### _./api-mobile/.pipeline/utils/_ + + Contains general helper functions utilized by the task functions + +- ### _./api-mobile/openshift/_ + + Contains OpenShift yaml configs for builds/deployments/etc. These are utilized by the library functions when configuring pods/commands. + +- ### _./Dockerfile_ + Used to build the api image, as part of the execution of the OpenShift build config. + +## Important technologies/repos + +- ### _pipeline-cli_ + + The BCGov npm package that is leveraged heavily in the `./api-mobile/.pipeline/*` code. + + Repo: https://github.com/BCDevOps/pipeline-cli + +- ### _GitHub Workflows_ + + https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow + +- ### _OpenShift_ + + https://docs.openshift.com/container-platform/3.11/welcome/index.html + +## General flow of pipeline execution + +1. GitHub PR is opened/closed/etc + _Workflow execution triggers are controlled using `on:` statements_ +2. GitHub Workflows are executed +3. Within a given workflow: + + 1. Jobs are executed + _The conditional execution of jobs can be controlled using `if:` statements_ + _The execution order of jobs can be controlled using `needs:` statements_ + + 2. Within a given job: + + 1. Steps are executed + 2. Eventually one of the steps will execute one or more npm commands + _These npm commands match package.json scripts in `.../.pipeline/package.json`_ + + 3. Within a given npm command: + + 1. The pacakge.json script runs, and executes the `.../.pipeline/` file it references + _This file may configure and execute one or more `.../.pipeline/lib/` tasks_ + 2. The `../.pipeline/lib` task will utilize the `pipeline-cli` tool and the `../openshift/` configs to configure and run OpenShift pods/commands diff --git a/api-mobile/.pipeline/api.build.js b/api-mobile/.pipeline/api.build.js new file mode 100644 index 000000000..323d9a9b2 --- /dev/null +++ b/api-mobile/.pipeline/api.build.js @@ -0,0 +1,9 @@ +'use strict'; + +const apiBuildTask = require('./lib/api.build.js'); +const config = require('./config.js'); + +const settings = { ...config, phase: 'build' }; + +// Builds the api image +apiBuildTask(settings); diff --git a/api-mobile/.pipeline/api.deploy.js b/api-mobile/.pipeline/api.deploy.js new file mode 100644 index 000000000..c9e065a61 --- /dev/null +++ b/api-mobile/.pipeline/api.deploy.js @@ -0,0 +1,9 @@ +'use strict'; + +const config = require('./config.js'); +const apiDeployTask = require('./lib/api.deploy.js'); + +const settings = { ...config, phase: config.options.env }; + +// Deploys the api image +apiDeployTask(settings); diff --git a/api-mobile/.pipeline/api.test.js b/api-mobile/.pipeline/api.test.js new file mode 100644 index 000000000..97947193e --- /dev/null +++ b/api-mobile/.pipeline/api.test.js @@ -0,0 +1,9 @@ +'use strict'; + +const config = require('./config.js'); +const apiTestTask = require('./lib/api.test.js'); + +const settings = { ...config, phase: config.options.env }; + +// Executes the api tests +apiTestTask(settings); diff --git a/api-mobile/.pipeline/clean.js b/api-mobile/.pipeline/clean.js new file mode 100644 index 000000000..44d75f997 --- /dev/null +++ b/api-mobile/.pipeline/clean.js @@ -0,0 +1,9 @@ +'use strict'; + +const config = require('./config.js'); +const cleanTask = require('./lib/clean.js'); + +const settings = { ...config, phase: config.options.env }; + +// Cleans all build and deployment artifacts (pods, etc) +cleanTask(settings); diff --git a/api-mobile/.pipeline/config.js b/api-mobile/.pipeline/config.js new file mode 100644 index 000000000..b55e4214f --- /dev/null +++ b/api-mobile/.pipeline/config.js @@ -0,0 +1,117 @@ +'use strict'; +let options = require('pipeline-cli').Util.parseArguments(); +const config = require('../../.config/config.json'); + +const defaultHost = 'invasivebc-8ecbmv-api-mobile.pathfinder.gov.bc.ca'; +const name = (config.module && config.module['api-mobile']) || 'lucy-api-mobile'; +const dbName = (config.module && config.module['api']) || 'lucy-api'; +const changeId = options.pr || `${Math.floor(Date.now() * 1000) / 60.0}`; //aka pull-request or brach to process +const version = config.version || '1.0.0'; +const deployType = options.type || ''; +const isStaticDeployment = deployType === 'static'; +const deployChangeId = (isStaticDeployment && 'deploy') || changeId; +const tag = (isStaticDeployment && `build-${version}-${changeId}-${branch}`) || `build-${version}-${changeId}`; +const branch = (isStaticDeployment && options.branch) || undefined; +const staticUrlsAPIMobile = config.staticUrlsAPIMobile || {}; +const staticBranches = config.staticBranches || []; + +const processOptions = options => { + const result = options; + + // Check git + if (!result.git.url.includes('.git')) { + result.git.url = `${result.git.url}.git`; + } + if (!result.git.http_url.includes('.git')) { + result.git.http_url = `${result.git.http_url}.git`; + } + + // Fixing repo + if (result.git.repository.includes('/')) { + const last = result.git.repository.split('/').pop(); + const final = last.split('.')[0]; + result.git.repository = final; + } + + return result; +}; + +options = processOptions(options); + +const phases = { + build: { + namespace: '8ecbmv-tools', + name: `${name}`, + dbName: `${dbName}`, + phase: 'build', + changeId: changeId, + suffix: `-build-${changeId}`, + instance: `${name}-build-${changeId}`, + version: `${version}-${changeId}`, + tag: tag, + branch: branch + }, + dev: { + namespace: '8ecbmv-dev', + name: `${name}`, + dbName: `${dbName}`, + phase: 'dev', + changeId: deployChangeId, + suffix: `-dev-${deployChangeId}`, + instance: `${name}-dev-${deployChangeId}`, + version: `${deployChangeId}-${changeId}`, + tag: `dev-${version}-${deployChangeId}`, + host: + (isStaticDeployment && (staticUrlsAPIMobile.dev || defaultHost)) || + `${name}-${changeId}-8ecbmv-dev.pathfinder.gov.bc.ca`, + env: 'dev', + certificateURL: config.certificateURL.dev, + migrationInfo: config.migrationInfo.dev, + replicas: 1, + maxReplicas: 2 + }, + test: { + namespace: '8ecbmv-test', + name: `${name}`, + dbName: `${dbName}`, + phase: 'test', + changeId: deployChangeId, + suffix: `-test`, + instance: `${name}-test`, + version: `${version}`, + previousVersion: config.previousVersion || 'NA', + tag: `test-${version}`, + host: staticUrlsAPIMobile.staging, + env: 'test', + certificateURL: config.certificateURL.test, + migrationInfo: config.migrationInfo.test, + replicas: 3, + maxReplicas: 5 + }, + prod: { + namespace: '8ecbmv-prod', + name: `${name}`, + dbName: `${dbName}`, + phase: 'prod', + changeId: deployChangeId, + suffix: `-prod`, + instance: `${name}-prod`, + version: `${version}`, + previousVersion: config.previousVersion || 'NA', + tag: `prod-${version}`, + host: staticUrlsAPIMobile.prod, + env: 'prod', + certificateURL: config.certificateURL.prod, + migrationInfo: config.migrationInfo.prod, + replicas: 3, + maxReplicas: 6 + } +}; + +// This callback forces the node process to exit as failure. +process.on('unhandledRejection', reason => { + console.log(reason); + process.exit(1); +}); + +module.exports = exports = { phases, options, staticBranches }; diff --git a/api-mobile/.pipeline/lib/api.build.js b/api-mobile/.pipeline/lib/api.build.js new file mode 100644 index 000000000..1372ac0f6 --- /dev/null +++ b/api-mobile/.pipeline/lib/api.build.js @@ -0,0 +1,36 @@ +'use strict'; +const { OpenShiftClientX } = require('pipeline-cli'); +const path = require('path'); + +/** + * Run a pod to build the api image stream. + * + * @param {*} settings + */ +module.exports = settings => { + const phases = settings.phases; + const options = settings.options; + const phase = 'build'; + + const oc = new OpenShiftClientX(Object.assign({ namespace: phases.build.namespace }, options)); + + const changeId = phases[phase].changeId; + const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); + + const objects = []; + + objects.push( + ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.bc.yaml`, { + param: { + NAME: phases[phase].name, + SUFFIX: phases[phase].suffix, + VERSION: phases[phase].tag, + SOURCE_REPOSITORY_URL: oc.git.http_url, + SOURCE_REPOSITORY_REF: phases[phase].branch || oc.git.ref + } + }) + ); + + oc.applyRecommendedLabels(objects, phases[phase].name, phase, changeId, phases[phase].instance); + oc.applyAndBuild(objects); +}; diff --git a/api-mobile/.pipeline/lib/api.deploy.js b/api-mobile/.pipeline/lib/api.deploy.js new file mode 100644 index 000000000..0f5990669 --- /dev/null +++ b/api-mobile/.pipeline/lib/api.deploy.js @@ -0,0 +1,46 @@ +'use strict'; +const { OpenShiftClientX } = require('pipeline-cli'); +const path = require('path'); + +/** + * Run a pod to deploy the api image (must be already built, see api.build.js). + * + * @param {*} settings + * @returns + */ +module.exports = settings => { + const phases = settings.phases; + const options = settings.options; + const phase = options.env; + + const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); + + const changeId = phases[phase].changeId; + const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); + + let objects = []; + + objects.push( + ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.dc.yaml`, { + param: { + NAME: phases[phase].name, + DBNAME: phases[phase].dbName, + SUFFIX: phases[phase].suffix, + VERSION: phases[phase].tag, + HOST: phases[phase].host, + CHANGE_ID: phases.build.changeId || changeId, + ENVIRONMENT: phases[phase].env || 'dev', + DB_SERVICE_NAME: `${phases[phase].dbName}-postgresql${phases[phase].suffix}`, + CERTIFICATE_URL: phases[phase].certificateURL, + DB_CLEAN_UP: phases[phase].migrationInfo.cleanup, + DB_SEED: phases[phase].migrationInfo.dbSeed, + REPLICAS: phases[phase].replicas || 1, + REPLICA_MAX: phases[phase].maxReplicas || 1 + } + }) + ); + + oc.applyRecommendedLabels(objects, phases[phase].name, phase, `${changeId}`, phases[phase].instance); + oc.importImageStreams(objects, phases[phase].tag, phases.build.namespace, phases.build.tag); + oc.applyAndDeploy(objects, phases[phase].instance); +}; diff --git a/api-mobile/.pipeline/lib/api.test.js b/api-mobile/.pipeline/lib/api.test.js new file mode 100644 index 000000000..dcd5ebf76 --- /dev/null +++ b/api-mobile/.pipeline/lib/api.test.js @@ -0,0 +1,59 @@ +'use strict'; +const { OpenShiftClientX } = require('pipeline-cli'); +const path = require('path'); +const wait = require('../utils/wait'); +const checkAndClean = require('../utils/checkAndClean'); + +/** + * Run a pod to execute tests. + * + * @param {*} settings + */ +module.exports = settings => { + const phases = settings.phases; + const options = settings.options; + const phase = options.env; + + const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); + + const changeId = phases[phase].changeId; + const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); + + let objects = []; + + const instance = `${phases[phase].name}-${changeId}`; + const image = `${phases[phase].name}:${phases[phase].tag}-setup`; + + // Get API image stream + const data = oc.get(`istag/${image}`) || []; + if (data.length === 0) { + console.log('Unable to fetch API Mobile image ref'); + process.exit(0); + } + const imageStream = data[0]; + + const podName = `${phases[phase].name}${phases[phase].suffix}-test`; + + objects.push( + ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.test.yaml`, { + param: { + NAME: podName, + SUFFIX: phases[phase].suffix, + VERSION: phases[phase].tag, + CHANGE_ID: phases[phase].changeId, + ENVIRONMENT: phases[phase].env || 'dev', + DB_SERVICE_NAME: `${phases[phase].dbName}-postgresql${phases[phase].suffix}`, + IMAGE: imageStream.image.dockerImageReference, + CERTIFICATE_URL: 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs', + DB_CLEAN_UP: phases[phase].migrationInfo.cleanup, + DB_SEED: phases[phase].migrationInfo.dbSeed + } + }) + ); + checkAndClean(`pod/${podName}`, oc); + + oc.applyRecommendedLabels(objects, phases[phase].name, phase, `${changeId}`, instance); + oc.applyAndDeploy(objects, phases[phase].instance); + + wait(`pod/${podName}`, settings, 35); +}; diff --git a/api-mobile/.pipeline/lib/clean.js b/api-mobile/.pipeline/lib/clean.js new file mode 100644 index 000000000..923eb4456 --- /dev/null +++ b/api-mobile/.pipeline/lib/clean.js @@ -0,0 +1,83 @@ +'use strict'; +const { OpenShiftClientX } = require('pipeline-cli'); +const checkAndClean = require('../utils/checkAndClean'); + + +/** + * Run OC commands to clean all build and deployment artifacts (pods, etc). + * + * @param {*} settings + */ +module.exports = settings => { + const phases = settings.phases; + const options = settings.options; + const oc = new OpenShiftClientX(Object.assign({ namespace: phases.build.namespace }, options)); + const target_phase = options.env; + + for (let phase in phases) { + if (!phases.hasOwnProperty(phase)) { + continue; + } + + if (phase !== target_phase) { + continue; + } + + // Get build configs + let buildConfigs = oc.get('bc', { + selector: `app=${phase.instance},env-id=${phase.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + namespace: phase.namespace + }); + + // Clean build configs + buildConfigs.forEach(buildConfig => { + if (buildConfig.spec.output.to.kind == 'ImageStreamTag') { + oc.delete([`ImageStreamTag/${buildConfig.spec.output.to.name}`], { + 'ignore-not-found': 'true', + wait: 'true', + namespace: phase.namespace + }); + } + }); + + // get deployment configs + let deploymentConfigs = oc.get('dc', { + selector: `app=${phase.instance},env-id=${phase.changeId},env-name=${phase},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + namespace: phase.namespace + }); + + // Clean deployment configs + deploymentConfigs.forEach(deploymentConfig => { + deploymentConfig.spec.triggers.forEach(trigger => { + if (trigger.type == 'ImageChange' && trigger.imageChangeParams.from.kind == 'ImageStreamTag') { + oc.delete([`ImageStreamTag/${trigger.imageChangeParams.from.name}`], { + 'ignore-not-found': 'true', + wait: 'true', + namespace: phase.namespace + }); + } + }); + }); + + // Cleaning other pods + if (phase !== 'build') { + const newOC = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); + const setupPod = `${phases[phase].name}${phases[phase].suffix}-setup`; + // const testPod = `${phases[phase].name}${phases[phase].suffix}-test`; + checkAndClean(`pod/${setupPod}`, newOC); + // checkAndClean(`pod/${testPod}`, newOC); + } + + oc.raw('delete', ['all'], { + selector: `app=${phase.instance},env-id=${phase.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + wait: 'true', + namespace: phase.namespace + }); + + oc.raw('delete', ['all,pvc,secrets,Secrets,secret,configmap,endpoints,Endpoints'], { + selector: `app=${phase.instance},env-id=${phase.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + wait: 'true', + namespace: phase.namespace + }); + } +}; diff --git a/api-mobile/.pipeline/lib/setup.js b/api-mobile/.pipeline/lib/setup.js new file mode 100644 index 000000000..6e8d36706 --- /dev/null +++ b/api-mobile/.pipeline/lib/setup.js @@ -0,0 +1,77 @@ +'use strict'; +const { OpenShiftClientX } = require('pipeline-cli'); +const wait = require('../utils/wait'); +const checkAndClean = require('../utils/checkAndClean'); +const path = require('path'); + +/** + * Run a pod to perform general setup operations. + * + * @param {*} settings + */ +module.exports = settings => { + const phases = settings.phases; + const options = settings.options; + const phase = options.env; + + const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); + + const changeId = phases[phase].changeId; + const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); + + const objects = []; + const isObjects = []; + + const imageStreamName = phases[phase].name; + const instance = `${imageStreamName}-${changeId}`; + const setupTag = `${phases[phase].tag}-setup`; + const image = `${imageStreamName}:${setupTag}`; + + // Clean existing setup image stream + checkAndClean(`istag/${image}`, oc); + + // Creating image stream for setup pod + isObjects.push( + ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.is.yaml`, { + param: { + NAME: imageStreamName + } + }) + ); + + oc.applyRecommendedLabels(isObjects, imageStreamName, phase, changeId, instance); + oc.importImageStreams(isObjects, setupTag, phases.build.namespace, phases.build.tag); + + // Get setup image stream + const data = oc.get(`istag/${image}`) || []; + if (data.length === 0) { + console.log('Unable to fetch Setup image ref'); + process.exit(0); + } + const imageStream = data[0]; + + const podName = `${imageStreamName}${phases[phase].suffix}-setup`; + + // Configure database migrations operation + objects.push( + ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/db.migrations.yaml`, { + param: { + NAME: podName, + SUFFIX: phases[phase].suffix, + VERSION: phases[phase].tag, + CHANGE_ID: phases[phase].changeId, + ENVIRONMENT: phases[phase].env || 'dev', + NODE_ENV: phases[phase].env || 'dev', + DB_SERVICE_NAME: `${phases[phase].dbName}-postgresql${phases[phase].suffix}`, + IMAGE: imageStream.image.dockerImageReference + } + }) + ); + + checkAndClean(`pod/${podName}`, oc); + + oc.applyRecommendedLabels(objects, imageStreamName, phase, changeId, instance); + oc.applyAndDeploy(objects, phases[phase].instance); + + wait(`pod/${podName}`, settings, 30); +}; diff --git a/api-mobile/.pipeline/npmw b/api-mobile/.pipeline/npmw new file mode 100644 index 000000000..1eed7c953 --- /dev/null +++ b/api-mobile/.pipeline/npmw @@ -0,0 +1,12 @@ +#!/bin/sh +set +x +type -t nvm && nvm deactivate +export NVM_DIR="$(git rev-parse --show-toplevel)/.nvm" +if [ ! -f "$NVM_DIR/nvm.sh" ]; then + mkdir -p "${NVM_DIR}" + curl -sSL -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash &>/dev/null +fi +source "$NVM_DIR/nvm.sh" &>/dev/null +METHOD=script nvm install --no-progress &>/dev/null +nvm use &>/dev/null +exec npm "$@" diff --git a/api-mobile/.pipeline/package-lock.json b/api-mobile/.pipeline/package-lock.json new file mode 100644 index 000000000..39413b554 --- /dev/null +++ b/api-mobile/.pipeline/package-lock.json @@ -0,0 +1,46 @@ +{ + "name": "pipeline", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "pipeline-cli": { + "version": "git+https://github.com/BCDevOps/pipeline-cli.git#2d2c46e6fbd54ad2c39537508f54b1c9b20da24a", + "from": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", + "requires": { + "debug": "^4.1.0", + "lodash.isfunction": "^3.0.9", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1" + } + } + } +} diff --git a/api-mobile/.pipeline/package.json b/api-mobile/.pipeline/package.json new file mode 100644 index 000000000..acf3d916d --- /dev/null +++ b/api-mobile/.pipeline/package.json @@ -0,0 +1,23 @@ +{ + "name": "pipeline", + "version": "1.0.0", + "description": "Contains dependencies and scripts for executing OpenShift pipeline build/deploy scripts", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + }, + "scripts": { + "build": "node api.build.js", + "deploy": "node api.deploy.js", + "test": "node api.test.js", + "setup": "node setup.js", + "clean": "node clean.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/bcgov/ocp-sso.git" + }, + "dependencies": { + "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1" + } +} diff --git a/api-mobile/.pipeline/setup.js b/api-mobile/.pipeline/setup.js new file mode 100644 index 000000000..cab552348 --- /dev/null +++ b/api-mobile/.pipeline/setup.js @@ -0,0 +1,9 @@ +'use strict'; + +const config = require('./config.js'); +const setupTask = require('./lib/setup.js'); + +const settings = { ...config, phase: config.options.env }; + +// Performs any general setup (ie: database migrations) +setupTask(settings); diff --git a/api-mobile/.pipeline/utils/checkAndClean.js b/api-mobile/.pipeline/utils/checkAndClean.js new file mode 100644 index 000000000..6314a4329 --- /dev/null +++ b/api-mobile/.pipeline/utils/checkAndClean.js @@ -0,0 +1,39 @@ +/* + * Copyright © 2019 Province of British Columbia + * Licensed under the Apache License, Version 2.0 (the "License") + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * ** + * http://www.apache.org/licenses/LICENSE-2.0 + * ** + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * File: checkAndClean.js + * Project: pipeline + * File Created: Tuesday, 29th October 2019 10:17:44 am + * Author: pushan (you@you.you) + * ----- + * Last Modified: Tuesday, 29th October 2019 10:18:04 am + * Modified By: pushan (you@you.you>) + * ----- + */ +/** + * @description Check and delete existing resource + */ +module.exports = (resourceName, oc) => { + try { + const list = oc.get(resourceName) || []; + if (list.length === 0) { + console.log(`checkAndClean: No resource available with resource name: ${resourceName}`); + } else { + console.log(`checkAndClean: Cleaning resource => ${resourceName}`); + oc.delete([resourceName], { 'ignore-not-found': 'true', wait: 'true' }); + } + } catch (excp) { + console.log(`Resource ${resourceName} not available [${excp}]`); + } +}; +// --------------------------------------- diff --git a/api-mobile/.pipeline/utils/wait.js b/api-mobile/.pipeline/utils/wait.js new file mode 100644 index 000000000..5376833b1 --- /dev/null +++ b/api-mobile/.pipeline/utils/wait.js @@ -0,0 +1,109 @@ +'use strict'; +const { OpenShiftClientX } = require('pipeline-cli'); + +module.exports = (resourceName, settings, countArg, timeoutArg) => { + const timeout = timeoutArg || 20000; + let count = countArg || 20; + const phases = settings.phases; + const options = settings.options; + const phase = options.env; + const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); + + const check = () => { + try { + console.log(`Getting resource ${resourceName}`); + const list = oc.get(resourceName) || []; + // console.log(`${list.length}:${JSON.stringify(list, null, 2)}`) + if (list.length === 0) { + console.log(`Unable to fetch API Mobile resource: ${resourceName}`); + throw new Error(`Unable to fetch API Mobile resource: ${resourceName}`); + } + // console.log(JSON.stringify(data, null, 2)); + // Get Status + console.log(`Getting POD Status: ${resourceName}`); + const data = list[0]; + const status = data.status || { conditions: [], containerStatuses: [] }; + if (status.conditions && status.conditions.length === 0) { + console.log(`Unable to fetch API Mobile resource: ${resourceName} status`); + console.log(`${JSON.stringify(data)}`); + + // Retry if count is not zero + if (count > 0) { + console.log(`Retry until count is 0: ${resourceName}`); + count = count - 1; + setTimeout(check, timeout); + } else { + throw new Error(`Unable to fetch API Mobile resource: ${resourceName} status`); + } + } + + if (!status.containerStatuses) { + console.log(`Unable to fetch API Mobile resource: ${resourceName} container state (not defined)`); + console.log(`${JSON.stringify(data)}`); + + // Retry if count is not zero + if (count > 0) { + console.log(`Retry until count is 0: ${resourceName}`); + count = count - 1; + setTimeout(check, timeout); + return; + } else { + throw new Error(`Unable to fetch API Mobile resource: ${resourceName} status`); + } + } + + // Checking Container state + if (status.containerStatuses && status.containerStatuses.length === 0) { + console.log(`Unable to fetch API Mobile resource: ${resourceName} container state`); + console.log(`${JSON.stringify(data)}`); + + // Retry if count is not zero + if (count > 0) { + console.log(`Retry until count is 0: ${resourceName}`); + count = count - 1; + setTimeout(check, timeout); + return; + } else { + throw new Error(`Unable to fetch API Mobile resource: ${resourceName} status`); + } + } + + console.log(`Checking Container State: ${resourceName}`); + const containerStatus = status.containerStatuses[0] || {}; + if (!containerStatus.state) { + console.log(`Unable to fetch API Mobile resource: ${resourceName} container state`); + console.log(`${JSON.stringify(data)}`); + throw new Error(`Unable to fetch API Mobile resource: ${resourceName} container state`); + } + const state = containerStatus.state || {}; + if (state.terminated) { + if (state.terminated.reason.toLowerCase() === 'completed') { + console.log(`${resourceName}: Finished [Successfully]`); + // console.log(`${resourceName}: Deleting`) + // Remove Pod + // oc.delete([resourceName], {'ignore-not-found':'true', 'wait':'true'}) + return; + } else { + console.log(`Unable to fetch API Mobile resource: ${resourceName} terminated with error`); + console.log(JSON.stringify(data.status, null, 2)); + throw new Error(`Unable to fetch API Mobile resource: ${resourceName} terminated with error`); + } + } else { + if (count > 0) { + console.log(`Waiting for resource: ${resourceName} to finish ... ${count}`); + count = count - 1; + setTimeout(check, timeout); + } else { + console.log(`Wait time exceed for resource: ${resourceName}`); + console.log(`${JSON.stringify(data)}`); + throw new Error(`Wait time exceed for resource: ${resourceName}`); + } + } + } catch (excp) { + console.log(`Pod (${resourceName}) Wait: Exception ${excp}`); + throw excp; + } + }; + + setTimeout(check, timeout + 10000); +}; diff --git a/api-mobile/Dockerfile b/api-mobile/Dockerfile new file mode 100644 index 000000000..cb3471e71 --- /dev/null +++ b/api-mobile/Dockerfile @@ -0,0 +1,56 @@ +FROM node:10 + +ENV PORT 3002 +ENV HOME /opt/app-root/src/app + +# Creating HOME +USER 0 +RUN mkdir -p ${HOME} +RUN chmod -R 777 ${HOME} +RUN chown -R 1001 ${HOME} +# Make Directory for uploading issue logs + +RUN mkdir -p ${HOME}/../temp/uploads/issues +RUN chmod -R 777 ${HOME}/../temp/uploads/issues +USER 1001 + +# Setting Path +ENV PATH /opt/rh/rh-nodejs8/root/usr/bin:/opt/app-root/src/node_modules/.bin/:/opt/app-root/src/app.npm-global/bin/:/opt/app-root/src/app/bin:/opt/app-root/src/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/app-root/src/app/node_modules/.bin:/opt/app-root/src/app/app.npm-global/bin + +# Create app directory + +WORKDIR ${HOME} + +# Install app dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+) +# RUN npm install --only=production +COPY ./package*.json ./ + +RUN npm ci + +# If you are building your code for production, copy all files +COPY ./ . + +# Cleaning any existing generated file +RUN rm -rf ./dist + +# Build the api dist +RUN npm run build + +# Setting NODE_PATH +ENV NODE_PATH ${HOME}/node_modules + +# Allow all user and app to update few folders +RUN chmod 777 ${HOME}/node_modules +RUN mkdir -p ${HOME}/.config/configstore +RUN chmod -R 777 ${HOME}/.config +RUN chmod -R 777 ${HOME}/.config/configstore + +# Application VOLUME +VOLUME ${HOME} + +# Application Port +EXPOSE 3002 + +# Application Entry point +CMD ["npm", "run", "start"] diff --git a/api-mobile/app.ts b/api-mobile/app.ts index f4b03afdc..b948f7df4 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -11,7 +11,7 @@ const defaultLog = getLogger('app'); import { authenticate } from './src/utils/auth-utils'; -const API_HOSTNAME = process.env.API_HOSTNAME || 'localhost:3002'; +const HOST = process.env.API_HOST || 'localhost:3002'; // Get initial express app const app: express.Express = express(); @@ -32,13 +32,8 @@ app.use(function (req: any, res: any, next: any) { next(); }); -// Overwrite swagger to set the hostname based on current environment -swaggerConfig.host = API_HOSTNAME; - -// Overwrite swagger to only allow 'https' when not running locally -if (API_HOSTNAME !== 'localhost:3002') { - swaggerConfig.schemes = ['https']; -} +// Overwrite swagger to set the host based on current environment +swaggerConfig.host = HOST; swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { // add base swagger route handling middleware @@ -67,7 +62,7 @@ swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { // start api try { app.listen(3002, '0.0.0.0', function () { - defaultLog.info({ label: 'start api', message: 'started api-mobile on port 3002' }); + defaultLog.info({ label: 'start api', message: `started api-mobile on ${HOST}` }); }); } catch (error) { defaultLog.error({ label: 'start api', message: 'error', error }); diff --git a/api-mobile/gulpfile.ts b/api-mobile/gulpfile.ts new file mode 100644 index 000000000..28667dbfc --- /dev/null +++ b/api-mobile/gulpfile.ts @@ -0,0 +1,18 @@ +import del from 'del'; +import gulp from 'gulp'; +import ts from 'gulp-typescript'; + +// Clean (delete) the dist folder +gulp.task('clean', () => { + return del(['./dist']); +}); + +// Compile the api and create the dist folder +gulp.task('ts-server', () => { + const tsProject = ts.createProject('tsconfig.json'); + const tsResult = tsProject.src().pipe(tsProject()); + return tsResult.js.pipe(gulp.dest('dist')); +}); + +// Clean the dist folder, and build the api dist +gulp.task('build', gulp.series('clean', 'ts-server')); diff --git a/api-mobile/knexfile.ts b/api-mobile/knexfile.ts index bd013e86b..735990da3 100644 --- a/api-mobile/knexfile.ts +++ b/api-mobile/knexfile.ts @@ -1,15 +1,13 @@ -// Update with your config settings. - import dotenv from 'dotenv'; -const env = process.env.NODE_ENV || 'development'; +const env = process.env.NODE_ENV || 'local'; -if (env === 'development') { +if (env === 'local') { dotenv.config(); } module.exports = { - test: { + local: { client: 'postgresql', connection: { host: process.env.DB_HOST_FOR_LOCAL_API, @@ -26,12 +24,17 @@ module.exports = { // stub: './config/knex-migration-stub.js', tableName: 'migration', directory: 'src/database/migrations' + }, + seeds: { + // stub: './config/knex-migration-stub.js', + tableName: 'seed', + directory: 'src/database/seeds' } }, - development: { + dev: { client: 'postgresql', connection: { - host: process.env.DB_HOST_FOR_LOCAL_API, + host: process.env.DB_HOST, port: process.env.DB_PORT || 5432, database: process.env.DB_DATABASE, user: process.env.DB_USER, @@ -42,21 +45,14 @@ module.exports = { max: 10 }, migrations: { - // stub: './config/knex-migration-stub.js', tableName: 'migration', directory: 'src/database/migrations' - }, - seeds: { - // stub: './config/knex-migration-stub.js', - tableName: 'seed', - directory: 'src/database/seeds' } }, - - production: { + test: { client: 'postgresql', connection: { - host: process.env.DB_HOST_FOR_LOCAL_API, + host: process.env.DB_HOST, port: process.env.DB_PORT || 5432, database: process.env.DB_DATABASE, user: process.env.DB_USER, @@ -69,11 +65,24 @@ module.exports = { migrations: { tableName: 'migration', directory: 'src/database/migrations' + } + }, + prod: { + client: 'postgresql', + connection: { + host: process.env.DB_HOST, + port: process.env.DB_PORT || 5432, + database: process.env.DB_DATABASE, + user: process.env.DB_USER, + password: process.env.DB_PASS }, - seeds: { - // stub: './config/knex-migration-stub.js', - tableName: 'seed', - directory: 'src/database/seeds' + pool: { + min: 2, + max: 10 + }, + migrations: { + tableName: 'migration', + directory: 'src/database/migrations' } } }; diff --git a/api-mobile/openshift/api.bc.yaml b/api-mobile/openshift/api.bc.yaml new file mode 100644 index 000000000..9fdef5afc --- /dev/null +++ b/api-mobile/openshift/api.bc.yaml @@ -0,0 +1,114 @@ +apiVersion: v1 +kind: Template +metadata: + creationTimestamp: null + labels: + build: invasivebc-api-mobile + name: invasivebc-api-mobile +parameters: + - name: NAME + displayName: Name + description: A suffix appended to all objects + required: true + value: invasivebc-api-mobile + - name: SUFFIX + displayName: Name Suffix + description: A suffix appended to all objects + required: true + value: "-dev" + - name: VERSION + required: true + value: "1.0" + - name: SOURCE_CONTEXT_DIR + required: true + value: api-mobile + - name: SOURCE_REPOSITORY_URL + required: true + value: https://github.com/bcgov/lucy-web + - name: SOURCE_REPOSITORY_REF + required: false + value: dev + - name: BASE_IMAGE_URL + required: true + value: registry.access.redhat.com/ubi8/nodejs-10:1-41 + - name: SOURCE_IMAGE_NAME + required: true + value: redhat-ubi-node-10 + - name: SOURCE_IMAGE_TAG + required: true + value: 1-41 +objects: + - kind: ImageStream + apiVersion: v1 + metadata: + name: ${SOURCE_IMAGE_NAME} + creationTimestamp: null + annotations: + description: Nodejs Base Image + labels: + shared: "true" + spec: + lookupPolicy: + local: false + tags: + - name: ${SOURCE_IMAGE_TAG} + annotations: null + from: + kind: DockerImage + name: ${BASE_IMAGE_URL} + importPolicy: {} + referencePolicy: + type: Local + - kind: ImageStream + apiVersion: v1 + metadata: + name: "${NAME}" + creationTimestamp: + annotations: + description: Nodejs Runtime Image + labels: + shared: "true" + spec: + lookupPolicy: + local: false + - apiVersion: v1 + kind: BuildConfig + metadata: + name: "${NAME}${SUFFIX}" + creationTimestamp: + labels: {} + annotations: {} + spec: + failedBuildsHistoryLimit: 5 + nodeSelector: + output: + to: + kind: ImageStreamTag + name: "${NAME}:${VERSION}" + postCommit: {} + resources: + limits: + cpu: 1250m + memory: 3Gi + requests: + cpu: 750m + memory: 2Gi + runPolicy: SerialLatestOnly + source: + contextDir: "${SOURCE_CONTEXT_DIR}" + git: + uri: "${SOURCE_REPOSITORY_URL}" + ref: "${SOURCE_REPOSITORY_REF}" + type: Git + strategy: + dockerStrategy: + from: + kind: ImageStreamTag + name: ${SOURCE_IMAGE_NAME}:${SOURCE_IMAGE_TAG} + type: Docker + successfulBuildsHistoryLimit: 5 + triggers: + - type: ConfigChange + - type: ImageChange + status: + lastVersion: 7 diff --git a/api-mobile/openshift/api.dc.yaml b/api-mobile/openshift/api.dc.yaml new file mode 100644 index 000000000..49187ee17 --- /dev/null +++ b/api-mobile/openshift/api.dc.yaml @@ -0,0 +1,300 @@ +apiVersion: v1 +objects: + - apiVersion: image.openshift.io/v1 + kind: ImageStream + metadata: + annotations: + description: Nodejs Runtime Image + labels: + shared: "true" + creationTimestamp: null + generation: 0 + name: ${NAME} + spec: + lookupPolicy: + local: false + status: + dockerImageRepository: null + - apiVersion: apps.openshift.io/v1 + kind: DeploymentConfig + metadata: + annotations: + openshift.io/generated-by: OpenShiftWebConsole + creationTimestamp: null + generation: 0 + labels: null + name: ${NAME}${SUFFIX} + spec: + replicas: "${{REPLICAS}}" + revisionHistoryLimit: 10 + selector: + deploymentConfig: ${NAME}${SUFFIX} + strategy: + activeDeadlineSeconds: 21600 + recreateParams: + timeoutSeconds: 600 + resources: + limits: + cpu: ${CPU_LIMIT} + memory: ${MEMORY_LIMIT} + requests: + cpu: ${CPU_REQ} + memory: ${MEMORY_REQ} + type: Rolling + template: + metadata: + annotations: null + creationTimestamp: null + labels: + deploymentConfig: ${NAME}${SUFFIX} + spec: + containers: + - env: + - name: API_HOST + value: ${HOST} + - name: DB_HOST + value: ${DB_SERVICE_NAME} + - name: DB_USER + valueFrom: + secretKeyRef: + key: database-user + name: ${DBNAME}${SUFFIX} + - name: DB_PASS + valueFrom: + secretKeyRef: + key: database-password + name: ${DBNAME}${SUFFIX} + - name: DB_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: ${DBNAME}${SUFFIX} + - name: DB_PORT + value: "5432" + - name: APP_CERTIFICATE_URL + value: ${CERTIFICATE_URL} + - name: CHANGE_VERSION + value: ${CHANGE_ID} + - name: ENVIRONMENT + value: ${ENVIRONMENT} + - name: VERSION + value: ${VERSION} + - name: DB_CLEAN_UP + value: ${DB_CLEAN_UP} + - name: DB_SEED + value: ${DB_SEED} + - name: APP_EMAIL_SENDER + valueFrom: + secretKeyRef: + key: sender + name: ${MAILER_INFO} + - name: APP_EMAIL_SENDER_PWD + valueFrom: + secretKeyRef: + key: sender-password + name: ${MAILER_INFO} + - name: APP_EMAIL_TEST_RECEIVER + valueFrom: + secretKeyRef: + key: test-receiver + name: ${MAILER_INFO} + - name: APP_REPORT_RECEIVER + valueFrom: + secretKeyRef: + key: receiver-list + name: ${MAILER_INFO} + image: " " + imagePullPolicy: Always + name: api + ports: + - containerPort: "${{PORT}}" + protocol: TCP + - containerPort: 8080 + protocol: TCP + resources: + limits: + cpu: ${CPU_LIMIT} + memory: ${MEMORY_LIMIT} + requests: + cpu: ${CPU_REQ} + memory: ${MEMORY_REQ} + readinessProbe: + failureThreshold: 10 + httpGet: + path: /api/misc/version + port: 3002 + scheme: HTTP + initialDelaySeconds: 100 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 20 + livenessProbe: + failureThreshold: 10 + httpGet: + path: /api/misc/version + port: 3002 + scheme: HTTP + initialDelaySeconds: 80 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 20 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /opt/app-root/app + name: ${NAME}${SUFFIX} + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + terminationGracePeriodSeconds: 30 + volumes: + - emptyDir: {} + name: ${NAME}${SUFFIX} + test: false + triggers: + - imageChangeParams: + automatic: true + containerNames: + - api + from: + kind: ImageStreamTag + name: ${NAME}:${VERSION} + type: ImageChange + - type: ConfigChange + status: + availableReplicas: 0 + latestVersion: 0 + observedGeneration: 0 + replicas: 0 + unavailableReplicas: 0 + updatedReplicas: 0 + - apiVersion: v1 + stringData: + database-name: "" + database-password: "" + database-user: "" + kind: Secret + metadata: + annotations: + as-copy-of: ${DB_SERVICE_NAME} + creationTimestamp: null + name: ${NAME}${SUFFIX} + type: Opaque + - apiVersion: v1 + kind: Service + metadata: + annotations: null + creationTimestamp: null + labels: {} + name: ${NAME}${SUFFIX} + spec: + ports: + - name: ${NAME}-${APP_PORT_DEFAULT} + port: "${{PORT}}" + protocol: TCP + targetPort: "${{PORT}}" + - name: ${APP_PORT_OTHER} + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + deploymentconfig: ${NAME}${SUFFIX} + sessionAffinity: None + type: ClusterIP + status: + loadBalancer: {} + - apiVersion: route.openshift.io/v1 + kind: Route + metadata: + annotations: {} + creationTimestamp: null + labels: {} + name: ${NAME}${SUFFIX} + spec: + host: ${HOST} + tls: + insecureEdgeTerminationPolicy: Redirect + termination: edge + port: + targetPort: ${NAME}-${APP_PORT_DEFAULT} + to: + kind: Service + name: ${NAME}${SUFFIX} + weight: 100 + wildcardPolicy: None + status: + ingress: null + - apiVersion: autoscaling/v1 + kind: HorizontalPodAutoscaler + metadata: + annotations: {} + creationTimestamp: null + labels: {} + name: ${NAME}${SUFFIX} + spec: + maxReplicas: "${{REPLICA_MAX}}" + minReplicas: "${{REPLICAS}}" + scaleTargetRef: + apiVersion: v1 + kind: DeploymentConfig + name: ${NAME}${SUFFIX} + cpuUtilization: + targetPercentage: 95 +kind: Template +metadata: + resourceVersion: "" + selfLink: "" +parameters: + - name: NAME + value: invasivesbc-api-mobile + - name: DBNAME + value: invasivesbc-api + - name: SUFFIX + value: "-dev" + - name: VERSION + description: Version of the application + value: "1.0.0" + - name: HOST + description: Host name of the application + required: true + - name: CHANGE_ID + description: Change id of the project. This will help to pull image stream + required: true + value: "0" + - name: DB_SERVICE_NAME + description: "Database service name associated with deployment" + required: true + - name: ENVIRONMENT + description: Application Environment type variable + required: true + value: "dev" + - name: CERTIFICATE_URL + description: Authentication certificate urls + required: true + value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + - name: CPU_REQ + value: "500m" + - name: CPU_LIMIT + value: "750m" + - name: MEMORY_REQ + value: "1Gi" + - name: MEMORY_LIMIT + value: "2Gi" + - name: REPLICAS + value: "1" + - name: APP_PORT_DEFAULT + value: "3002-tcp" + - name: APP_PORT_OTHER + value: "8080-tcp" + - name: PORT + value: "3002" + - name: DB_CLEAN_UP + value: "none" + - name: DB_SEED + value: "yes" + - name: MAILER_INFO + value: "invasivesbc-mailer" + - name: REPLICA_MAX + required: true + value: "1" diff --git a/api-mobile/openshift/api.is.yaml b/api-mobile/openshift/api.is.yaml new file mode 100644 index 000000000..0035a0b00 --- /dev/null +++ b/api-mobile/openshift/api.is.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +parameters: + - name: NAME + value: invasivesbc-api-mobile-setup +objects: + - apiVersion: image.openshift.io/v1 + kind: ImageStream + metadata: + annotations: + description: Application api base image + labels: + shared: "true" + creationTimestamp: null + generation: 0 + name: ${NAME} + spec: + lookupPolicy: + local: false + status: + dockerImageRepository: null + # End IS + # End object +kind: Template +# End Template + diff --git a/api-mobile/openshift/api.test.yaml b/api-mobile/openshift/api.test.yaml new file mode 100644 index 000000000..253bd0e3a --- /dev/null +++ b/api-mobile/openshift/api.test.yaml @@ -0,0 +1,135 @@ +kind: Template +apiVersion: v1 +metadata: + name: test + creationTimestamp: null +parameters: + - name: IMAGE + description: "Image for pod" + required: true + - name: NAME + value: invasivesbc-api-mobile + - name: SUFFIX + value: "-dev" + - name: VERSION + description: Version of the application + value: "1.0.0" + - name: CHANGE_ID + description: Change id of the project. This will help to pull image stream + required: true + value: "0" + - name: DB_SERVICE_NAME + description: "Database service name associated with deployment" + required: true + - name: ENVIRONMENT + description: Application Environment type variable + required: true + value: "dev" + - name: CERTIFICATE_URL + description: Authentication certificate urls + required: true + value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + - name: CPU_REQ + value: "500m" + - name: CPU_LIMIT + value: "750m" + - name: MEMORY_REQ + value: "1Gi" + - name: MEMORY_LIMIT + value: "2Gi" + - name: REPLICAS + value: "1" + - name: APP_PORT_DEFAULT + value: "3002-tcp" + - name: APP_PORT_OTHER + value: "8080-tcp" + - name: PORT + value: "3002" + - name: DB_CLEAN_UP + value: "none" + - name: DB_SEED + value: "yes" + - name: MAILER_INFO + value: "invasivesbc-mailer" +objects: + - kind: Pod + apiVersion: v1 + metadata: + name: "${NAME}" + creationTimestamp: + labels: {} + spec: + containers: + - name: test + image: "${IMAGE}" + command: + - container-entrypoint + - bash + - "-c" + - "npm run remote:test-temp" # TODO: Change this back to npm run remote:test once the sonarqube upgrade is done + resources: + limits: + cpu: "1" + memory: 1.5Gi + requests: + cpu: 500m + memory: 512Mi + env: + - name: DB_HOST + value: ${DB_SERVICE_NAME} + - name: DB_USER + valueFrom: + secretKeyRef: + key: database-user + name: ${DB_SERVICE_NAME} + - name: DB_PASS + valueFrom: + secretKeyRef: + key: database-password + name: ${DB_SERVICE_NAME} + - name: DB_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: ${DB_SERVICE_NAME} + - name: DB_PORT + value: "5432" + - name: APP_CERTIFICATE_URL + value: ${CERTIFICATE_URL} + - name: CHANGE_VERSION + value: ${CHANGE_ID} + - name: ENVIRONMENT + value: ${ENVIRONMENT} + - name: VERSION + value: ${VERSION} + - name: DB_CLEAN_UP + value: ${DB_CLEAN_UP} + - name: DB_SEED + value: ${DB_SEED} + - name: TEST_RUN + value: "yes" + - name: APP_EMAIL_SENDER + valueFrom: + secretKeyRef: + key: sender + name: ${MAILER_INFO} + - name: APP_EMAIL_SENDER_PWD + valueFrom: + secretKeyRef: + key: sender-password + name: ${MAILER_INFO} + - name: APP_EMAIL_TEST_RECEIVER + valueFrom: + secretKeyRef: + key: test-receiver + name: ${MAILER_INFO} + - name: APP_REPORT_RECEIVER + valueFrom: + secretKeyRef: + key: test-receiver-list + name: ${MAILER_INFO} + imagePullPolicy: Always + restartPolicy: Never + activeDeadlineSeconds: 900 + dnsPolicy: ClusterFirst + status: {} diff --git a/api-mobile/openshift/db.migrations.yaml b/api-mobile/openshift/db.migrations.yaml new file mode 100644 index 000000000..752c87aa5 --- /dev/null +++ b/api-mobile/openshift/db.migrations.yaml @@ -0,0 +1,109 @@ +kind: Template +apiVersion: v1 +metadata: + name: migration + creationTimestamp: null +parameters: + - name: IMAGE + description: "Image for pod" + required: true + - name: NAME + value: invasivesbc-api-mobile + - name: SUFFIX + value: "-dev" + - name: VERSION + description: Version of the application + value: "1.0.0" + - name: CHANGE_ID + description: Change id of the project. This will help to pull image stream + required: true + value: "0" + - name: DB_SERVICE_NAME + description: "Database service name associated with deployment" + required: true + - name: ENVIRONMENT + description: Application Environment type variable + required: true + value: "dev" + - name: NODE_ENV + description: Application Environment type variable + required: true + value: "dev" + - name: CERTIFICATE_URL + description: Authentication certificate urls + required: true + value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + - name: CPU_REQ + value: "500m" + - name: CPU_LIMIT + value: "750m" + - name: MEMORY_REQ + value: "1Gi" + - name: MEMORY_LIMIT + value: "2Gi" + - name: REPLICAS + value: "1" + - name: APP_PORT_DEFAULT + value: "3002-tcp" + - name: APP_PORT_OTHER + value: "8080-tcp" + - name: PORT + value: "3002" +objects: + - kind: Pod + apiVersion: v1 + metadata: + name: "${NAME}" + creationTimestamp: + labels: {} + spec: + containers: + - name: test + image: "${IMAGE}" + command: + - container-entrypoint + - bash + - -c + - npm run migrate:latest; + resources: + limits: + cpu: "1" + memory: 1.5Gi + requests: + cpu: 500m + memory: 512Mi + env: + - name: DB_HOST + value: ${DB_SERVICE_NAME} + - name: DB_USER + valueFrom: + secretKeyRef: + key: database-user + name: ${DB_SERVICE_NAME} + - name: DB_PASS + valueFrom: + secretKeyRef: + key: database-password + name: ${DB_SERVICE_NAME} + - name: DB_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: ${DB_SERVICE_NAME} + - name: DB_PORT + value: "5432" + - name: APP_CERTIFICATE_URL + value: ${CERTIFICATE_URL} + - name: CHANGE_VERSION + value: ${CHANGE_ID} + - name: ENVIRONMENT + value: ${ENVIRONMENT} + - name: NODE_ENV + value: ${ENVIRONMENT} + - name: VERSION + value: ${VERSION} + imagePullPolicy: Always + restartPolicy: Never + activeDeadlineSeconds: 900 + dnsPolicy: ClusterFirst + status: {} diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 6420dad40..5d21f6086 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -40,6 +40,32 @@ "kuler": "^2.0.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@types/bluebird": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.3.tgz", @@ -79,6 +105,12 @@ "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=", "dev": true }, + "@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, "@types/express": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", @@ -117,6 +149,194 @@ "@types/express": "*" } }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-RHv6ZQjcTncXo3thYZrsbAVwoy4vSKosSWhuhuQxLOTv74OJuFQxXkmUuZCr3q9uNBEVCvIzmZL/FeRNbHZGUg==", + "dev": true, + "requires": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "@types/gulp": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.6.tgz", + "integrity": "sha512-0E8/iV/7FKWyQWSmi7jnUvgXXgaw+pfAzEB06Xu+l0iXVJppLbpOye5z7E2klw5akXd+8kPtYuk65YBcZPM4ow==", + "dev": true, + "requires": { + "@types/undertaker": "*", + "@types/vinyl-fs": "*", + "chokidar": "^2.1.2" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", @@ -149,6 +369,12 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=" }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "@types/mocha": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", @@ -209,6 +435,43 @@ "@types/connect": "*" } }, + "@types/undertaker": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.3.tgz", + "integrity": "sha512-OhvIYx6pUJBxYZf5fM/BVMNXZQMy095kplml+4cWrlNqM1t6XtSIQCuVySGmICZCnzi69Epdljyplm86BlTouQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/undertaker-registry": "*" + } + }, + "@types/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", + "dev": true + }, + "@types/vinyl": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.4.tgz", + "integrity": "sha512-2o6a2ixaVI2EbwBPg1QYLGQoHK56p/8X/sGfKbFC8N6sY9lfjsMf/GprtkQkSya0D4uRiutRZ2BWj7k3JvLsAQ==", + "dev": true, + "requires": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "@types/vinyl-fs": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.11.tgz", + "integrity": "sha512-2OzQSfIr9CqqWMGqmcERE6Hnd2KY3eBVtFaulVo3sJghplUcaeMdL9ZjEiljcQQeHjheWY9RlNmumjIAvsBNaA==", + "dev": true, + "requires": { + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" + } + }, "@types/yamljs": { "version": "0.2.31", "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", @@ -353,6 +616,16 @@ "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", "dev": true }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", @@ -371,6 +644,15 @@ "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", "dev": true }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -385,6 +667,12 @@ "color-convert": "^1.9.0" } }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", @@ -400,11 +688,26 @@ "picomatch": "^2.0.4" } }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, "append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -423,11 +726,29 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", @@ -443,11 +764,71 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -500,6 +881,41 @@ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + } + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -528,6 +944,23 @@ "regenerator-runtime": "^0.11.0" } }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -589,6 +1022,16 @@ "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -650,6 +1093,12 @@ "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", "dev": true }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -785,6 +1234,15 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.3.0" + }, + "dependencies": { + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + } } }, "class-utils": { @@ -808,6 +1266,138 @@ } } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -848,6 +1438,12 @@ "simple-swizzle": "^0.2.2" } }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -890,6 +1486,18 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -903,6 +1511,15 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", @@ -923,6 +1540,16 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", @@ -933,24 +1560,21 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "database-cleaner": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", @@ -1162,6 +1786,29 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1208,6 +1855,33 @@ } } }, + "del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dev": true, + "requires": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1265,6 +1939,15 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -1285,6 +1968,28 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", "integrity": "sha1-zJHAcmzjoFTr8RxV+8kqfyZt0VQ=" }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1313,6 +2018,15 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -1390,6 +2104,50 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1781,6 +2539,23 @@ } } }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1879,6 +2654,18 @@ "chance": "^1.0.4" } }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1891,6 +2678,32 @@ "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", "dev": true }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1908,6 +2721,15 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "integrity": "sha1-EkqohYmSYfaK7bQqfAgN6dpgh0M=" }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", @@ -1922,6 +2744,13 @@ "flat-cache": "^2.0.1" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2047,6 +2876,48 @@ "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", "dev": true }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -2106,17 +2977,73 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "function-bind": { "version": "1.1.1", @@ -2179,6 +3106,217 @@ "is-glob": "^4.0.1" } }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -2201,6 +3339,39 @@ "which": "^1.2.14" } }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -2221,6 +3392,98 @@ "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", "dev": true }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + } + } + }, + "gulp-typescript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", + "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.5", + "plugin-error": "^1.0.1", + "source-map": "^0.7.3", + "through2": "^3.0.0", + "vinyl": "^2.1.0", + "vinyl-fs": "^3.0.3" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -2356,6 +3619,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflection": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", @@ -2385,6 +3654,12 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -2519,12 +3794,30 @@ "integrity": "sha1-Ug2vxDB7uOvDO4E95c58lADWRKE=", "dev": true }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", "dev": true }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -2585,6 +3878,18 @@ "unc-path-regex": "^0.1.2" } }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -2641,12 +3946,6 @@ "esprima": "^4.0.0" } }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", - "dev": true - }, "json-refs": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", @@ -2711,6 +4010,12 @@ } } }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -2826,6 +4131,43 @@ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha1-4sVwo4ADiPtEQH6FFTHB1nCwYbM=" }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2856,26 +4198,6 @@ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -3249,6 +4571,41 @@ "object-visit": "^1.0.0" } }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3259,17 +4616,17 @@ "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=" }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -3695,11 +5052,24 @@ } } }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -3739,10 +5109,10 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, "nock": { @@ -3797,23 +5167,21 @@ "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", "dev": true }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha1-BEdiAqFe4OLiFAgIYb/xKlHZj7o=", + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" + "once": "^1.3.2" } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3907,6 +5275,16 @@ "isobject": "^3.0.1" } }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -3945,6 +5323,24 @@ "word-wrap": "^1.2.3" } }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -3962,6 +5358,15 @@ "p-limit": "^2.2.0" } }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -3999,15 +5404,11 @@ "path-root": "^0.1.1" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true }, "parse-passwd": { "version": "1.0.0", @@ -4024,6 +5425,12 @@ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4035,12 +5442,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, "path-loader": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", @@ -4074,13 +5475,10 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pathval": { "version": "1.1.0", @@ -4156,23 +5554,49 @@ "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", "dev": true }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha1-7wmsLMBTPfHzJQzPLE02aw0SEUo=", + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } }, "pkginfo": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + } + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -4222,6 +5646,12 @@ "fast-diff": "^1.1.2" } }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -4312,6 +5742,27 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", @@ -4361,15 +5812,85 @@ "mute-stream": "~0.0.4" } }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + } } }, "readable-stream": { @@ -4424,6 +5945,75 @@ "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", "dev": true }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -4434,6 +6024,23 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4467,6 +6074,15 @@ "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", "dev": true }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -4485,6 +6101,12 @@ "any-promise": "^1.3.0" } }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "revalidator": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", @@ -4498,6 +6120,12 @@ "glob": "^7.1.3" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -4521,6 +6149,15 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -4672,27 +6309,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=", - "dev": true - }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -4880,6 +6496,12 @@ "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", "integrity": "sha1-g6DiVXNPKrTlxGblos/JuiqiEk0=" }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -4980,6 +6602,18 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, "streamsearch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", @@ -5005,16 +6639,6 @@ } } }, - "string.prototype.padend": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", - "integrity": "sha1-3Aj1eoAQ3FwVNVAxj2fhOtu3KsM=", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -5052,6 +6676,15 @@ "ansi-regex": "^5.0.0" } }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -5122,6 +6755,16 @@ "has-flag": "^3.0.0" } }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, "swagger-converter": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/swagger-converter/-/swagger-converter-0.1.7.tgz", @@ -5313,54 +6956,140 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.0.tgz", + "integrity": "sha512-PKUnlDFODZueoA8owLehl8vLcgtA8u4dRuVbZc92tspDYZixjJL6TqYOmryf/PfP/EBX+2rgNcrj96NO+RPkdQ==" + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "safe-buffer": "~5.1.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } } } }, - "tarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.0.tgz", - "integrity": "sha512-PKUnlDFODZueoA8owLehl8vLcgtA8u4dRuVbZc92tspDYZixjJL6TqYOmryf/PfP/EBX+2rgNcrj96NO+RPkdQ==" - }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, "tildify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -5399,6 +7128,57 @@ "is-number": "^7.0.0" } }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -5531,6 +7311,12 @@ } } }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5576,6 +7362,38 @@ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "dependencies": { + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", + "dev": true + } + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -5587,6 +7405,16 @@ "set-value": "^2.0.1" } }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -5628,6 +7456,12 @@ } } }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -5710,11 +7544,124 @@ "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", "integrity": "sha1-+IETaEc9IXOp2GEVcrWMV4PyI78=" }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, "when": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/when/-/when-2.0.1.tgz", @@ -5876,6 +7823,53 @@ "integrity": "sha1-harWf6GiyO+ThqG0NTmQD2HQPVg=", "dev": true }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5914,6 +7908,112 @@ "glob": "^7.0.5" } }, + "yargs": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", + "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "5.0.0-security.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "5.0.0-security.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", + "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, "yargs-unparser": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", diff --git a/api-mobile/package.json b/api-mobile/package.json index f0a349528..9515a6d06 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -10,6 +10,10 @@ }, "scripts": { "start": "ts-node app", + "clean": "gulp clean", + "build": "gulp build", + "migrate:latest": "knex migrate:latest", + "migrate:rollback": "knex migrate:rollback", "test": "ts-mocha --timeout 60000", "lint": "eslint . --ignore-pattern 'node_modules' --ext .ts", "lint-fix": "eslint . --fix --ignore-pattern 'node_modules' --ext .ts" @@ -45,6 +49,7 @@ "@types/body-parser": "~1.19.0", "@types/chai": "~4.2.12", "@types/express": "~4.17.0", + "@types/gulp": "~4.0.6", "@types/jsonwebtoken": "~8.5.0", "@types/memory-cache": "~0.2.1", "@types/mocha": "~8.0.1", @@ -55,14 +60,16 @@ "@typescript-eslint/parser": "~3.7.1", "chai": "~4.2.0", "database-cleaner": "~1.3.0", + "del": "~5.1.0", "dotenv": "~8.2.0", "eslint-config-prettier": "~6.11.0", "eslint-plugin-prettier": "~3.1.4", "eslint": "~7.5.0", "factory-girl": "~5.0.4", + "gulp-typescript": "~5.0.1", + "gulp": "~4.0.2", "mocha": "~8.1.1", "nock": "~13.0.3", - "npm-run-all": "~4.1.5", "prettier": "~2.0.5", "supertest": "~4.0.2" } diff --git a/api-mobile/src/controllers/misc-controller.ts b/api-mobile/src/controllers/misc-controller.ts new file mode 100644 index 000000000..96eeb0a70 --- /dev/null +++ b/api-mobile/src/controllers/misc-controller.ts @@ -0,0 +1,36 @@ +'use strict'; + +import { getLogger } from '../utils/logger'; +import { sendResponse } from '../utils/query-actions'; + +const defaultLog = getLogger('misc-controller'); + +/** + * Public route handler for OPTIONS + * + * @param {*} args + * @param {*} res + * @param {*} next + */ +exports.publicOptions = async function (args: any, res: any, next: any) { + res.status(200).send(); +}; + +/** + * Public route handler for GET. + * + * @param {*} args + * @param {*} res + * @param {*} next + * @returns response with api-mobile version information. + */ +exports.publicGet = async function (args: any, res: any, next: any) { + defaultLog.debug({ label: 'publicGet', message: 'params', arguments: args.swagger.params }); + + const versionInfo = { + version: process.env.VERSION || '0', + environment: process.env.environment || process.env.NODE_ENV || 'localhost' + }; + + return sendResponse(res, 200, versionInfo); +}; diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml index 5323ff051..b11c9a569 100644 --- a/api-mobile/src/swagger/swagger.yaml +++ b/api-mobile/src/swagger/swagger.yaml @@ -1,16 +1,18 @@ -swagger: '2.0' # npm library `swagger-tools` does not yet support 3.0 +swagger: "2.0" # npm library `swagger-tools` does not yet support 3.0 info: - version: '0.0.0' + version: "0.0.0" title: lucy-api-mobile description: API for lucy mobile. license: name: Apache 2.0 - url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + url: "http://www.apache.org/licenses/LICENSE-2.0.html" host: localhost:3002 basePath: /api tags: + - name: misc + description: Miscellaneous endpoints - name: activity description: | Activity endpoints @@ -30,7 +32,7 @@ tags: externalDocs: description: Visit GitHub to find out more about this API - url: 'https://github.com/bcgov/lucy-web.git' + url: "https://github.com/bcgov/lucy-web.git" schemes: - http @@ -51,6 +53,31 @@ produces: - application/json paths: + # Misc routes + + /misc/version: + x-swagger-router-controller: misc-controller + options: + tags: + - misc + summary: Pre-flight request + description: Options on public version route + operationId: publicOptions + responses: + "200": + description: Success + get: + tags: + - misc + summary: Pre-flight request + description: Get api version information + operationId: publicGet + responses: + "200": + description: Fetched api version information + schema: + $ref: "#/definitions/VersionResponse" + # Activity Routes /activity: @@ -62,12 +89,12 @@ paths: description: Options on authenticated activity route operationId: authenticatedOptions responses: - '200': + "200": description: Success - '401': + "401": description: Unauthorized user schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" post: tags: - activity @@ -85,16 +112,16 @@ paths: required: true name: postBody schema: - $ref: '#/definitions/ActivityPostBody' + $ref: "#/definitions/ActivityPostBody" responses: - '201': + "201": description: Created schema: - $ref: '#/definitions/ActivityResponse' - '401': + $ref: "#/definitions/ActivityResponse" + "401": description: Unauthorized user schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" # Observation/Plant Routes @@ -108,12 +135,12 @@ paths: description: Options on authenticated plant observation route operationId: authenticatedOptions responses: - '200': + "200": description: Success - '401': + "401": description: Unauthorized user schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" get: tags: - observation @@ -129,14 +156,14 @@ paths: - DAE # data editor - SUP # super user responses: - '200': + "200": description: Fetched observation with id schema: - $ref: '#/definitions/ObservationPlantResponse' - '422': + $ref: "#/definitions/ObservationPlantResponse" + "422": description: Validation error - no observation with id schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" /observation/plant/{observationId}: x-swagger-router-controller: observation-plant-controller @@ -153,12 +180,12 @@ paths: name: observationId type: number responses: - '200': + "200": description: Success - '401': + "401": description: Unauthorized user schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" get: tags: - observation @@ -179,14 +206,14 @@ paths: name: observationId type: number responses: - '200': + "200": description: Fetched observation with id schema: - $ref: '#/definitions/ObservationPlantResponse' - '422': + $ref: "#/definitions/ObservationPlantResponse" + "422": description: Validation error - no observation with id schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" # Code Routes @@ -200,12 +227,12 @@ paths: description: Options on authenticated observation code route operationId: authenticatedOptions responses: - '200': + "200": description: Success - '401': + "401": description: Unauthorized user schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" get: tags: - code @@ -220,17 +247,18 @@ paths: - DAE # data editor - SUP # super user responses: - '200': + "200": description: Fetched code values schema: - $ref: '#/definitions/ObservationCodeResponse' - '401': + $ref: "#/definitions/ObservationCodeResponse" + "401": description: Unauthorized user schema: - $ref: '#/definitions/Error' + $ref: "#/definitions/Error" definitions: # Misc definitions + Error: description: | Error response object. @@ -246,6 +274,18 @@ definitions: items: type: string + VersionResponse: + description: Version response object. + required: + - version + - environment + properties: + version: + type: string + environment: + type: string + + # Activity Definitions ActivityPostBody: @@ -513,7 +553,7 @@ definitions: type: string data: type: object - $ref: '#/definitions/ObservationCode' + $ref: "#/definitions/ObservationCode" ObservationCode: description: Observation code tables. @@ -534,51 +574,51 @@ definitions: observation_aspect_code: type: array items: - $ref: '#/definitions/AspectCode' + $ref: "#/definitions/AspectCode" jurisdiction_code: type: array items: - $ref: '#/definitions/JurisdictionCode' + $ref: "#/definitions/JurisdictionCode" observation_geometry_code: type: array items: - $ref: '#/definitions/ObservationGeometryCode' + $ref: "#/definitions/ObservationGeometryCode" observation_type_code: type: array items: - $ref: '#/definitions/ObservationTypeCode' + $ref: "#/definitions/ObservationTypeCode" observation_proposed_action_code: type: array items: - $ref: '#/definitions/ProposedActionCode' + $ref: "#/definitions/ProposedActionCode" observation_slope_code: type: array items: - $ref: '#/definitions/SlopeCode' + $ref: "#/definitions/SlopeCode" soil_texture_code: type: array items: - $ref: '#/definitions/SoilTextureCode' + $ref: "#/definitions/SoilTextureCode" species: type: array items: - $ref: '#/definitions/Species' + $ref: "#/definitions/Species" species_density_code: type: array items: - $ref: '#/definitions/SpeciesDensityCode' + $ref: "#/definitions/SpeciesDensityCode" species_distribution_code: type: array items: - $ref: '#/definitions/SpeciesDistributionCode' + $ref: "#/definitions/SpeciesDistributionCode" species_agency_code: type: array items: - $ref: '#/definitions/SpeciesAgencyCode' + $ref: "#/definitions/SpeciesAgencyCode" specific_use_code: type: array items: - $ref: '#/definitions/SpecificUseCode' + $ref: "#/definitions/SpecificUseCode" # Code Definitions diff --git a/api-mobile/tsconfig.json b/api-mobile/tsconfig.json index d1d8e85f2..e41306af6 100644 --- a/api-mobile/tsconfig.json +++ b/api-mobile/tsconfig.json @@ -1,28 +1,24 @@ { "compilerOptions": { + "outDir": "dist", "module": "commonjs", "target": "es5", "lib": ["es2018"], - "moduleResolution": "node", "sourceMap": true, "allowJs": false, - "outDir": "dist", - "baseUrl": ".", - "paths": { - "*": ["node_modules/*"] - }, - "esModuleInterop": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, + "moduleResolution": "node", "forceConsistentCasingInFileNames": true, - "noImplicitAny": true, "noImplicitReturns": true, "noImplicitThis": true, + "noImplicitAny": true, + "suppressImplicitAnyIndexErrors": true, "noUnusedLocals": true, - "resolveJsonModule": true, + "esModuleInterop": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, "skipLibCheck": true, - "suppressImplicitAnyIndexErrors": true + "resolveJsonModule": true }, "include": ["src/**/*"], - "exclude": ["**/*.spec.ts"] + "exclude": ["**/*.spec.ts", "**/node_modules", "dist"] } diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index 50de4c5f0..a05e80669 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -143,6 +143,37 @@ "winston": "^3.0.0" } }, + "@gulp-sourcemaps/identity-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", + "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", + "dev": true, + "requires": { + "acorn": "^5.0.3", + "css": "^2.2.1", + "normalize-path": "^2.1.1", + "source-map": "^0.6.0", + "through2": "^2.0.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "dev": true, + "requires": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + } + }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", @@ -524,6 +555,12 @@ } } }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, "agent-base": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", @@ -1060,6 +1097,16 @@ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", @@ -2065,6 +2112,26 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "csvtojson": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.8.tgz", @@ -2121,6 +2188,34 @@ "ms": "2.0.0" } }, + "debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "requires": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -2420,6 +2515,12 @@ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, "diagnostics": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", @@ -2832,6 +2933,16 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -3400,551 +3511,14 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, "ftp": { @@ -4312,6 +3886,33 @@ } } }, + "gulp-sourcemaps": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz", + "integrity": "sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==", + "dev": true, + "requires": { + "@gulp-sourcemaps/identity-map": "1.X", + "@gulp-sourcemaps/map-sources": "1.X", + "acorn": "5.X", + "convert-source-map": "1.X", + "css": "2.X", + "debug-fabulous": "1.X", + "detect-newline": "2.X", + "graceful-fs": "4.X", + "source-map": "~0.6.0", + "strip-bom-string": "1.X", + "through2": "2.X" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "gulp-typescript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", @@ -5881,6 +5482,15 @@ "yallist": "^2.1.2" } }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, "macos-release": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", @@ -5986,6 +5596,22 @@ "p-is-promise": "^2.0.0" } }, + "memoizee": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", + "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.45", + "es6-weak-map": "^2.0.2", + "event-emitter": "^0.3.5", + "is-promise": "^2.1", + "lru-queue": "0.1", + "next-tick": "1", + "timers-ext": "^0.1.5" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -6311,9 +5937,9 @@ } }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", "dev": true, "optional": true }, @@ -9136,6 +8762,12 @@ "is-utf8": "^0.2.0" } }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -9454,6 +9086,16 @@ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", From 8f47dd77a05fc1badcd0faa926545ebb0808d3bf Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Mon, 24 Aug 2020 10:43:14 -0700 Subject: [PATCH 014/194] Postman POC Commit --- .../postman/DEV.postman_environment.json | 54 + testing/integration/postman/README.md | 55 + .../lucy-api-mobile.postman_collection.json | 1171 +++++++++++++++++ 3 files changed, 1280 insertions(+) create mode 100644 testing/integration/postman/DEV.postman_environment.json create mode 100644 testing/integration/postman/README.md create mode 100644 testing/integration/postman/lucy-api-mobile.postman_collection.json diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json new file mode 100644 index 000000000..bb63822a8 --- /dev/null +++ b/testing/integration/postman/DEV.postman_environment.json @@ -0,0 +1,54 @@ +{ + "id": "7cb7708d-f4e5-4292-ae6b-94fbc66a2ae3", + "name": "DEV", + "values": [ + { + "key": "auth_host", + "value": "https://sso-dev.pathfinder.gov.bc.ca", + "enabled": true + }, + { + "key": "baseUrl", + "value": "https://api-dev-invasivesbc.pathfinder.gov.bc.ca/api", + "enabled": true + }, + { + "key": "baseUrlMobile", + "value": "Change to PR API base url", + "enabled": true + }, + { + "key": "prNumber", + "value": "<>", + "enabled": true + }, + { + "key": "postman_pw", + "value": "<>", + "enabled": true + }, + { + "key": "KEYCLOAK_TOKEN_EXPIRY", + "value": "", + "enabled": true + }, + { + "key": "KEYCLOAK_TOKEN", + "value": "", + "enabled": true + }, + { + "key": "KEYCLOAK_URL", + "value": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "enabled": true + }, + { + "key": "observation_id", + "value": "1", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2020-08-24T17:25:06.495Z", + "_postman_exported_using": "Postman/7.30.1" +} \ No newline at end of file diff --git a/testing/integration/postman/README.md b/testing/integration/postman/README.md new file mode 100644 index 000000000..a94ff7d33 --- /dev/null +++ b/testing/integration/postman/README.md @@ -0,0 +1,55 @@ +#API Testing with Postman (POC) + +This is the Postman Setup for testing for testing the Mobile API. +It's primary goal is to run against oour PR and Dev code. + +How to run the PostMan Tests: +- [Get Postman](https://www.postman.com/downloads/) +- Import `lucy-api-mobile.postman_collection.json` +- Go to *Manage environments*, gear ison at top right hand corner +- Import DEV.postman_environment.json +- Change the following settings in Postman environment DEV: + +```json + { + "key": "baseUrlMobile", + "value": "Change to PR API base url", + "enabled": true + }, + { + "key": "prNumber", + "value": "<>", + "enabled": true + }, + { + "key": "postman_pw", + "value": "<>", + "enabled": true + } +``` + +**baseUrlMobile** Is used to point to the Mobile API, we would typically point that either to Dev API or our Pull Request API instance +**prNumber** Is the current PR code we are pointing at +**postman_pw** is the password for our test user *istest1* + +##Running Tests +- Tests can be run within the Postman application either one by one or with the *Runner* option, which allows for the complete suite to run. +- Tests can also run from the command line (and therefore the CI) with [Newman](https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/) + + + +## License + + Copyright 2020 Province of British Columbia + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json new file mode 100644 index 000000000..728c60721 --- /dev/null +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -0,0 +1,1171 @@ +{ + "info": { + "_postman_id": "a9d3b9e5-c601-4164-8568-a8fe883f0489", + "name": "lucy-api-mobile", + "description": "API for lucy mobile.", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "misc/version", + "item": [ + { + "name": "/misc/version", + "event": [ + { + "listen": "test", + "script": { + "id": "59139360-923c-4232-b545-e5cd8d105e96", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrlMobile}}/misc/version", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "misc", + "version" + ] + }, + "description": "Options on public version route" + }, + "response": [ + { + "name": "Success", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/misc/version", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "misc", + "version" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "/misc/version", + "event": [ + { + "listen": "test", + "script": { + "id": "d35384d0-0eed-49ac-b05c-acbf5610960c", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});\r", + "\r", + "pm.test(\"Body matches 'dev-'\", function () {\r", + " pm.expect(pm.response.text()).to.include(\"dev-\");\r", + "});\r", + "\r", + "pm.test(\"Running on Localhost\", function () {\r", + " var jsonData = pm.response.json();\r", + " pm.expect(jsonData.environment).to.eql(\"localhost\");\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrlMobile}}/misc/version", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "misc", + "version" + ] + }, + "description": "Get api version information" + }, + "response": [ + { + "name": "Fetched api version information", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/misc/version", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "misc", + "version" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"version\": \"eu esse sint aliqua Lorem\",\n \"environment\": \"est qui nostrud\"\n}" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "activity", + "item": [ + { + "name": "/activity", + "event": [ + { + "listen": "test", + "script": { + "id": "d177c75f-d3e2-4437-9012-60efea150fde", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrlMobile}}/activity", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "activity" + ] + }, + "description": "Options on authenticated activity route" + }, + "response": [ + { + "name": "Success", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/activity", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "activity" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Unauthorized user", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/activity", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "activity" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"magna dolore ullamco\",\n \"errors\": [\n \"consequat laborum \",\n \"sunt\"\n ]\n}" + } + ] + }, + { + "name": "/activity", + "event": [ + { + "listen": "test", + "script": { + "id": "1f352f90-60cd-492f-bd60-3fa3e6b4a558", + "exec": [ + "pm.test(\"Successful POST request\", function () {\r", + " pm.expect(pm.response.code).to.be.oneOf([201,202]);\r", + "});\r", + "\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "description": "To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header.\nThe 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz`\n", + "key": "Authorization", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"activityType\": \"\",\n \"activityTypeData\": \"\",\n \"activitySubType\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + }, + "url": { + "raw": "{{baseUrlMobile}}/activity", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "activity" + ] + }, + "description": "Create a new activity" + }, + "response": [ + { + "name": "Created", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"activityType\": \"\",\n \"activityTypeData\": \"\",\n \"activitySubType\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/activity", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "activity" + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"activityType\": \"irure in est dolor\",\n \"activitySubType\": \"dolore adipisicing\",\n \"date\": \"ipsum aute\",\n \"locationAndGeometry\": \"dolor amet\"\n}" + }, + { + "name": "Unauthorized user", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"activityType\": \"\",\n \"activityTypeData\": \"\",\n \"activitySubType\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/activity", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "activity" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"Duis deserunt\",\n \"errors\": [\n \"laborum\",\n \"reprehenderit culpa sit do\"\n ]\n}" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "observation/plant", + "item": [ + { + "name": "{observation Id}", + "item": [ + { + "name": "/observation/plant/:observationId", + "event": [ + { + "listen": "test", + "script": { + "id": "b8d03299-16ae-4372-83bf-9d57806ffe9d", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrlMobile}}/observation/plant/:observationId", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "observation", + "plant", + ":observationId" + ], + "variable": [ + { + "key": "observationId", + "value": "", + "description": "(Required) " + } + ] + }, + "description": "Options on authenticated plant observation route" + }, + "response": [ + { + "name": "Unauthorized user", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant/:observationId", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant", + ":observationId" + ], + "variable": [ + { + "key": "observationId" + } + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"Duis deserunt\",\n \"errors\": [\n \"laborum\",\n \"reprehenderit culpa sit do\"\n ]\n}" + }, + { + "name": "Success", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant/:observationId", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant", + ":observationId" + ], + "variable": [ + { + "key": "observationId" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "/observation/plant/:observationId", + "event": [ + { + "listen": "test", + "script": { + "id": "4669b0da-c851-425f-aaff-ee08c01b5bc5", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});\r", + "pm.test(\"Your test name\", function () {\r", + " var jsonData = pm.response.json();\r", + " pm.expect(jsonData.observation_id).to.eql(parseInt(pm.environment.get(\"observation_id\"),10));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header.\nThe 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz`\n" + } + ], + "url": { + "raw": "{{baseUrlMobile}}/observation/plant/{{observation_id}}", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "observation", + "plant", + "{{observation_id}}" + ] + }, + "description": "Get a single plant observation based on its id (observation id)" + }, + "response": [ + { + "name": "Fetched observation with id", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant/:observationId", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant", + ":observationId" + ], + "variable": [ + { + "key": "observationId" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"observation_id\": -17174384.55881597,\n \"observation_date\": \"ut esse\",\n \"access_description\": \"laboris ut Lorem id\",\n \"observer_first_name\": \"in mollit\",\n \"observer_last_name\": \"cillum officia exercitation\",\n \"sample_identifier\": \"culpa\",\n \"range_unit_number\": \"culpa pariatur\",\n \"general_comment\": \"commodo minim ipsum\",\n \"legacy_site_ind\": false,\n \"early_detection_rapid_resp_ind\": true,\n \"research_detection_ind\": false,\n \"sample_taken_ind\": false,\n \"well_ind\": false,\n \"special_care_ind\": true,\n \"biological_ind\": false,\n \"aquatic_ind\": true,\n \"species_id\": \"ullamco dolore id\",\n \"jurisdiction_code_id\": \"tempor velit ut dolor pariatur\",\n \"species_density_code_id\": \"id eiu\",\n \"species_distribution_code_id\": \"nostrud incididunt dolore sed\",\n \"observation_type_code_id\": \"aliquip velit cupidatat\",\n \"species_agency_code_id\": \"ea ut\",\n \"soil_texture_code_id\": \"labore cupidatat ut do Ut\",\n \"specific_use_code_id\": \"qui ut labore velit tempor\",\n \"observation_slope_code_id\": \"eiusmod sit id cillum\",\n \"observation_aspect_code_id\": \"aute fugiat commodo Lorem\",\n \"observation_proposed_action_code_id\": \"minim\",\n \"created_at\": \"cillum culpa et deserunt \",\n \"updated_at\": \"eu fugiat \",\n \"updated_by_user_id\": -51487829.82396054,\n \"created_by_user_id\": -39115719.30843167,\n \"space_geom_id\": 95783768.80553958,\n \"hex_id\": 76477316.9219133,\n \"hex_sub_id\": 92792051.2181589,\n \"total_area\": 65361668.54917601,\n \"negative_occurance_ind\": false,\n \"paper_id_primary\": \"sunt in amet minim\",\n \"paper_id_secondary\": \"ex eu labore officia\",\n \"elevation_meters\": -11673654.854623854,\n \"well_proximity\": 65627605.62445617,\n \"well_tag\": -4762183.118084356,\n \"observation_geometry_code_id\": \"Ut proident nulla do anim\",\n \"photo_indicator\": true,\n \"flowering\": true,\n \"bec_zone\": \"do nulla dolor\",\n \"riso\": \"elit commodo id nisi\",\n \"ipma\": \"id occaecat\",\n \"ownership\": \"commodo est\",\n \"regional_district\": \"id adipisicing\",\n \"flnro_district\": \"dolor anim e\",\n \"moti_district\": \"in dolore aliquip\",\n \"raw_longitude\": 6056072.601907164,\n \"raw_latitude\": -57143616.40591532,\n \"raw_utm_zone\": -83990885.02210246,\n \"raw_utm_easting\": -21367993.65508853,\n \"raw_utm_northing\": 42276911.74803433,\n \"raw_albers_x\": 70628385.95304152,\n \"raw_albers_y\": 43842598.52467522\n}" + }, + { + "name": "Validation error - no observation with id", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant/:observationId", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant", + ":observationId" + ], + "variable": [ + { + "key": "observationId" + } + ] + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"Duis deserunt\",\n \"errors\": [\n \"laborum\",\n \"reprehenderit culpa sit do\"\n ]\n}" + } + ] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "/observation/plant", + "event": [ + { + "listen": "test", + "script": { + "id": "1290d19e-6af3-485d-8b34-455c845f9e48", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrlMobile}}/observation/plant", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "observation", + "plant" + ] + }, + "description": "Options on authenticated plant observation route" + }, + "response": [ + { + "name": "Success", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Unauthorized user", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"Duis deserunt\",\n \"errors\": [\n \"laborum\",\n \"reprehenderit culpa sit do\"\n ]\n}" + } + ] + }, + { + "name": "/observation/plant", + "event": [ + { + "listen": "test", + "script": { + "id": "9ca2bd5d-b6b8-4a9f-9184-c76f98d7accc", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + "\r", + "pm.test(\"Observer first name\", function () {\r", + " var jsonData = pm.response.json();\r", + " pm.expect(jsonData.observer_first_name).to.eql(\"COLEEN\");\r", + "});\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});\r", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header.\nThe 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz`\n" + } + ], + "url": { + "raw": "{{baseUrlMobile}}/observation/plant", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "observation", + "plant" + ] + }, + "description": "Get all plant observations" + }, + "response": [ + { + "name": "Validation error - no observation with id", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant" + ] + } + }, + "status": "Unprocessable Entity (WebDAV) (RFC 4918)", + "code": 422, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"Duis deserunt\",\n \"errors\": [\n \"laborum\",\n \"reprehenderit culpa sit do\"\n ]\n}" + }, + { + "name": "Fetched observation with id", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "observation", + "plant" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"observation_id\": -17174384.55881597,\n \"observation_date\": \"ut esse\",\n \"access_description\": \"laboris ut Lorem id\",\n \"observer_first_name\": \"in mollit\",\n \"observer_last_name\": \"cillum officia exercitation\",\n \"sample_identifier\": \"culpa\",\n \"range_unit_number\": \"culpa pariatur\",\n \"general_comment\": \"commodo minim ipsum\",\n \"legacy_site_ind\": false,\n \"early_detection_rapid_resp_ind\": true,\n \"research_detection_ind\": false,\n \"sample_taken_ind\": false,\n \"well_ind\": false,\n \"special_care_ind\": true,\n \"biological_ind\": false,\n \"aquatic_ind\": true,\n \"species_id\": \"ullamco dolore id\",\n \"jurisdiction_code_id\": \"tempor velit ut dolor pariatur\",\n \"species_density_code_id\": \"id eiu\",\n \"species_distribution_code_id\": \"nostrud incididunt dolore sed\",\n \"observation_type_code_id\": \"aliquip velit cupidatat\",\n \"species_agency_code_id\": \"ea ut\",\n \"soil_texture_code_id\": \"labore cupidatat ut do Ut\",\n \"specific_use_code_id\": \"qui ut labore velit tempor\",\n \"observation_slope_code_id\": \"eiusmod sit id cillum\",\n \"observation_aspect_code_id\": \"aute fugiat commodo Lorem\",\n \"observation_proposed_action_code_id\": \"minim\",\n \"created_at\": \"cillum culpa et deserunt \",\n \"updated_at\": \"eu fugiat \",\n \"updated_by_user_id\": -51487829.82396054,\n \"created_by_user_id\": -39115719.30843167,\n \"space_geom_id\": 95783768.80553958,\n \"hex_id\": 76477316.9219133,\n \"hex_sub_id\": 92792051.2181589,\n \"total_area\": 65361668.54917601,\n \"negative_occurance_ind\": false,\n \"paper_id_primary\": \"sunt in amet minim\",\n \"paper_id_secondary\": \"ex eu labore officia\",\n \"elevation_meters\": -11673654.854623854,\n \"well_proximity\": 65627605.62445617,\n \"well_tag\": -4762183.118084356,\n \"observation_geometry_code_id\": \"Ut proident nulla do anim\",\n \"photo_indicator\": true,\n \"flowering\": true,\n \"bec_zone\": \"do nulla dolor\",\n \"riso\": \"elit commodo id nisi\",\n \"ipma\": \"id occaecat\",\n \"ownership\": \"commodo est\",\n \"regional_district\": \"id adipisicing\",\n \"flnro_district\": \"dolor anim e\",\n \"moti_district\": \"in dolore aliquip\",\n \"raw_longitude\": 6056072.601907164,\n \"raw_latitude\": -57143616.40591532,\n \"raw_utm_zone\": -83990885.02210246,\n \"raw_utm_easting\": -21367993.65508853,\n \"raw_utm_northing\": 42276911.74803433,\n \"raw_albers_x\": 70628385.95304152,\n \"raw_albers_y\": 43842598.52467522\n}" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "code/observation/plant", + "item": [ + { + "name": "/code/observation/plant", + "event": [ + { + "listen": "test", + "script": { + "id": "64c08fef-6c79-40a0-beb8-c5972cd55b11", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrlMobile}}/code/observation/plant", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "code", + "observation", + "plant" + ] + }, + "description": "Options on authenticated observation code route" + }, + "response": [ + { + "name": "Success", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/code/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "code", + "observation", + "plant" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Unauthorized user", + "originalRequest": { + "method": "OPTIONS", + "header": [], + "url": { + "raw": "{{baseUrl}}/code/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "code", + "observation", + "plant" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"Duis deserunt\",\n \"errors\": [\n \"laborum\",\n \"reprehenderit culpa sit do\"\n ]\n}" + } + ] + }, + { + "name": "/code/observation/plant", + "event": [ + { + "listen": "test", + "script": { + "id": "1c83ec28-f51d-468e-9b54-d13f36d2d50c", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Response time is less than 1000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(1000);\r", + "});\r", + "pm.test(\"Make sure we are looking at observation codes\", function () {\r", + " var jsonData = pm.response.json();\r", + " pm.expect(jsonData.message).to.eql(\"observation codes\");\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header.\nThe 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz`\n" + } + ], + "url": { + "raw": "{{baseUrlMobile}}/code/observation/plant", + "host": [ + "{{baseUrlMobile}}" + ], + "path": [ + "code", + "observation", + "plant" + ] + }, + "description": "API to get all observation code values" + }, + "response": [ + { + "name": "Fetched code values", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/code/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "code", + "observation", + "plant" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"cillum tempor laboris \",\n \"data\": {\n \"observation_aspect_code\": [\n {\n \"observation_aspect_code_id\": -18809135.256108165,\n \"code\": \"ipsum\",\n \"description\": \"ut dolor cillum\",\n \"activeIndicator\": false,\n \"updateAt\": \"est esse laborum aliquip sed\",\n \"createdAt\": \"adipisicing ea incididunt anim\"\n },\n {\n \"observation_aspect_code_id\": -32948509.52430828,\n \"code\": \"consectetur nulla eiusmod\",\n \"description\": \"tempor culpa aute\",\n \"activeIndicator\": true,\n \"updateAt\": \"fugiat\",\n \"createdAt\": \"aliquip Ut dolor volupta\"\n }\n ],\n \"jurisdiction_code\": [\n {\n \"jurisdiction_code_id\": 1586482.4674376845,\n \"code\": \"irure enim\",\n \"description\": \"in et\",\n \"activeIndicator\": false,\n \"updateAt\": \"mollit eu tempor p\",\n \"createdAt\": \"et dolore ea\"\n },\n {\n \"jurisdiction_code_id\": 60256444.57564142,\n \"code\": \"Duis esse\",\n \"description\": \"labo\",\n \"activeIndicator\": false,\n \"updateAt\": \"deserunt\",\n \"createdAt\": \"dolore ipsum aliqua ea\"\n }\n ],\n \"observation_geometry_code\": [\n {\n \"observation_geometry_code_id\": -8870262.583315685,\n \"code\": \"adipisicing\",\n \"description\": \"magna deserunt aute\",\n \"activeIndicator\": true,\n \"updateAt\": \"deserunt voluptate ut nisi\",\n \"createdAt\": \"eu veniam Duis\"\n },\n {\n \"observation_geometry_code_id\": 83170014.00410104,\n \"code\": \"in sed sit adipisicing\",\n \"description\": \"eu quis irure\",\n \"activeIndicator\": false,\n \"updateAt\": \"magna mollit minim velit\",\n \"createdAt\": \"ea in aliquip\"\n }\n ],\n \"observation_type_code\": [\n {\n \"observation_type_code_id\": 21700793.383103803,\n \"code\": \"Duis\",\n \"description\": \"proident veniam\",\n \"activeIndicator\": true,\n \"updateAt\": \"ex exercitation\",\n \"createdAt\": \"pariatur sunt in deserunt laborum\"\n },\n {\n \"observation_type_code_id\": -75912206.43681757,\n \"code\": \"aliquip veniam adipisicing\",\n \"description\": \"aliquip\",\n \"activeIndicator\": true,\n \"updateAt\": \"mollit aliqua\",\n \"createdAt\": \"magna eu in id\"\n }\n ],\n \"observation_proposed_action_code\": [\n {\n \"observation_proposed_action_code_id\": -77056443.68466182,\n \"code\": \"anim\",\n \"description\": \"tempor anim veniam\",\n \"activeIndicator\": false,\n \"updateAt\": \"consequat elit in\",\n \"createdAt\": \"ad veniam consectetur\"\n },\n {\n \"observation_proposed_action_code_id\": -5780571.004861474,\n \"code\": \"fugiat\",\n \"description\": \"enim ea\",\n \"activeIndicator\": false,\n \"updateAt\": \"ad ipsum sed\",\n \"createdAt\": \"aliquip sed\"\n }\n ],\n \"observation_slope_code\": [\n {\n \"observation_slope_code_id\": -37057391.57477734,\n \"code\": \"exercitation ut\",\n \"description\": \"ut q\",\n \"activeIndicator\": true,\n \"updateAt\": \"officia ut\",\n \"createdAt\": \"sit commodo\"\n },\n {\n \"observation_slope_code_id\": 47546393.007587016,\n \"code\": \"consectetur fugiat tempor anim nisi\",\n \"description\": \"consectetur commodo eiusmod sunt\",\n \"activeIndicator\": true,\n \"updateAt\": \"elit ullamco quis eiusmod\",\n \"createdAt\": \"eiusmod fugiat\"\n }\n ],\n \"soil_texture_code\": [\n {\n \"soil_texture_code_id\": -13558701.417320237,\n \"code\": \"aliquip consectetur ad\",\n \"description\": \"commodo cillum aliqua aliquip amet\",\n \"activeIndicator\": true,\n \"updateAt\": \"amet Ut dolor\",\n \"createdAt\": \"commodo deserunt est Lorem\"\n },\n {\n \"soil_texture_code_id\": -99376843.49984682,\n \"code\": \"fugiat sed Excepteur\",\n \"description\": \"in sed eiusm\",\n \"activeIndicator\": true,\n \"updateAt\": \"adipisicing tempor deserunt\",\n \"createdAt\": \"sunt non\"\n }\n ],\n \"species_agency_code\": [\n {\n \"species_agency_code_id\": 80265532.87241095,\n \"code\": \"eu officia laborum\",\n \"description\": \"dolor est officia et\",\n \"activeIndicator\": false,\n \"updateAt\": \"occaecat \",\n \"createdAt\": \"sunt\"\n },\n {\n \"species_agency_code_id\": 18871651.76228507,\n \"code\": \"dolor ipsum sit\",\n \"description\": \"dolore proident\",\n \"activeIndicator\": true,\n \"updateAt\": \"labore velit\",\n \"createdAt\": \"et exercitation\"\n }\n ],\n \"species_density_code\": [\n {\n \"species_density_code_id\": 78522005.96068078,\n \"code\": \"ea est\",\n \"description\": \"nisi magna\",\n \"activeIndicator\": false,\n \"updateAt\": \"mollit amet reprehenderit\",\n \"createdAt\": \"s\"\n },\n {\n \"species_density_code_id\": -35782839.37948807,\n \"code\": \"sint amet nostrud\",\n \"description\": \"veniam \",\n \"activeIndicator\": true,\n \"updateAt\": \"magna\",\n \"createdAt\": \"ipsum eu\"\n }\n ],\n \"species_distribution_code\": [\n {\n \"species_distribution_code_id\": -1143428.4162840694,\n \"description\": \"amet id Ut enim\",\n \"activeIndicator\": true,\n \"updateAt\": \"Duis occaecat irure\",\n \"createdAt\": \"ex fugiat sit aute\"\n },\n {\n \"species_distribution_code_id\": 65747512.972582996,\n \"description\": \"dolore c\",\n \"activeIndicator\": false,\n \"updateAt\": \"ex\",\n \"createdAt\": \"velit ipsum enim proident\"\n }\n ],\n \"species\": [\n {\n \"species_id\": 38882650.352721125,\n \"mapCode\": \"ea con\",\n \"earlyDetection\": true,\n \"containmentSpecies\": -68335104.3286288,\n \"containmentSpacialRef\": 2188710.5917010754,\n \"species\": \"in consectetur Lor\",\n \"genus\": \"non officia consectetur incididunt fugiat\",\n \"commonName\": \"deserunt non\",\n \"latinName\": \"aliquip ex\",\n \"updateAt\": \"nulla est in occaecat\",\n \"createdAt\": \"ullamco qui nulla dolore\"\n },\n {\n \"species_id\": 24635273.851175338,\n \"mapCode\": \"est Ut labore\",\n \"earlyDetection\": true,\n \"containmentSpecies\": 40892690.291599244,\n \"containmentSpacialRef\": 30000888.245922804,\n \"species\": \"aute qui ni\",\n \"genus\": \"voluptate Lo\",\n \"commonName\": \"mollit do ea\",\n \"latinName\": \"sint c\",\n \"updateAt\": \"amet\",\n \"createdAt\": \"sit dolore mollit\"\n }\n ],\n \"specific_use_code\": [\n {\n \"specific_use_code_id\": -57033856.42400751,\n \"code\": \"pariatur ad laboris\",\n \"description\": \"veniam Excepteur occaecat dolor\",\n \"activeIndicator\": true,\n \"updateAt\": \"dolore\",\n \"createdAt\": \"sint magna\"\n },\n {\n \"specific_use_code_id\": 76012862.37501022,\n \"code\": \"in eiusmod Ut et tempor\",\n \"description\": \"dolor enim cupidatat\",\n \"activeIndicator\": true,\n \"updateAt\": \"commodo dolore magna amet\",\n \"createdAt\": \"do\"\n }\n ]\n }\n}" + }, + { + "name": "Unauthorized user", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "{{baseUrl}}/code/observation/plant", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "code", + "observation", + "plant" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "cookie": [], + "body": "{\n \"message\": \"Duis deserunt\",\n \"errors\": [\n \"laborum\",\n \"reprehenderit culpa sit do\"\n ]\n}" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "event": [ + { + "listen": "test", + "script": { + "id": "4446bcb2-9776-4396-af39-37ce1acfa5b8", + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Response time is less than 2000ms\", function () {\r", + " pm.expect(pm.response.responseTime).to.be.below(2000);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "followRedirects": false + }, + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "grant_type", + "value": "password", + "type": "text" + }, + { + "key": "client_id", + "value": "invasives-bc", + "type": "text" + }, + { + "key": "username", + "value": "istest1@idir", + "type": "text" + }, + { + "key": "password", + "value": "{{postman_pw}}", + "type": "text" + }, + { + "key": "scope", + "value": "openid", + "type": "text" + } + ] + }, + "url": { + "raw": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "protocol": "https", + "host": [ + "sso-dev", + "pathfinder", + "gov", + "bc", + "ca" + ], + "path": [ + "auth", + "realms", + "dfmlcg7z", + "protocol", + "openid-connect", + "token" + ] + } + }, + "response": [] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "{{KEYCLOAK_TOKEN}}", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "id": "28ed808c-5613-4b9b-ae86-c95bcabd650e", + "type": "text/javascript", + "exec": [ + "const echoPostRequest = {", + " url: 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token',", + " method: 'POST',", + " header: 'Content-Type:application/x-www-form-urlencoded',", + " body: {", + " mode: 'urlencoded',", + " urlencoded: [", + " {key:'username', value:'istest1@idir'}, ", + " {key:'password', value:pm.environment.get('postman_pw')}, ", + " {key:'scope', value:'openid'}, ", + " {key:'client_id', value:'invasives-bc'}, ", + " {key:'grant_type', value:'password'}", + " ]", + " }", + "};", + "", + "var getToken = true;", + "", + "if (!pm.environment.get('KEYCLOAK_TOKEN_EXPIRY') || ", + " !pm.environment.get('KEYCLOAK_TOKEN')) {", + " console.log('Token or expiry date are missing')", + "} else if (pm.environment.get('KEYCLOAK_TOKEN_EXPIRY') <= (new Date()).getTime()) {", + " console.log('Token is expired')", + "} else {", + " getToken = false;", + " console.log('Token and expiry date are all good');", + "}", + "", + "if (getToken === true) {", + " pm.sendRequest(echoPostRequest, function (err, res) {", + " console.log(err ? err : res.json());", + " if (err === null) {", + " console.log('Saving the token and expiry date')", + " var responseJson = res.json();", + " pm.environment.set('KEYCLOAK_TOKEN', responseJson.access_token)", + " ", + " var expiryDate = new Date();", + " expiryDate.setSeconds(expiryDate.getSeconds() + responseJson.expires_in);", + " pm.environment.set('KEYCLOAK_TOKEN_EXPIRY', expiryDate.getTime());", + " }", + " });", + "}" + ] + } + }, + { + "listen": "test", + "script": { + "id": "58db7d12-6973-4d83-b8be-118686a601b1", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {} +} \ No newline at end of file From 9380ab60eb9bbb72848883b4b9ea793e11495390 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Mon, 24 Aug 2020 13:26:20 -0700 Subject: [PATCH 015/194] Tweak null handling of `branch` variable. --- api-mobile/.pipeline/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-mobile/.pipeline/config.js b/api-mobile/.pipeline/config.js index b55e4214f..da4ecf891 100644 --- a/api-mobile/.pipeline/config.js +++ b/api-mobile/.pipeline/config.js @@ -10,8 +10,8 @@ const version = config.version || '1.0.0'; const deployType = options.type || ''; const isStaticDeployment = deployType === 'static'; const deployChangeId = (isStaticDeployment && 'deploy') || changeId; -const tag = (isStaticDeployment && `build-${version}-${changeId}-${branch}`) || `build-${version}-${changeId}`; const branch = (isStaticDeployment && options.branch) || undefined; +const tag = (branch && `build-${version}-${changeId}-${branch}`) || `build-${version}-${changeId}`; const staticUrlsAPIMobile = config.staticUrlsAPIMobile || {}; const staticBranches = config.staticBranches || []; From cdc855b9cf547bb76f1a672fb2b82831caafcb2c Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Mon, 24 Aug 2020 16:20:34 -0700 Subject: [PATCH 016/194] Fix PVC Settings, volume size --- api/.pipeline/lib/deploy.db.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/.pipeline/lib/deploy.db.js b/api/.pipeline/lib/deploy.db.js index 220af4040..018e0f9e3 100644 --- a/api/.pipeline/lib/deploy.db.js +++ b/api/.pipeline/lib/deploy.db.js @@ -43,7 +43,8 @@ module.exports = (settings) => { 'IMAGE_STREAM_NAME': name, 'IMAGE_STREAM_VERSION': phases.build.tag, 'POSTGRESQL_DATABASE': 'InvasiveBC', - 'IMAGE_STREAM_NAMESPACE': phases.build.namespace + 'IMAGE_STREAM_NAMESPACE': phases.build.namespace, + 'VOLUME_CAPACITY': isStaticDeployment() ? "20Gi" : "3Gi" } })) From 67868eeab8a58d55ca5fa7c50b1937811c898606 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Mon, 24 Aug 2020 16:37:44 -0700 Subject: [PATCH 017/194] Fix --- api/.pipeline/lib/deploy.db.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/.pipeline/lib/deploy.db.js b/api/.pipeline/lib/deploy.db.js index 018e0f9e3..979f2810e 100644 --- a/api/.pipeline/lib/deploy.db.js +++ b/api/.pipeline/lib/deploy.db.js @@ -44,7 +44,7 @@ module.exports = (settings) => { 'IMAGE_STREAM_VERSION': phases.build.tag, 'POSTGRESQL_DATABASE': 'InvasiveBC', 'IMAGE_STREAM_NAMESPACE': phases.build.namespace, - 'VOLUME_CAPACITY': isStaticDeployment() ? "20Gi" : "3Gi" + 'VOLUME_CAPACITY': (`${phases[phase].name}-postgresql${phases[phase].suffix}` == 'invasivesbc-api-postgresql-dev-deploy') ? "20Gi" : "3Gi" } })) From af5e007d9b1804e24a7138d46ed399170dd0c045 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Wed, 26 Aug 2020 09:43:30 -0700 Subject: [PATCH 018/194] 779: Dockerize api-mobile - Add docker files for api-mobile - Add root level docker files to run both all applications --- .docker/db/Dockerfile | 28 + .docker/db/create_postgis.sql | 16 + .docker/nginx/Dockerfile | 15 + .docker/nginx/dev.conf | 23 + .gitignore | 3 + Makefile | 93 ++ README.md | 39 +- api-mobile/.docker/api-mobile/Dockerfile | 25 + api-mobile/.docker/api-mobile/Dockerfile.npm | 25 + api-mobile/.docker/db/Dockerfile | 28 + api-mobile/.docker/db/create_postgis.sql | 16 + api-mobile/.docker/nginx/Dockerfile | 15 + api-mobile/.docker/nginx/dev.conf | 11 + api-mobile/.dockerignore | 10 + api-mobile/.gitignore | 5 + api-mobile/Makefile | 87 ++ api-mobile/README.md | 145 ++- api-mobile/app.ts | 11 +- api-mobile/docker-compose.yml | 90 ++ api-mobile/knexfile.ts | 4 +- api-mobile/nodemon.json | 10 + api-mobile/package-lock.json | 890 ++++++++++++++++++ api-mobile/package.json | 4 + api-mobile/setup_env.sh | 3 - api/Makefile | 2 +- .../{Dockerfile.node => Dockerfile.npm} | 0 api/docker-compose.yml | 2 +- app/lucy/.build/Dockerfile.npm | 25 + docker-compose.yml | 173 ++++ 29 files changed, 1736 insertions(+), 62 deletions(-) create mode 100644 .docker/db/Dockerfile create mode 100644 .docker/db/create_postgis.sql create mode 100644 .docker/nginx/Dockerfile create mode 100644 .docker/nginx/dev.conf create mode 100644 Makefile create mode 100644 api-mobile/.docker/api-mobile/Dockerfile create mode 100644 api-mobile/.docker/api-mobile/Dockerfile.npm create mode 100644 api-mobile/.docker/db/Dockerfile create mode 100644 api-mobile/.docker/db/create_postgis.sql create mode 100644 api-mobile/.docker/nginx/Dockerfile create mode 100644 api-mobile/.docker/nginx/dev.conf create mode 100644 api-mobile/.dockerignore create mode 100644 api-mobile/Makefile create mode 100644 api-mobile/docker-compose.yml create mode 100644 api-mobile/nodemon.json delete mode 100644 api-mobile/setup_env.sh rename api/api_sources/.build/{Dockerfile.node => Dockerfile.npm} (100%) create mode 100644 app/lucy/.build/Dockerfile.npm create mode 100644 docker-compose.yml diff --git a/.docker/db/Dockerfile b/.docker/db/Dockerfile new file mode 100644 index 000000000..b0a33fe42 --- /dev/null +++ b/.docker/db/Dockerfile @@ -0,0 +1,28 @@ +FROM postgres:9.6 + +# set variables +ENV POSTGISV 2.4 +ENV TZ America/Vancouver +ENV PORT 5432 + +# install postgis packages +RUN mkdir -p /opt/apps +RUN apt-get -qq update +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-postgis-$POSTGISV +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-postgis-$POSTGISV-scripts +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-pgrouting +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-pgrouting-scripts +RUN apt-get -qq install -y --no-install-recommends postgresql-server-dev-$PG_MAJOR +RUN apt-get -qq purge -y --auto-remove postgresql-server-dev-$PG_MAJOR +RUN apt-get -qq clean + +# set time zone +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# copy postgis init script to docker init directory +RUN mkdir -p /docker-entrypoint-initdb.d +COPY ./create_postgis.sql /docker-entrypoint-initdb.d/postgis.sql + +EXPOSE ${PORT} + +CMD ["postgres"] diff --git a/.docker/db/create_postgis.sql b/.docker/db/create_postgis.sql new file mode 100644 index 000000000..4376aed62 --- /dev/null +++ b/.docker/db/create_postgis.sql @@ -0,0 +1,16 @@ +-- Enable PostGIS (includes raster) +CREATE EXTENSION IF NOT EXISTS postgis; +-- Enable Topology +CREATE EXTENSION IF NOT EXISTS postgis_topology; +-- -- Enable PostGIS Advanced 3D +-- -- and other geoprocessing algorithms +-- -- sfcgal not available with all distributions +-- CREATE EXTENSION IF NOT EXISTS postgis_sfcgal; +-- -- fuzzy matching needed for Tiger +-- CREATE EXTENSION IF NOT EXISTS fuzzystrmatch; +-- -- rule based standardizer +-- CREATE EXTENSION IF NOT EXISTS address_standardizer; +-- -- example rule data set +-- CREATE EXTENSION IF NOT EXISTS address_standardizer_data_us; +-- -- Enable US Tiger Geocoder +-- CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder; diff --git a/.docker/nginx/Dockerfile b/.docker/nginx/Dockerfile new file mode 100644 index 000000000..3390313c4 --- /dev/null +++ b/.docker/nginx/Dockerfile @@ -0,0 +1,15 @@ +FROM nginx:stable-alpine + +RUN apk update -q +RUN apk upgrade -q +RUN apk add -q --no-cache bash +RUN adduser -D -H -u 1000 -s /bin/bash www-data -G www-data + +RUN mkdir -p /usr/app +WORKDIR /usr/app + +# remove any existing conf file +RUN rm /etc/nginx/conf.d/default.conf + +# copy our nginx conf file +COPY /dev.conf /etc/nginx/conf.d diff --git a/.docker/nginx/dev.conf b/.docker/nginx/dev.conf new file mode 100644 index 000000000..d448d1947 --- /dev/null +++ b/.docker/nginx/dev.conf @@ -0,0 +1,23 @@ +server { + listen 80; + + # Serve the api at localhost/api/ + location /api { + proxy_pass http://api:7070; + proxy_redirect default; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host $server_name; + } + + # Serve the api-mobile at localhost/api-mobile/ + location /api-mobile { + proxy_pass http://api-mobile:7080/api; + proxy_redirect default; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host $server_name; + } +} diff --git a/.gitignore b/.gitignore index 03843d2ac..66cef9e79 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ swagger/ **/.node-*/ .bash_history +.env + +.npm \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..0f1e65681 --- /dev/null +++ b/Makefile @@ -0,0 +1,93 @@ +#!make + +# ------------------------------------------------------------------------------ +# Makefile -- InvasivesBC +# ------------------------------------------------------------------------------ + +-include .env + +export $(shell sed 's/=.*//' .env) + +all : help +.DEFAULT : help +.PHONY : local local-debug build-local setup-local run-local run-debug close-local cclean-local test-local database api app api-mobile help + +# ------------------------------------------------------------------------------ +# Task Aliases +# ------------------------------------------------------------------------------ + +local: | setup-docker close-local build-local run-local ## Performs all commands necessary to run api-mobile in docker + +local-debug: | setup-docker close-local build-local run-debug ## Performs all commands necessary to run api-mobile in docker in debug mode + +# ------------------------------------------------------------------------------ +# Development Commands +# ------------------------------------------------------------------------------ + +setup-docker: ## Prepares the environment variables for local development using docker + @echo "===============================================" + @echo "Make: setup-local - copying env.docker to .env" + @echo "===============================================" + @cp env_config/env.docker .env + +build-local: ## Builds the local development containers + @echo "===============================================" + @echo "Make: build-local - building Docker images" + @echo "===============================================" + @docker-compose -f docker-compose.yml build + +run-local: ## Runs the local development containers + @echo "===============================================" + @echo "Make: run-local - running api/app images" + @echo "===============================================" + @docker-compose -f docker-compose.yml up -d + +run-debug: ## Runs the local development containers in debug mode, where all container output is printed to the console + @echo "===============================================" + @echo "Make: run-debug - running api/app images in debug mode" + @echo "===============================================" + @docker-compose -f docker-compose.yml up + +close-local: ## Closes the local development containers + @echo "===============================================" + @echo "Make: close-local - closing Docker containers" + @echo "===============================================" + @docker-compose -f docker-compose.yml down + +clean-local: ## Closes and cleans (removes) local development containers + @echo "===============================================" + @echo "Make: clean-local - closing and cleaning Docker containers" + @echo "===============================================" + @docker-compose -f docker-compose.yml down -v --rmi all --remove-orphans + +# ------------------------------------------------------------------------------ +# Helper Commands +# ------------------------------------------------------------------------------ + +database: ## Executes into database container. + @echo "===============================================" + @echo "Make: Shelling into database container" + @echo "===============================================" + @export PGPASSWORD=$(DB_PASS) + @docker-compose exec db psql -U $(DB_USER) $(DB_DATABASE) + +api: ## Executes into the api container. + @echo "===============================================" + @echo "Shelling into api container" + @echo "===============================================" + @docker-compose exec api bash + +app: ## Executes into the app container. + @echo "===============================================" + @echo "Shelling into app container" + @echo "===============================================" + @docker-compose exec app bash + +api-mobile: ## Executes into the workspace container. + @echo "===============================================" + @echo "Shelling into api-mobile container" + @echo "===============================================" + @docker-compose exec api-mobile bash + +help: ## Display this help screen. + @grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/README.md b/README.md index 02b41223f..1ecc219b5 100644 --- a/README.md +++ b/README.md @@ -127,40 +127,25 @@ Note: these files are git-ignored. *Using Docker:* -The client (frontend) and server (backend) of the application run in separate containers. To run all of the application containers, execute the following commands inside the `api` directory. +The client (frontend app) and server(s) (backend api/api-mobile) of the application run in separate containers. To run all of the application containers, use the following commands: -1. Build the application -`make build-local` +* Run the appliation containers +`make local` -2. Run the application containers -`make run-local` +* Run the application containers in debug mode + `make local-debug` + This will print additional logging statements to the console, which may be useful when debugging the backend. -3. Run the application containers in debug mode -`make local-debug` +* Close and clean the application containers + `make clean-local` + This will close and remove the containers and images created by either of the above commands. -This will print additional logging statements to the console, which may be useful when debugging the backend. + _Note: See the `Makefile` for the full list of commands._ -The above commands, along with additional options, are defined in the `Makefile`. - -*Running the App Locally:* - -To run the client (frontend) locally, execute the following command inside the `app` directory. - -`ng serve` - -This will perform hotloading of any changes made to the frontend code (i.e., your browser will automatically refresh whenever any client-side code changes are saved). - -To quit the local client, type ` + C`. - -*View the App:* - -Go to http://localhost:3033/ - -*Quit the App:* - -On the command line, run `make close-local` or type ` + C`. +To run a subset of the application contains, refer to the `README` and `Makefile` in their respective sub-folders (ie: `./api` or `./api-mobile`). ## Acknowledgements + [![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-black.svg)](https://sonarcloud.io/dashboard?id=bcgov_lucy-web) ## License diff --git a/api-mobile/.docker/api-mobile/Dockerfile b/api-mobile/.docker/api-mobile/Dockerfile new file mode 100644 index 000000000..fbb2ebe82 --- /dev/null +++ b/api-mobile/.docker/api-mobile/Dockerfile @@ -0,0 +1,25 @@ +FROM node:11.0.0 + +RUN apt-get -qq update +RUN apt-get -qq install -y curl +RUN npm install -g npm + +# set variables +ENV HOME_ROOT=/opt/app-root +ENV HOME=/opt/app-root/src + +# create source directory +RUN mkdir -p $HOME + +WORKDIR $HOME_ROOT +WORKDIR $HOME + +# Bundle app source +COPY ./ . + +VOLUME ${HOME} + +ENV PATH ${HOME}/node_modules/.bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH + +# run the database migrations and start api-mobile in reload mode (will reload on file changes) +CMD [ "npm", "run", "start:migrate:reload" ] diff --git a/api-mobile/.docker/api-mobile/Dockerfile.npm b/api-mobile/.docker/api-mobile/Dockerfile.npm new file mode 100644 index 000000000..c7b21a927 --- /dev/null +++ b/api-mobile/.docker/api-mobile/Dockerfile.npm @@ -0,0 +1,25 @@ +FROM node:11.0.0 + +RUN apt-get -qq update +RUN npm install -g npm + +# Create app directory +ENV HOME_ROOT=/opt/app-root +ENV HOME=/opt/app-root/src + +RUN mkdir -p $HOME + +WORKDIR $HOME_ROOT + +WORKDIR $HOME + +# Install dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+) +COPY ./package*.json ./ + +# If you are building your code for production +# RUN npm install --only=production +RUN npm set progress=false && npm ci + +VOLUME ${HOME}/node_modules +ENTRYPOINT /usr/bin/tail -f /dev/null diff --git a/api-mobile/.docker/db/Dockerfile b/api-mobile/.docker/db/Dockerfile new file mode 100644 index 000000000..b0a33fe42 --- /dev/null +++ b/api-mobile/.docker/db/Dockerfile @@ -0,0 +1,28 @@ +FROM postgres:9.6 + +# set variables +ENV POSTGISV 2.4 +ENV TZ America/Vancouver +ENV PORT 5432 + +# install postgis packages +RUN mkdir -p /opt/apps +RUN apt-get -qq update +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-postgis-$POSTGISV +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-postgis-$POSTGISV-scripts +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-pgrouting +RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-pgrouting-scripts +RUN apt-get -qq install -y --no-install-recommends postgresql-server-dev-$PG_MAJOR +RUN apt-get -qq purge -y --auto-remove postgresql-server-dev-$PG_MAJOR +RUN apt-get -qq clean + +# set time zone +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# copy postgis init script to docker init directory +RUN mkdir -p /docker-entrypoint-initdb.d +COPY ./create_postgis.sql /docker-entrypoint-initdb.d/postgis.sql + +EXPOSE ${PORT} + +CMD ["postgres"] diff --git a/api-mobile/.docker/db/create_postgis.sql b/api-mobile/.docker/db/create_postgis.sql new file mode 100644 index 000000000..4376aed62 --- /dev/null +++ b/api-mobile/.docker/db/create_postgis.sql @@ -0,0 +1,16 @@ +-- Enable PostGIS (includes raster) +CREATE EXTENSION IF NOT EXISTS postgis; +-- Enable Topology +CREATE EXTENSION IF NOT EXISTS postgis_topology; +-- -- Enable PostGIS Advanced 3D +-- -- and other geoprocessing algorithms +-- -- sfcgal not available with all distributions +-- CREATE EXTENSION IF NOT EXISTS postgis_sfcgal; +-- -- fuzzy matching needed for Tiger +-- CREATE EXTENSION IF NOT EXISTS fuzzystrmatch; +-- -- rule based standardizer +-- CREATE EXTENSION IF NOT EXISTS address_standardizer; +-- -- example rule data set +-- CREATE EXTENSION IF NOT EXISTS address_standardizer_data_us; +-- -- Enable US Tiger Geocoder +-- CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder; diff --git a/api-mobile/.docker/nginx/Dockerfile b/api-mobile/.docker/nginx/Dockerfile new file mode 100644 index 000000000..3390313c4 --- /dev/null +++ b/api-mobile/.docker/nginx/Dockerfile @@ -0,0 +1,15 @@ +FROM nginx:stable-alpine + +RUN apk update -q +RUN apk upgrade -q +RUN apk add -q --no-cache bash +RUN adduser -D -H -u 1000 -s /bin/bash www-data -G www-data + +RUN mkdir -p /usr/app +WORKDIR /usr/app + +# remove any existing conf file +RUN rm /etc/nginx/conf.d/default.conf + +# copy our nginx conf file +COPY /dev.conf /etc/nginx/conf.d diff --git a/api-mobile/.docker/nginx/dev.conf b/api-mobile/.docker/nginx/dev.conf new file mode 100644 index 000000000..4686cf223 --- /dev/null +++ b/api-mobile/.docker/nginx/dev.conf @@ -0,0 +1,11 @@ +server { + listen 80; + location / { + proxy_pass http://api-mobile:7080; + proxy_redirect default; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host $server_name; + } +} diff --git a/api-mobile/.dockerignore b/api-mobile/.dockerignore new file mode 100644 index 000000000..fffda4861 --- /dev/null +++ b/api-mobile/.dockerignore @@ -0,0 +1,10 @@ +node_modules +**/node_modules + +**/.npm +**/.config +**.bash_history + +dist + +coverage diff --git a/api-mobile/.gitignore b/api-mobile/.gitignore index 5b4c3e32d..230f72d58 100644 --- a/api-mobile/.gitignore +++ b/api-mobile/.gitignore @@ -1,5 +1,10 @@ +node_modules **/node_modules +**/.npm +**/.config +**.bash_history + dist coverage diff --git a/api-mobile/Makefile b/api-mobile/Makefile new file mode 100644 index 000000000..6c1fa66be --- /dev/null +++ b/api-mobile/Makefile @@ -0,0 +1,87 @@ +#!make + +# ------------------------------------------------------------------------------ +# Makefile -- InvasivesBC api-mobile +# ------------------------------------------------------------------------------ + +-include .env + +export $(shell sed 's/=.*//' .env) + +all : help +.DEFAULT : help +.PHONY : local local-debug build-local setup-local run-local run-debug close-local cclean-local test-local database api-mobile help + +# ------------------------------------------------------------------------------ +# Task Aliases +# ------------------------------------------------------------------------------ + +local: | setup-docker close-local build-local run-local ## Performs all commands necessary to run api-mobile in docker + +local-debug: | setup-docker close-local build-local run-debug ## Performs all commands necessary to run api-mobile in docker in debug mode + +# ------------------------------------------------------------------------------ +# Development Commands +# ------------------------------------------------------------------------------ + +setup-local: ## Prepares the environment variables for local development + @echo "===============================================" + @echo "Make: setup-local - copying env.local to .env" + @echo "===============================================" + @cp env_config/env.local .env + +setup-docker: ## Prepares the environment variables for local development using docker + @echo "===============================================" + @echo "Make: setup-local - copying env.docker to .env" + @echo "===============================================" + @cp env_config/env.docker .env + +build-local: ## Builds the local development containers + @echo "===============================================" + @echo "Make: build-local - building api-mobile Docker image" + @echo "===============================================" + @docker-compose -f docker-compose.yml build + +run-local: ## Runs the local development containers + @echo "===============================================" + @echo "Make: run-local - running api-mobile" + @echo "===============================================" + @docker-compose -f docker-compose.yml up -d + +run-debug: ## Runs the local development containers in debug mode, where all container output is printed to the console + @echo "===============================================" + @echo "Make: run-debug - running api-mobile for debugging" + @echo "===============================================" + @docker-compose -f docker-compose.yml up + +close-local: ## Closes the local development containers + @echo "===============================================" + @echo "Make: close-local - closing local api-mobile containers" + @echo "===============================================" + @docker-compose -f docker-compose.yml down + +clean-local: ## Closes and cleans (removes) local development containers + @echo "===============================================" + @echo "Make: clean-local - closing and cleaning api-mobile containers" + @echo "===============================================" + @docker-compose -f docker-compose.yml down -v --rmi all --remove-orphans + +# ------------------------------------------------------------------------------ +# Helper Commands +# ------------------------------------------------------------------------------ + +database: ## Executes into database container. + @echo "===============================================" + @echo "Make: Shelling into database container" + @echo "===============================================" + @export PGPASSWORD=$(DB_PASS) + @docker-compose exec db psql -U $(DB_USER) $(DB_DATABASE) + +api-mobile: ## Executes into the workspace container. + @echo "===============================================" + @echo "Shelling into api-mobile container" + @echo "===============================================" + @docker-compose exec api-mobile bash + +help: ## Display this help screen. + @grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/api-mobile/README.md b/api-mobile/README.md index c60388595..af84d5d3a 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -1,6 +1,6 @@ # bcgov/lucy-web/api-mobile -# Technologies Used +## Technologies Used | Technology | Version | Website | Description | | ---------- | ------- | ------------------------------------ | -------------------- | @@ -8,7 +8,41 @@ | npm | 6.x.x | https://www.npmjs.com/ | Node Package Manager | | PostgreSQL | 10.x | https://www.postgresql.org/download/ | PSQL database | -# Build and Run +
+ +# Running Locally with Docker + +See `./Makefile` for all available commands. + +## Primary make commands + +- Build and run a dockerized instance of the api-mobile api, a postgresql database, and an nginx reverse proxy. + + ``` + make local + ``` + +- Build and run a dockerized instance of the api-mobile api, a postgresql database, and an nginx reverse proxy, in debug mode where all docker output is printed to the console: + + ``` + make local-debug + ``` + +## Calling the API + +Access the api directly: `localhost:3002/api/` + +Access the api via the nginx reverse proxy: `localhost:80/api/` + +
+ +# Running Locally without Docker + +## Prerequisites + +- A PostgreSQL database, with details matching the _DB\_\*_ variables in `./env_config/env.local`, is available. + +## Commands 1. Download dependencies @@ -24,6 +58,77 @@ npm start 3. Go to http://localhost:3002/api/docs/ to verify that the application is running. +
+ +# API Specification + +The API is defined in `swagger.yaml`. + +If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` + +This project uses npm package `swagger-tools` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `swagger.yaml`. + +- The controller file is specified by the `x-swagger-router-controller` field. +- The controller function, within the controller file, is specified by the `operationId` field. + +Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `swagger.yaml` file. + +_Note: This API currently uses OpenAPI 2.0, as 3.0 is not yet fully supported by many of the swagger libraries/tools used._ + +
+ +# Database Migrations + +## Info + +This api users `Knex` to manage and run database migrations. + +A log of executed migrations can be found in the `migration` postgres table. Knex will not re-run a migration that has been run before (indicated by an entry in the `migration` table). + +### Technolgies used + +- [Knex](http://knexjs.org/) + +### Configuration file + +- knexfile.ts + +## Running migrations Locally + +- Set up the environment variables required by the `knexfile.ts` config + + ``` + make setup-local + ``` + +- Run migrations: + + ``` + npm run migrate:latest + + or + + npx knex migrate:latest + ``` + +- Rollback last set of migrations: + + ``` + npm run migrate:rollback + + or + + npx knex migrate:rollback + ``` + +- See other available Knex commands: + + ``` + npx knex --help + ``` + +
+ # Linting and Formatting ## Info @@ -32,7 +137,9 @@ Linting and formatting is handled by a combiation of `ESlint` and `Prettier`. Th ### Technolgies used -[ESlint](https://eslint.org/), [Prettier](https://prettier.io/), [EditorConfig](http://editorconfig.org) +- [ESlint](https://eslint.org/) +- [Prettier](https://prettier.io/) +- [EditorConfig](http://editorconfig.org) ### Configuration files @@ -65,20 +172,7 @@ _Note: Not all linting/formatting errors can be automatically fixed, and will re npm run lint-fix ``` -# API Specification - -The API is defined in `swagger.yaml`. - -If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` - -This project uses npm package `swagger-tools` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `swagger.yaml`. - -- The controller file is specified by the `x-swagger-router-controller` field. -- The controller function, within the controller file, is specified by the `operationId` field. - -Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `swagger.yaml` file. - -_Note: This API currently uses OpenAPI 2.0, as 3.0 is not yet fully supported by many of the swagger libraries/tools used._ +
# Logging @@ -123,25 +217,28 @@ Supported log properties: - : any additional object properties will be JSON.stringify'd and appended to the log message. ``` +
+ # Testing - To access the API without logging in to the front end, you can manually add a user this way: + ``` $ make database $ psql -psql_prompt: insert into application_user (first_name, last_name, email,preferred_username) values ('micheal', 'wells', 'micheal.w -.wells@bananasInPajamas.ca','officialUserName@idir'); +psql_prompt: insert into application_user (first_name, last_name, email,preferred_username) values ('micheal', 'wells', 'micheal.w.wells@bananasInPajamas.ca','officialUserName@idir'); -psql_prompt: insert into user_role (user_id, role_code_id) values (8 -,3); +psql_prompt: insert into user_role (user_id, role_code_id) values (8,3); ``` - ## Info ### Technolgies used -[Mocha](https://www.npmjs.com/package/mocha), [Chai](https://www.npmjs.com/package/chai), [SuperTest](https://www.npmjs.com/package/supertest), [Nock](https://www.npmjs.com/package/nock) +- [Mocha](https://www.npmjs.com/package/mocha) +- [Chai](https://www.npmjs.com/package/chai) +- [SuperTest](https://www.npmjs.com/package/supertest) +- [Nock](https://www.npmjs.com/package/nock) ## Run Tests @@ -151,6 +248,8 @@ psql_prompt: insert into user_role (user_id, role_code_id) values (8 npm run test ``` +
+ # Keycloak This project uses [Keycloak](https://www.keycloak.org/) to handle authentication. diff --git a/api-mobile/app.ts b/api-mobile/app.ts index b948f7df4..322cfe326 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -11,7 +11,8 @@ const defaultLog = getLogger('app'); import { authenticate } from './src/utils/auth-utils'; -const HOST = process.env.API_HOST || 'localhost:3002'; +const HOST = process.env.API_HOST || 'localhost'; +const PORT = Number(process.env.API_PORT || '3002'); // Get initial express app const app: express.Express = express(); @@ -32,8 +33,8 @@ app.use(function (req: any, res: any, next: any) { next(); }); -// Overwrite swagger to set the host based on current environment -swaggerConfig.host = HOST; +// Overwrite swagger to set the `host:port` based on current environment +swaggerConfig.host = `${HOST}:${PORT}`; swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { // add base swagger route handling middleware @@ -61,8 +62,8 @@ swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { // start api try { - app.listen(3002, '0.0.0.0', function () { - defaultLog.info({ label: 'start api', message: `started api-mobile on ${HOST}` }); + app.listen(PORT, '0.0.0.0', function () { + defaultLog.info({ label: 'start api', message: `started api-mobile on ${HOST}:${PORT}/api` }); }); } catch (error) { defaultLog.error({ label: 'start api', message: 'error', error }); diff --git a/api-mobile/docker-compose.yml b/api-mobile/docker-compose.yml new file mode 100644 index 000000000..b8e6b8e11 --- /dev/null +++ b/api-mobile/docker-compose.yml @@ -0,0 +1,90 @@ +version: "3.5" + +services: + db: + image: ${PROJECT_NAME}-${TAG}-postgress-img-mobile + container_name: ${PROJECT_NAME}-${TAG}-db-mobile + build: + context: ./.docker/db + dockerfile: Dockerfile + ports: + - ${DB_PORT}:${DB_PORT} + environment: + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASS} + - POSTGRES_DB=${DB_DATABASE} + - PORT=${DB_PORT} + networks: + - local-network + volumes: + - postgres:/var/lib/postgresql/data + + api-mobile_dependency: + image: ${PROJECT_NAME}-${TAG}-api-mobile-dep-img + container_name: ${PROJECT_NAME}-${TAG}-api-mobile-dep + build: + context: ./ + dockerfile: ./.docker/api-mobile/Dockerfile.npm + volumes: + - npmcache:/opt/app-root/src/node_modules + + api-mobile: + image: ${PROJECT_NAME}-${TAG}-api-mobile-img + container_name: ${PROJECT_NAME}-${TAG}-api-mobile + build: + context: ./ + dockerfile: ./.docker/api-mobile/Dockerfile + ports: + - ${API_PORT}:${API_PORT} + environment: + - API_HOST=${API_HOST} + - API_PORT=${API_PORT} + - DB_HOST=${DB_HOST} + - DB_USER=${DB_USER} + - DB_PASS=${DB_PASS} + - DB_PORT=${DB_PORT} + - DB_DATABASE=${DB_DATABASE} + - APP_CERTIFICATE_URL=${APP_CERTIFICATE_URL} + - APP_CERTIFICATE_URL_TEST=${APP_CERTIFICATE_URL_TEST} + - ENVIRONMENT=local + - NODE_ENV=local + - APP_EMAIL_SENDER=${APP_EMAIL_SENDER} + - APP_EMAIL_SENDER_PWD=${APP_EMAIL_SENDER_PWD} + - APP_EMAIL_TEST_RECEIVER=${APP_EMAIL_TEST_RECEIVER} + - APP_REPORT_RECEIVER=${APP_REPORT_RECEIVER} + volumes: + - ./:/opt/app-root/src + - npmcache:/opt/app-root/src/node_modules + networks: + - local-network + links: + - db + depends_on: + - db + - api-mobile_dependency + restart: "no" + + nginx: + image: ${PROJECT_NAME}-${TAG}-nginx-mobile-img + container_name: ${PROJECT_NAME}-${TAG}-nginx-mobile + build: + context: ./.docker/nginx + dockerfile: Dockerfile + restart: always + ports: + - 80:80 + depends_on: + - db + - api-mobile + networks: + - local-network + +networks: + local-network: + driver: bridge + +volumes: + postgres: + name: ${PROJECT_NAME}-${TAG}-vol-postgres + npmcache: + name: ${PROJECT_NAME}-${TAG}-vol-npmcache diff --git a/api-mobile/knexfile.ts b/api-mobile/knexfile.ts index 735990da3..04f20b552 100644 --- a/api-mobile/knexfile.ts +++ b/api-mobile/knexfile.ts @@ -3,14 +3,14 @@ import dotenv from 'dotenv'; const env = process.env.NODE_ENV || 'local'; if (env === 'local') { - dotenv.config(); + dotenv.config({ path: './env_config/env.local' }); } module.exports = { local: { client: 'postgresql', connection: { - host: process.env.DB_HOST_FOR_LOCAL_API, + host: process.env.DB_HOST, port: process.env.DB_PORT || 5432, database: process.env.DB_DATABASE, user: process.env.DB_USER, diff --git a/api-mobile/nodemon.json b/api-mobile/nodemon.json new file mode 100644 index 000000000..b73ba77eb --- /dev/null +++ b/api-mobile/nodemon.json @@ -0,0 +1,10 @@ +{ + "verbose": true, + "ignore": [ + "*.spec.ts" + ], + "watch": [ + "src" + ], + "ext": "ts" +} diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 5d21f6086..aae782797 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -66,6 +66,21 @@ "fastq": "^1.6.0" } }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "@types/bluebird": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.3.tgz", @@ -595,6 +610,12 @@ "eslint-visitor-keys": "^1.1.0" } }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -638,6 +659,55 @@ "uri-js": "^4.2.2" } }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -1069,6 +1139,74 @@ } } }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1172,6 +1310,48 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1245,6 +1425,12 @@ } } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1272,6 +1458,12 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -1332,6 +1524,15 @@ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", "dev": true }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", @@ -1498,6 +1699,20 @@ "typedarray": "^0.0.6" } }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -1560,6 +1775,25 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, "cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", @@ -1761,6 +1995,15 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -1809,6 +2052,12 @@ "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", "dev": true }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1957,6 +2206,15 @@ "esutils": "^2.0.2" } }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, "dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -1968,6 +2226,12 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", "integrity": "sha1-zJHAcmzjoFTr8RxV+8kqfyZt0VQ=" }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -2148,6 +2412,12 @@ "es6-symbol": "^3.1.1" } }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3074,6 +3344,27 @@ "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -3317,6 +3608,15 @@ } } }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "requires": { + "ini": "^1.3.5" + } + }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -3372,6 +3672,25 @@ "sparkles": "^1.0.0" } }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -3552,6 +3871,12 @@ } } }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3572,6 +3897,12 @@ "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", "dev": true }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -3603,6 +3934,12 @@ "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", "dev": true }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", @@ -3613,6 +3950,12 @@ "resolve-from": "^4.0.0" } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3724,6 +4067,15 @@ "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", "dev": true }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -3788,6 +4140,16 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, "is-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", @@ -3800,12 +4162,24 @@ "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", "dev": true }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", "dev": true }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -3870,6 +4244,12 @@ "has-symbols": "^1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -3895,6 +4275,12 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3946,6 +4332,18 @@ "esprima": "^4.0.0" } }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-refs": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", @@ -4064,6 +4462,15 @@ "safe-buffer": "^5.0.1" } }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -4141,6 +4548,15 @@ "es6-weak-map": "^2.0.1" } }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -4198,6 +4614,26 @@ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -4520,6 +4956,12 @@ } } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lru-cache": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", @@ -4545,6 +4987,23 @@ } } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -4616,6 +5075,12 @@ "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=" }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -4747,6 +5212,12 @@ "mime-db": "1.44.0" } }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -5115,6 +5586,12 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "nock": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", @@ -5149,6 +5626,50 @@ "resolved": "https://registry.npmjs.org/node-fs/-/node-fs-0.1.7.tgz", "integrity": "sha1-MjI8zLRsn78PwRgS1FAhzDHTJbs=" }, + "nodemon": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.4.tgz", + "integrity": "sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ==", + "dev": true, + "requires": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^4.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -5167,6 +5688,12 @@ "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", "dev": true }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + }, "now-and-later": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", @@ -5176,6 +5703,23 @@ "once": "^1.3.2" } }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -5341,6 +5885,12 @@ "lcid": "^1.0.0" } }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -5372,6 +5922,26 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", @@ -5404,6 +5974,16 @@ "path-root": "^0.1.1" } }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, "parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", @@ -5442,6 +6022,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-loader": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", @@ -5554,6 +6140,18 @@ "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", "dev": true }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -5631,6 +6229,12 @@ "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", "dev": true }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", @@ -5742,6 +6346,12 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, "pump": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", @@ -5763,6 +6373,15 @@ "pump": "^2.0.0" } }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", @@ -5812,6 +6431,28 @@ "mute-stream": "~0.0.4" } }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + } + } + }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", @@ -5945,6 +6586,24 @@ "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", "dev": true }, + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, "remove-bom-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", @@ -6088,6 +6747,15 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -6149,6 +6817,23 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "semver-greatest-satisfied-range": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", @@ -6309,6 +6994,33 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -6639,6 +7351,16 @@ } } }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -6983,6 +7705,12 @@ "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.0.tgz", "integrity": "sha512-PKUnlDFODZueoA8owLehl8vLcgtA8u4dRuVbZc92tspDYZixjJL6TqYOmryf/PfP/EBX+2rgNcrj96NO+RPkdQ==" }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -7108,6 +7836,12 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -7189,6 +7923,15 @@ "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, "traverse": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", @@ -7352,6 +8095,15 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", @@ -7362,6 +8114,26 @@ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" }, + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "undertaker": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", @@ -7415,6 +8187,15 @@ "through2-filter": "^3.0.0" } }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -7462,6 +8243,79 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, + "update-notifier": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.1.tgz", + "integrity": "sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -7482,6 +8336,15 @@ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -7722,6 +8585,15 @@ } } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", @@ -7884,6 +8756,24 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/api-mobile/package.json b/api-mobile/package.json index 9515a6d06..fea53a379 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -12,6 +12,8 @@ "start": "ts-node app", "clean": "gulp clean", "build": "gulp build", + "start:reload": "./node_modules/.bin/nodemon app.ts --exec ts-node", + "start:migrate:reload": "npm-run-all -l -s migrate:latest start:reload", "migrate:latest": "knex migrate:latest", "migrate:rollback": "knex migrate:rollback", "test": "ts-mocha --timeout 60000", @@ -70,6 +72,8 @@ "gulp": "~4.0.2", "mocha": "~8.1.1", "nock": "~13.0.3", + "nodemon": "~2.0.4", + "npm-run-all": "~4.1.5", "prettier": "~2.0.5", "supertest": "~4.0.2" } diff --git a/api-mobile/setup_env.sh b/api-mobile/setup_env.sh deleted file mode 100644 index edddfd07b..000000000 --- a/api-mobile/setup_env.sh +++ /dev/null @@ -1,3 +0,0 @@ -cp .env.sample .env -cp .env ../api/.env -cp .env ../api/env_config/env.local diff --git a/api/Makefile b/api/Makefile index c7ca84fc3..e7a111bd7 100755 --- a/api/Makefile +++ b/api/Makefile @@ -3,7 +3,7 @@ # Makefile -- SEISM API # ------------------------------------------------------------------------------ -include .env +-include .env export $(shell sed 's/=.*//' .env) export GIT_LOCAL_BRANCH?=$(shell git rev-parse --abbrev-ref HEAD) diff --git a/api/api_sources/.build/Dockerfile.node b/api/api_sources/.build/Dockerfile.npm similarity index 100% rename from api/api_sources/.build/Dockerfile.node rename to api/api_sources/.build/Dockerfile.npm diff --git a/api/docker-compose.yml b/api/docker-compose.yml index f48e27555..e9b6d0394 100755 --- a/api/docker-compose.yml +++ b/api/docker-compose.yml @@ -7,7 +7,7 @@ services: container_name: ${PROJECT_NAME}-${TAG}-api-dep build: context: ./api_sources - dockerfile: .build/Dockerfile.node + dockerfile: .build/Dockerfile.npm volumes: - npmcache:/opt/app-root/src/node_modules app_api: diff --git a/app/lucy/.build/Dockerfile.npm b/app/lucy/.build/Dockerfile.npm new file mode 100644 index 000000000..842997d4f --- /dev/null +++ b/app/lucy/.build/Dockerfile.npm @@ -0,0 +1,25 @@ +FROM node:11.0.0 + +RUN apt-get -qq update +RUN npm install -g npm + +# Create app directory +ENV HOME_ROOT=/opt/app-root/src +ENV HOME=/opt/app-root/src/src + +RUN mkdir -p $HOME + +WORKDIR $HOME_ROOT + +WORKDIR $HOME + +# Install dependencies +# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+) +COPY ./package*.json ./ + +# If you are building your code for production +# RUN npm install --only=production +RUN npm set progress=false && npm ci + +VOLUME ${HOME}/node_modules +ENTRYPOINT /usr/bin/tail -f /dev/null diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..3dea42993 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,173 @@ +version: "3.5" + +services: + db: + image: ${PROJECT_NAME}-${TAG}-postgress-img-mobile + container_name: ${PROJECT_NAME}-${TAG}-db + build: + context: ./.docker/db + dockerfile: Dockerfile + ports: + - ${DB_PORT}:${DB_PORT} + environment: + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASS} + - POSTGRES_DB=${DB_DATABASE} + - PORT=${DB_PORT} + networks: + - local-network + volumes: + - postgres:/var/lib/postgresql/data + + api_dependency: + image: ${PROJECT_NAME}-${TAG}-api-dep-img + container_name: ${PROJECT_NAME}-${TAG}-api-dep + build: + context: ./api/api_sources + dockerfile: ./.build/Dockerfile.npm + volumes: + - npmcache_api:/opt/app-root/src/node_modules + + api: + image: ${PROJECT_NAME}-${TAG}-api-img + container_name: ${PROJECT_NAME}-${TAG}-api + build: + context: ./api/api_sources + dockerfile: ./.build/Dockerfile.local + ports: + - ${API_PORT}:${API_PORT} + environment: + - PORT=${API_PORT} + - DB_HOST=${DB_HOST} + - DB_USER=${DB_USER} + - DB_PASS=${DB_PASS} + - DB_PORT=${DB_PORT} + - DB_DATABASE=${DB_DATABASE} + - APP_CERTIFICATE_URL=${APP_CERTIFICATE_URL} + - APP_CERTIFICATE_URL_TEST=${APP_CERTIFICATE_URL_TEST} + - VERSION=${VERSION} + - ENVIRONMENT=local + - DB_MIGRATION_TYPE=normal + - DB_SEED=yes + - DB_CLEAN_UP=none + - APP_EMAIL_SENDER=${APP_EMAIL_SENDER} + - APP_EMAIL_SENDER_PWD=${APP_EMAIL_SENDER_PWD} + - APP_EMAIL_TEST_RECEIVER=${APP_EMAIL_TEST_RECEIVER} + - APP_REPORT_RECEIVER=${APP_REPORT_RECEIVER} + volumes: + - ./api/api_sources:/opt/app-root/src + - npmcache_api:/opt/app-root/src/node_modules + networks: + - local-network + links: + - db + depends_on: + - db + - api_dependency + restart: "no" + + api-mobile_dependency: + image: ${PROJECT_NAME}-${TAG}-api-mobile-dep-img + container_name: ${PROJECT_NAME}-${TAG}-api-mobile-dep + build: + context: ./api-mobile + dockerfile: ./.docker/api-mobile/Dockerfile.npm + volumes: + - npmcache_api-mobile:/opt/app-root/src/node_modules + + api-mobile: + image: ${PROJECT_NAME}-${TAG}-api-mobile-img + container_name: ${PROJECT_NAME}-${TAG}-api-mobile + build: + context: ./api-mobile + dockerfile: ./.docker/api-mobile/Dockerfile + ports: + - ${API_MOBILE_PORT}:${API_MOBILE_PORT} + environment: + - API_HOST=${API_MOBILE_HOST} + - API_PORT=${API_MOBILE_PORT} + - DB_HOST=${DB_HOST} + - DB_USER=${DB_USER} + - DB_PASS=${DB_PASS} + - DB_PORT=${DB_PORT} + - DB_DATABASE=${DB_DATABASE} + - APP_CERTIFICATE_URL=${APP_CERTIFICATE_URL} + - APP_CERTIFICATE_URL_TEST=${APP_CERTIFICATE_URL_TEST} + - ENVIRONMENT=local + - NODE_ENV=local + - APP_EMAIL_SENDER=${APP_EMAIL_SENDER} + - APP_EMAIL_SENDER_PWD=${APP_EMAIL_SENDER_PWD} + - APP_EMAIL_TEST_RECEIVER=${APP_EMAIL_TEST_RECEIVER} + - APP_REPORT_RECEIVER=${APP_REPORT_RECEIVER} + volumes: + - ./api-mobile:/opt/app-root/src + - npmcache_api-mobile:/opt/app-root/src/api-mobile/node_modules + networks: + - local-network + links: + - db + depends_on: + - db + - api-mobile_dependency + restart: "no" + + app_dependency: + image: ${PROJECT_NAME}-${TAG}-app-dep-img + container_name: ${PROJECT_NAME}-${TAG}-app-dep + build: + context: ./app/lucy + dockerfile: ./.build/Dockerfile.npm + volumes: + - npmcache_app:/opt/app-root/src/src/node_modules + + app: + image: ${PROJECT_NAME}-${TAG}-app-img + container_name: ${PROJECT_NAME}-${TAG}-app + build: + context: ./app/lucy + dockerfile: ./.build/Dockerfile.local + ports: + - ${APP_PORT}:${APP_PORT} + volumes: + - ./app/lucy/src:/opt/app-root/src/src + - npmcache_app:/opt/app-root/src/src/node_modules + networks: + - local-network + depends_on: + - app_dependency + - nginx + environment: + - APP_PORT=${APP_PORT} + - LOCAL_API_HOST=app_api:${API_PORT} + - ENVIRONMENT=local + - VERSION=${VERSION} + + nginx: + image: ${PROJECT_NAME}-${TAG}-nginx-img + container_name: ${PROJECT_NAME}-${TAG}-nginx + build: + context: ./.docker/nginx + dockerfile: Dockerfile + restart: always + ports: + - 80:80 + depends_on: + - db + - api + - api-mobile + networks: + - local-network + +networks: + local-network: + driver: bridge + +volumes: + postgres: + name: ${PROJECT_NAME}-${TAG}-vol-postgres + npmcache_api: + name: ${PROJECT_NAME}-${TAG}-vol-npmcache-api + npmcache_api-mobile: + name: ${PROJECT_NAME}-${TAG}-vol-npmcache-api-mobile + npmcache_app: + name: ${PROJECT_NAME}-${TAG}-vol-npmcache-app From 99c6b4d0dbf7a6bd4446b7dc6d86a7eaf90b1f6d Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Wed, 26 Aug 2020 16:46:59 -0700 Subject: [PATCH 019/194] 779: Commit missed files --- api-mobile/.eslintignore | 3 - api-mobile/.prettierignore | 3 - api-mobile/env_config/env.docker | 43 ++++++++++++++ .../{.env.sample => env_config/env.local} | 31 ++++++---- api/env_config/env.example | 3 +- env_config/env.docker | 56 +++++++++++++++++++ 6 files changed, 120 insertions(+), 19 deletions(-) create mode 100644 api-mobile/env_config/env.docker rename api-mobile/{.env.sample => env_config/env.local} (62%) create mode 100644 env_config/env.docker diff --git a/api-mobile/.eslintignore b/api-mobile/.eslintignore index bcf1e4522..0948e605d 100644 --- a/api-mobile/.eslintignore +++ b/api-mobile/.eslintignore @@ -3,9 +3,6 @@ node_modules dist coverage -migrations -migrations_data - openshift sonar-runner uploads diff --git a/api-mobile/.prettierignore b/api-mobile/.prettierignore index bcf1e4522..0948e605d 100644 --- a/api-mobile/.prettierignore +++ b/api-mobile/.prettierignore @@ -3,9 +3,6 @@ node_modules dist coverage -migrations -migrations_data - openshift sonar-runner uploads diff --git a/api-mobile/env_config/env.docker b/api-mobile/env_config/env.docker new file mode 100644 index 000000000..35417c6b6 --- /dev/null +++ b/api-mobile/env_config/env.docker @@ -0,0 +1,43 @@ +# This env config should be used when running api-mobile via docker-compose (see Makefile commands). + +# ------------------------------------------------------------------------------ +# Project Details +# ------------------------------------------------------------------------------ +PROJECT_NAME=invasivesbc +TAG=mobile + +# ------------------------------------------------------------------------------ +# Environment Details +# ------------------------------------------------------------------------------ +NODE_ENV=local +ENVIRONMENT=local + +# ------------------------------------------------------------------------------ +# Api +# ------------------------------------------------------------------------------ +API_HOST=localhost +API_PORT=7080 + +# ------------------------------------------------------------------------------ +# Postgrest Database +# ------------------------------------------------------------------------------ +DB_HOST=db +DB_USER=postgres +DB_PASS=postgres +DB_PORT=5432 +DB_DATABASE=lucy +DB_SCHEMA=invasivesbc + +# ------------------------------------------------------------------------------ +# KeyClock URLS +# ------------------------------------------------------------------------------ +APP_CERTIFICATE_URL=https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs + +# ------------------------------------------------------------------------------ +# Mailer Config +# ------------------------------------------------------------------------------ +APP_EMAIL_SENDER= +APP_EMAIL_SENDER_PWD= +APP_EMAIL_TEST_RECEIVER= +APP_REPORT_RECEIVER= diff --git a/api-mobile/.env.sample b/api-mobile/env_config/env.local similarity index 62% rename from api-mobile/.env.sample rename to api-mobile/env_config/env.local index 3e8b5902b..4804c7ccb 100644 --- a/api-mobile/.env.sample +++ b/api-mobile/env_config/env.local @@ -1,24 +1,31 @@ +# This env config should be used when running api-mobile manually, via `npm start`. See Readme for prerequisites. + # ------------------------------------------------------------------------------ # Project Details # ------------------------------------------------------------------------------ -PROJECT_NAME=lucy -ENVIRONMENT=dev -TAG=dev -API_PORT=7070 -BUILD_TARGET=base -APP_VERSION=0-dev.1 -APP_PORT=3033 +PROJECT_NAME=invasivesbc + +# ------------------------------------------------------------------------------ +# Environment Details +# ------------------------------------------------------------------------------ +NODE_ENV=local +ENVIRONMENT=local + +# ------------------------------------------------------------------------------ +# Api-mobile +# ------------------------------------------------------------------------------ +API_HOST=localhost +API_PORT=3002 # ------------------------------------------------------------------------------ # Postgrest Database # ------------------------------------------------------------------------------ -DB_HOST=db -DB_HOST_FOR_LOCAL_API=localhost -DB_USER=hello -DB_PASS=world +DB_HOST=localhost +DB_USER=postgres +DB_PASS=postgres DB_PORT=5432 DB_DATABASE=lucy - +DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS diff --git a/api/env_config/env.example b/api/env_config/env.example index 391a6031d..7c86d34e7 100644 --- a/api/env_config/env.example +++ b/api/env_config/env.example @@ -3,7 +3,7 @@ # ------------------------------------------------------------------------------ PROJECT_NAME=invasivesbc ENVIRONMENT=local -TAG=dev +TAG=lucy API_PORT=7070 BUILD_TARGET=base APP_VERSION=0-dev.1 @@ -18,6 +18,7 @@ DB_USER= DB_PASS= DB_PORT=5432 DB_DATABASE= +DB_SCHEMA= # ------------------------------------------------------------------------------ # KeyClock URLS diff --git a/env_config/env.docker b/env_config/env.docker new file mode 100644 index 000000000..1ce5589bc --- /dev/null +++ b/env_config/env.docker @@ -0,0 +1,56 @@ +# This env config should be used when running all applications (api, api-mobile, app) via docker-compose (see Makefile commands). + +# ------------------------------------------------------------------------------ +# Project Details +# ------------------------------------------------------------------------------ +PROJECT_NAME=invasivesbc +BUILD_TARGET=base +APP_VERSION=0-dev.1 +VERSION=0.0.1 +TAG=all + +# ------------------------------------------------------------------------------ +# Environment Details +# ------------------------------------------------------------------------------ +NODE_ENV=local +ENVIRONMENT=local + +# ------------------------------------------------------------------------------ +# Api +# ------------------------------------------------------------------------------ +API_PORT=7070 + +# ------------------------------------------------------------------------------ +# App +# ------------------------------------------------------------------------------ +APP_PORT=3033 + +# ------------------------------------------------------------------------------ +# Api Mobile +# ------------------------------------------------------------------------------ +API_MOBILE_HOST=localhost +API_MOBILE_PORT=7080 + +# ------------------------------------------------------------------------------ +# Postgrest Database +# ------------------------------------------------------------------------------ +DB_HOST=db +DB_USER=postgres +DB_PASS=postgres +DB_PORT=5432 +DB_DATABASE=lucy +DB_SCHEMA=invasivesbc + +# ------------------------------------------------------------------------------ +# KeyClock URLS +# ------------------------------------------------------------------------------ +APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs + +# ------------------------------------------------------------------------------ +# Mailer Config +# ------------------------------------------------------------------------------ +APP_EMAIL_SENDER= +APP_EMAIL_SENDER_PWD= +APP_EMAIL_TEST_RECEIVER= +APP_REPORT_RECEIVER= From eb9eeba81ac4607549946187536073b1bd13e75a Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Wed, 26 Aug 2020 17:59:33 -0700 Subject: [PATCH 020/194] 779: Code review updates - Fixed readme typos - Updated readme postgres version - Update dockerfile node versions from 11 to 10 in some places - Updated auth issuer handling in api-mobile --- api-mobile/.docker/api-mobile/Dockerfile | 2 +- api-mobile/.docker/api-mobile/Dockerfile.npm | 2 +- api-mobile/README.md | 8 ++++---- api-mobile/env_config/env.docker | 2 +- api-mobile/src/utils/auth-utils.ts | 10 +++++----- api/api_sources/.build/Dockerfile.local | 2 +- api/api_sources/.build/Dockerfile.npm | 2 +- api/api_sources/.build/Dockerfile.test | 2 +- app/lucy/.build/Dockerfile.local | 2 +- app/lucy/.build/Dockerfile.npm | 2 +- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/api-mobile/.docker/api-mobile/Dockerfile b/api-mobile/.docker/api-mobile/Dockerfile index fbb2ebe82..b517f9cfd 100644 --- a/api-mobile/.docker/api-mobile/Dockerfile +++ b/api-mobile/.docker/api-mobile/Dockerfile @@ -1,4 +1,4 @@ -FROM node:11.0.0 +FROM node:10 RUN apt-get -qq update RUN apt-get -qq install -y curl diff --git a/api-mobile/.docker/api-mobile/Dockerfile.npm b/api-mobile/.docker/api-mobile/Dockerfile.npm index c7b21a927..4821f0893 100644 --- a/api-mobile/.docker/api-mobile/Dockerfile.npm +++ b/api-mobile/.docker/api-mobile/Dockerfile.npm @@ -1,4 +1,4 @@ -FROM node:11.0.0 +FROM node:10 RUN apt-get -qq update RUN npm install -g npm diff --git a/api-mobile/README.md b/api-mobile/README.md index af84d5d3a..192f86730 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -6,7 +6,7 @@ | ---------- | ------- | ------------------------------------ | -------------------- | | node | 10.x.x | https://nodejs.org/en/ | JavaScript Runtime | | npm | 6.x.x | https://www.npmjs.com/ | Node Package Manager | -| PostgreSQL | 10.x | https://www.postgresql.org/download/ | PSQL database | +| PostgreSQL | 9.6 | https://www.postgresql.org/download/ | PSQL database |
@@ -85,7 +85,7 @@ This api users `Knex` to manage and run database migrations. A log of executed migrations can be found in the `migration` postgres table. Knex will not re-run a migration that has been run before (indicated by an entry in the `migration` table). -### Technolgies used +### Technologies used - [Knex](http://knexjs.org/) @@ -135,7 +135,7 @@ A log of executed migrations can be found in the `migration` postgres table. Kne Linting and formatting is handled by a combiation of `ESlint` and `Prettier`. The reason for this, is that you get the best of both worlds: ESlint's larger selection of linting rules with Prettier's robust formatting rules. EditorConfig is additionally used to add enforce some basic IDE formatting rules. -### Technolgies used +### Technologies used - [ESlint](https://eslint.org/) - [Prettier](https://prettier.io/) @@ -233,7 +233,7 @@ psql_prompt: insert into user_role (user_id, role_code_id) values (8,3); ## Info -### Technolgies used +### Technologies used - [Mocha](https://www.npmjs.com/package/mocha) - [Chai](https://www.npmjs.com/package/chai) diff --git a/api-mobile/env_config/env.docker b/api-mobile/env_config/env.docker index 35417c6b6..94b99c959 100644 --- a/api-mobile/env_config/env.docker +++ b/api-mobile/env_config/env.docker @@ -31,7 +31,7 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs # ------------------------------------------------------------------------------ diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts index 12616236a..77a127066 100644 --- a/api-mobile/src/utils/auth-utils.ts +++ b/api-mobile/src/utils/auth-utils.ts @@ -8,8 +8,6 @@ import { getLogger } from './logger'; const defaultLog = getLogger('auth-utils'); -const APP_CERTIFICATE_ISSUER = - process.env.APP_CERTIFICATE_ISSUER || 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z'; const APP_CERTIFICATE_URL = process.env.APP_CERTIFICATE_URL || 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs'; @@ -128,12 +126,14 @@ const verifyToken = function (tokenString: any, secretOrPublicKey: any): any { defaultLog.debug({ label: 'verifyToken', message: 'verifiedToken', verifiedToken }); - if (verifiedToken.iss !== APP_CERTIFICATE_ISSUER) { + // Verify that the token came from the expected issuer + // Example: when running in prod, only accept tokens from `sso.pathfinder...` and not `sso-dev.pathfinder...`, etc + if (!APP_CERTIFICATE_URL.includes(verifiedToken.iss)) { defaultLog.warn({ label: 'verifyToken', message: 'jwt verification error: issuer mismatch', - actual: verifiedToken.iss, - expected: APP_CERTIFICATE_ISSUER + 'found token issuer': verifiedToken.iss, + 'expected to be a substring of': APP_CERTIFICATE_URL }); return null; } diff --git a/api/api_sources/.build/Dockerfile.local b/api/api_sources/.build/Dockerfile.local index ef6e1f5d0..f4e8285e7 100755 --- a/api/api_sources/.build/Dockerfile.local +++ b/api/api_sources/.build/Dockerfile.local @@ -1,4 +1,4 @@ -FROM node:11.0.0 +FROM node:10 RUN apt-get update RUN apt-get install -y curl diff --git a/api/api_sources/.build/Dockerfile.npm b/api/api_sources/.build/Dockerfile.npm index 0cc2fcdc0..5bdc9cc59 100644 --- a/api/api_sources/.build/Dockerfile.npm +++ b/api/api_sources/.build/Dockerfile.npm @@ -1,4 +1,4 @@ -FROM node:11.0.0 +FROM node:10 RUN apt-get update RUN npm install -g npm diff --git a/api/api_sources/.build/Dockerfile.test b/api/api_sources/.build/Dockerfile.test index dc38a58f5..e7137b0bd 100644 --- a/api/api_sources/.build/Dockerfile.test +++ b/api/api_sources/.build/Dockerfile.test @@ -1,4 +1,4 @@ -FROM node:11.0.0 +FROM node:10 RUN apt-get update RUN npm install -g npm diff --git a/app/lucy/.build/Dockerfile.local b/app/lucy/.build/Dockerfile.local index 8b0441275..5ac580dc5 100644 --- a/app/lucy/.build/Dockerfile.local +++ b/app/lucy/.build/Dockerfile.local @@ -1,4 +1,4 @@ -FROM node:11.0.0 +FROM node:10 # RUN apt-get update diff --git a/app/lucy/.build/Dockerfile.npm b/app/lucy/.build/Dockerfile.npm index 842997d4f..c492c2848 100644 --- a/app/lucy/.build/Dockerfile.npm +++ b/app/lucy/.build/Dockerfile.npm @@ -1,4 +1,4 @@ -FROM node:11.0.0 +FROM node:10 RUN apt-get -qq update RUN npm install -g npm From 99bd9deebb8cd7866add40c5488c5989e729951d Mon Sep 17 00:00:00 2001 From: Nancy Mac Air Date: Thu, 27 Aug 2020 08:59:14 -0700 Subject: [PATCH 021/194] change activity controller to have its own log --- api-mobile/src/controllers/activity-controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index 0a4a1215d..79cad040e 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -8,7 +8,7 @@ import { validateSwaggerObject, ignoreAdditionalPropertyErrorsOnAnyObjectFields import { getLogger } from '../utils/logger'; import { sendResponse } from '../utils/query-actions'; -const defaultLog = getLogger('observation-controller'); +const defaultLog = getLogger('activity-controller'); /** * Authenticated route handler for OPTIONS From 200b4ff14e7249986ecfafebfc49eedf2a27f3c9 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Thu, 27 Aug 2020 10:57:19 -0700 Subject: [PATCH 022/194] Update migrations --- .../20200811120312_activity_incoming_data.ts | 74 +++++++++++++++++ .../migrations/20200811120312_stagingTable.ts | 61 -------------- .../20200818104413_spatialfields.ts | 10 --- .../20200819074819_activity_view.ts | 62 +++++++-------- .../20200819083337_observation_view.ts | 79 +++++++++---------- 5 files changed, 139 insertions(+), 147 deletions(-) create mode 100644 api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts delete mode 100644 api-mobile/src/database/migrations/20200811120312_stagingTable.ts delete mode 100644 api-mobile/src/database/migrations/20200818104413_spatialfields.ts diff --git a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts new file mode 100644 index 000000000..b36d1461d --- /dev/null +++ b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts @@ -0,0 +1,74 @@ +import Knex from 'knex'; + +const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; + +export async function up(knex: Knex): Promise { + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + -- ### Creating Table: ${DB_SCHEMA}.activity_incoming_data ### -- + + CREATE SCHEMA IF NOT EXISTS ${DB_SCHEMA}; + + CREATE TABLE ${DB_SCHEMA}.activity_incoming_data (); + COMMENT ON TABLE ${DB_SCHEMA}.activity_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_id SERIAL ; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN version INTEGER NULL; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_type VARCHAR(200) NULL; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_type IS 'Type of record'; + CREATE index type_idx on ${DB_SCHEMA}.activity_incoming_data (activity_type); + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_sub_type VARCHAR(200) NULL; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_sub_type IS 'Sub Type of record'; + CREATE index sub_type_idx on ${DB_SCHEMA}.activity_incoming_data (activity_sub_type); + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,3005) CHECK (st_isValid(geom)); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; + CREATE index activity_incoming_data_gist on ${DB_SCHEMA}.activity_incoming_data using gist ("geom"); + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_payload JSONB; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN biogeoclimatic_zones varchar(30); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.biogeoclimatic_zones IS 'Biogeoclimatic Ecosystem Classification (BEC) Zone/Subzone/Variant/Phase'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN regional_invasive_species_organization_areas varchar(10); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.regional_invasive_species_organization_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC.'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN invasive_plant_management_areas varchar(50); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.invasive_plant_management_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC. Within several RISO areas, they subdivide the land area in smaller management areas (Invasive Plant Management Areas).'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN forest_cover_ownership varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.forest_cover_ownership IS 'This data product is a generalized description of the primary ownership of forest lands for use in strategic decision making such as Timber Supply Analysis. It is based upon the structure used in the Forest Inventory Planning (FIP/FC1) format. It is created and revised using information from Min of Agriculture and Lands Registries Branch.'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN regional_districts varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.regional_districts IS 'Regional districts of British Columbia: https://catalogue.data.gov.bc.ca/dataset/d1aff64e-dbfe-45a6-af97-582b7f6418b9'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN flnro_districts varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.flnro_districts IS 'Ministry of Forest Lands and Natural Resources districts'; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN moti_districts varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.moti_districts IS 'Ministry of Transportation and Infrastructure districts'; + `); +} + +export async function down(knex: Knex): Promise { + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + DROP TABLE IF EXISTS ${DB_SCHEMA}.activity_incoming_data; + `); +} diff --git a/api-mobile/src/database/migrations/20200811120312_stagingTable.ts b/api-mobile/src/database/migrations/20200811120312_stagingTable.ts deleted file mode 100644 index 289f366ba..000000000 --- a/api-mobile/src/database/migrations/20200811120312_stagingTable.ts +++ /dev/null @@ -1,61 +0,0 @@ -import Knex from 'knex'; - -exports.up = async (knex: Knex) => { - await knex.raw(` - set schema 'invasivesbc'; - set search_path = invasivesbc,public; - - - -- ### Creating Table: activity_incoming_data ### -- - - CREATE TABLE activity_incoming_data (); - COMMENT ON TABLE activity_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; - - ALTER TABLE activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; - COMMENT ON COLUMN activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; - - ALTER TABLE activity_incoming_data ADD COLUMN activity_id SERIAL ; - COMMENT ON COLUMN activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; - - ALTER TABLE activity_incoming_data ADD COLUMN version INTEGER NULL; - COMMENT ON COLUMN activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; - - ALTER TABLE activity_incoming_data ADD COLUMN activity_type VARCHAR(200) NULL; - COMMENT ON COLUMN activity_incoming_data.activity_type IS 'Type of record'; - CREATE index type_idx on activity_incoming_data (activity_type); - - ALTER TABLE activity_incoming_data ADD COLUMN activity_sub_type VARCHAR(200) NULL; - COMMENT ON COLUMN activity_incoming_data.activity_sub_type IS 'Sub Type of record'; - CREATE index sub_type_idx on activity_incoming_data (activity_sub_type); - - ALTER TABLE activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); - COMMENT ON COLUMN activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; - - ALTER TABLE activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,3005) CHECK (st_isValid(geom)); - COMMENT ON COLUMN activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; - CREATE index activity_incoming_data_gist on activity_incoming_data using gist ("geom"); - - ALTER TABLE activity_incoming_data ADD COLUMN activity_payload JSONB; - COMMENT ON COLUMN activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; - - - ALTER TABLE activity_incoming_data ADD COLUMN activity_type_data JSONB; - COMMENT ON COLUMN activity_incoming_data.activity_type_data IS 'Raw data upload in compressed JSON format.'; - - ALTER TABLE activity_incoming_data ADD COLUMN activity_sub_type_data JSONB; - COMMENT ON COLUMN activity_incoming_data.activity_sub_type_data IS 'Raw data upload in compressed JSON format.'; - - - - `); - -}; - -exports.down = async (knex: Knex) => { - await knex.raw(` - set search_path = invasivesbc,public; - set schema 'invasivesbc'; - - drop table activity_incoming_data - `); -}; diff --git a/api-mobile/src/database/migrations/20200818104413_spatialfields.ts b/api-mobile/src/database/migrations/20200818104413_spatialfields.ts deleted file mode 100644 index eab72990a..000000000 --- a/api-mobile/src/database/migrations/20200818104413_spatialfields.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as Knex from "knex"; - - -export async function up(knex: Knex): Promise { -} - - -export async function down(knex: Knex): Promise { -} - diff --git a/api-mobile/src/database/migrations/20200819074819_activity_view.ts b/api-mobile/src/database/migrations/20200819074819_activity_view.ts index 30d391398..85638aaab 100644 --- a/api-mobile/src/database/migrations/20200819074819_activity_view.ts +++ b/api-mobile/src/database/migrations/20200819074819_activity_view.ts @@ -1,41 +1,35 @@ -import * as Knex from "knex"; +import Knex from 'knex'; +const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; export async function up(knex: Knex): Promise { - - await knex.raw(` - set schema 'invasivesbc'; - set search_path = invasivesbc,public; - - CREATE OR REPLACE VIEW activity_common_fields_view as ( - select - activity_id, - activity_type, - activity_sub_type, - cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointX' as decimal) as anchor_point_x, - cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointY' as decimal) as anchor_point_y, - received_timestamp - - from activity_incoming_data - ); - - COMMENT ON VIEW activity_common_fields_view IS 'View on fields common to all types of activities, with table activity_incoming_data as source.'; - - - - - - - `) - + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + -- ### Creating View: activity_common_fields_view ### -- + + CREATE OR REPLACE VIEW ${DB_SCHEMA}.activity_common_fields_view as ( + select + activity_id, + activity_type, + activity_sub_type, + cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointX' as decimal) as anchor_point_x, + cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointY' as decimal) as anchor_point_y, + received_timestamp + + from ${DB_SCHEMA}.activity_incoming_data + ); + + COMMENT ON VIEW ${DB_SCHEMA}.activity_common_fields_view IS 'View on fields common to all types of activities, with table activity_incoming_data as source.'; + `); } - export async function down(knex: Knex): Promise { - await knex.raw(` - set schema 'invasivesbc'; - set search_path = invasivesbc,public; - drop view activity_common_fields_view; - `) -} + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + DROP VIEW IF EXISTS activity_common_fields_view; + `); +} diff --git a/api-mobile/src/database/migrations/20200819083337_observation_view.ts b/api-mobile/src/database/migrations/20200819083337_observation_view.ts index 79e2df0bc..aa0d4bc62 100644 --- a/api-mobile/src/database/migrations/20200819083337_observation_view.ts +++ b/api-mobile/src/database/migrations/20200819083337_observation_view.ts @@ -1,49 +1,44 @@ -import * as Knex from "knex"; +import Knex from 'knex'; +const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; export async function up(knex: Knex): Promise { - - await knex.raw(` - set schema 'invasivesbc'; - set search_path = invasivesbc,public; - -CREATE OR REPLACE VIEW observation_common_fields_view as ( -select activity_id, -activity_sub_type as observation_type, -cast(activity_payload -> 'activityTypeData' ->> 'negative_observation_ind' as bool) as negative_observation_ind, -cast(activity_payload -> 'activityTypeData' ->> 'aquatic_observation_ind' as bool) as aquatic_observation_ind, -cast(activity_payload -> 'activityTypeData' ->> 'primary_user_first_name' as text) as primary_user_first_name, -cast(activity_payload -> 'activityTypeData' ->> 'primary_user_last_name' as text) as primary_user_last_name, -cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_first_name' as text) as secondary_user_first_name, -cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_last_name' as text) as secondary_user_last_name, -cast(activity_payload -> 'activityTypeData' ->> 'species' as text) as species, -cast(activity_payload -> 'activityTypeData' ->> 'primary_file_id' as text) as primary_file_id, -cast(activity_payload -> 'activityTypeData' ->> 'secondary_file_id' as text) as secondary_file_id, -cast(activity_payload -> 'activityTypeData' ->> 'location_comment' as text) as location_comment, -cast(activity_payload -> 'activityTypeData' ->> 'general_observation_comment' as text) as general_observation_comment, -cast(activity_payload -> 'activityTypeData' ->> 'sample_taken_ind' as bool) as sample_taken_ind, -cast(activity_payload -> 'activityTypeData' ->> 'sample_label_number' as text) as sample_label_number - -from activity_incoming_data -where activity_incoming_data.activity_type = 'Observation' -); -COMMENT ON VIEW observation_common_fields_view IS 'View on fields common to all types of observations, with table activity_incoming_data as source.'; - - - - - - - `) - + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + -- ### Creating View: observation_common_fields_view ### -- + + CREATE OR REPLACE VIEW ${DB_SCHEMA}.observation_common_fields_view as ( + select activity_id, + activity_sub_type as observation_type, + cast(activity_payload -> 'activityTypeData' ->> 'negative_observation_ind' as bool) as negative_observation_ind, + cast(activity_payload -> 'activityTypeData' ->> 'aquatic_observation_ind' as bool) as aquatic_observation_ind, + cast(activity_payload -> 'activityTypeData' ->> 'primary_user_first_name' as text) as primary_user_first_name, + cast(activity_payload -> 'activityTypeData' ->> 'primary_user_last_name' as text) as primary_user_last_name, + cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_first_name' as text) as secondary_user_first_name, + cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_last_name' as text) as secondary_user_last_name, + cast(activity_payload -> 'activityTypeData' ->> 'species' as text) as species, + cast(activity_payload -> 'activityTypeData' ->> 'primary_file_id' as text) as primary_file_id, + cast(activity_payload -> 'activityTypeData' ->> 'secondary_file_id' as text) as secondary_file_id, + cast(activity_payload -> 'activityTypeData' ->> 'location_comment' as text) as location_comment, + cast(activity_payload -> 'activityTypeData' ->> 'general_observation_comment' as text) as general_observation_comment, + cast(activity_payload -> 'activityTypeData' ->> 'sample_taken_ind' as bool) as sample_taken_ind, + cast(activity_payload -> 'activityTypeData' ->> 'sample_label_number' as text) as sample_label_number + + from ${DB_SCHEMA}.activity_incoming_data + where ${DB_SCHEMA}.activity_incoming_data.activity_type = 'Observation' + ); + + COMMENT ON VIEW ${DB_SCHEMA}.observation_common_fields_view IS 'View on fields common to all types of observations, with table activity_incoming_data as source.'; + `); } - export async function down(knex: Knex): Promise { - await knex.raw(` - set schema 'invasivesbc'; - set search_path = invasivesbc,public; - drop view observation_common_fields_view; - `) -} + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + DROP VIEW IF EXISTS ${DB_SCHEMA}.observation_common_fields_view; + `); +} From 99b459b9f9b58b0d8402a9b396f7b6665b405f30 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Thu, 27 Aug 2020 10:58:56 -0700 Subject: [PATCH 023/194] update api-mobile activity sql, test, swagger. --- api-mobile/src/queries/activity-queries.ts | 10 +--- api-mobile/src/swagger/swagger.yaml | 6 +- api-mobile/test/observation-fake2.json | 4 +- api-mobile/test/observation-fake3.json | 64 ++++++++++++++++++++++ 4 files changed, 71 insertions(+), 13 deletions(-) create mode 100644 api-mobile/test/observation-fake3.json diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 692bd93b1..5de05b214 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -19,17 +19,13 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activity_sub_type, received_timestamp, activity_payload, - activity_type_data, - activity_sub_type_data, geom ) VALUES ( $1, $2, $3, $4, - $5, - $6, - ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON($7),4326),3005) + ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON($5),4326),3005) ) RETURNING activity_incoming_data_id @@ -40,9 +36,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activityData.activitySubType, activityData.date, activityData.activityPostBody, - activityData.activityTypeData, - activityData.activitySubTypeData, - activityData.geom + activityData.locationAndGeometry['geometry'] ]; return { sql, values }; diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml index b11c9a569..41d4ad5ab 100644 --- a/api-mobile/src/swagger/swagger.yaml +++ b/api-mobile/src/swagger/swagger.yaml @@ -313,11 +313,11 @@ definitions: type: object properties: anchorPointY: - type: integer + type: number anchorPointX: - type: integer + type: number area: - type: integer + type: number geometry: type: object jurisdiction: diff --git a/api-mobile/test/observation-fake2.json b/api-mobile/test/observation-fake2.json index 89dabf91b..6eaac8f98 100644 --- a/api-mobile/test/observation-fake2.json +++ b/api-mobile/test/observation-fake2.json @@ -4,8 +4,8 @@ "date": "2019-04-12", "deviceRequestUID": "string", "locationAndGeometry": { - "anchorPointY": 0, - "anchorPointX": 0, + "anchorPointY": 48.3, + "anchorPointX": -125.6, "area": 0, "geometry": { "type": "FeatureCollection", diff --git a/api-mobile/test/observation-fake3.json b/api-mobile/test/observation-fake3.json new file mode 100644 index 000000000..dc30237a7 --- /dev/null +++ b/api-mobile/test/observation-fake3.json @@ -0,0 +1,64 @@ +{ + "activityType": "Observation", + "activitySubType": "Terrestrial Invasive Plant", + "date": "2019-04-12", + "deviceRequestUID": "string", + "locationAndGeometry": { + "anchorPointY": 48.3, + "anchorPointX": -125.6, + "area": 0, + "geometry": { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [-125.6, 48.3],[-126.6, 48.3],[-126.6, 49.3],[-125.6, 48.3] + ] + ]}, + "properties": {} + }, + "jurisdiction": "string", + "agency": "string", + "observer1FirstName": "string", + "observer1LastName": "string", + "locationComment": "string", + "generalComment": "string", + "photoTaken": true + }, + "activityTypeData": { + "negative_observation_ind": false, + "aquatic_observation_ind": false, + "primary_user_last_name": "mike", + "secondary_user_first_name": "mike", + "secondary_user_last_name": "mike", + "species": "banana", + "primary_file_id": "test", + "secondary_file_id": "test", + "location_comment": "test", + "general_observation_comment": "general comment", + "sample_taken_ind": true, + "sample_label_number": "string" + }, + "activitySubTypeData": { + "species": "banana", + "distribution": 123, + "density": 123, + "soil_texture": 1, + "slope": 123, + "aspect": 123, + "flowering": true, + "specific_use": 123, + "proposed_action": 123, + "seed_stage": 123, + "plant_health": 123, + "plant_life_stage": 123, + "early_detection": 1, + "research": true, + "well_on_site_ind": true, + "special_care_ind": true, + "biological_care_ind": true, + "legacy_site_ind": true, + "range_unit": "Canyon" + } +} From 09919c1669e6ff70063ab24b3d5e0421719cc0e3 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Thu, 27 Aug 2020 13:30:25 -0700 Subject: [PATCH 024/194] 779: Fix api-mobile /.pipeline/lib/clean.js logic --- api-mobile/.pipeline/lib/clean.js | 37 ++++++++++++++++--------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/api-mobile/.pipeline/lib/clean.js b/api-mobile/.pipeline/lib/clean.js index 923eb4456..5f767b108 100644 --- a/api-mobile/.pipeline/lib/clean.js +++ b/api-mobile/.pipeline/lib/clean.js @@ -2,7 +2,6 @@ const { OpenShiftClientX } = require('pipeline-cli'); const checkAndClean = require('../utils/checkAndClean'); - /** * Run OC commands to clean all build and deployment artifacts (pods, etc). * @@ -14,19 +13,21 @@ module.exports = settings => { const oc = new OpenShiftClientX(Object.assign({ namespace: phases.build.namespace }, options)); const target_phase = options.env; - for (let phase in phases) { - if (!phases.hasOwnProperty(phase)) { + for (let phaseKey in phases) { + if (!phases.hasOwnProperty(phaseKey)) { continue; } - if (phase !== target_phase) { + if (phaseKey !== target_phase) { continue; } + const phaseObj = phases[phaseKey]; + // Get build configs let buildConfigs = oc.get('bc', { - selector: `app=${phase.instance},env-id=${phase.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, - namespace: phase.namespace + selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + namespace: phaseObj.namespace }); // Clean build configs @@ -35,15 +36,15 @@ module.exports = settings => { oc.delete([`ImageStreamTag/${buildConfig.spec.output.to.name}`], { 'ignore-not-found': 'true', wait: 'true', - namespace: phase.namespace + namespace: phaseObj.namespace }); } }); // get deployment configs let deploymentConfigs = oc.get('dc', { - selector: `app=${phase.instance},env-id=${phase.changeId},env-name=${phase},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, - namespace: phase.namespace + selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},env-name=${phaseKey},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + namespace: phaseObj.namespace }); // Clean deployment configs @@ -53,31 +54,31 @@ module.exports = settings => { oc.delete([`ImageStreamTag/${trigger.imageChangeParams.from.name}`], { 'ignore-not-found': 'true', wait: 'true', - namespace: phase.namespace + namespace: phaseObj.namespace }); } }); }); // Cleaning other pods - if (phase !== 'build') { - const newOC = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); - const setupPod = `${phases[phase].name}${phases[phase].suffix}-setup`; - // const testPod = `${phases[phase].name}${phases[phase].suffix}-test`; + if (phaseKey !== 'build') { + const newOC = new OpenShiftClientX(Object.assign({ namespace: phases[phaseKey].namespace }, options)); + const setupPod = `${phases[phaseKey].name}${phases[phaseKey].suffix}-setup`; + // const testPod = `${phases[phaseKey].name}${phases[phaseKey].suffix}-test`; checkAndClean(`pod/${setupPod}`, newOC); // checkAndClean(`pod/${testPod}`, newOC); } oc.raw('delete', ['all'], { - selector: `app=${phase.instance},env-id=${phase.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, wait: 'true', - namespace: phase.namespace + namespace: phaseObj.namespace }); oc.raw('delete', ['all,pvc,secrets,Secrets,secret,configmap,endpoints,Endpoints'], { - selector: `app=${phase.instance},env-id=${phase.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, + selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, wait: 'true', - namespace: phase.namespace + namespace: phaseObj.namespace }); } }; From 099ad0e9545741c9550fb4d5c367ed0f755003ff Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Thu, 27 Aug 2020 15:10:20 -0700 Subject: [PATCH 025/194] Done't follow this file anymore --- api-mobile/.gitignore | 2 + api-mobile/env_config/env.local | 42 -- api-mobile/src/swagger/swagger.yaml | 911 ---------------------------- 3 files changed, 2 insertions(+), 953 deletions(-) delete mode 100644 api-mobile/env_config/env.local delete mode 100644 api-mobile/src/swagger/swagger.yaml diff --git a/api-mobile/.gitignore b/api-mobile/.gitignore index 230f72d58..e6f56a0f2 100644 --- a/api-mobile/.gitignore +++ b/api-mobile/.gitignore @@ -10,3 +10,5 @@ dist coverage .env +env.local + diff --git a/api-mobile/env_config/env.local b/api-mobile/env_config/env.local deleted file mode 100644 index 4804c7ccb..000000000 --- a/api-mobile/env_config/env.local +++ /dev/null @@ -1,42 +0,0 @@ -# This env config should be used when running api-mobile manually, via `npm start`. See Readme for prerequisites. - -# ------------------------------------------------------------------------------ -# Project Details -# ------------------------------------------------------------------------------ -PROJECT_NAME=invasivesbc - -# ------------------------------------------------------------------------------ -# Environment Details -# ------------------------------------------------------------------------------ -NODE_ENV=local -ENVIRONMENT=local - -# ------------------------------------------------------------------------------ -# Api-mobile -# ------------------------------------------------------------------------------ -API_HOST=localhost -API_PORT=3002 - -# ------------------------------------------------------------------------------ -# Postgrest Database -# ------------------------------------------------------------------------------ -DB_HOST=localhost -DB_USER=postgres -DB_PASS=postgres -DB_PORT=5432 -DB_DATABASE=lucy -DB_SCHEMA=invasivesbc - -# ------------------------------------------------------------------------------ -# KeyClock URLS -# ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs - -# ------------------------------------------------------------------------------ -# Mailer Config -# ------------------------------------------------------------------------------ -APP_EMAIL_SENDER= -APP_EMAIL_SENDER_PWD= -APP_EMAIL_TEST_RECEIVER= -APP_REPORT_RECEIVER= diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml deleted file mode 100644 index 41d4ad5ab..000000000 --- a/api-mobile/src/swagger/swagger.yaml +++ /dev/null @@ -1,911 +0,0 @@ -swagger: "2.0" # npm library `swagger-tools` does not yet support 3.0 - -info: - version: "0.0.0" - title: lucy-api-mobile - description: API for lucy mobile. - license: - name: Apache 2.0 - url: "http://www.apache.org/licenses/LICENSE-2.0.html" -host: localhost:3002 -basePath: /api - -tags: - - name: misc - description: Miscellaneous endpoints - - name: activity - description: | - Activity endpoints - An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' - - name: observation - description: Observation activity endpoints - - name: treatment - description: Treatment activity endpoints - - name: monitor - description: Monitor activity endpoints - - name: plant - description: Plant endpoints - - name: animal - description: Animal endpoints - - name: code - description: Code endpoints - -externalDocs: - description: Visit GitHub to find out more about this API - url: "https://github.com/bcgov/lucy-web.git" - -schemes: - - http - - https - -securityDefinitions: - Bearer: - type: apiKey - name: Authorization - in: header - description: | - To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. - The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` - -consumes: - - application/json -produces: - - application/json - -paths: - # Misc routes - - /misc/version: - x-swagger-router-controller: misc-controller - options: - tags: - - misc - summary: Pre-flight request - description: Options on public version route - operationId: publicOptions - responses: - "200": - description: Success - get: - tags: - - misc - summary: Pre-flight request - description: Get api version information - operationId: publicGet - responses: - "200": - description: Fetched api version information - schema: - $ref: "#/definitions/VersionResponse" - - # Activity Routes - - /activity: - x-swagger-router-controller: activity-controller - options: - tags: - - activity - summary: Pre-flight request - description: Options on authenticated activity route - operationId: authenticatedOptions - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - post: - tags: - - activity - summary: Create a new activity - description: Create a new activity - operationId: authenticatedPost - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAE # data editor - - SUP # super user - parameters: - - in: body - required: true - name: postBody - schema: - $ref: "#/definitions/ActivityPostBody" - responses: - "201": - description: Created - schema: - $ref: "#/definitions/ActivityResponse" - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - - # Observation/Plant Routes - - /observation/plant: - x-swagger-router-controller: observation-plant-controller - options: - tags: - - observation - - plant - summary: Pre-flight request - description: Options on authenticated plant observation route - operationId: authenticatedOptions - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - get: - tags: - - observation - - plant - summary: Pre-flight request - description: Get all plant observations - operationId: authenticatedGet_All - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAV # data viewer - - DAE # data editor - - SUP # super user - responses: - "200": - description: Fetched observation with id - schema: - $ref: "#/definitions/ObservationPlantResponse" - "422": - description: Validation error - no observation with id - schema: - $ref: "#/definitions/Error" - - /observation/plant/{observationId}: - x-swagger-router-controller: observation-plant-controller - options: - tags: - - observation - - plant - summary: Pre-flight request - description: Options on authenticated plant observation route - operationId: authenticatedOptions - parameters: - - in: path - required: true - name: observationId - type: number - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - get: - tags: - - observation - - plant - summary: Pre-flight request - description: Get a single plant observation based on its id (observation id) - operationId: authenticatedGet_One - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAV # data viewer - - DAE # data editor - - SUP # super user - parameters: - - in: path - required: true - name: observationId - type: number - responses: - "200": - description: Fetched observation with id - schema: - $ref: "#/definitions/ObservationPlantResponse" - "422": - description: Validation error - no observation with id - schema: - $ref: "#/definitions/Error" - - # Code Routes - - /code/observation/plant: - x-swagger-router-controller: code-controller - options: - tags: - - code - - observation - summary: Pre-flight request - description: Options on authenticated observation code route - operationId: authenticatedOptions - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - get: - tags: - - code - summary: Get all observation code values - description: API to get all observation code values - operationId: authenticatedGet_ObservationPlant - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAV # data viewer - - DAE # data editor - - SUP # super user - responses: - "200": - description: Fetched code values - schema: - $ref: "#/definitions/ObservationCodeResponse" - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - -definitions: - # Misc definitions - - Error: - description: | - Error response object. - Returned in the non-200 responses for all routes. - required: - - message - - errors - properties: - message: - type: string - errors: - type: array - items: - type: string - - VersionResponse: - description: Version response object. - required: - - version - - environment - properties: - version: - type: string - environment: - type: string - - - # Activity Definitions - - ActivityPostBody: - description: Activity post body object. - type: object - required: - - activityType - - activityTypeData - - activitySubType - - activitySubTypeData - - date - - locationAndGeometry - properties: - activityType: - type: string - activitySubType: - type: string - date: - type: string - description: Date in YYYY-MM-DD format - format: date - deviceRequestUID: - type: string - locationAndGeometry: - type: object - properties: - anchorPointY: - type: number - anchorPointX: - type: number - area: - type: number - geometry: - type: object - jurisdiction: - type: string - agency: - type: string - observer1FirstName: - type: string - observer1LastName: - type: string - locationComment: - type: string - generalComment: - type: string - photoTaken: - type: boolean - activityTypeData: - type: object - activitySubTypeData: - type: object - - ActivityResponse: - description: Activity response object. - type: object - required: - - activityType - - activitySubType - - date - - locationAndGeometry - properties: - activityType: - type: string - activitySubType: - type: string - date: - type: string - description: Date in YYYY-MM-DD format - locationAndGeometry: - type: object - - # Observation Plant Definitions - - ObservationPlantResponse: - description: | - Observation plant response object. - Returned in the 200 responses for all `/observation/plant/*` routes. - type: object - required: - - observation_id - - observation_date - - access_description - - observer_first_name - - observer_last_name - - sample_identifier - - range_unit_number - - general_comment - - legacy_site_ind - - early_detection_rapid_resp_ind - - research_detection_ind - - sample_taken_ind - - well_ind - - special_care_ind - - biological_ind - - aquatic_ind - - species_id - - jurisdiction_code_id - - species_density_code_id - - species_distribution_code_id - - observation_type_code_id - - species_agency_code_id - - soil_texture_code_id - - specific_use_code_id - - observation_slope_code_id - - observation_aspect_code_id - - observation_proposed_action_code_id - - created_at - - updated_at - - updated_by_user_id - - created_by_user_id - - space_geom_id - - hex_id - - hex_sub_id - - total_area - - negative_occurance_ind - - paper_id_primary - - paper_id_secondary - - elevation_meters - - well_proximity - - well_tag - - observation_geometry_code_id - - photo_indicator - - flowering - - bec_zone - - riso - - ipma - - ownership - - regional_district - - flnro_district - - moti_district - - raw_longitude - - raw_latitude - - raw_utm_zone - - raw_utm_easting - - raw_utm_northing - - raw_albers_x - - raw_albers_y - properties: - observation_id: - type: number - observation_date: - type: string - access_description: - type: string - observer_first_name: - type: string - observer_last_name: - type: string - sample_identifier: - type: string - range_unit_number: - type: string - general_comment: - type: string - legacy_site_ind: - type: boolean - early_detection_rapid_resp_ind: - type: boolean - research_detection_ind: - type: boolean - sample_taken_ind: - type: boolean - well_ind: - type: boolean - special_care_ind: - type: boolean - biological_ind: - type: boolean - aquatic_ind: - type: boolean - species_id: - type: object - jurisdiction_code_id: - type: object - species_density_code_id: - type: object - species_distribution_code_id: - type: object - observation_type_code_id: - type: object - species_agency_code_id: - type: object - soil_texture_code_id: - type: object - specific_use_code_id: - type: object - observation_slope_code_id: - type: object - observation_aspect_code_id: - type: object - observation_proposed_action_code_id: - type: object - created_at: - type: string - updated_at: - type: string - updated_by_user_id: - type: number - created_by_user_id: - type: number - space_geom_id: - type: number - hex_id: - type: number - hex_sub_id: - type: number - total_area: - type: number - negative_occurance_ind: - type: boolean - paper_id_primary: - type: string - paper_id_secondary: - type: string - elevation_meters: - type: number - well_proximity: - type: number - well_tag: - type: number - observation_geometry_code_id: - type: object - photo_indicator: - type: boolean - flowering: - type: boolean - bec_zone: - type: string - riso: - type: string - ipma: - type: string - ownership: - type: string - regional_district: - type: string - flnro_district: - type: string - moti_district: - type: string - raw_longitude: - type: number - raw_latitude: - type: number - raw_utm_zone: - type: number - raw_utm_easting: - type: number - raw_utm_northing: - type: number - raw_albers_x: - type: number - raw_albers_y: - type: number - - # Observation Code Definitions - - ObservationCodeResponse: - required: - - message - - data - properties: - message: - type: string - data: - type: object - $ref: "#/definitions/ObservationCode" - - ObservationCode: - description: Observation code tables. - required: - - observation_aspect_code - - jurisdiction_code - - observation_geometry_code - - observation_type_code - - observation_proposed_action_code - - observation_slope_code - - soil_texture_code - - species_agency_code - - species_density_code - - species_distribution_code - - species - - specific_use_code - properties: - observation_aspect_code: - type: array - items: - $ref: "#/definitions/AspectCode" - jurisdiction_code: - type: array - items: - $ref: "#/definitions/JurisdictionCode" - observation_geometry_code: - type: array - items: - $ref: "#/definitions/ObservationGeometryCode" - observation_type_code: - type: array - items: - $ref: "#/definitions/ObservationTypeCode" - observation_proposed_action_code: - type: array - items: - $ref: "#/definitions/ProposedActionCode" - observation_slope_code: - type: array - items: - $ref: "#/definitions/SlopeCode" - soil_texture_code: - type: array - items: - $ref: "#/definitions/SoilTextureCode" - species: - type: array - items: - $ref: "#/definitions/Species" - species_density_code: - type: array - items: - $ref: "#/definitions/SpeciesDensityCode" - species_distribution_code: - type: array - items: - $ref: "#/definitions/SpeciesDistributionCode" - species_agency_code: - type: array - items: - $ref: "#/definitions/SpeciesAgencyCode" - specific_use_code: - type: array - items: - $ref: "#/definitions/SpecificUseCode" - - # Code Definitions - - AspectCode: - type: object - required: - - observation_aspect_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_aspect_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - JurisdictionCode: - type: object - required: - - jurisdiction_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - jurisdiction_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ObservationGeometryCode: - type: object - required: - - observation_geometry_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_geometry_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ObservationTypeCode: - type: object - required: - - observation_type_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_type_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ProposedActionCode: - type: object - required: - - observation_proposed_action_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_proposed_action_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SlopeCode: - type: object - required: - - observation_slope_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_slope_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SoilTextureCode: - type: object - required: - - soil_texture_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - soil_texture_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - Species: - type: object - required: - - species_id - - mapCode - - earlyDetection - - containmentSpecies - - containmentSpacialRef - - species - - genus - - commonName - - latinName - - updateAt - - createdAt - properties: - species_id: - type: number - mapCode: - type: string - earlyDetection: - type: boolean - containmentSpecies: - type: number - containmentSpacialRef: - type: number - species: - type: string - genus: - type: string - commonName: - type: string - latinName: - type: string - updateAt: - type: string - createdAt: - type: string - - SpeciesDensityCode: - type: object - required: - - species_density_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_density_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpeciesDistributionCode: - type: object - required: - - species_distribution_code_id - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_distribution_code_id: - type: number - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpeciesAgencyCode: - type: object - required: - - species_agency_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_agency_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpecificUseCode: - type: object - required: - - specific_use_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - specific_use_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string From cb91631fc64828dbe2fdabfbae76a3df1e2981e4 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Thu, 27 Aug 2020 15:25:31 -0700 Subject: [PATCH 026/194] Turn off spatial --- api-mobile/src/queries/activity-queries.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 5de05b214..76883a332 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -18,14 +18,12 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activity_type, activity_sub_type, received_timestamp, - activity_payload, - geom + activity_payload ) VALUES ( $1, $2, $3, - $4, - ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON($5),4326),3005) + $4 ) RETURNING activity_incoming_data_id @@ -35,8 +33,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activityData.activityType, activityData.activitySubType, activityData.date, - activityData.activityPostBody, - activityData.locationAndGeometry['geometry'] + activityData.activityPostBody ]; return { sql, values }; From 5038dbc29e2bcdd4bb9d3302ed0615f1318d6bbc Mon Sep 17 00:00:00 2001 From: "repo-mountie[bot]" <44246292+repo-mountie[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2020 23:00:43 +0000 Subject: [PATCH 027/194] Add Apache License 2.0 --- LICENSE | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 9f66e737b56ff1782afee80fdf132d142fc222ad Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Thu, 27 Aug 2020 16:22:22 -0700 Subject: [PATCH 028/194] Swagger deserves git --- .gitignore | 3 +- api-mobile/.gitignore | 2 - api-mobile/src/swagger/swagger.yaml | 911 ++++++++++++++++++++++++++++ 3 files changed, 912 insertions(+), 4 deletions(-) create mode 100644 api-mobile/src/swagger/swagger.yaml diff --git a/.gitignore b/.gitignore index 66cef9e79..d7576baf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ node_modules/ -swagger/ .nvm .DS_Store *.swp @@ -9,4 +8,4 @@ swagger/ .env -.npm \ No newline at end of file +.npm diff --git a/api-mobile/.gitignore b/api-mobile/.gitignore index e6f56a0f2..230f72d58 100644 --- a/api-mobile/.gitignore +++ b/api-mobile/.gitignore @@ -10,5 +10,3 @@ dist coverage .env -env.local - diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml new file mode 100644 index 000000000..41d4ad5ab --- /dev/null +++ b/api-mobile/src/swagger/swagger.yaml @@ -0,0 +1,911 @@ +swagger: "2.0" # npm library `swagger-tools` does not yet support 3.0 + +info: + version: "0.0.0" + title: lucy-api-mobile + description: API for lucy mobile. + license: + name: Apache 2.0 + url: "http://www.apache.org/licenses/LICENSE-2.0.html" +host: localhost:3002 +basePath: /api + +tags: + - name: misc + description: Miscellaneous endpoints + - name: activity + description: | + Activity endpoints + An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' + - name: observation + description: Observation activity endpoints + - name: treatment + description: Treatment activity endpoints + - name: monitor + description: Monitor activity endpoints + - name: plant + description: Plant endpoints + - name: animal + description: Animal endpoints + - name: code + description: Code endpoints + +externalDocs: + description: Visit GitHub to find out more about this API + url: "https://github.com/bcgov/lucy-web.git" + +schemes: + - http + - https + +securityDefinitions: + Bearer: + type: apiKey + name: Authorization + in: header + description: | + To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. + The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` + +consumes: + - application/json +produces: + - application/json + +paths: + # Misc routes + + /misc/version: + x-swagger-router-controller: misc-controller + options: + tags: + - misc + summary: Pre-flight request + description: Options on public version route + operationId: publicOptions + responses: + "200": + description: Success + get: + tags: + - misc + summary: Pre-flight request + description: Get api version information + operationId: publicGet + responses: + "200": + description: Fetched api version information + schema: + $ref: "#/definitions/VersionResponse" + + # Activity Routes + + /activity: + x-swagger-router-controller: activity-controller + options: + tags: + - activity + summary: Pre-flight request + description: Options on authenticated activity route + operationId: authenticatedOptions + responses: + "200": + description: Success + "401": + description: Unauthorized user + schema: + $ref: "#/definitions/Error" + post: + tags: + - activity + summary: Create a new activity + description: Create a new activity + operationId: authenticatedPost + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAE # data editor + - SUP # super user + parameters: + - in: body + required: true + name: postBody + schema: + $ref: "#/definitions/ActivityPostBody" + responses: + "201": + description: Created + schema: + $ref: "#/definitions/ActivityResponse" + "401": + description: Unauthorized user + schema: + $ref: "#/definitions/Error" + + # Observation/Plant Routes + + /observation/plant: + x-swagger-router-controller: observation-plant-controller + options: + tags: + - observation + - plant + summary: Pre-flight request + description: Options on authenticated plant observation route + operationId: authenticatedOptions + responses: + "200": + description: Success + "401": + description: Unauthorized user + schema: + $ref: "#/definitions/Error" + get: + tags: + - observation + - plant + summary: Pre-flight request + description: Get all plant observations + operationId: authenticatedGet_All + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAV # data viewer + - DAE # data editor + - SUP # super user + responses: + "200": + description: Fetched observation with id + schema: + $ref: "#/definitions/ObservationPlantResponse" + "422": + description: Validation error - no observation with id + schema: + $ref: "#/definitions/Error" + + /observation/plant/{observationId}: + x-swagger-router-controller: observation-plant-controller + options: + tags: + - observation + - plant + summary: Pre-flight request + description: Options on authenticated plant observation route + operationId: authenticatedOptions + parameters: + - in: path + required: true + name: observationId + type: number + responses: + "200": + description: Success + "401": + description: Unauthorized user + schema: + $ref: "#/definitions/Error" + get: + tags: + - observation + - plant + summary: Pre-flight request + description: Get a single plant observation based on its id (observation id) + operationId: authenticatedGet_One + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAV # data viewer + - DAE # data editor + - SUP # super user + parameters: + - in: path + required: true + name: observationId + type: number + responses: + "200": + description: Fetched observation with id + schema: + $ref: "#/definitions/ObservationPlantResponse" + "422": + description: Validation error - no observation with id + schema: + $ref: "#/definitions/Error" + + # Code Routes + + /code/observation/plant: + x-swagger-router-controller: code-controller + options: + tags: + - code + - observation + summary: Pre-flight request + description: Options on authenticated observation code route + operationId: authenticatedOptions + responses: + "200": + description: Success + "401": + description: Unauthorized user + schema: + $ref: "#/definitions/Error" + get: + tags: + - code + summary: Get all observation code values + description: API to get all observation code values + operationId: authenticatedGet_ObservationPlant + security: + - Bearer: [] + x-security-scopes: + - ADM # admin + - DAV # data viewer + - DAE # data editor + - SUP # super user + responses: + "200": + description: Fetched code values + schema: + $ref: "#/definitions/ObservationCodeResponse" + "401": + description: Unauthorized user + schema: + $ref: "#/definitions/Error" + +definitions: + # Misc definitions + + Error: + description: | + Error response object. + Returned in the non-200 responses for all routes. + required: + - message + - errors + properties: + message: + type: string + errors: + type: array + items: + type: string + + VersionResponse: + description: Version response object. + required: + - version + - environment + properties: + version: + type: string + environment: + type: string + + + # Activity Definitions + + ActivityPostBody: + description: Activity post body object. + type: object + required: + - activityType + - activityTypeData + - activitySubType + - activitySubTypeData + - date + - locationAndGeometry + properties: + activityType: + type: string + activitySubType: + type: string + date: + type: string + description: Date in YYYY-MM-DD format + format: date + deviceRequestUID: + type: string + locationAndGeometry: + type: object + properties: + anchorPointY: + type: number + anchorPointX: + type: number + area: + type: number + geometry: + type: object + jurisdiction: + type: string + agency: + type: string + observer1FirstName: + type: string + observer1LastName: + type: string + locationComment: + type: string + generalComment: + type: string + photoTaken: + type: boolean + activityTypeData: + type: object + activitySubTypeData: + type: object + + ActivityResponse: + description: Activity response object. + type: object + required: + - activityType + - activitySubType + - date + - locationAndGeometry + properties: + activityType: + type: string + activitySubType: + type: string + date: + type: string + description: Date in YYYY-MM-DD format + locationAndGeometry: + type: object + + # Observation Plant Definitions + + ObservationPlantResponse: + description: | + Observation plant response object. + Returned in the 200 responses for all `/observation/plant/*` routes. + type: object + required: + - observation_id + - observation_date + - access_description + - observer_first_name + - observer_last_name + - sample_identifier + - range_unit_number + - general_comment + - legacy_site_ind + - early_detection_rapid_resp_ind + - research_detection_ind + - sample_taken_ind + - well_ind + - special_care_ind + - biological_ind + - aquatic_ind + - species_id + - jurisdiction_code_id + - species_density_code_id + - species_distribution_code_id + - observation_type_code_id + - species_agency_code_id + - soil_texture_code_id + - specific_use_code_id + - observation_slope_code_id + - observation_aspect_code_id + - observation_proposed_action_code_id + - created_at + - updated_at + - updated_by_user_id + - created_by_user_id + - space_geom_id + - hex_id + - hex_sub_id + - total_area + - negative_occurance_ind + - paper_id_primary + - paper_id_secondary + - elevation_meters + - well_proximity + - well_tag + - observation_geometry_code_id + - photo_indicator + - flowering + - bec_zone + - riso + - ipma + - ownership + - regional_district + - flnro_district + - moti_district + - raw_longitude + - raw_latitude + - raw_utm_zone + - raw_utm_easting + - raw_utm_northing + - raw_albers_x + - raw_albers_y + properties: + observation_id: + type: number + observation_date: + type: string + access_description: + type: string + observer_first_name: + type: string + observer_last_name: + type: string + sample_identifier: + type: string + range_unit_number: + type: string + general_comment: + type: string + legacy_site_ind: + type: boolean + early_detection_rapid_resp_ind: + type: boolean + research_detection_ind: + type: boolean + sample_taken_ind: + type: boolean + well_ind: + type: boolean + special_care_ind: + type: boolean + biological_ind: + type: boolean + aquatic_ind: + type: boolean + species_id: + type: object + jurisdiction_code_id: + type: object + species_density_code_id: + type: object + species_distribution_code_id: + type: object + observation_type_code_id: + type: object + species_agency_code_id: + type: object + soil_texture_code_id: + type: object + specific_use_code_id: + type: object + observation_slope_code_id: + type: object + observation_aspect_code_id: + type: object + observation_proposed_action_code_id: + type: object + created_at: + type: string + updated_at: + type: string + updated_by_user_id: + type: number + created_by_user_id: + type: number + space_geom_id: + type: number + hex_id: + type: number + hex_sub_id: + type: number + total_area: + type: number + negative_occurance_ind: + type: boolean + paper_id_primary: + type: string + paper_id_secondary: + type: string + elevation_meters: + type: number + well_proximity: + type: number + well_tag: + type: number + observation_geometry_code_id: + type: object + photo_indicator: + type: boolean + flowering: + type: boolean + bec_zone: + type: string + riso: + type: string + ipma: + type: string + ownership: + type: string + regional_district: + type: string + flnro_district: + type: string + moti_district: + type: string + raw_longitude: + type: number + raw_latitude: + type: number + raw_utm_zone: + type: number + raw_utm_easting: + type: number + raw_utm_northing: + type: number + raw_albers_x: + type: number + raw_albers_y: + type: number + + # Observation Code Definitions + + ObservationCodeResponse: + required: + - message + - data + properties: + message: + type: string + data: + type: object + $ref: "#/definitions/ObservationCode" + + ObservationCode: + description: Observation code tables. + required: + - observation_aspect_code + - jurisdiction_code + - observation_geometry_code + - observation_type_code + - observation_proposed_action_code + - observation_slope_code + - soil_texture_code + - species_agency_code + - species_density_code + - species_distribution_code + - species + - specific_use_code + properties: + observation_aspect_code: + type: array + items: + $ref: "#/definitions/AspectCode" + jurisdiction_code: + type: array + items: + $ref: "#/definitions/JurisdictionCode" + observation_geometry_code: + type: array + items: + $ref: "#/definitions/ObservationGeometryCode" + observation_type_code: + type: array + items: + $ref: "#/definitions/ObservationTypeCode" + observation_proposed_action_code: + type: array + items: + $ref: "#/definitions/ProposedActionCode" + observation_slope_code: + type: array + items: + $ref: "#/definitions/SlopeCode" + soil_texture_code: + type: array + items: + $ref: "#/definitions/SoilTextureCode" + species: + type: array + items: + $ref: "#/definitions/Species" + species_density_code: + type: array + items: + $ref: "#/definitions/SpeciesDensityCode" + species_distribution_code: + type: array + items: + $ref: "#/definitions/SpeciesDistributionCode" + species_agency_code: + type: array + items: + $ref: "#/definitions/SpeciesAgencyCode" + specific_use_code: + type: array + items: + $ref: "#/definitions/SpecificUseCode" + + # Code Definitions + + AspectCode: + type: object + required: + - observation_aspect_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_aspect_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + JurisdictionCode: + type: object + required: + - jurisdiction_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + jurisdiction_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationGeometryCode: + type: object + required: + - observation_geometry_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_geometry_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationTypeCode: + type: object + required: + - observation_type_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_type_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ProposedActionCode: + type: object + required: + - observation_proposed_action_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_proposed_action_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SlopeCode: + type: object + required: + - observation_slope_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_slope_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SoilTextureCode: + type: object + required: + - soil_texture_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + soil_texture_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + Species: + type: object + required: + - species_id + - mapCode + - earlyDetection + - containmentSpecies + - containmentSpacialRef + - species + - genus + - commonName + - latinName + - updateAt + - createdAt + properties: + species_id: + type: number + mapCode: + type: string + earlyDetection: + type: boolean + containmentSpecies: + type: number + containmentSpacialRef: + type: number + species: + type: string + genus: + type: string + commonName: + type: string + latinName: + type: string + updateAt: + type: string + createdAt: + type: string + + SpeciesDensityCode: + type: object + required: + - species_density_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_density_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesDistributionCode: + type: object + required: + - species_distribution_code_id + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_distribution_code_id: + type: number + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesAgencyCode: + type: object + required: + - species_agency_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_agency_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpecificUseCode: + type: object + required: + - specific_use_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + specific_use_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string From bc479597b42a89372b32ff08eeb2a43b47729bb7 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Thu, 27 Aug 2020 16:29:47 -0700 Subject: [PATCH 029/194] env.local back --- api-mobile/env_config/env.local | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 api-mobile/env_config/env.local diff --git a/api-mobile/env_config/env.local b/api-mobile/env_config/env.local new file mode 100644 index 000000000..4804c7ccb --- /dev/null +++ b/api-mobile/env_config/env.local @@ -0,0 +1,42 @@ +# This env config should be used when running api-mobile manually, via `npm start`. See Readme for prerequisites. + +# ------------------------------------------------------------------------------ +# Project Details +# ------------------------------------------------------------------------------ +PROJECT_NAME=invasivesbc + +# ------------------------------------------------------------------------------ +# Environment Details +# ------------------------------------------------------------------------------ +NODE_ENV=local +ENVIRONMENT=local + +# ------------------------------------------------------------------------------ +# Api-mobile +# ------------------------------------------------------------------------------ +API_HOST=localhost +API_PORT=3002 + +# ------------------------------------------------------------------------------ +# Postgrest Database +# ------------------------------------------------------------------------------ +DB_HOST=localhost +DB_USER=postgres +DB_PASS=postgres +DB_PORT=5432 +DB_DATABASE=lucy +DB_SCHEMA=invasivesbc + +# ------------------------------------------------------------------------------ +# KeyClock URLS +# ------------------------------------------------------------------------------ +APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs + +# ------------------------------------------------------------------------------ +# Mailer Config +# ------------------------------------------------------------------------------ +APP_EMAIL_SENDER= +APP_EMAIL_SENDER_PWD= +APP_EMAIL_TEST_RECEIVER= +APP_REPORT_RECEIVER= From 885e73489815ed04206e7cf52a25e69c53337e7d Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 28 Aug 2020 10:43:06 -0700 Subject: [PATCH 030/194] Switching to generic geometry column --- .../migrations/20200811120312_activity_incoming_data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts index b36d1461d..cfc24a291 100644 --- a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts +++ b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts @@ -34,7 +34,7 @@ export async function up(knex: Knex): Promise { ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN geom geometry(GeometryCollection,3005) CHECK (st_isValid(geom)); + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN geom geometry(Geometry,3005) CHECK (st_isValid(geom)); COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; CREATE index activity_incoming_data_gist on ${DB_SCHEMA}.activity_incoming_data using gist ("geom"); From 92f7168f32990e9452b81bd402b581b8e2b9283c Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 28 Aug 2020 12:21:57 -0700 Subject: [PATCH 031/194] Regular data inserting without spatial --- .../src/controllers/activity-controller.ts | 3 +- api-mobile/src/queries/activity-queries.ts | 38 ++++++++++++++----- api-mobile/test/observation-fake3.json | 15 +++----- api-mobile/test/observation.sh | 2 +- 4 files changed, 38 insertions(+), 20 deletions(-) diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index 79cad040e..cefda4a90 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -66,7 +66,8 @@ exports.authenticatedPost = async function (args: any, res: any, next: any) { return sendResponse(res, 400); } - const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); + // const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); + const response = await connection.query(parameterizedQuery.sql); const result = (response && response.rows && response.rows[0]) || null; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 5de05b214..4ec793b8a 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -13,30 +13,50 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu } //activityData.locationAndGeometry needs to be added to below: + // const sql = ` + // INSERT INTO activity_incoming_data ( + // activity_type, + // activity_sub_type, + // received_timestamp, + // activity_payload, + // geom + // ) VALUES ( + // '$1', + // '$2', + // '$3', + // '$4', + // ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON('$5'),4326),3005) + // ) + // RETURNING + // activity_incoming_data_id + // `; + const sql = ` INSERT INTO activity_incoming_data ( activity_type, activity_sub_type, received_timestamp, - activity_payload, - geom + activity_payload ) VALUES ( - $1, - $2, - $3, - $4, - ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON($5),4326),3005) + '${activityData.activityType}', + '${activityData.activitySubType}', + '${activityData.date}', + '${JSON.stringify(activityData.activityPostBody)}' ) RETURNING activity_incoming_data_id `; + + console.log(sql); + // console.log(JSON.stringify(activityData.locationAndGeometry['geometry'], undefined, 4)); + const values = [ activityData.activityType, activityData.activitySubType, activityData.date, - activityData.activityPostBody, - activityData.locationAndGeometry['geometry'] + activityData.activityPostBody + // activityData.locationAndGeometry['geometry'] ]; return { sql, values }; diff --git a/api-mobile/test/observation-fake3.json b/api-mobile/test/observation-fake3.json index dc30237a7..f2d0cf211 100644 --- a/api-mobile/test/observation-fake3.json +++ b/api-mobile/test/observation-fake3.json @@ -8,15 +8,12 @@ "anchorPointX": -125.6, "area": 0, "geometry": { - "type": "Feature", - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-125.6, 48.3],[-126.6, 48.3],[-126.6, 49.3],[-125.6, 48.3] - ] - ]}, - "properties": {} + "type": "Polygon", + "coordinates": [ + [ + [-125.6, 48.3],[-126.6, 48.3],[-126.6, 49.3],[-125.6, 48.3] + ] + ] }, "jurisdiction": "string", "agency": "string", diff --git a/api-mobile/test/observation.sh b/api-mobile/test/observation.sh index 46fc30208..e9d0798d2 100755 --- a/api-mobile/test/observation.sh +++ b/api-mobile/test/observation.sh @@ -1,4 +1,4 @@ # TODO: Assign DB environment variables -curl -X POST -d @./observation-fake2.json "localhost:3002/api/activity" \ +curl -X POST -d @./observation-fake3.json "localhost:3002/api/activity" \ --header "Content-Type: application/json" \ --header 'Authorization: Bearer '${1} \ From 8d709d0a4fe9c90ec9f7db325088b3a67b102284 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 28 Aug 2020 12:51:13 -0700 Subject: [PATCH 032/194] Polygon is being entered --- api-mobile/src/queries/activity-queries.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 4ec793b8a..dd8b5c1c9 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -30,18 +30,30 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu // RETURNING // activity_incoming_data_id // `; + // const testing = `{ + // "type": "Polygon", + // "coordinates": [ + // [ + // [-125.6, 48.3],[-126.6, 48.3],[-126.6, 49.3],[-125.6, 48.3] + // ] + // ] + // }`; + + const geometry = JSON.stringify(activityData.locationAndGeometry['geometry']); const sql = ` INSERT INTO activity_incoming_data ( activity_type, activity_sub_type, received_timestamp, - activity_payload + activity_payload, + geom ) VALUES ( '${activityData.activityType}', '${activityData.activitySubType}', '${activityData.date}', - '${JSON.stringify(activityData.activityPostBody)}' + '${JSON.stringify(activityData.activityPostBody)}', + public.st_transform(public.st_setSrid(public.ST_geomFromGeoJSON('${geometry}'),4326),3005) ) RETURNING activity_incoming_data_id From 22ee288b3ecf020bc9fd3a0f0f6ac2640d52a90d Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 28 Aug 2020 12:53:41 -0700 Subject: [PATCH 033/194] Point is being entered --- api-mobile/test/observation-fake4.json | 57 ++++++++++++++++++++++++++ api-mobile/test/observation.sh | 2 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 api-mobile/test/observation-fake4.json diff --git a/api-mobile/test/observation-fake4.json b/api-mobile/test/observation-fake4.json new file mode 100644 index 000000000..f24b685f2 --- /dev/null +++ b/api-mobile/test/observation-fake4.json @@ -0,0 +1,57 @@ +{ + "activityType": "Observation", + "activitySubType": "Terrestrial Invasive Plant", + "date": "2019-04-12", + "deviceRequestUID": "string", + "locationAndGeometry": { + "anchorPointY": 48.3, + "anchorPointX": -125.6, + "area": 0, + "geometry": { + "type": "Point", + "coordinates": [-125.6, 48.3] + }, + "jurisdiction": "string", + "agency": "string", + "observer1FirstName": "string", + "observer1LastName": "string", + "locationComment": "string", + "generalComment": "string", + "photoTaken": true + }, + "activityTypeData": { + "negative_observation_ind": false, + "aquatic_observation_ind": false, + "primary_user_last_name": "mike", + "secondary_user_first_name": "mike", + "secondary_user_last_name": "mike", + "species": "banana", + "primary_file_id": "test", + "secondary_file_id": "test", + "location_comment": "test", + "general_observation_comment": "general comment", + "sample_taken_ind": true, + "sample_label_number": "string" + }, + "activitySubTypeData": { + "species": "banana", + "distribution": 123, + "density": 123, + "soil_texture": 1, + "slope": 123, + "aspect": 123, + "flowering": true, + "specific_use": 123, + "proposed_action": 123, + "seed_stage": 123, + "plant_health": 123, + "plant_life_stage": 123, + "early_detection": 1, + "research": true, + "well_on_site_ind": true, + "special_care_ind": true, + "biological_care_ind": true, + "legacy_site_ind": true, + "range_unit": "Canyon" + } +} diff --git a/api-mobile/test/observation.sh b/api-mobile/test/observation.sh index e9d0798d2..248eac602 100755 --- a/api-mobile/test/observation.sh +++ b/api-mobile/test/observation.sh @@ -1,4 +1,4 @@ # TODO: Assign DB environment variables -curl -X POST -d @./observation-fake3.json "localhost:3002/api/activity" \ +curl -X POST -d @./observation-fake4.json "localhost:3002/api/activity" \ --header "Content-Type: application/json" \ --header 'Authorization: Bearer '${1} \ From e0deeab6d57022e69b883ad708ae33710f9380e3 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 28 Aug 2020 13:25:21 -0700 Subject: [PATCH 034/194] Back to passing parameters to postgres --- .../src/controllers/activity-controller.ts | 4 +- api-mobile/src/queries/activity-queries.ts | 67 +++++++++---------- 2 files changed, 33 insertions(+), 38 deletions(-) diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index cefda4a90..f3687241b 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -66,8 +66,8 @@ exports.authenticatedPost = async function (args: any, res: any, next: any) { return sendResponse(res, 400); } - // const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); - const response = await connection.query(parameterizedQuery.sql); + const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); + // const response = await connection.query(parameterizedQuery.sql); const result = (response && response.rows && response.rows[0]) || null; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index dd8b5c1c9..97d54420d 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -11,34 +11,9 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu if (!activityData) { return null; } - //activityData.locationAndGeometry needs to be added to below: - - // const sql = ` - // INSERT INTO activity_incoming_data ( - // activity_type, - // activity_sub_type, - // received_timestamp, - // activity_payload, - // geom - // ) VALUES ( - // '$1', - // '$2', - // '$3', - // '$4', - // ST_Transform(ST_SetSRID(ST_GeomFromGeoJSON('$5'),4326),3005) - // ) - // RETURNING - // activity_incoming_data_id - // `; - // const testing = `{ - // "type": "Polygon", - // "coordinates": [ - // [ - // [-125.6, 48.3],[-126.6, 48.3],[-126.6, 49.3],[-125.6, 48.3] - // ] - // ] - // }`; + // Geometry needs to be stringified. Postgresql doesn't know to cast + // GeoJSON into a string... Even though it works for a regular JSON field. const geometry = JSON.stringify(activityData.locationAndGeometry['geometry']); const sql = ` @@ -49,26 +24,46 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activity_payload, geom ) VALUES ( - '${activityData.activityType}', - '${activityData.activitySubType}', - '${activityData.date}', - '${JSON.stringify(activityData.activityPostBody)}', - public.st_transform(public.st_setSrid(public.ST_geomFromGeoJSON('${geometry}'),4326),3005) + $1, + $2, + $3, + $4, + public.ST_Transform( + public.ST_SetSRID( + public.ST_GeomFromGeoJSON($5) + ,4326) + ,3005 + ) ) RETURNING activity_incoming_data_id `; - console.log(sql); - // console.log(JSON.stringify(activityData.locationAndGeometry['geometry'], undefined, 4)); + // const sql = ` + // INSERT INTO activity_incoming_data ( + // activity_type, + // activity_sub_type, + // received_timestamp, + // activity_payload, + // geom + // ) VALUES ( + // '${activityData.activityType}', + // '${activityData.activitySubType}', + // '${activityData.date}', + // '${JSON.stringify(activityData.activityPostBody)}', + // public.st_transform(public.st_setSrid(public.ST_geomFromGeoJSON('${geometry}'),4326),3005) + // ) + // RETURNING + // activity_incoming_data_id + // `; const values = [ activityData.activityType, activityData.activitySubType, activityData.date, - activityData.activityPostBody - // activityData.locationAndGeometry['geometry'] + activityData.activityPostBody, + geometry ]; return { sql, values }; From 35254f5d71e45d34ff3f2d970c61f7f9d6886233 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 28 Aug 2020 13:27:46 -0700 Subject: [PATCH 035/194] Removing test code --- .../src/controllers/activity-controller.ts | 1 - api-mobile/src/queries/activity-queries.ts | 21 ++----------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts index f3687241b..79cad040e 100644 --- a/api-mobile/src/controllers/activity-controller.ts +++ b/api-mobile/src/controllers/activity-controller.ts @@ -67,7 +67,6 @@ exports.authenticatedPost = async function (args: any, res: any, next: any) { } const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); - // const response = await connection.query(parameterizedQuery.sql); const result = (response && response.rows && response.rows[0]) || null; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 97d54420d..35980af9a 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -16,6 +16,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu // GeoJSON into a string... Even though it works for a regular JSON field. const geometry = JSON.stringify(activityData.locationAndGeometry['geometry']); + // Formulate the sql statement const sql = ` INSERT INTO activity_incoming_data ( activity_type, @@ -39,25 +40,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activity_incoming_data_id `; - - // const sql = ` - // INSERT INTO activity_incoming_data ( - // activity_type, - // activity_sub_type, - // received_timestamp, - // activity_payload, - // geom - // ) VALUES ( - // '${activityData.activityType}', - // '${activityData.activitySubType}', - // '${activityData.date}', - // '${JSON.stringify(activityData.activityPostBody)}', - // public.st_transform(public.st_setSrid(public.ST_geomFromGeoJSON('${geometry}'),4326),3005) - // ) - // RETURNING - // activity_incoming_data_id - // `; - + // Data to be passed const values = [ activityData.activityType, activityData.activitySubType, From 396bff9543e485fc0165e3c55f3e81ec433eb631 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 28 Aug 2020 14:49:15 -0700 Subject: [PATCH 036/194] Cleaning up tests --- api-mobile/test/observation-fake.json | 78 ------------------- api-mobile/test/observation-fake2.json | 64 --------------- ...tion-fake4.json => observation-point.json} | 0 ...on-fake3.json => observation-polygon.json} | 0 api-mobile/test/observation.sh | 2 +- 5 files changed, 1 insertion(+), 143 deletions(-) delete mode 100644 api-mobile/test/observation-fake.json delete mode 100644 api-mobile/test/observation-fake2.json rename api-mobile/test/{observation-fake4.json => observation-point.json} (100%) rename api-mobile/test/{observation-fake3.json => observation-polygon.json} (100%) diff --git a/api-mobile/test/observation-fake.json b/api-mobile/test/observation-fake.json deleted file mode 100644 index 150a529f7..000000000 --- a/api-mobile/test/observation-fake.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "data": { - "activityData": { - "access_description": "Quos dolor blanditiis perferendis. Nesciunt ipsum reprehenderit. Numquam quasi exercitationem et ut quis ex facere eius. Exercitationem voluptatem ducimus quo dolor saepe ut est. Et porro animi labore alias.", - "aquatic_ind": true, - "bec_zone": null, - "biological_ind": true, - "created_at": "2020-06-24T17:29:55.53743", - "created_by_user_id": 1, - "early_detection_rapid_resp_ind": false, - "elevation_metes": 5, - "flnro_district": null, - "flowering": false, - "general_comment": "Non tempore itaque dignissimos corporis est. Qui sit molestias enim.", - "hex_id": null, - "hex_sub_id": null, - "ipma": "jfkdsljfklds", - "jurisdiction_code_id": 19, - "legacy_site_ind": false, - "moti_district": null, - "negative_occurance_id": false, - "observation_aspect_code_id": 6, - "observation_date": "2020-01-24", - "observation_geometry_code_id": 1, - "observation_proposed_action_code_id": 9, - "observation_slope_code_id": 6, - "observation_type_code_id": 13, - "observer_first_name": "facilis", - "observer_last_name": "nostrum", - "ownership": "Private", - "paper_id_primary": "1", - "paper_id_secondary": "1", - "photo_indicator": false, - "range_unit_number": "possimus", - "raw_albers_x": null, - "raw_albers_y": null, - "raw_latitude": 52.543534, - "raw_longitude": -135.4328492, - "raw_utm_easting": null, - "raw_utm_northing": null, - "raw_utm_zone": null, - "regional_district": null, - "research_detection_ind": false, - "riso": null, - "sample_identifier": "aut", - "sample_taken_ind": false, - "soil_texture_code_id": 5, - "space_geom_id": 627, - "special_care_ind": false, - "species_agency_code_id": 17, - "species_density_code_id": 4, - "species_distribution_code_id": 9, - "species_id": 152, - "specific_use_code_id": 9, - "total_area": 20000, - "updated_at": "2020-06-24T17:29:55.53743", - "updated_by_user_id": 1, - "well_ind": false, - "well_proximity": 20000, - "well_tag": 1234 - } - }, - "date": "2014-01-01T23:28:56.782Z", - "locationAndGeometry": { - "type": "FeatureCollection", - "features": [{ - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [-125.6, 48.3] - }, - "properties": {} - }] - }, - "activitySubType": "Invasive Terrestrial Plant", - "activityType": "Observation", - "deviceRequestUID": "84dc813c-e307-11ea-87d0-0242ac130003" -} diff --git a/api-mobile/test/observation-fake2.json b/api-mobile/test/observation-fake2.json deleted file mode 100644 index 6eaac8f98..000000000 --- a/api-mobile/test/observation-fake2.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "activityType": "Observation", - "activitySubType": "Terrestrial Invasive Plant", - "date": "2019-04-12", - "deviceRequestUID": "string", - "locationAndGeometry": { - "anchorPointY": 48.3, - "anchorPointX": -125.6, - "area": 0, - "geometry": { - "type": "FeatureCollection", - "features": [{ - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [-125.6, 48.3] - }, - "properties": {} - }] - }, - "jurisdiction": "string", - "agency": "string", - "observer1FirstName": "string", - "observer1LastName": "string", - "locationComment": "string", - "generalComment": "string", - "photoTaken": true - }, - "activityTypeData": { - "negative_observation_ind": false, - "aquatic_observation_ind": false, - "primary_user_last_name": "mike", - "secondary_user_first_name": "mike", - "secondary_user_last_name": "mike", - "species": "banana", - "primary_file_id": "test", - "secondary_file_id": "test", - "location_comment": "test", - "general_observation_comment": "general comment", - "sample_taken_ind": true, - "sample_label_number": "string" - }, - "activitySubTypeData": { - "species": "banana", - "distribution": 123, - "density": 123, - "soil_texture": 1, - "slope": 123, - "aspect": 123, - "flowering": true, - "specific_use": 123, - "proposed_action": 123, - "seed_stage": 123, - "plant_health": 123, - "plant_life_stage": 123, - "early_detection": 1, - "research": true, - "well_on_site_ind": true, - "special_care_ind": true, - "biological_care_ind": true, - "legacy_site_ind": true, - "range_unit": "Canyon" - } -} diff --git a/api-mobile/test/observation-fake4.json b/api-mobile/test/observation-point.json similarity index 100% rename from api-mobile/test/observation-fake4.json rename to api-mobile/test/observation-point.json diff --git a/api-mobile/test/observation-fake3.json b/api-mobile/test/observation-polygon.json similarity index 100% rename from api-mobile/test/observation-fake3.json rename to api-mobile/test/observation-polygon.json diff --git a/api-mobile/test/observation.sh b/api-mobile/test/observation.sh index 248eac602..625e73407 100755 --- a/api-mobile/test/observation.sh +++ b/api-mobile/test/observation.sh @@ -1,4 +1,4 @@ # TODO: Assign DB environment variables -curl -X POST -d @./observation-fake4.json "localhost:3002/api/activity" \ +curl -X POST -d @./observation-polygon.json "localhost:3002/api/activity" \ --header "Content-Type: application/json" \ --header 'Authorization: Bearer '${1} \ From 1fb2fed9bab0ae0c151fb64067ef44b3b74322e0 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Tue, 1 Sep 2020 14:51:26 -0700 Subject: [PATCH 037/194] Update Sonar Config settings --- .github/workflows/test-analysis.yml | 3 ++- sonar-project.properties | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index f8d34c5cb..cc56fb302 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -70,7 +70,8 @@ jobs: uses: sonarsource/sonarcloud-github-action@master continue-on-error: true env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: projectBaseDir: './api/api_sources/' ## End test job diff --git a/sonar-project.properties b/sonar-project.properties index 308524598..47a5c3b95 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,10 +1,10 @@ sonar.projectKey=bcgov_lucy-web sonar.organization=bcgov-sonarcloud # Path to sources -sonar.sources=api/api_sources/sources +sonar.sources=api/api_sources/sources,api-mobile/src sonar.exclusions=api/api_sources/config, api/api_sources/dist-server/**, api/api_sources/sources/coverage/**, api/api_sources/.config/**, **/*.spec.ts, api/api_sources/sources/database/migrations/**, api/api_sources/sources/database/migration/*.ts, **/__mocks__/**, **/migrations/** -sonar.tests=api/api_sources/sources,api/api_sources/schema-files,api/api_sources/scripts -sonar.test.inclusions=api/api_sources/**/*.spec.ts +sonar.tests=api/api_sources/sources,api/api_sources/schema-files,api/api_sources/scripts,api-mobile/test +sonar.test.inclusions=api/api_sources/**/*.spec.ts, sonar.sourceEncoding=UTF-8 sonar.javascript.lcov.reportPaths=api/api_sources/coverage/lcov.info From 4266ea90144b4dfb76c429e0186428a14e4442a5 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Tue, 1 Sep 2020 17:21:01 -0700 Subject: [PATCH 038/194] Activating PR based SonarCloud Checking --- .github/workflows/test-analysis.yml | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index cc56fb302..bf4345306 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -16,7 +16,7 @@ jobs: PROJECT_NAME: invasivesbc TAG: dev APP_PORT: 3033 - VERSION: '0.1.1' + VERSION: "0.1.1" # ------------------------------------------------------------------------------ # Postgres Database # ------------------------------------------------------------------------------ @@ -37,7 +37,7 @@ jobs: APP_EMAIL_SENDER_PWD: ${{secrets.EMAIL_PWD}} APP_EMAIL_TEST_RECEIVER: ${{secrets.EMAIL_RECEIVER}} APP_REPORT_RECEIVER: ${{secrets.EMAIL_RECEIVER}} - # Docker Compose + # Docker Compose COMPOSE_INTERACTIVE_NO_CLI: 1 steps: - uses: actions/checkout@v1 @@ -46,16 +46,16 @@ jobs: # For sonar-scanner to work properly we can't use a shallow fetch fetch-depth: 0 - name: Docker build and run - working-directory: './api/' + working-directory: "./api/" run: docker-compose -f docker-compose.git.yml build && docker-compose -f docker-compose.git.yml up -d - name: Sleep for 75 seconds uses: jakejarvis/wait-action@master with: - time: '75s' - - name: Check + time: "75s" + - name: Check run: docker ps -a - name: Test - working-directory: './api/' + working-directory: "./api/" run: docker-compose -f docker-compose.git.yml exec -T app_api npm run test:all - name: Change permission for coverage report path run: | @@ -64,18 +64,20 @@ jobs: - name: Fix Coverage file path continue-on-error: true working-directory: api/api_sources/coverage - run: | + run: | sed -i 's+/home/runner/work/lucy-web/lucy-web+/github/workspace+g' lcov.info - name: Sonar Analysis API uses: sonarsource/sonarcloud-github-action@master continue-on-error: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - with: - projectBaseDir: './api/api_sources/' + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + projectBaseDir: "./api/api_sources/" + args: > + -Dsonar.pullrequest.key=${{ github.event.number }} + -Dsonar.pullrequest.branch=${{github.head_ref}} + -Dsonar.pullrequest.base=${{github.ref}} ## End test job ## -- - - From 067aafa792ff8861631ea98405187dd594e741f3 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Tue, 1 Sep 2020 17:35:52 -0700 Subject: [PATCH 039/194] Point to base_ref --- .github/workflows/test-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index bf4345306..9cb9c67a7 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -77,7 +77,7 @@ jobs: args: > -Dsonar.pullrequest.key=${{ github.event.number }} -Dsonar.pullrequest.branch=${{github.head_ref}} - -Dsonar.pullrequest.base=${{github.ref}} + -Dsonar.pullrequest.base=${{github.base_ref}} ## End test job ## -- From d9253e1377f92a4cca0b1983a2c0c391977e2bcc Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Tue, 1 Sep 2020 20:12:59 -0700 Subject: [PATCH 040/194] New github workflow file for deleting closed PR artifacts in dev and tools --- .github/workflows/cleanClosedPR.yml | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/cleanClosedPR.yml diff --git a/.github/workflows/cleanClosedPR.yml b/.github/workflows/cleanClosedPR.yml new file mode 100644 index 000000000..c5e93622a --- /dev/null +++ b/.github/workflows/cleanClosedPR.yml @@ -0,0 +1,53 @@ +# Clean out the deployment artifacts when a PR is closed, without a merge. +# This clean out gets rid of the PR artifacts in Dev and in Tools. +name: Clean out Dev from closed PR Artifacts +on: + pull_request: + types: [closed] + branches: + - dev +jobs: + clean: + name: Clean Deployment Artifacts for App, API, and API-MOBILE in Dev and Tools environment + runs-on: ubuntu-latest + if: ${{ github.event.pull_request.merged != true && github.base_ref == 'dev' }} + env: + BUILD_ID: ${{ github.event.number }} + steps: + # Checkout the PR branch + - name: Checkout Target Branch + uses: actions/checkout@v1 + + # Install Node - for `node` and `npm` commands + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 10.16 + + # Log in to OpenShift. + - name: Log in to OpenShift + run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + + # Clean the api deployment artifacts + - name: Clean API Deployment + working-directory: "./api/.pipeline/" + run: | + npm ci + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the api-mobile deployment artifacts + - name: Clean API Mobile Deployment + working-directory: "./api-mobile/.pipeline/" + run: | + npm ci + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev + + # Clean the app deployment artifacts + - name: Clean APP Deployment + working-directory: "./app/.pipeline/" + run: | + npm ci + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build + DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev From 93145ccc0d1c135d50b27ed709a93eff839d2f2a Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Tue, 1 Sep 2020 21:32:49 -0700 Subject: [PATCH 041/194] Dummy --- dummy.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 dummy.md diff --git a/dummy.md b/dummy.md new file mode 100644 index 000000000..2b457e624 --- /dev/null +++ b/dummy.md @@ -0,0 +1,2 @@ +# Dummy file +to testtriggering the GitHub Actions \ No newline at end of file From 66a9ec843dd7e99ce78a4ef2a3997afa600ad714 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 1 Sep 2020 22:11:11 -0700 Subject: [PATCH 042/194] add missing geom column to insert --- api-mobile/src/queries/activity-queries.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 8abbe3bbc..35980af9a 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -22,7 +22,8 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activity_type, activity_sub_type, received_timestamp, - activity_payload + activity_payload, + geom ) VALUES ( $1, $2, From 5a85e30668b6e4ea0cbf0acc3a85a1b8fd6c91a1 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Wed, 2 Sep 2020 10:39:52 -0700 Subject: [PATCH 043/194] Forcing 2D for now --- api-mobile/src/queries/activity-queries.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 35980af9a..1a4e8cc1e 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -29,11 +29,13 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu $2, $3, $4, - public.ST_Transform( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON($5) - ,4326) - ,3005 + ST_Force2D( + public.ST_Transform( + public.ST_SetSRID( + public.ST_GeomFromGeoJSON($5) + ,4326) + ,3005 + ) ) ) RETURNING From a261da7f3d6964e21159a7926000dc5eeb97ef79 Mon Sep 17 00:00:00 2001 From: Mike Wells Date: Wed, 2 Sep 2020 11:27:00 -0700 Subject: [PATCH 044/194] disable geometry insert --- api-mobile/src/queries/activity-queries.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 1a4e8cc1e..a38f473cb 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -23,20 +23,11 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activity_sub_type, received_timestamp, activity_payload, - geom ) VALUES ( $1, $2, $3, - $4, - ST_Force2D( - public.ST_Transform( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON($5) - ,4326) - ,3005 - ) - ) + $4 ) RETURNING activity_incoming_data_id @@ -48,7 +39,6 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activityData.activitySubType, activityData.date, activityData.activityPostBody, - geometry ]; return { sql, values }; From 9239e855f4580679178a8a361094e1690ad3bd3d Mon Sep 17 00:00:00 2001 From: Mike Wells Date: Wed, 2 Sep 2020 11:40:35 -0700 Subject: [PATCH 045/194] address linter error --- api-mobile/src/queries/activity-queries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index a38f473cb..8d8a32e35 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -14,7 +14,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu // Geometry needs to be stringified. Postgresql doesn't know to cast // GeoJSON into a string... Even though it works for a regular JSON field. - const geometry = JSON.stringify(activityData.locationAndGeometry['geometry']); +// const geometry = JSON.stringify(activityData.locationAndGeometry['geometry']); // Formulate the sql statement const sql = ` From 24c89646e3fa49fe62354f415bab7538ca1250e3 Mon Sep 17 00:00:00 2001 From: Mike Wells Date: Wed, 2 Sep 2020 12:06:44 -0700 Subject: [PATCH 046/194] trailing comma blocking insert --- api-mobile/src/queries/activity-queries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 8d8a32e35..a44c35e49 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -22,7 +22,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQu activity_type, activity_sub_type, received_timestamp, - activity_payload, + activity_payload ) VALUES ( $1, $2, From b616c24292b3b399c4c4eddfed340be022c907c1 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Wed, 2 Sep 2020 14:01:39 -0700 Subject: [PATCH 047/194] Update to workflow --- .github/workflows/cleanClosedPR.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cleanClosedPR.yml b/.github/workflows/cleanClosedPR.yml index c5e93622a..5deb9a49c 100644 --- a/.github/workflows/cleanClosedPR.yml +++ b/.github/workflows/cleanClosedPR.yml @@ -3,20 +3,22 @@ name: Clean out Dev from closed PR Artifacts on: pull_request: + branches: [dev] types: [closed] - branches: - - dev jobs: clean: name: Clean Deployment Artifacts for App, API, and API-MOBILE in Dev and Tools environment runs-on: ubuntu-latest + # Only do this when the PR was not merged and only for dev if: ${{ github.event.pull_request.merged != true && github.base_ref == 'dev' }} env: BUILD_ID: ${{ github.event.number }} steps: # Checkout the PR branch - - name: Checkout Target Branch - uses: actions/checkout@v1 + - name: Checkout Dev Branch - Contains the Pipeline Code + uses: actions/checkout@v2 + with: + ref: 'dev' # Install Node - for `node` and `npm` commands - name: Setup Node.js From d9f2e5351f5f4ad297db98d548ba66f9a948ae07 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Wed, 2 Sep 2020 16:19:13 -0700 Subject: [PATCH 048/194] Put test file back and clean up dummy file --- .../nav_plant_monitoring_mech.spec.ts | 168 ++++++++++++++++++ dummy.md | 2 - 2 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts delete mode 100644 dummy.md diff --git a/app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts b/app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts new file mode 100644 index 000000000..6f9e42904 --- /dev/null +++ b/app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts @@ -0,0 +1,168 @@ +import * as faker from 'faker'; + +describe('Add or create mechanical monitoring record', () => { + beforeEach(() => { + cy.svcClientLogout(); + cy.svcClientLogin().as('tokens'); + cy.get('@tokens').then((tokens) => { + cy.svcClientSetCookie(tokens); + }); + + // must make sure there's at least 1 mechanical treatment in DB + // before creating a new mechanical monitoring record + createMechanicalTreatment(); + }); + + it.only('navigates to mechanical monitoring creation page', () => { + cy.visit({ + url: '/add', + }); + cy.viewport('macbook-15'); + + const testValues: any = { + firstName: faker.name.firstName(), + lastName: faker.name.lastName(), + onBehalfOf: 'Environment', + paperFileID: faker.random.alphaNumeric(), + efficacy: '90', + comments: faker.lorem.paragraph(), + updatedEfficacy: '95', + updatedFirstName: faker.name.firstName(), + updatedPaperFileID: faker.random.alphaNumeric(), + }; + + // Clicking add mechanical monitoring button + cy.contains('button', 'Invasive Plant Monitoring (Mechanical)').click(); + cy.wait(10000); + cy.url().should('contain', '/create/monitor/mechanical'); + + // Select mechanical treatment to monitor + cy.get('#treatmentID').type(`{downarrow}{enter}`); + + // Monitoring Details section + cy.get('[placeholder="Observer First Name"]').type(`${testValues.firstName}`); + cy.get('[placeholder="Observer Last Name"]').type(`${testValues.lastName}`); + cy.get('#completedOnBehalfOf').type(`${testValues.onBehalfOf}{enter}`); + cy.get('[placeholder="Paper File ID"]').type(`${testValues.paperFileID}`); + cy.get('[aria-label="Efficacy %"]').type(`${testValues.efficacy}{enter}`); + + // Comments section + cy.get('#comments').type(`${testValues.comments}`); + + // Submit for review + cy.contains('button', 'Submit Mechanical Monitoring').click({ force: true }); + cy.wait(2000); + + // Confirm creation of monitoring record + cy.contains('button', 'Create Mechanical Monitoring').click({ force: true }); + cy.wait(10000); + + // Verify URL + cy.url().should('contain', '/view/monitor/mechanical/'); + cy.contains('button', 'Make changes').should('be', true); + + // Make changes to the record + cy.contains('button', 'Make changes').click({ force: true }); + cy.wait(4000); + cy.url().should('contain', '/edit/monitor/mechanical/'); + + // Update a few fields + cy.get('[placeholder="Observer First Name"]').type(`${testValues.updatedFirstName}`); + cy.get('[placeholder="Paper File ID"]').type(`${testValues.updatedPaperFileID}`); + cy.get('[aria-label="Efficacy %"]').type(`${testValues.updatedEfficacy}{enter}`); + + // Review the edits + cy.contains('button', 'Review Mechanical Monitoring').click({ force: true }); + cy.wait(1000); + cy.contains('button', 'Commit Mechanical Monitoring').click({ force: true }); + + // Verify URL and final output + cy.url().should('contain', '/view/monitor/mechanical/'); + cy.get('[ng-reflect-header="Observer First Name"]').contains(`${testValues.updatedFirstName}`).should('be', true); + cy.get('[ng-reflect-header="Observer Last Name"]').contains(`${testValues.lastName}`).should('be', true); + cy.get('[ng-reflect-header="Paper File ID"]').contains(`${testValues.updatedPaperFileID}`).should('be', true); + cy.get('[ng-reflect-header="Efficacy %"]').contains(`${testValues.updatedEfficacy}`).should('be', true); + }); + + const createMechanicalTreatment = () => { + const testValues: any = { + latitude: 56.519839, + longitude: -123.872261, + geometryType: 'Plot - Length x{enter}', + width: 11, + length: 7, + applicatorFirstName: 'Homer', + applicatorLastName: 'Simpson', + secondaryApplicatorFirstName: 'Ned', + secondaryApplicatorLastName: 'Flanders', + contractor: 'CITY OF COQUITLAM{enter}', + paperFileRef: '34567', + speciesAgency: 'Ministry of Agriculture{enter}', + observedSpecies: 'Spotted knapweed - 2018-07', + mechanicalMethod: 'Digging{enter}', + mechanicalDisposalMethods: 'Burnt{enter}', + rootRemoval: 'Unknown{enter}', + mechanicalSoilDisturbance: 'Medium{enter}', + issue: 'Fencing{enter}', + comment: `E2E test generated on ${new Date()}.{enter}`, + updatedContractor: 'COWICHAN VALLEY{enter}', + updatedComment: `Record modified in E2E test on ${new Date()}.{enter}` + }; + + // Clicking add mechanical treatment button + cy.visit({ url: '/add' }); + cy.contains('button', 'Invasive Plant Treatment (Mechanical)').click(); + cy.wait(10000); + cy.get('[placeholder="Latitude"]').type(`${testValues.latitude}{enter}`); + cy.get('[placeholder="Longitude"]').type(`${testValues.longitude}{enter}`); + + // Geometry and Area section + cy.get('#geometryType').type(`${testValues.geometryType}`); + cy.wait(1000); + cy.get('[placeholder="Width"]').type(`${testValues.width}{enter}`); + cy.get('[placeholder="Length"]').type(`${testValues.length}{enter}`); + + // Applicator Information section + cy.get('[placeholder="Applicator First Name"]').type(`${testValues.applicatorFirstName}`); + cy.get('[placeholder="Applicator Last Name"]').type(`${testValues.applicatorLastName}`); + cy.get('[placeholder="Secondary Applicator First Name"]').type(`${testValues.secondaryApplicatorFirstName}`); + cy.get('[placeholder="Secondary Applicator Last Name"]').type(`${testValues.secondaryApplicatorLastName}`); + cy.get('#contractor').type(`${testValues.contractor}`); + + // Time and Reference section + cy.get('[aria-label="Open calendar"]').click(); + cy.get('.mat-calendar-previous-button').click(); + cy.get('.mat-calendar-body-cell').contains('1').click(); + cy.get('[placeholder="Paper File Ref"]').type(`${testValues.paperFileRef}`); + + // Treatment Details section + cy.get('#speciesAgency').type(`${testValues.speciesAgency}`); + cy.get('#observations').click().then(() => { + cy.get('[placeholder="Search"]').type(`${testValues.observedSpecies}`); + cy.get('[id="mat-option-748"]').click({ force: true }); + cy.get('[id="mat-option-758"]').click({ force: true }); + cy.get('[placeholder="Search"]').type('{esc}'); + }); + + + // Method and techniques section + cy.get('#mechanicalMethod').type(`${testValues.mechanicalMethod}`); + cy.get('#mechanicalDisposalMethods').type(`${testValues.mechanicalDisposalMethods}`); + cy.get('#rootRemoval').type(`${testValues.rootRemoval}`); + + // Issues section + cy.get('#mechanicalSoilDisturbance').type(`${testValues.mechanicalSoilDisturbance}`); + cy.get('#issue').type(`${testValues.issue}`); + + // Additional Information section + cy.get('.mat-checkbox-inner-container').click({ force: true }); + cy.get('#comment').type(`${testValues.comment}`); + + // Submit for review + cy.contains('button', 'Submit Mechanical Treatment').click({ force: true }); + cy.wait(2000); + + // Confirm creation of treatment + cy.contains('button', 'Create Mechanical Treatment').click({ force: true }); + }; +}); diff --git a/dummy.md b/dummy.md deleted file mode 100644 index 2b457e624..000000000 --- a/dummy.md +++ /dev/null @@ -1,2 +0,0 @@ -# Dummy file -to testtriggering the GitHub Actions \ No newline at end of file From ea39fc60120483b9b089605f143301cf70ab1551 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Thu, 3 Sep 2020 10:26:36 -0700 Subject: [PATCH 049/194] Change all the v1 to v2 --- .github/workflows/deploy.yml | 10 +++--- .github/workflows/deployStatic.yml | 16 +++++----- .github/workflows/e2e.yml | 2 +- .github/workflows/static-analysis.yml.bak | 39 ----------------------- .github/workflows/test-analysis.yml | 2 +- 5 files changed, 15 insertions(+), 54 deletions(-) delete mode 100644 .github/workflows/static-analysis.yml.bak diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1a14021f0..0d5fd29db 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -29,7 +29,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -61,7 +61,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -92,7 +92,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -127,7 +127,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -180,7 +180,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index 33082cb48..a97c05dd0 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -32,7 +32,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -66,7 +66,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -97,7 +97,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -133,7 +133,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -187,7 +187,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -241,7 +241,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -296,7 +296,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js @@ -349,7 +349,7 @@ jobs: steps: # Checkout the PR branch - name: Checkout Target Branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 # Install Node - for `node` and `npm` commands - name: Setup Node.js diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 808c37e02..f50e349d5 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -42,7 +42,7 @@ jobs: # Docker Compose COMPOSE_INTERACTIVE_NO_CLI: 1 steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 name: Checkout latest head with: # For sonar-scanner to work properly we can't use a shallow fetch diff --git a/.github/workflows/static-analysis.yml.bak b/.github/workflows/static-analysis.yml.bak deleted file mode 100644 index 7e7a26a0c..000000000 --- a/.github/workflows/static-analysis.yml.bak +++ /dev/null @@ -1,39 +0,0 @@ -# This workflow is currently in DRAFT mode. Shouldn't be run as part of pipeline -# until GitHub Actions has been implemented for building & deploying to OpenShift. -name: Static Analysis - -# TODO: Uncomment this. -#on: [pull_request] - -jobs: - coverage: - name: Unit Test, Coverage & SonarCloud - if: github.event.pull_request.state == 'open' - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./api/api_sources/ - steps: - - name: Checkout repo (dev) - uses: actions/checkout@v2 - with: - # For sonar-scanner to work properly we can't use a shallow fetch - fetch-depth: 0 - - name: Use Node.js - uses: actions/setup-node@v1 - with: - node-version: 10.16 - - name: npm install, build - run: | - npm install - npm run-script build - - name: Run unit tests & prep coverage report for SonarCloud - shell: bash - continue-on-error: true - run: | # need to adjust filepaths in lcov.info to match folder structure in Github's Docker container - npm run-script test:coverage - sed -i 's+/home/runner/work/lucy-web/lucy-web+/github/workspace+g' api/api_sources/coverage/lcov.info - - name: SonarCloud scan - uses: sonarsource/sonarcloud-github-action@master - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.yml index 9cb9c67a7..c49a35200 100644 --- a/.github/workflows/test-analysis.yml +++ b/.github/workflows/test-analysis.yml @@ -40,7 +40,7 @@ jobs: # Docker Compose COMPOSE_INTERACTIVE_NO_CLI: 1 steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 name: Checkout latest head with: # For sonar-scanner to work properly we can't use a shallow fetch From 802c3d96b1f1d42b370e8b3dd224d5e157e89f24 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Fri, 28 Aug 2020 15:05:21 -0700 Subject: [PATCH 050/194] 841: S3 file upload - Update api-mobile from [openapi 2.0 + swagger-tools] to [openapi 3.0 + express-openapi] - add file upload to activity endpoint - update npm packages - add new s3 env vars to env files - add SQL template string support - other misc updates --- Makefile | 9 +- api-mobile/LICENSE | 201 --- api-mobile/Makefile | 13 +- api-mobile/README.md | 9 +- api-mobile/app.ts | 89 +- api-mobile/docker-compose.yml | 8 +- api-mobile/dotenv.sh | 26 + api-mobile/env_config/env.docker | 10 +- api-mobile/env_config/env.local | 10 +- api-mobile/nodemon.json | 3 +- api-mobile/openshift/api.dc.yaml | 28 +- api-mobile/openshift/api.test.yaml | 28 +- api-mobile/package-lock.json | 1415 +++++++++-------- api-mobile/package.json | 22 +- api-mobile/src/constants/misc.ts | 40 +- .../src/controllers/activity-controller.ts | 80 - api-mobile/src/controllers/misc-controller.ts | 36 - .../observation-plant-controller.ts | 80 - api-mobile/src/controllers/user-controller.ts | 42 - ...173212_add_media_keys_to_activity_table.ts | 36 + api-mobile/src/models/activity.ts | 84 +- api-mobile/src/openapi/api-doc.yaml | 640 ++++++++ api-mobile/src/paths/activity.ts | 234 +++ .../code/observation/plant.ts} | 113 +- api-mobile/src/paths/misc/version.ts | 48 + .../observation/plant/{observationId}.ts | 87 + api-mobile/src/queries/activity-queries.ts | 47 +- api-mobile/src/queries/code-queries.ts | 51 +- api-mobile/src/queries/observation-queries.ts | 16 +- api-mobile/src/queries/query-types.ts | 10 - api-mobile/src/queries/user-queries.ts | 21 +- api-mobile/src/swagger/swagger.yaml | 911 ----------- api-mobile/src/utils/auth-utils.ts | 122 +- api-mobile/src/utils/controller-utils.ts | 103 -- api-mobile/src/utils/file-utils.ts | 86 + api-mobile/src/utils/logger.ts | 8 +- api-mobile/src/utils/query-actions.ts | 19 - api-mobile/test/activity-with-files.json | 54 + api-mobile/test/activity.sh | 6 + api-mobile/tsconfig.json | 3 +- docker-compose.yml | 8 +- env_config/env.docker | 9 + 42 files changed, 2421 insertions(+), 2444 deletions(-) delete mode 100644 api-mobile/LICENSE create mode 100644 api-mobile/dotenv.sh delete mode 100644 api-mobile/src/controllers/activity-controller.ts delete mode 100644 api-mobile/src/controllers/misc-controller.ts delete mode 100644 api-mobile/src/controllers/observation-plant-controller.ts delete mode 100644 api-mobile/src/controllers/user-controller.ts create mode 100644 api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts create mode 100644 api-mobile/src/openapi/api-doc.yaml create mode 100644 api-mobile/src/paths/activity.ts rename api-mobile/src/{controllers/code-controller.ts => paths/code/observation/plant.ts} (67%) create mode 100644 api-mobile/src/paths/misc/version.ts create mode 100644 api-mobile/src/paths/observation/plant/{observationId}.ts delete mode 100644 api-mobile/src/queries/query-types.ts delete mode 100644 api-mobile/src/swagger/swagger.yaml delete mode 100644 api-mobile/src/utils/controller-utils.ts create mode 100644 api-mobile/src/utils/file-utils.ts delete mode 100644 api-mobile/src/utils/query-actions.ts create mode 100644 api-mobile/test/activity-with-files.json create mode 100644 api-mobile/test/activity.sh diff --git a/Makefile b/Makefile index 0f1e65681..603604b48 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,11 @@ all : help # Task Aliases # ------------------------------------------------------------------------------ +# Note: If you need to edit the .env file before running the build: +# 1. Run `make setup-docker` +# 2. Edit the `.env` file +# 3. Run `make local` or `make local-debug` + local: | setup-docker close-local build-local run-local ## Performs all commands necessary to run api-mobile in docker local-debug: | setup-docker close-local build-local run-debug ## Performs all commands necessary to run api-mobile in docker in debug mode @@ -24,11 +29,11 @@ local-debug: | setup-docker close-local build-local run-debug ## Performs all co # Development Commands # ------------------------------------------------------------------------------ -setup-docker: ## Prepares the environment variables for local development using docker +setup-docker: ## Prepares the environment variables for local development using docker (will not overwrite an existing .env file) @echo "===============================================" @echo "Make: setup-local - copying env.docker to .env" @echo "===============================================" - @cp env_config/env.docker .env + @cp -n env_config/env.docker .env build-local: ## Builds the local development containers @echo "===============================================" diff --git a/api-mobile/LICENSE b/api-mobile/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/api-mobile/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/api-mobile/Makefile b/api-mobile/Makefile index 6c1fa66be..4fc8e971e 100644 --- a/api-mobile/Makefile +++ b/api-mobile/Makefile @@ -16,6 +16,11 @@ all : help # Task Aliases # ------------------------------------------------------------------------------ +# Note: If you need to edit the .env file before running the build: +# 1. Run `make setup-docker` +# 2. Edit the `.env` file +# 3. Run `make local` or `make local-debug` + local: | setup-docker close-local build-local run-local ## Performs all commands necessary to run api-mobile in docker local-debug: | setup-docker close-local build-local run-debug ## Performs all commands necessary to run api-mobile in docker in debug mode @@ -24,17 +29,17 @@ local-debug: | setup-docker close-local build-local run-debug ## Performs all co # Development Commands # ------------------------------------------------------------------------------ -setup-local: ## Prepares the environment variables for local development +setup-local: ## Prepares the environment variables for local development (will not overwrite an existing .env file) @echo "===============================================" @echo "Make: setup-local - copying env.local to .env" @echo "===============================================" - @cp env_config/env.local .env + @cp -n env_config/env.local .env -setup-docker: ## Prepares the environment variables for local development using docker +setup-docker: ## Prepares the environment variables for local development using docker (will not overwrite an existing .env file) @echo "===============================================" @echo "Make: setup-local - copying env.docker to .env" @echo "===============================================" - @cp env_config/env.docker .env + @cp -n env_config/env.docker .env build-local: ## Builds the local development containers @echo "===============================================" diff --git a/api-mobile/README.md b/api-mobile/README.md index 192f86730..e413476f3 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -62,16 +62,16 @@ npm start # API Specification -The API is defined in `swagger.yaml`. +The API is defined in `api-doc.yaml`. -If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` +If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` or `http://localhost:7080/api/docs/` if running in Docker. -This project uses npm package `swagger-tools` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `swagger.yaml`. +This project uses npm package `swagger-tools` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `api-doc.yaml`. - The controller file is specified by the `x-swagger-router-controller` field. - The controller function, within the controller file, is specified by the `operationId` field. -Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `swagger.yaml` file. +Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `api-doc.yaml` file. _Note: This API currently uses OpenAPI 2.0, as 3.0 is not yet fully supported by many of the swagger libraries/tools used._ @@ -213,7 +213,6 @@ Supported log properties: - level: overwrite the default level (via log.()) with your own level string. - label: adds an additional label to the log message. - message: a log message. -- error: an Error object. - : any additional object properties will be JSON.stringify'd and appended to the log message. ``` diff --git a/api-mobile/app.ts b/api-mobile/app.ts index 322cfe326..8ada9d17b 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -1,15 +1,13 @@ 'use strict'; +import bodyParser from 'body-parser'; import express from 'express'; -import * as swaggerTools from 'swagger-tools'; -import * as YAML from 'yamljs'; -import * as bodyParser from 'body-parser'; -const swaggerConfig = YAML.load('./src/swagger/swagger.yaml'); - +import { initialize } from 'express-openapi'; +import swaggerUi from 'swagger-ui-express'; +import { authenticate } from './src/utils/auth-utils'; import { getLogger } from './src/utils/logger'; -const defaultLog = getLogger('app'); -import { authenticate } from './src/utils/auth-utils'; +const defaultLog = getLogger('app'); const HOST = process.env.API_HOST || 'localhost'; const PORT = Number(process.env.API_PORT || '3002'); @@ -17,56 +15,55 @@ const PORT = Number(process.env.API_PORT || '3002'); // Get initial express app const app: express.Express = express(); -// Increase post body sizing -app.use(bodyParser.json({ limit: '10mb' })); -app.use(bodyParser.urlencoded({ limit: '10mb', extended: true })); - // Enable CORS app.use(function (req: any, res: any, next: any) { defaultLog.info(`${req.method} ${req.url}`); res.setHeader('Access-Control-Allow-Credentials', true); - res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Authorization,responseType'); + res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization, responseType'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE, HEAD'); res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Cache-Control', 'max-age=4'); + next(); }); -// Overwrite swagger to set the `host:port` based on current environment -swaggerConfig.host = `${HOST}:${PORT}`; +// Initialize express-openapi framework +const openAPIFramework = initialize({ + apiDoc: './src/openapi/api-doc.yaml', // base open api spec + app: app, // express app to initialize + paths: './src/paths', // base folder for endpoint routes + routesGlob: '**/*.{ts,js}', // updated default to allow .ts + routesIndexFileRegExp: /(?:index)?\.[tj]s$/, // updated default to allow .ts + promiseMode: true, // allow endpoint handlers to return promises + consumesMiddleware: { + 'application/json': bodyParser.json({ limit: '10mb' }), + 'application/x-www-form-urlencoded': bodyParser.urlencoded({ limit: '10mb', extended: true }) + }, + securityHandlers: { + Bearer: function (req, scopes) { + return authenticate(req, scopes); + } + }, + errorMiddleware: function (error, req, res, next) { + if (!error.status) { + // log any unintentional errors (where no status has been set) + defaultLog.error({ label: 'errorMiddleware', message: 'unexpected error', error }); + } -swaggerTools.initializeMiddleware(swaggerConfig, async function (middleware) { - // add base swagger route handling middleware - app.use(middleware.swaggerMetadata()); - - // app.use(middleware.swaggerValidator({ validateResponse: false })); - - // add swagger security for authenticated routes - app.use( - middleware.swaggerSecurity({ - Bearer: authenticate - }) - ); - - // add swagger route controllers - app.use( - middleware.swaggerRouter({ - controllers: ['./src/controllers'], - useStubs: false - }) - ); - - // add swagger documentation route - app.use(middleware.swaggerUi({ apiDocs: '/api/docs', swaggerUi: '/api/docs' })); - - // start api - try { - app.listen(PORT, '0.0.0.0', function () { - defaultLog.info({ label: 'start api', message: `started api-mobile on ${HOST}:${PORT}/api` }); - }); - } catch (error) { - defaultLog.error({ label: 'start api', message: 'error', error }); - process.exit(1); + res.status(error.status || 500).json(error); } }); + +// Serve pretty api docs +app.use('/api/docs/', swaggerUi.serve, swaggerUi.setup(openAPIFramework.apiDoc)); + +// Start api +try { + app.listen(PORT, () => { + defaultLog.info({ label: 'start api', message: `started api-mobile on ${HOST}:${PORT}/api` }); + }); +} catch (error) { + defaultLog.error({ label: 'start api', message: 'error', error }); + process.exit(1); +} diff --git a/api-mobile/docker-compose.yml b/api-mobile/docker-compose.yml index b8e6b8e11..2fd27cb84 100644 --- a/api-mobile/docker-compose.yml +++ b/api-mobile/docker-compose.yml @@ -48,10 +48,10 @@ services: - APP_CERTIFICATE_URL_TEST=${APP_CERTIFICATE_URL_TEST} - ENVIRONMENT=local - NODE_ENV=local - - APP_EMAIL_SENDER=${APP_EMAIL_SENDER} - - APP_EMAIL_SENDER_PWD=${APP_EMAIL_SENDER_PWD} - - APP_EMAIL_TEST_RECEIVER=${APP_EMAIL_TEST_RECEIVER} - - APP_REPORT_RECEIVER=${APP_REPORT_RECEIVER} + - OBJECT_STORE_URL=${OBJECT_STORE_URL} + - OBJECT_STORE_ACCESS_KEY_ID=${OBJECT_STORE_ACCESS_KEY_ID} + - OBJECT_STORE_SECRET_KEY_ID=${OBJECT_STORE_SECRET_KEY_ID} + - OBJECT_STORE_BUCKET_NAME=${OBJECT_STORE_BUCKET_NAME} volumes: - ./:/opt/app-root/src - npmcache:/opt/app-root/src/node_modules diff --git a/api-mobile/dotenv.sh b/api-mobile/dotenv.sh new file mode 100644 index 000000000..450431b69 --- /dev/null +++ b/api-mobile/dotenv.sh @@ -0,0 +1,26 @@ +#!bin/bash + +# =================================================== +# Reads all `key=value` lines from a `./.env` file and exports them +# To apply variables to your local shell, use `source dotenv.sh` or `. dotenv.sh` +# +# Usage Example: +# $ make setup-local +# (edit the ./.env as needed) +# $ source dotenv.sh +# $ npm start +# =================================================== + +if [ -f .env ] +then + regex='^.*=.*$' + + while read line + do + if [[ $line =~ $regex ]] + then + echo $line + export $line + fi + done < .env +fi diff --git a/api-mobile/env_config/env.docker b/api-mobile/env_config/env.docker index 94b99c959..02bfc8556 100644 --- a/api-mobile/env_config/env.docker +++ b/api-mobile/env_config/env.docker @@ -35,9 +35,9 @@ APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/pr APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs # ------------------------------------------------------------------------------ -# Mailer Config +# Object Store (S3) # ------------------------------------------------------------------------------ -APP_EMAIL_SENDER= -APP_EMAIL_SENDER_PWD= -APP_EMAIL_TEST_RECEIVER= -APP_REPORT_RECEIVER= +OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca +OBJECT_STORE_ACCESS_KEY_ID= +OBJECT_STORE_SECRET_KEY_ID= +OBJECT_STORE_BUCKET_NAME= diff --git a/api-mobile/env_config/env.local b/api-mobile/env_config/env.local index 4804c7ccb..a55e0aef1 100644 --- a/api-mobile/env_config/env.local +++ b/api-mobile/env_config/env.local @@ -34,9 +34,9 @@ APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/pr APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs # ------------------------------------------------------------------------------ -# Mailer Config +# Object Store (S3) # ------------------------------------------------------------------------------ -APP_EMAIL_SENDER= -APP_EMAIL_SENDER_PWD= -APP_EMAIL_TEST_RECEIVER= -APP_REPORT_RECEIVER= +OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca +OBJECT_STORE_ACCESS_KEY_ID= +OBJECT_STORE_SECRET_KEY_ID= +OBJECT_STORE_BUCKET_NAME= diff --git a/api-mobile/nodemon.json b/api-mobile/nodemon.json index b73ba77eb..cc821d450 100644 --- a/api-mobile/nodemon.json +++ b/api-mobile/nodemon.json @@ -1,9 +1,10 @@ { - "verbose": true, + "verbose": false, "ignore": [ "*.spec.ts" ], "watch": [ + "app.ts", "src" ], "ext": "ts" diff --git a/api-mobile/openshift/api.dc.yaml b/api-mobile/openshift/api.dc.yaml index 49187ee17..125461a06 100644 --- a/api-mobile/openshift/api.dc.yaml +++ b/api-mobile/openshift/api.dc.yaml @@ -83,26 +83,26 @@ objects: value: ${DB_CLEAN_UP} - name: DB_SEED value: ${DB_SEED} - - name: APP_EMAIL_SENDER + - name: OBJECT_STORE_URL valueFrom: secretKeyRef: - key: sender - name: ${MAILER_INFO} - - name: APP_EMAIL_SENDER_PWD + key: object_store_url + name: ${OBJECT_STORE_SECRETS} + - name: OBJECT_STORE_ACCESS_KEY_ID valueFrom: secretKeyRef: - key: sender-password - name: ${MAILER_INFO} - - name: APP_EMAIL_TEST_RECEIVER + key: object_store_access_key_id + name: ${OBJECT_STORE_SECRETS} + - name: OBJECT_STORE_SECRET_KEY_ID valueFrom: secretKeyRef: - key: test-receiver - name: ${MAILER_INFO} - - name: APP_REPORT_RECEIVER + key: object_store_secret_key_id + name: ${OBJECT_STORE_SECRETS} + - name: OBJECT_STORE_BUCKET_NAME valueFrom: secretKeyRef: - key: receiver-list - name: ${MAILER_INFO} + key: object_store_bucket_name + name: ${OBJECT_STORE_SECRETS} image: " " imagePullPolicy: Always name: api @@ -293,8 +293,8 @@ parameters: value: "none" - name: DB_SEED value: "yes" - - name: MAILER_INFO - value: "invasivesbc-mailer" + - name: OBJECT_STORE_SECRETS + value: "invasivesbc-object-store" - name: REPLICA_MAX required: true value: "1" diff --git a/api-mobile/openshift/api.test.yaml b/api-mobile/openshift/api.test.yaml index 253bd0e3a..a93957ad8 100644 --- a/api-mobile/openshift/api.test.yaml +++ b/api-mobile/openshift/api.test.yaml @@ -49,8 +49,8 @@ parameters: value: "none" - name: DB_SEED value: "yes" - - name: MAILER_INFO - value: "invasivesbc-mailer" + - name: OBJECT_STORE_SECRETS + value: "invasivesbc-object-store" objects: - kind: Pod apiVersion: v1 @@ -108,26 +108,26 @@ objects: value: ${DB_SEED} - name: TEST_RUN value: "yes" - - name: APP_EMAIL_SENDER + - name: OBJECT_STORE_URL valueFrom: secretKeyRef: - key: sender - name: ${MAILER_INFO} - - name: APP_EMAIL_SENDER_PWD + key: object_store_url + name: ${OBJECT_STORE_SECRETS} + - name: OBJECT_STORE_ACCESS_KEY_ID valueFrom: secretKeyRef: - key: sender-password - name: ${MAILER_INFO} - - name: APP_EMAIL_TEST_RECEIVER + key: object_store_access_key_id + name: ${OBJECT_STORE_SECRETS} + - name: OBJECT_STORE_SECRET_KEY_ID valueFrom: secretKeyRef: - key: test-receiver - name: ${MAILER_INFO} - - name: APP_REPORT_RECEIVER + key: object_store_secret_key_id + name: ${OBJECT_STORE_SECRETS} + - name: OBJECT_STORE_BUCKET_NAME valueFrom: secretKeyRef: - key: test-receiver-list - name: ${MAILER_INFO} + key: object_store_bucket_name + name: ${OBJECT_STORE_SECRETS} imagePullPolicy: Always restartPolicy: Never activeDeadlineSeconds: 900 diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index aae782797..533f82b8f 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -7,7 +7,7 @@ "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -16,13 +16,13 @@ "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -33,7 +33,7 @@ "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha1-KQ0I97OBuPlGB9yPRxoSxnX52zE=", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", "requires": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -89,7 +89,7 @@ "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", "requires": { "@types/connect": "*", "@types/node": "*" @@ -98,18 +98,18 @@ "@types/chai": { "version": "4.2.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", - "integrity": "sha1-YWCuRUzYna4FrcO7l5l/SItgggE=", + "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", "dev": true }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=" + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/connect": { "version": "3.4.33", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha1-MWEMkB7KVzuHE8MzCrxua59YhUY=", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", "requires": { "@types/node": "*" } @@ -117,7 +117,7 @@ "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, "@types/expect": { @@ -129,7 +129,7 @@ "@types/express": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha1-QgRb5kdWNtmAE2nNRBjvZc2w3Vk=", + "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -140,16 +140,25 @@ "@types/express-jwt": { "version": "0.0.42", "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha1-TwTh+t+dGHJZUNwEGAikpK339a4=", + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", "requires": { "@types/express": "*", "@types/express-unless": "*" } }, + "@types/express-openapi": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@types/express-openapi/-/express-openapi-1.9.0.tgz", + "integrity": "sha512-eP5Fy/qBRNQhwiFKvSOgfOECN9Z6OK1UiTyY0ld2o0Ah7wlOwtx7Z11LJZ55l8xfMqDSNM4R3hCl6+/yezkVMA==", + "dev": true, + "requires": { + "express-openapi": "*" + } + }, "@types/express-serve-static-core": { "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha1-LXs03P0l7GY8JchddmCPiySWZ/E=", + "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -159,7 +168,7 @@ "@types/express-unless": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha1-T0QLkF5Cu/Uzgrgge8M33F/5/R8=", + "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", "requires": { "@types/express": "*" } @@ -355,19 +364,20 @@ "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true, "optional": true }, "@types/jsonwebtoken": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", - "integrity": "sha1-JTHV4wCAOqYyebIywBSs94DJgcU=", + "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", "dev": true, "requires": { "@types/node": "*" @@ -376,13 +386,13 @@ "@types/memory-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha1-AMr11zfkrMEA9bmBUsY17avbANc=", + "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", "dev": true }, "@types/mime": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=" + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" }, "@types/minimatch": { "version": "3.0.3", @@ -393,7 +403,7 @@ "@types/mocha": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha1-gTtP+N2ZINZS4ea0Uf8eNxpFYdI=", + "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", "dev": true }, "@types/node": { @@ -404,7 +414,7 @@ "@types/pg": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", - "integrity": "sha1-Fc/P2TAPlP1E5hkaGwuhjS3iCfY=", + "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", "dev": true, "requires": { "@types/node": "*", @@ -414,23 +424,23 @@ "@types/pg-types": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", - "integrity": "sha1-Huu+YrZ3L8x1wYlXqQ+TPRVeAFs=", + "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", "dev": true }, "@types/qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha1-pZ6FHBuhbAUT6hI4MN1jmgoVy2o=" + "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" }, "@types/range-parser": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=" + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha1-PSXZQaGEFdOrCS3vhG4TWgi7z1M=", + "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", "requires": { "@types/express-serve-static-core": "*", "@types/mime": "*" @@ -444,12 +454,22 @@ "@types/swagger-tools": { "version": "0.10.6", "resolved": "https://registry.npmjs.org/@types/swagger-tools/-/swagger-tools-0.10.6.tgz", - "integrity": "sha1-IWiii7Dh19kKtz8SbqP9IjMDhBE=", + "integrity": "sha512-6d44Amrtm0vOgv6OtGCN6U4gRxJ9WRvwP1yMADUh8q6Cess3fyONaA2nh86i+ojAQvq5Ht8OYdN+AeXDhu3qIw==", "dev": true, "requires": { "@types/connect": "*" } }, + "@types/swagger-ui-express": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@types/swagger-ui-express/-/swagger-ui-express-4.1.2.tgz", + "integrity": "sha512-t9teFTU8dKe69rX9EwL6OM2hbVquYdFM+sQ0REny4RalPlxAm+zyP04B12j4c7qEuDS6CnlwICywqWStPA3v4g==", + "dev": true, + "requires": { + "@types/express": "*", + "@types/serve-static": "*" + } + }, "@types/undertaker": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.3.tgz", @@ -466,6 +486,12 @@ "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", "dev": true }, + "@types/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", + "dev": true + }, "@types/vinyl": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.4.tgz", @@ -490,13 +516,13 @@ "@types/yamljs": { "version": "0.2.31", "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", - "integrity": "sha1-saYgsRXJbbezv98M9UruDFcTkkU=", + "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha1-0UTEmpoP/o3XBLsXnCQ992wRG8k=", + "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "3.7.1", @@ -510,7 +536,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -519,13 +545,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -533,7 +559,7 @@ "@typescript-eslint/experimental-utils": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha1-qwNsqu1Mhw0iUx1B+TUvMUc2TWE=", + "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", @@ -546,7 +572,7 @@ "@typescript-eslint/parser": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha1-XZzOyxFtEtnGBz6YYcV8mxqogSg=", + "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", @@ -559,13 +585,13 @@ "@typescript-eslint/types": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha1-kDdWBrL9c8EiT+njl+4VHij6Hgw=", + "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha1-zh/70PpT801M6FGno2TjkkMvbrM=", + "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", "dev": true, "requires": { "@typescript-eslint/types": "3.7.1", @@ -581,7 +607,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -590,13 +616,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -604,7 +630,7 @@ "@typescript-eslint/visitor-keys": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha1-uQGR50797mVr6MWjD0KO0W3aRtE=", + "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -619,7 +645,7 @@ "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -634,7 +660,7 @@ "acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "aggregate-error": { @@ -650,8 +676,7 @@ "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=", - "dev": true, + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -711,7 +736,7 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-gray": { @@ -726,7 +751,7 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=" + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "3.2.1", @@ -743,15 +768,10 @@ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -781,12 +801,13 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=" + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } @@ -904,27 +925,16 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha1-mkFZ9BZFiiPpSDB43hEGsu9o+Ow=", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" - } - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { "safer-buffer": "~2.1.0" } @@ -932,7 +942,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, "assign-symbols": { @@ -943,7 +953,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, "async": { @@ -996,10 +1006,33 @@ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, + "aws-sdk": { + "version": "2.742.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.742.0.tgz", + "integrity": "sha512-zntDB0BpMn/y+B4RQvXuqY8DmJDYPkeFjZ6BbZ6vdNrsdB5TRz8p53ats4D3mLG068RB4M4AmVioFnU69nDXyQ==", + "requires": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.3.2", + "xml2js": "0.4.19" + }, + "dependencies": { + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + } + } + }, "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { "follow-redirects": "1.5.10" } @@ -1086,10 +1119,15 @@ } } }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, "bindings": { @@ -1105,12 +1143,12 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -1127,7 +1165,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -1135,7 +1173,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -1210,7 +1248,7 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1219,7 +1257,7 @@ "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -1228,9 +1266,19 @@ "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", @@ -1245,7 +1293,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-shims": { "version": "1.0.0", @@ -1255,7 +1303,7 @@ "buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha1-zn64Gjj3gp2wnIc/L7t5LAyY7AQ=" + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" }, "busboy": { "version": "0.2.14", @@ -1292,7 +1340,7 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cache-base": { "version": "1.0.1", @@ -1355,18 +1403,18 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha1-dgqnLPION5XoSxKHfODoNzeqKeU=", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -1391,7 +1439,7 @@ "chance": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", - "integrity": "sha1-lnoKEp4PNC98Zc1dIPWuhwomuK8=", + "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", "dev": true }, "check-error": { @@ -1403,7 +1451,7 @@ "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha1-yE5bPRjZpNd1WP70ZrG/FrvrNFA=", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -1611,7 +1659,7 @@ "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -1633,7 +1681,7 @@ "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -1653,12 +1701,12 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha1-xQSRR51MG9rtLJztMs98fcI2D3g=" + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha1-4BKJUNCCuGohaFgHlqCqXWxo2MU=", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -1667,7 +1715,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { "delayed-stream": "~1.0.0" } @@ -1675,12 +1723,12 @@ "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=" + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { "version": "0.0.1", @@ -1716,7 +1764,7 @@ "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { "safe-buffer": "5.1.2" } @@ -1724,7 +1772,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { "version": "1.7.0", @@ -1738,7 +1786,7 @@ "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, "cookie-signature": { "version": "1.0.6", @@ -1748,7 +1796,7 @@ "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=" + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" }, "copy-descriptor": { "version": "0.1.1", @@ -1768,7 +1816,7 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, "core-util-is": { "version": "1.0.2", @@ -1812,13 +1860,13 @@ "database-cleaner": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", - "integrity": "sha1-MGwAFb0uuWjQimvmok/lLdkf1lY=", + "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", "dev": true }, "db-migrate": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", - "integrity": "sha1-ZWdkrYyIiPai6TeGafppGyiVjqI=", + "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", "requires": { "balanced-match": "^1.0.0", "bluebird": "^3.1.1", @@ -1954,7 +2002,7 @@ "db-migrate-pg": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", - "integrity": "sha1-ZkNtutC6OYwFhR0gD3aNtrLlvBo=", + "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", "requires": { "bluebird": "^3.1.1", "db-migrate-base": "^2.3.0", @@ -1975,12 +2023,12 @@ "db-migrate-shared": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", - "integrity": "sha1-YSW+GzpeZhIp/HXVDIX2w/+tvt4=" + "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -2007,7 +2055,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -2021,7 +2069,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.3", @@ -2061,7 +2109,7 @@ "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -2186,7 +2234,16 @@ "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "difunc": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/difunc/-/difunc-0.0.4.tgz", + "integrity": "sha512-zBiL4ALDmviHdoLC0g0G6wVme5bwAow9WfhcZLLopXCAWgg3AEf7RYTs2xugszIGulRHzEVDF/SHl9oyQU07Pw==", + "requires": { + "esprima": "^4.0.0" + } }, "dir-glob": { "version": "3.0.1", @@ -2200,7 +2257,7 @@ "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -2221,11 +2278,6 @@ "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", "dev": true }, - "dottie": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha1-zJHAcmzjoFTr8RxV+8kqfyZt0VQ=" - }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -2257,7 +2309,7 @@ "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { "safe-buffer": "^5.0.1" } @@ -2270,12 +2322,12 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha1-+d2S7C1vS7wNXR5k4h1hzUZl58I=" + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "encodeurl": { "version": "1.0.2", @@ -2294,7 +2346,7 @@ "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -2303,7 +2355,7 @@ "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -2312,7 +2364,7 @@ "es-abstract": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha1-kUIHFweFeyysx7iey2cDFsPi1So=", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -2328,39 +2380,10 @@ "string.prototype.trimstart": "^1.0.1" } }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha1-hz8+hEGN5O4Zxb51KZCy5EcY0J4=", - "dev": true - }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha1-u5itnW1jsxqs3I+J1dDuV7y1tMg=", - "dev": true, - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha1-ivHkwSISRMxiRZ+vOJQNTmRKVyM=", - "dev": true - } - } - }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -2432,7 +2455,7 @@ "eslint": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha1-nsv61iIW0iO4Ksn/6n7zREZx0TU=", + "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2522,7 +2545,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -2546,7 +2569,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "path-key": { @@ -2558,7 +2581,7 @@ "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "shebang-command": { @@ -2579,7 +2602,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { @@ -2605,7 +2628,7 @@ "eslint-config-prettier": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=", + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -2614,7 +2637,7 @@ "eslint-plugin-prettier": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha1-Foq0MVTi6lfbmSos0JfIKBcfdcI=", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -2623,7 +2646,7 @@ "eslint-scope": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2633,7 +2656,7 @@ "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -2642,7 +2665,7 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "esm": { @@ -2653,7 +2676,7 @@ "espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha1-HCY9W1E9utCsMMSZG5OsNU6UjWk=", + "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", "dev": true, "requires": { "acorn": "^7.3.1", @@ -2664,12 +2687,12 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2686,7 +2709,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -2695,13 +2718,13 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -2709,6 +2732,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2760,7 +2788,7 @@ "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -2797,7 +2825,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -2805,10 +2833,25 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, + "express-normalize-query-params-middleware": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/express-normalize-query-params-middleware/-/express-normalize-query-params-middleware-0.5.1.tgz", + "integrity": "sha1-2+HoE5rssjT7attcAFnHXblzPSo=" + }, + "express-openapi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/express-openapi/-/express-openapi-7.0.1.tgz", + "integrity": "sha512-64YwTWpxgVGnwoLi4zvKaQ5RWIV0dkxVE4GGkBF7D89RI0/I6gTRUDL25Il4AK3cUqyLtxnX2X5BZ2YRvRx5uQ==", + "requires": { + "express-normalize-query-params-middleware": "^0.5.0", + "openapi-framework": "^7.0.1", + "openapi-types": "^7.0.1" + } + }, "ext": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", @@ -2829,7 +2872,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -2917,7 +2960,7 @@ "factory-girl": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", - "integrity": "sha1-N4yqvgOqx7Mn1H2eKLTwLO0MPAs=", + "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", "dev": true, "requires": { "babel-runtime": "^6.11.6", @@ -2939,13 +2982,12 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "fast-glob": { @@ -2977,8 +3019,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -2989,7 +3030,7 @@ "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha1-EkqohYmSYfaK7bQqfAgN6dpgh0M=" + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, "fastq": { "version": "1.8.0", @@ -3003,12 +3044,12 @@ "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha1-P/tjlUU+Pz7/+FBATwpZtnR/X0E=" + "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { "flat-cache": "^2.0.1" @@ -3024,7 +3065,7 @@ "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -3042,7 +3083,7 @@ "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -3056,7 +3097,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -3064,13 +3105,12 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^3.0.0" } }, "findup-sync": { @@ -3104,7 +3144,7 @@ "flat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha1-CQvsiwXjnLowl0fx1YjwTbr5jbI=", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", "dev": true, "requires": { "is-buffer": "~2.0.3" @@ -3121,7 +3161,7 @@ "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { "flatted": "^2.0.0", @@ -3132,7 +3172,7 @@ "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -3143,7 +3183,7 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "flush-write-stream": { @@ -3191,12 +3231,12 @@ "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha1-JsrYAXlnrqhzG8QpYdBKPVmIrMw=" + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" } @@ -3227,7 +3267,7 @@ "formidable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=" + "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" }, "forwarded": { "version": "0.1.2", @@ -3299,6 +3339,11 @@ } } }, + "fs-routes": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-routes/-/fs-routes-7.0.1.tgz", + "integrity": "sha512-kSAfx/P8oLSi5+tblecTETcJJ/Q+qL+xzGx4hns/+gHXMkTOZEzG73/2dBDW1FFy5+ZW080XoMaBAN2kCN55aQ==" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3318,7 +3363,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "functional-red-black-tree": { @@ -3330,7 +3375,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=" + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { "version": "2.0.0", @@ -3341,7 +3386,7 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, "get-stream": { @@ -3378,7 +3423,7 @@ "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3391,7 +3436,7 @@ "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -3694,13 +3739,13 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "graphlib": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha1-V2HUFHN4cAhMkux7XbywWSydNdo=", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", "requires": { "lodash": "^4.17.15" } @@ -3708,7 +3753,7 @@ "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, "gulp": { @@ -3806,7 +3851,7 @@ "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -3821,7 +3866,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -3880,7 +3925,7 @@ "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "homedir-polyfill": { @@ -3894,7 +3939,7 @@ "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "http-cache-semantics": { @@ -3906,7 +3951,7 @@ "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -3923,15 +3968,20 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "ignore-by-default": { @@ -3943,7 +3993,7 @@ "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3990,7 +4040,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "interpret": { "version": "2.2.0", @@ -4006,7 +4056,7 @@ "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-absolute": { "version": "1.0.0", @@ -4035,12 +4085,6 @@ } } }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=", - "dev": true - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4050,7 +4094,7 @@ "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -4064,7 +4108,7 @@ "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-ci": { @@ -4097,7 +4141,7 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-descriptor": { @@ -4117,6 +4161,11 @@ } } }, + "is-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-dir/-/is-dir-1.0.0.tgz", + "integrity": "sha1-QdN/SV/MrMBaR3jWboMCTCkro/8=" + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -4130,12 +4179,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } @@ -4150,12 +4199,6 @@ "is-path-inside": "^3.0.1" } }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha1-Ug2vxDB7uOvDO4E95c58lADWRKE=", - "dev": true - }, "is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", @@ -4171,7 +4214,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-obj": { @@ -4192,12 +4235,6 @@ "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", "dev": true }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4223,22 +4260,10 @@ "is-unc-path": "^1.0.0" } }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha1-0WBK/asXJJhtMAkVdfVJRdp+X0M=", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=", - "dev": true - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -4301,32 +4326,26 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha1-FpOnaMHd15yWkFFFlFPwgv6C6fY=", - "dev": true + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha1-k1EVvTfQBqUgRlNevI0H6ckzf1c=", - "dev": true, - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } + "js-base64": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.4.5.tgz", + "integrity": "sha512-Ub/AANierdcT8nm4ndBn3KzpZQ3MdHX4a+bwoVdjgeHCZ0ZEcP+UB4nmR4Z5lR6SH3Y+qAPmgVR0RxKJNHNHEg==" }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4347,7 +4366,7 @@ "json-refs": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", - "integrity": "sha1-EIn0rPJjoxUseQR5SFGVzWRJ6FU=", + "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", "requires": { "commander": "~4.1.1", "graphlib": "^2.1.8", @@ -4362,15 +4381,14 @@ "commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha1-n9YCvZNilOnp70aj9NaWQESxgGg=" + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" } } }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -4387,7 +4405,7 @@ "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha1-AOceC431TCEhofJhN98igGc7zA0=", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "requires": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -4404,7 +4422,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4417,7 +4435,7 @@ "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -4425,9 +4443,9 @@ } }, "jwks-rsa": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.8.1.tgz", - "integrity": "sha1-N1xipQxMqAWtW9aCwSyKaV3hPd8=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.9.0.tgz", + "integrity": "sha512-UPCfQQg0s2kF2Ju6UFJrQH73f7MaVN/hKBnYBYOp+X9KN4y6TLChhLtaXS5nRKbZqshwVdrZ9OY63m/Q9CLqcg==", "requires": { "@types/express-jwt": "0.0.42", "axios": "^0.19.2", @@ -4441,7 +4459,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { "ms": "^2.1.1" } @@ -4449,14 +4467,14 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -4536,7 +4554,7 @@ "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha1-4sVwo4ADiPtEQH6FFTHB1nCwYbM=" + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "last-run": { "version": "1.1.1", @@ -4587,7 +4605,7 @@ "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -4612,7 +4630,7 @@ "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" }, "load-json-file": { "version": "4.0.0", @@ -4635,18 +4653,19 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=" + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash._arraypool": { "version": "2.4.1", @@ -4904,6 +4923,11 @@ "lodash.isobject": "~2.4.1" } }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "lodash.noop": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.4.1.tgz", @@ -4931,7 +4955,7 @@ "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q=", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, "requires": { "chalk": "^2.4.2" @@ -4940,7 +4964,7 @@ "logform": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha1-QPA20ZFh/Ha2irUP3H/klVREkvI=", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -4952,7 +4976,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4974,7 +4998,7 @@ "lru-memoizer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha1-XGtDZZx4rQ6eZb+BqeXvHuEJot0=", + "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", "requires": { "lodash.clonedeep": "^4.5.0", "lru-cache": "~4.0.0" @@ -5007,7 +5031,8 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=" + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, "make-iterator": { "version": "1.0.1", @@ -5197,17 +5222,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "requires": { "mime-db": "1.44.0" } @@ -5221,7 +5246,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } @@ -5229,7 +5254,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mixin-deep": { "version": "1.3.2", @@ -5253,54 +5278,75 @@ "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { "minimist": "^1.2.5" } }, "mocha": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.1.tgz", - "integrity": "sha1-HeG6TposlV2WuE5GnXVAhIIjWS0=", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", "dev": true, "requires": { - "ansi-colors": "4.1.1", + "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", - "chokidar": "3.3.1", + "chokidar": "3.3.0", "debug": "3.2.6", - "diff": "4.0.2", + "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "find-up": "4.1.0", - "glob": "7.1.6", + "find-up": "3.0.0", + "glob": "7.1.3", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "3.13.1", "log-symbols": "3.0.0", "minimatch": "3.0.4", - "ms": "2.1.2", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "4.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", - "which": "2.0.2", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", "wide-align": "1.1.3", - "workerpool": "6.0.0", "yargs": "13.3.2", "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.1" + "yargs-unparser": "1.6.0" }, "dependencies": { + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { "string-width": "^3.1.0", @@ -5311,23 +5357,44 @@ "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", - "dev": true + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -5338,48 +5405,32 @@ "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "picomatch": "^2.0.4" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -5390,40 +5441,25 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" } }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha1-hXE5dakfuHvxswXMp3OV5A0qZKc=", - "dev": true - }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "has-flag": "^3.0.0" } }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -5434,7 +5470,7 @@ "yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { "cliui": "^5.0.0", @@ -5447,23 +5483,12 @@ "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^13.1.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - } } }, "yargs-parser": { "version": "13.1.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -5475,15 +5500,7 @@ "moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha1-i/9OPiaiNiIN/j423nVrbrqgEF0=" - }, - "moment-timezone": { - "version": "0.5.31", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", - "integrity": "sha1-nEDYxQJvDHq0bto9Y+ScFVFI3gU=", - "requires": { - "moment": ">= 2.9.0" - } + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" }, "mongodb-uri": { "version": "0.9.7", @@ -5498,7 +5515,7 @@ "multer": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha1-Lx9NEtuu66dMs35iPyNL9NPSBXo=", + "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", "requires": { "append-field": "^1.0.0", "busboy": "^0.2.11", @@ -5532,7 +5549,7 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nan": { "version": "2.14.1", @@ -5578,7 +5595,7 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "next-tick": { "version": "1.0.0", @@ -5595,7 +5612,7 @@ "nock": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", - "integrity": "sha1-n4HwRJmvaof5xBmgI5ILYj1xURA=", + "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", "dev": true, "requires": { "debug": "^4.1.0", @@ -5607,7 +5624,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -5616,11 +5633,21 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, "node-fs": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/node-fs/-/node-fs-0.1.7.tgz", @@ -5673,7 +5700,7 @@ "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -5685,7 +5712,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "normalize-url": { @@ -5762,13 +5789,13 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA=", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { @@ -5782,7 +5809,7 @@ "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { "define-properties": "^1.1.2", @@ -5802,6 +5829,16 @@ "isobject": "^3.0.0" } }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -5848,15 +5885,105 @@ "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha1-4GvBdK7SFO1Y7e3lc7Qzu/gny0U=", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "requires": { "fn.name": "1.x.x" } }, + "openapi-default-setter": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-default-setter/-/openapi-default-setter-7.0.1.tgz", + "integrity": "sha512-O9jhaZPEEJzI1HSG3Yw5rOIC0EpZ9PjRJgtksXKuSMyEoxUDnl7zQ27LuFRR1ykSMVhMt8vHMrQBQIwLW8S0yQ==", + "requires": { + "openapi-types": "^7.0.1" + } + }, + "openapi-framework": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-framework/-/openapi-framework-7.0.1.tgz", + "integrity": "sha512-ENQHf+tEqeGp6vykUYiw0uHvMEM3Oqi0SaBs8JlciEuo/fhhqrPmNzNa45xPFYWKYRJ5KpdFWcDlOIYf9gRkog==", + "requires": { + "difunc": "0.0.4", + "fs-routes": "^7.0.1", + "glob": "*", + "is-dir": "^1.0.0", + "js-yaml": "^3.10.0", + "openapi-default-setter": "^7.0.1", + "openapi-request-coercer": "^7.0.1", + "openapi-request-validator": "^7.0.1", + "openapi-response-validator": "^7.0.1", + "openapi-schema-validator": "^7.0.1", + "openapi-security-handler": "^7.0.1", + "openapi-types": "^7.0.1", + "ts-log": "^2.1.4" + } + }, + "openapi-jsonschema-parameters": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-jsonschema-parameters/-/openapi-jsonschema-parameters-7.0.1.tgz", + "integrity": "sha512-PuzKYEILBg4mu9uyoHn7wUGPrx3ds9YJr8t0yvOhAkNITWmXCjuh/HgfoOi+6MUu2Rapj+6tk6lYfeVPcgqi3g==", + "requires": { + "openapi-types": "^7.0.1" + } + }, + "openapi-request-coercer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-request-coercer/-/openapi-request-coercer-7.0.1.tgz", + "integrity": "sha512-nKSRnLX7KQ3Iu1TTZ+1PdEoz0Ke47vH4EcZIM9EOkdqadCFj2pSG/6oMcyqipCs2X7oMFi9Df/UGDRnTdzmPog==", + "requires": { + "openapi-types": "^7.0.1", + "ts-log": "^2.1.4" + } + }, + "openapi-request-validator": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-request-validator/-/openapi-request-validator-7.0.1.tgz", + "integrity": "sha512-qQBI3iiQ2JFokg3tdIOLo38ny7xRNzJZgcMwAS13WFSrUE9kcA6JAHI2cC5x3Q0EPpOtxWnzOaXwiZUJJ7MDOQ==", + "requires": { + "ajv": "^6.5.4", + "content-type": "^1.0.4", + "openapi-jsonschema-parameters": "^7.0.1", + "openapi-types": "^7.0.1", + "ts-log": "^2.1.4" + } + }, + "openapi-response-validator": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-response-validator/-/openapi-response-validator-7.0.1.tgz", + "integrity": "sha512-Fxr9YdQ6s7/SIvvM888iWnc1GUn/fFxTaMFqHkUv0/eNCYoBfOwAKj9aptaRfL+BJXlsVdXWCJd3GWkwn8sIJA==", + "requires": { + "ajv": "^6.5.4", + "openapi-types": "^7.0.1" + } + }, + "openapi-schema-validator": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-schema-validator/-/openapi-schema-validator-7.0.1.tgz", + "integrity": "sha512-P/dmF14xWbyaFVcoS1Fs2tUP4AhJO+eEnZV+jbApeo3569/Z2fiki6Mb6Rs7cfi0ewNnV4L4HiYH+HPZaKWnjQ==", + "requires": { + "ajv": "^6.5.2", + "lodash.merge": "^4.6.1", + "openapi-types": "^7.0.1", + "swagger-schema-official": "2.0.0-bab6bed" + } + }, + "openapi-security-handler": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-security-handler/-/openapi-security-handler-7.0.1.tgz", + "integrity": "sha512-fiRJE2Z5F0tY9QBssBX9g8Txtr0oj1BOU0nOZ6QHHXQdCYxebszGgcXD63uy0UJQwzwVOMs/AlCnKNVS/yMSEg==", + "requires": { + "openapi-types": "^7.0.1" + } + }, + "openapi-types": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-7.0.1.tgz", + "integrity": "sha512-6pi4/Fw+JIW1HHda2Ij7LRJ5QJ8f6YzaXnsRA6m44BJz8nLq/j5gVFzPBKJo+uOFhAeHqZC/3uzhTpYPga3Q/A==" + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -5894,18 +6021,18 @@ "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^2.0.0" } }, "p-map": { @@ -5920,7 +6047,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "package-json": { "version": "6.5.0", @@ -5945,12 +6072,12 @@ "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ=" + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" @@ -5998,7 +6125,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -6012,9 +6139,9 @@ "dev": true }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { @@ -6031,7 +6158,7 @@ "path-loader": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", - "integrity": "sha1-3T0b1Uy28uZCOvKtM0pBzAvOTPY=", + "integrity": "sha512-CMP0v6S6z8PHeJ6NFVyVJm6WyJjIwFvyz2b0n2/4bKdS/0uZa/9sKUlYZzubrn3zuDRU0zIuEDX9DZYQ2ZI8TA==", "requires": { "native-promise-only": "^0.8.1", "superagent": "^3.8.3" @@ -6040,7 +6167,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-root": { "version": "0.1.1", @@ -6075,7 +6202,7 @@ "pg": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", - "integrity": "sha1-lBODMA047vUey4igGIzsRBq2TYE=", + "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -6097,27 +6224,27 @@ "pg-connection-string": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", - "integrity": "sha1-wT/LhMKY0L+puhK0DdbCPZRvVdY=" + "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha1-lDvUY79bcbQXARX4D478mgwOt4w=" + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, "pg-pool": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", - "integrity": "sha1-X0r8D1gGNlmu76lS02r0n6KLMOA=" + "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" }, "pg-protocol": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", - "integrity": "sha1-KKFJLN4RZG/y0tBr3uQqO6BfEmw=" + "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" }, "pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha1-LQJQ1jZFT3z6O2rgOC/fqAYyVKM=", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "requires": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -6137,7 +6264,7 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "pidtree": { @@ -6203,7 +6330,7 @@ "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha1-SPj84FT7xpZxmZMpuINLdyZS2C4=" + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" }, "postgres-bytea": { "version": "1.0.0", @@ -6218,7 +6345,7 @@ "postgres-interval": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha1-tGDILLFYdQd4iBmgaqD//bNURpU=", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "requires": { "xtend": "^4.0.0" } @@ -6226,7 +6353,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prepend-http": { @@ -6238,13 +6365,13 @@ "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -6264,22 +6391,9 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "promise.allsettled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha1-1m94+7YA6D6GPYk+mLPUN2qcR8k=", - "dev": true, - "requires": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - } - }, "prompt": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz", @@ -6329,13 +6443,13 @@ "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha1-QM3tqxgIXHkjNOZPCsFyVtOPmkU=", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" @@ -6373,6 +6487,11 @@ "pump": "^2.0.0" } }, + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, "pupa": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", @@ -6385,26 +6504,22 @@ "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha1-kJCykNH5FyjTwi5UhDykSupatoc=" + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -6415,7 +6530,7 @@ "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6551,7 +6666,7 @@ "readdirp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha1-mERY0ToeQuLp9YQbEp4WLzaa/xc=", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "dev": true, "requires": { "picomatch": "^2.0.7" @@ -6568,7 +6683,7 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-not": { @@ -6583,7 +6698,7 @@ "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "registry-auth-token": { @@ -6708,12 +6823,12 @@ "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=" + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } @@ -6730,7 +6845,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-options": { @@ -6761,14 +6876,6 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, - "retry-as-promised": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", - "integrity": "sha1-dp9j1Ta+xHg1SdsHd8tW2t2dhUM=", - "requires": { - "any-promise": "^1.3.0" - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -6783,7 +6890,7 @@ "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -6797,7 +6904,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -6810,12 +6917,17 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { "version": "3.1.1", @@ -6846,7 +6958,7 @@ "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -6866,7 +6978,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" }, @@ -6881,81 +6993,14 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, - "sequelize": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.3.3.tgz", - "integrity": "sha512-WO/b1ehjSFKlBCHzwZoaPhoW3WyXXy9x74yPrOP8NpE67wzbv0dIucDO4a+THLVyl3lnv3nFMZdJRdkUgb/ZAw==", - "requires": { - "debug": "^4.1.1", - "dottie": "^2.0.0", - "inflection": "1.12.0", - "lodash": "^4.17.15", - "moment": "^2.26.0", - "moment-timezone": "^0.5.31", - "retry-as-promised": "^3.2.0", - "semver": "^7.3.2", - "sequelize-pool": "^6.0.0", - "toposort-class": "^1.0.1", - "uuid": "^8.1.0", - "validator": "^10.11.0", - "wkx": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=" - }, - "validator": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha1-ADEI6m6amHTTHMyeUAaFbM12sig=" - }, - "wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "requires": { - "@types/node": "*" - } - } - } - }, - "sequelize-pool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", - "integrity": "sha1-yqoMHjJNPCw6OZ/tLHmYlwkl1mg=" - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -6992,7 +7037,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "shebang-command": { "version": "1.2.0", @@ -7039,12 +7084,12 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=" + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -7185,7 +7230,8 @@ "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -7194,7 +7240,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -7206,7 +7253,7 @@ "spark-md5": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", - "integrity": "sha1-g6DiVXNPKrTlxGblos/JuiqiEk0=" + "integrity": "sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig==" }, "sparkles": { "version": "1.0.1", @@ -7217,7 +7264,7 @@ "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -7227,13 +7274,13 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -7243,13 +7290,13 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "requires": { "through": "2" } @@ -7267,6 +7314,11 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "sql-template-strings": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/sql-template-strings/-/sql-template-strings-2.2.2.tgz", + "integrity": "sha1-PxFQiiWt384hejBCqdMAwxk7lv8=" + }, "ssh2": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.5.4.tgz", @@ -7334,7 +7386,7 @@ "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7364,7 +7416,7 @@ "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7374,7 +7426,7 @@ "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7392,7 +7444,7 @@ "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -7415,7 +7467,7 @@ "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha1-Rg6g29t9WxG8T3jeulZfhqF44Sg=", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "requires": { "component-emitter": "^1.2.0", "cookiejar": "^2.1.0", @@ -7461,7 +7513,7 @@ "supertest": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", - "integrity": "sha1-wiNNvdbcebbxW5nI1ld7kOTOPzY=", + "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", "dev": true, "requires": { "methods": "^1.1.2", @@ -7471,7 +7523,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7517,10 +7569,15 @@ } } }, + "swagger-schema-official": { + "version": "2.0.0-bab6bed", + "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", + "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=" + }, "swagger-tools": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/swagger-tools/-/swagger-tools-0.10.4.tgz", - "integrity": "sha1-KUmwDKF9oNT5GtdMRAJ94lDE2Ek=", + "integrity": "sha512-VQpijIi8cpB/frUZOZlVpS7U3CrdSAZBfiHu448R1njiNXUnE7heF3Svz3qFBr5SYtaPvaqWpHMbvboirCXVzA==", "requires": { "async": "^2.5.0", "body-parser": "1.18.2", @@ -7544,7 +7601,7 @@ "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { "lodash": "^4.17.14" } @@ -7569,7 +7626,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -7577,7 +7634,7 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" } } }, @@ -7600,12 +7657,12 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "path-to-regexp": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", - "integrity": "sha1-Nc5/Mz1WFvHB4b/iZsOrouWy5wQ=" + "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" }, "raw-body": { "version": "2.3.2", @@ -7644,14 +7701,27 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" } } }, + "swagger-ui-dist": { + "version": "3.32.5", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.32.5.tgz", + "integrity": "sha512-3SKHv8UVqsKKknivtACHbFDGcn297jkoZN2h6zAZ7b2yoaJNMaRadQpC3qFw3GobZTGzqHCgHph4ZH9NkaCjrQ==" + }, + "swagger-ui-express": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.4.tgz", + "integrity": "sha512-Ea96ecpC+Iq9GUqkeD/LFR32xSs8gYqmTW1gXCuKg81c26WV6ZC2FsBSPVExQP6WkyUuz5HEiR0sEv/HCC343g==", + "requires": { + "swagger-ui-dist": "^3.18.1" + } + }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -7663,13 +7733,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "is-fullwidth-code-point": { @@ -7681,7 +7751,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -7692,7 +7762,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -7714,7 +7784,7 @@ "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, "text-table": { "version": "0.2.0", @@ -7856,7 +7926,7 @@ "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -7916,12 +7986,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" - }, - "toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "touch": { "version": "3.1.0", @@ -7940,12 +8005,18 @@ "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk=" + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "ts-log": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.1.4.tgz", + "integrity": "sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ==" }, "ts-mocha": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", - "integrity": "sha1-8VSbSLRvU9euHcy7JjE8eHmssZA=", + "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", + "dev": true, "requires": { "ts-node": "7.0.1", "tsconfig-paths": "^3.5.0" @@ -7954,12 +8025,14 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, "requires": { "arrify": "^1.0.0", "buffer-from": "^1.1.0", @@ -7974,14 +8047,16 @@ "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=" + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true } } }, "ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha1-7uA3ZGM7EjTd03+NuewQt17H+40=", + "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "dev": true, "requires": { "arg": "^4.1.0", "diff": "^4.0.1", @@ -7993,7 +8068,8 @@ "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, "optional": true, "requires": { "@types/json5": "^0.0.29", @@ -8006,6 +8082,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, "optional": true, "requires": { "minimist": "^1.2.0" @@ -8015,6 +8092,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, "optional": true } } @@ -8022,13 +8100,13 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tsutils": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -8037,7 +8115,7 @@ "tunnel-ssh": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", - "integrity": "sha1-swH3czxz3OoWFkZrnIe2B/SVi0U=", + "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", "requires": { "debug": "2.6.9", "lodash.defaults": "^4.1.0", @@ -8047,7 +8125,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -8063,7 +8141,7 @@ "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -8072,19 +8150,19 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -8107,7 +8185,7 @@ "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha1-mNYApevcOPQMsndSLxLcgA6eJfo=" + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" }, "unc-path-regex": { "version": "0.1.2", @@ -8319,7 +8397,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { "punycode": "^2.1.0" }, @@ -8336,6 +8414,15 @@ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -8376,12 +8463,12 @@ "uuid": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha1-q3OAhcoi3JqMknJeRZsdUH311uo=" + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" }, "v8-compile-cache": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, "v8flags": { @@ -8395,7 +8482,7 @@ "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -8405,7 +8492,7 @@ "validator": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", - "integrity": "sha1-+IETaEc9IXOp2GEVcrWMV4PyI78=" + "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" }, "value-or-function": { "version": "3.0.0", @@ -8546,7 +8633,7 @@ "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "requires": { "string-width": "^1.0.2 || 2" @@ -8567,7 +8654,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -8597,7 +8684,7 @@ "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha1-rmFyBCyvspeGr6PQnI/4M6t8kXA=", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.1.0", @@ -8613,7 +8700,7 @@ "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha1-s6JoXF67ZB094C0WEALGD8n4VyA=" + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, "is-stream": { "version": "2.0.0", @@ -8623,7 +8710,7 @@ "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8648,7 +8735,7 @@ "winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha1-F69RjappDVsuzMqnrPeyDKeSXlk=", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", "requires": { "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" @@ -8686,13 +8773,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", - "dev": true - }, - "workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha1-harWf6GiyO+ThqG0NTmQD2HQPVg=", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrap-ansi": { @@ -8750,7 +8831,7 @@ "write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -8774,15 +8855,29 @@ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "2.1.2", @@ -8792,7 +8887,7 @@ "yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha1-3AYL8mdEezn3ME6bK/votafdsDs=", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", "requires": { "argparse": "^1.0.7", "glob": "^7.0.5" @@ -8905,28 +9000,26 @@ } }, "yargs-unparser": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", - "integrity": "sha1-vUsO4FtMlNBYkpwyywnj/OcdPF8=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "decamelize": "^1.2.0", "flat": "^4.1.0", - "is-plain-obj": "^1.1.0", - "yargs": "^14.2.3" + "lodash": "^4.17.15", + "yargs": "^13.3.0" }, "dependencies": { "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { "string-width": "^3.1.0", @@ -8937,53 +9030,19 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -8994,7 +9053,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -9003,7 +9062,7 @@ "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -9012,13 +9071,12 @@ } }, "yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha1-Ghw+3O0a+yov6jNgS8bR2NaIpBQ=", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { "cliui": "^5.0.0", - "decamelize": "^1.2.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -9027,13 +9085,13 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^15.0.1" + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", - "integrity": "sha1-VHhq9AuCDcsvuAJbEbTWWddjI7M=", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -9045,12 +9103,13 @@ "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true }, "z-schema": { "version": "3.25.1", "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.25.1.tgz", - "integrity": "sha1-fhRmO+K5YAPZOKVvZE+4VhZD+34=", + "integrity": "sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==", "requires": { "commander": "^2.7.1", "core-js": "^2.5.7", @@ -9062,7 +9121,7 @@ "validator": { "version": "10.11.0", "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha1-ADEI6m6amHTTHMyeUAaFbM12sig=" + "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" } } } diff --git a/api-mobile/package.json b/api-mobile/package.json index fea53a379..9379b2a50 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -25,24 +25,27 @@ "npm": ">= 6.0.0" }, "dependencies": { + "aws-sdk": "~2.742.0", "axios": "~0.19.2", "body-parser": "~1.19.0", - "db-migrate": "~0.11.11", "db-migrate-pg": "~1.2.2", + "db-migrate": "~0.11.11", + "express-openapi": "~7.0.1", "express": "~4.17.1", + "js-base64": "~3.4.5", "jsonwebtoken": "~8.5.1", - "jwks-rsa": "~1.8.1", + "jwks-rsa": "~1.9.0", "knex": "^0.21.4", "memory-cache": "~0.2.0", "moment": "~2.27.0", "pg": "~8.3.0", "qs": "~6.9.4", - "sequelize": "~6.3.3", + "sql-template-strings": "~2.2.2", "swagger-object-validator": "^1.2.2", "swagger-tools": "~0.10.4", - "ts-mocha": "~7.0.0", - "ts-node": "~8.10.2", + "swagger-ui-express": "~4.1.4", "typescript": "~3.9.7", + "uuid": "~8.3.0", "validator": "~13.1.1", "winston": "~3.3.3", "yamljs": "~0.3.0" @@ -50,6 +53,7 @@ "devDependencies": { "@types/body-parser": "~1.19.0", "@types/chai": "~4.2.12", + "@types/express-openapi": "~1.9.0", "@types/express": "~4.17.0", "@types/gulp": "~4.0.6", "@types/jsonwebtoken": "~8.5.0", @@ -57,6 +61,8 @@ "@types/mocha": "~8.0.1", "@types/pg": "~7.14.4", "@types/swagger-tools": "~0.10.6", + "@types/swagger-ui-express": "~4.1.2", + "@types/uuid": "~8.3.0", "@types/yamljs": "~0.2.31", "@typescript-eslint/eslint-plugin": "~3.7.1", "@typescript-eslint/parser": "~3.7.1", @@ -70,11 +76,13 @@ "factory-girl": "~5.0.4", "gulp-typescript": "~5.0.1", "gulp": "~4.0.2", - "mocha": "~8.1.1", + "mocha": "~7.2.0", "nock": "~13.0.3", "nodemon": "~2.0.4", "npm-run-all": "~4.1.5", "prettier": "~2.0.5", - "supertest": "~4.0.2" + "supertest": "~4.0.2", + "ts-mocha": "~7.0.0", + "ts-node": "~8.10.2" } } diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts index 670c546d0..3b869d938 100644 --- a/api-mobile/src/constants/misc.ts +++ b/api-mobile/src/constants/misc.ts @@ -1,3 +1,18 @@ +// Super user role +const ROLE_SUPER_USER = 'SUP'; +// Admin role +const ROLE_ADMIN = 'ADM'; +// Data editor role +const ROLE_DATA_EDITOR = 'DAE'; +// View only role +const ROLE_DATA_VIEWER = 'DAV'; + +// Array of all supported roles +export const ALL_ROLES = [ROLE_SUPER_USER, ROLE_ADMIN, ROLE_DATA_EDITOR, ROLE_DATA_VIEWER]; + +// Array of all roles with read and write capabilities +export const WRITE_ROLES = [ROLE_SUPER_USER, ROLE_ADMIN, ROLE_DATA_EDITOR]; + /** * Caching keys, for use with `memory-cache`. * @@ -15,8 +30,9 @@ export enum CacheKeys { * @enum {number} */ export enum ActivityType { - Plant = 'plant', - Animal = 'animal' + OBSERVATION = 'Observation', + MONITOR = 'Monitor', + TREATMENT = 'Treatment' } /** @@ -26,6 +42,22 @@ export enum ActivityType { * @enum {number} */ export enum ActivitySubType { - Terrestrial = 'terrestrial', - Aquatic = 'aquatic' + TERRESTRIAL_PLANT = 'Terrestrial Plant', + AQUATIC_PLANT = 'Aquatic Plant', + AQUATIC_TERRESTRIAL_PLANT = 'Aquatic Terrestrial Plant', + TERRESTRIAL_ANIMAL = 'Terrestrial Animal', + AQUATIC_ANIMAL = 'Aquatic Animal', + AQUATIC_TERRESTRIAL_ANIMAL = 'Aquatic Terrestrial Animal' +} + +/** + * Some of the S3 ACL roles supported by default. + * + * Full list: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl + * + * @export + * @enum {number} + */ +export enum S3ACLRole { + AUTH_READ = 'authenticated-read' } diff --git a/api-mobile/src/controllers/activity-controller.ts b/api-mobile/src/controllers/activity-controller.ts deleted file mode 100644 index 79cad040e..000000000 --- a/api-mobile/src/controllers/activity-controller.ts +++ /dev/null @@ -1,80 +0,0 @@ -'use strict'; - -import { getDBConnection } from '../database/db'; -import { ActivityPostBody } from '../models/activity'; -import { postActivitySQL } from '../queries/activity-queries'; -import { ParameterizedQuery } from '../queries/query-types'; -import { validateSwaggerObject, ignoreAdditionalPropertyErrorsOnAnyObjectFields } from '../utils/controller-utils'; -import { getLogger } from '../utils/logger'; -import { sendResponse } from '../utils/query-actions'; - -const defaultLog = getLogger('activity-controller'); - -/** - * Authenticated route handler for OPTIONS - * - * @param {*} args - * @param {*} res - * @param {*} next - */ -exports.authenticatedOptions = async function (args: any, res: any, next: any) { - res.status(200).send(); -}; - -/** - * Authenticated route handler for POST - * - * @param {*} args - * @param {*} res - * @param {*} next - * @returns response containing the newly created activity record. - */ -exports.authenticatedPost = async function (args: any, res: any, next: any) { - try { - defaultLog.debug({ label: 'authenticatedPost', message: 'params', arguments: args.swagger.params }); - - const validationResult = await validateSwaggerObject( - args.swagger.params.postBody.value, - 'ActivityPostBody', - './src/swagger/swagger.yaml', - ignoreAdditionalPropertyErrorsOnAnyObjectFields - ); - - if (validationResult.errors) { - defaultLog.warn({ - label: 'authenticatedPost', - message: validationResult.message, - 'post body params were invalid': validationResult.errors - }); - return sendResponse(res, 400, { 'post body params were invalid': validationResult.errors }); - } - - const data: ActivityPostBody = args.swagger.params.postBody.value; - - const sanitizedActivityData = new ActivityPostBody(data); - sanitizedActivityData.activityPostBody = args.swagger.params.postBody.value; - - const connection = await getDBConnection(); - - if (!connection) { - return sendResponse(res, 503); - } - - const parameterizedQuery: ParameterizedQuery = postActivitySQL(sanitizedActivityData); - - if (!parameterizedQuery) { - return sendResponse(res, 400); - } - - const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); - - const result = (response && response.rows && response.rows[0]) || null; - - connection.release(); - - return sendResponse(res, 200, result); - } catch (error) { - defaultLog.error({ label: 'authenticatedPost', message: 'unexpected error', error }); - return sendResponse(res, 500); - } -}; diff --git a/api-mobile/src/controllers/misc-controller.ts b/api-mobile/src/controllers/misc-controller.ts deleted file mode 100644 index 96eeb0a70..000000000 --- a/api-mobile/src/controllers/misc-controller.ts +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -import { getLogger } from '../utils/logger'; -import { sendResponse } from '../utils/query-actions'; - -const defaultLog = getLogger('misc-controller'); - -/** - * Public route handler for OPTIONS - * - * @param {*} args - * @param {*} res - * @param {*} next - */ -exports.publicOptions = async function (args: any, res: any, next: any) { - res.status(200).send(); -}; - -/** - * Public route handler for GET. - * - * @param {*} args - * @param {*} res - * @param {*} next - * @returns response with api-mobile version information. - */ -exports.publicGet = async function (args: any, res: any, next: any) { - defaultLog.debug({ label: 'publicGet', message: 'params', arguments: args.swagger.params }); - - const versionInfo = { - version: process.env.VERSION || '0', - environment: process.env.environment || process.env.NODE_ENV || 'localhost' - }; - - return sendResponse(res, 200, versionInfo); -}; diff --git a/api-mobile/src/controllers/observation-plant-controller.ts b/api-mobile/src/controllers/observation-plant-controller.ts deleted file mode 100644 index d578eaf02..000000000 --- a/api-mobile/src/controllers/observation-plant-controller.ts +++ /dev/null @@ -1,80 +0,0 @@ -'use strict'; - -import { ParameterizedQuery } from '../queries/query-types'; -import { getDBConnection } from '../database/db'; -import { getAllObservationPlantSQL, getSingleObservationPlantSQL } from '../queries/observation-queries'; -import { getLogger } from '../utils/logger'; -import { sendResponse } from '../utils/query-actions'; - -const defaultLog = getLogger('observation-plant-controller'); - -/** - * Authenticated route handler for OPTIONS - * - * @param {*} args - * @param {*} res - * @param {*} next - */ -exports.authenticatedOptions = async function (args: any, res: any, next: any) { - res.status(200).send(); -}; - -/** - * Authenticated route handler for GET - * - * @param {*} args - * @param {*} res - * @param {*} next - * @returns response containing an array of all observations, or an empty array if none found. - */ -exports.authenticatedGet_All = async function (args: any, res: any, next: any) { - defaultLog.debug({ label: 'authenticatedGet', message: 'params', arguments: args.swagger.params }); - - const connection = await getDBConnection(); - - if (!connection) { - return sendResponse(res, 503); - } - - const response = await connection.query(getAllObservationPlantSQL()); - - const result = (response && response.rowCount && response.rows[0]) || []; - - connection.release(); - - return sendResponse(res, 200, result); -}; - -/** - * Authenticated route handler for GET - * - * @param {*} args - * @param {*} res - * @param {*} next - * @returns response containing the single observation found, or null if no matching observation found. - */ -exports.authenticatedGet_One = async function (args: any, res: any, next: any) { - defaultLog.debug({ label: 'authenticatedGet', message: 'params', arguments: args.swagger.params }); - - const observationId = args.swagger.params.observationId.value; - - const connection = await getDBConnection(); - - if (!connection) { - return sendResponse(res, 503); - } - - const parameterizedQuery: ParameterizedQuery = getSingleObservationPlantSQL(observationId); - - if (!parameterizedQuery) { - return sendResponse(res, 400); - } - - const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); - - const result = (response && response.rowCount && response.rows[0]) || null; - - connection.release(); - - return sendResponse(res, 200, result); -}; diff --git a/api-mobile/src/controllers/user-controller.ts b/api-mobile/src/controllers/user-controller.ts deleted file mode 100644 index daa42f0c5..000000000 --- a/api-mobile/src/controllers/user-controller.ts +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -import { getDBConnection } from '../database/db'; -import { getUserWithRolesSQL } from '../queries/user-queries'; - -import { getLogger } from '../utils/logger'; -import { ParameterizedQuery } from '../queries/query-types'; -const defaultLog = getLogger('user-controller'); - -/** - * Finds a single user based on their email. - * - * @param {string} email - * @returns user - */ -export const getUserWithRoles = async function (email: string) { - defaultLog.debug({ label: 'getUserWithRoles', message: 'params', email }); - - if (!email) { - return null; - } - - const connection = await getDBConnection(); - - if (!connection) { - return null; - } - - const parameterizedQuery: ParameterizedQuery = getUserWithRolesSQL(email); - - if (!parameterizedQuery) { - return null; - } - - const response = await connection.query(parameterizedQuery.sql, parameterizedQuery.values); - - const result = (response && response.rowCount && response.rows[0]) || null; - - connection.release(); - - return result; -}; diff --git a/api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts b/api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts new file mode 100644 index 000000000..0a404cbe5 --- /dev/null +++ b/api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts @@ -0,0 +1,36 @@ +import Knex from 'knex'; + +const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; + +/** + * Adds a text array column `media_keys`. + * + * @export + * @param {Knex} knex + * @returns {Promise} + */ +export async function up(knex: Knex): Promise { + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN media_keys text[]; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.media_keys IS 'Array of keys used to fetch original files from external storage'; + `); +} + +/** + * Drops the column `media_keys`. + * + * @export + * @param {Knex} knex + * @returns {Promise} + */ +export async function down(knex: Knex): Promise { + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + ALTER TABLE IF EXISTS ${DB_SCHEMA}.activity_incoming_data DROP COLUMN media_keys; + `); +} diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 8f983dcb0..1b245a1a8 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -1,3 +1,48 @@ +import { parseBase64DataURLString } from '../utils/file-utils'; + +/** + * A single media item. + * + * @export + * @interface IMediaItem + */ +export interface IMediaItem { + fileName: string; + encodedFile: string; +} + +/** + * Media object for Data URL base64 encoded files. + * + * @export + * @class MediaBase64 + */ +export class MediaBase64 { + fileName: string; + contentType: string; + contentString: string; + fileBuffer: Buffer; + + /** + * Creates an instance of MediaBase64. + * + * @param {IMediaItem} obj + * @memberof MediaBase64 + */ + constructor(obj: IMediaItem) { + const base64StringParts = parseBase64DataURLString(obj.encodedFile); + + if (!base64StringParts) { + throw new Error('encodedFile could not be parsed'); + } + + this.contentType = base64StringParts.contentType; + this.contentString = base64StringParts.contentType; + this.fileName = obj.fileName; + this.fileBuffer = Buffer.from(base64StringParts.contentString, 'base64'); + } +} + /** * Activity post body. * @@ -5,24 +50,45 @@ * @class ActivityPostBody */ export class ActivityPostBody { - activityType: string; - activitySubType: string; - date: string; - locationAndGeometry: object; activityPostBody: object; activityResponseBody: object; + + activityType: string; activityTypeData: object; + + activitySubType: string; activitySubTypeData: object; - geom: object; + date: string; + + locationAndGeometry: object; + + mediaKeys: string[]; + + /** + * Creates an instance of ActivityPostBody. + * + * @param {*} [obj] + * @memberof ActivityPostBody + */ constructor(obj?: any) { + // Add whole original object for auditing + this.activityPostBody = { + ...obj, + // Strip out any media base64 strings which would convolute the record + media: (obj.media && obj.media.map((item: MediaBase64) => item.fileName)) || [] + }; + this.activityType = (obj && obj.activityType) || null; + this.activityTypeData = (obj && obj.activityTypeData) || null; + this.activitySubType = (obj && obj.activitySubType) || null; + this.activitySubTypeData = (obj && obj.activitySubTypeData) || null; + this.date = (obj && obj.date) || null; + this.locationAndGeometry = (obj && obj.locationAndGeometry) || null; - this.activityPostBody = null; - this.activityTypeData = (obj && obj.activityTypeData) || null; - this.activitySubTypeData = (obj && obj.activitySubTypeData) || null; - this.geom = (obj && obj.geom) || null; + + this.mediaKeys = (obj && obj.mediaKeys) || null; } } diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml new file mode 100644 index 000000000..a64e036f7 --- /dev/null +++ b/api-mobile/src/openapi/api-doc.yaml @@ -0,0 +1,640 @@ +openapi: 3.0.0 + +info: + version: 0.0.0 + title: invasivesbc-api-mobile + description: API for InvasivesBC mobile. + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + +servers: + - url: http://localhost:3002/api + description: local api + - url: http://localhost:7080/api + description: local api via docker + - url: https://api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca + description: deployed api in dev environment + - url: https://api-mobile-test-invasivesbc.pathfinder.gov.bc.ca + description: deployed api in test environment + - url: https://api-mobile-invasivesbc.pathfinder.gov.bc.ca + description: deployed api in prod environmen + +tags: + - name: misc + description: Miscellaneous endpoints + - name: activity + description: | + Activity endpoints + An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' + - name: observation + description: Observation activity endpoints + - name: plant + description: Plant endpoints + - name: code + description: Code endpoints + +externalDocs: + description: Visit GitHub to find out more about this API + url: https://github.com/bcgov/lucy-web.git + +# paths are generated via express-openapi based on the ./src/paths/* structure +paths: {} + +# See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#componentsObject for supported component types +components: + securitySchemes: + Bearer: # arbitrary name for the security scheme + type: http + scheme: bearer + bearerFormat: JWT # optional, arbitrary value for documentation purposes + description: | + To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. + The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` + + responses: + "401": + description: Unauthorized user + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + "503": + description: Service unavailable + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + default: + description: Unexpected error + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + schemas: + Error: + description: Error response object. + properties: + status: + type: number + message: + type: string + errors: + type: array + items: + type: string + + ObservationPlantResponse: + description: | + Observation plant response object. + Returned in the 200 responses for all `/observation/plant/*` routes. + type: object + required: + - observation_id + - observation_date + - access_description + - observer_first_name + - observer_last_name + - sample_identifier + - range_unit_number + - general_comment + - legacy_site_ind + - early_detection_rapid_resp_ind + - research_detection_ind + - sample_taken_ind + - well_ind + - special_care_ind + - biological_ind + - aquatic_ind + - species_id + - jurisdiction_code_id + - species_density_code_id + - species_distribution_code_id + - observation_type_code_id + - species_agency_code_id + - soil_texture_code_id + - specific_use_code_id + - observation_slope_code_id + - observation_aspect_code_id + - observation_proposed_action_code_id + - created_at + - updated_at + - updated_by_user_id + - created_by_user_id + - space_geom_id + - hex_id + - hex_sub_id + - total_area + - negative_occurance_ind + - paper_id_primary + - paper_id_secondary + - elevation_meters + - well_proximity + - well_tag + - observation_geometry_code_id + - photo_indicator + - flowering + - bec_zone + - riso + - ipma + - ownership + - regional_district + - flnro_district + - moti_district + - raw_longitude + - raw_latitude + - raw_utm_zone + - raw_utm_easting + - raw_utm_northing + - raw_albers_x + - raw_albers_y + properties: + observation_id: + type: number + observation_date: + type: string + access_description: + type: string + observer_first_name: + type: string + observer_last_name: + type: string + sample_identifier: + type: string + range_unit_number: + type: string + general_comment: + type: string + legacy_site_ind: + type: boolean + early_detection_rapid_resp_ind: + type: boolean + research_detection_ind: + type: boolean + sample_taken_ind: + type: boolean + well_ind: + type: boolean + special_care_ind: + type: boolean + biological_ind: + type: boolean + aquatic_ind: + type: boolean + species_id: + type: object + jurisdiction_code_id: + type: object + species_density_code_id: + type: object + species_distribution_code_id: + type: object + observation_type_code_id: + type: object + species_agency_code_id: + type: object + soil_texture_code_id: + type: object + specific_use_code_id: + type: object + observation_slope_code_id: + type: object + observation_aspect_code_id: + type: object + observation_proposed_action_code_id: + type: object + created_at: + type: string + updated_at: + type: string + updated_by_user_id: + type: number + created_by_user_id: + type: number + space_geom_id: + type: number + hex_id: + type: number + hex_sub_id: + type: number + total_area: + type: number + negative_occurance_ind: + type: boolean + paper_id_primary: + type: string + paper_id_secondary: + type: string + elevation_meters: + type: number + well_proximity: + type: number + well_tag: + type: number + observation_geometry_code_id: + type: object + photo_indicator: + type: boolean + flowering: + type: boolean + bec_zone: + type: string + riso: + type: string + ipma: + type: string + ownership: + type: string + regional_district: + type: string + flnro_district: + type: string + moti_district: + type: string + raw_longitude: + type: number + raw_latitude: + type: number + raw_utm_zone: + type: number + raw_utm_easting: + type: number + raw_utm_northing: + type: number + raw_albers_x: + type: number + raw_albers_y: + type: number + + ObservationCodeResponse: + required: + - message + - data + properties: + message: + type: string + data: + $ref: "#/components/schemas/ObservationCode" + + ObservationCode: + description: Observation code tables. + required: + - observation_aspect_code + - jurisdiction_code + - observation_geometry_code + - observation_type_code + - observation_proposed_action_code + - observation_slope_code + - soil_texture_code + - species_agency_code + - species_density_code + - species_distribution_code + - species + - specific_use_code + properties: + observation_aspect_code: + type: array + items: + $ref: "#/components/schemas/AspectCode" + jurisdiction_code: + type: array + items: + $ref: "#/components/schemas/JurisdictionCode" + observation_geometry_code: + type: array + items: + $ref: "#/components/schemas/ObservationGeometryCode" + observation_type_code: + type: array + items: + $ref: "#/components/schemas/ObservationTypeCode" + observation_proposed_action_code: + type: array + items: + $ref: "#/components/schemas/ProposedActionCode" + observation_slope_code: + type: array + items: + $ref: "#/components/schemas/SlopeCode" + soil_texture_code: + type: array + items: + $ref: "#/components/schemas/SoilTextureCode" + species: + type: array + items: + $ref: "#/components/schemas/Species" + species_density_code: + type: array + items: + $ref: "#/components/schemas/SpeciesDensityCode" + species_distribution_code: + type: array + items: + $ref: "#/components/schemas/SpeciesDistributionCode" + species_agency_code: + type: array + items: + $ref: "#/components/schemas/SpeciesAgencyCode" + specific_use_code: + type: array + items: + $ref: "#/components/schemas/SpecificUseCode" + + AspectCode: + type: object + required: + - observation_aspect_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_aspect_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + JurisdictionCode: + type: object + required: + - jurisdiction_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + jurisdiction_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationGeometryCode: + type: object + required: + - observation_geometry_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_geometry_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationTypeCode: + type: object + required: + - observation_type_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_type_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ProposedActionCode: + type: object + required: + - observation_proposed_action_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_proposed_action_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SlopeCode: + type: object + required: + - observation_slope_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_slope_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SoilTextureCode: + type: object + required: + - soil_texture_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + soil_texture_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + Species: + type: object + required: + - species_id + - mapCode + - earlyDetection + - containmentSpecies + - containmentSpacialRef + - species + - genus + - commonName + - latinName + - updateAt + - createdAt + properties: + species_id: + type: number + mapCode: + type: string + earlyDetection: + type: boolean + containmentSpecies: + type: number + containmentSpacialRef: + type: number + species: + type: string + genus: + type: string + commonName: + type: string + latinName: + type: string + updateAt: + type: string + createdAt: + type: string + + SpeciesDensityCode: + type: object + required: + - species_density_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_density_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesDistributionCode: + type: object + required: + - species_distribution_code_id + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_distribution_code_id: + type: number + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesAgencyCode: + type: object + required: + - species_agency_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_agency_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpecificUseCode: + type: object + required: + - specific_use_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + specific_use_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts new file mode 100644 index 000000000..6150eb8d4 --- /dev/null +++ b/api-mobile/src/paths/activity.ts @@ -0,0 +1,234 @@ +'use strict'; + +import { ManagedUpload } from 'aws-sdk/clients/s3'; +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { SQLStatement } from 'sql-template-strings'; +import { WRITE_ROLES } from '../constants/misc'; +import { getDBConnection } from '../database/db'; +import { ActivityPostBody, IMediaItem, MediaBase64 } from '../models/activity'; +import { postActivitySQL } from '../queries/activity-queries'; +import { uploadFileToS3 } from '../utils/file-utils'; +import { getLogger } from '../utils/logger'; + +const defaultLog = getLogger('activity-controller'); + +export const POST: Operation = [uploadMedia(), createActivity()]; + +POST.apiDoc = { + description: 'Create a new activity.', + tags: ['activity'], + security: [ + { + Bearer: WRITE_ROLES + } + ], + requestBody: { + description: 'Activity post response object.', + content: { + 'application/json': { + schema: { + required: [ + 'activityType', + 'activityTypeData', + 'activitySubType', + 'activitySubTypeData', + 'date', + 'locationAndGeometry' + ], + properties: { + activityType: { + type: 'string' + }, + activityTypeData: { + type: 'object' + }, + activitySubType: { + type: 'string' + }, + activitySubTypeData: { + type: 'object' + }, + date: { + type: 'string', + description: 'Date in YYYY-MM-DD format' + }, + locationAndGeometry: { + type: 'object', + properties: { + anchorPointY: { + type: 'number' + }, + anchorPointX: { + type: 'number' + }, + area: { + type: 'number' + }, + geometry: { + type: 'object', + description: 'A geoJSON object' + }, + jurisdiction: { + type: 'string' + }, + agency: { + type: 'string' + }, + observer1FirstName: { + type: 'string' + }, + observer1LastName: { + type: 'string' + }, + locationComment: { + type: 'string' + }, + generalComment: { + type: 'string' + }, + photoTaken: { + type: 'boolean' + } + } + }, + media: { + description: 'The keys for the uploaded files', + type: 'array', + items: { + type: 'object', + required: ['fileName', 'encodedFile'], + properties: { + fileName: { + type: 'string' + }, + encodedFile: { + type: 'string', + format: 'base64', + description: 'A Data URL base64 encoded image', + example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' + } + } + } + } + } + } + } + } + }, + responses: { + 200: { + description: 'Activity post response object.', + content: { + 'application/json': { + schema: { + required: ['activity_incoming_data_id'], + properties: { + activity_incoming_data_id: { + type: 'number' + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +/** + * Uploads any media in the request to S3, adding their keys to the request, and calling next(). + * + * Does nothing if no media is present in the request. + * + * @returns {RequestHandler} + */ +function uploadMedia(): RequestHandler { + return async (req, res, next) => { + if (!req.body.media || !req.body.media.length) { + // no media objects included, skipping media upload step + return next(); + } + + const rawMediaArray: IMediaItem[] = req.body.media; + + const s3UploadPromises: Promise[] = []; + + rawMediaArray.forEach((rawMedia: IMediaItem) => { + if (!rawMedia) { + return; + } + + let media; + try { + media = new MediaBase64(rawMedia); + } catch (error) { + throw { + status: 400, + message: 'Included media was invalid/encoded incorrectly' + }; + } + + const metadata = { + filename: media.fileName, + username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', + email: (req['auth_payload'] && req['auth_payload'].email) || '' + }; + + s3UploadPromises.push(uploadFileToS3(media, metadata)); + }); + + const results = await Promise.all(s3UploadPromises); + + req['mediaKeys'] = results.map(result => result.Key); + + next(); + }; +} + +/** + * Creates a new activity record. + * + * @returns {RequestHandler} + */ +function createActivity(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); + + const data: ActivityPostBody = { ...req.body, mediaKeys: req['mediaKeys'] }; + + const sanitizedActivityData = new ActivityPostBody(data); + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503 + }; + } + + const sqlStatement: SQLStatement = postActivitySQL(sanitizedActivityData); + + if (!sqlStatement) { + throw { + status: 400 + }; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + + const result = (response && response.rows && response.rows[0]) || null; + + connection.release(); + + return res.status(200).json(result); + }; +} diff --git a/api-mobile/src/controllers/code-controller.ts b/api-mobile/src/paths/code/observation/plant.ts similarity index 67% rename from api-mobile/src/controllers/code-controller.ts rename to api-mobile/src/paths/code/observation/plant.ts index e2e60bd22..cc5403af3 100644 --- a/api-mobile/src/controllers/code-controller.ts +++ b/api-mobile/src/paths/code/observation/plant.ts @@ -1,7 +1,7 @@ -'use strict'; - +import { Operation } from 'express-openapi'; import { PoolClient } from 'pg'; -import { getDBConnection } from '../database/db'; +import { ALL_ROLES, CacheKeys } from '../../../constants/misc'; +import { getDBConnection } from '../../../database/db'; import { getJurisdictionCodesSQL, getObservationAspectCodesSQL, @@ -15,49 +15,64 @@ import { getSpeciesDensityCodesSQL, getSpeciesDistributionCodesSQL, getSpecificUseCodesSQL -} from '../queries/code-queries'; -import { getLogger } from '../utils/logger'; -import { sendResponse } from '../utils/query-actions'; -import { cached } from '../utils/utils'; -import { CacheKeys } from '../constants/misc'; +} from '../../../queries/code-queries'; +import { getLogger } from '../../../utils/logger'; +import { cached } from '../../../utils/utils'; const defaultLog = getLogger('observation-controller'); -/** - * Authenticated route handler for OPTIONS - * - * @param {*} args - * @param {*} res - * @param {*} next - */ -exports.authenticatedOptions = async function (args: any, res: any, next: any) { - res.status(200).send(); -}; +export const GET: Operation = [ + async (req, res, next) => { + defaultLog.debug({ label: 'code-observation-plant' }); -/** - * Authenticated route handler for GET: observation plant codes - * - * @param {*} args - * @param {*} res - * @param {*} next - * @returns response with an object containing arrays of all of the code values related to plant observations. - */ -exports.authenticatedGet_ObservationPlant = async function (args: any, res: any, next: any) { - defaultLog.debug({ label: 'authenticatedGet', message: 'params', arguments: args.swagger.params }); + const connection = await getDBConnection(); - const connection = await getDBConnection(); + if (!connection) { + throw { + status: 503 + }; + } - if (!connection) { - return sendResponse(res, 503); - } + const result = await cached(CacheKeys.ObservationCodePlant, 3600000, () => + getCodesForPlantObservations(connection) + )(); - const result = await cached(CacheKeys.ObservationCodePlant, 3600000, () => - getCodesForPlantObservations(connection) - )(); + connection.release(); - connection.release(); + res.status(200).json(result); + } +]; - return sendResponse(res, 200, result); +GET.apiDoc = { + description: 'Get all observation plant code values.', + tags: ['code'], + operationId: 'code-observation-plant', + security: [ + { + Bearer: ALL_ROLES + } + ], + responses: { + 200: { + description: 'Code values for a plant observation', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/ObservationCodeResponse' + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } }; /** @@ -106,18 +121,18 @@ export const getCodesForPlantObservations = async function (connection: PoolClie }; // Fetch all observation codes - const observation_aspect_code = await connection.query(getObservationAspectCodesSQL()); - const jurisdiction_code = await connection.query(getJurisdictionCodesSQL()); - const observation_geometry_code = await connection.query(getObservationGeometryCodesSQL()); - const observation_type_code = await connection.query(getObservationTypeCodesSQL()); - const observation_proposed_action_code = await connection.query(getObservationProposedActionCodesSQL()); - const observation_slope_code = await connection.query(getObservationSlopeCodesSQL()); - const soil_texture_code = await connection.query(getSoilTextureCodesSQL()); - const species_agency_code = await connection.query(getSpeciesAgencyCodesSQL()); - const species_density_code = await connection.query(getSpeciesDensityCodesSQL()); - const species_distribution_code = await connection.query(getSpeciesDistributionCodesSQL()); - const species = await connection.query(getSpeciesCodesSQL()); - const specific_use_code = await connection.query(getSpecificUseCodesSQL()); + const observation_aspect_code = await connection.query(getObservationAspectCodesSQL().text); + const jurisdiction_code = await connection.query(getJurisdictionCodesSQL().text); + const observation_geometry_code = await connection.query(getObservationGeometryCodesSQL().text); + const observation_type_code = await connection.query(getObservationTypeCodesSQL().text); + const observation_proposed_action_code = await connection.query(getObservationProposedActionCodesSQL().text); + const observation_slope_code = await connection.query(getObservationSlopeCodesSQL().text); + const soil_texture_code = await connection.query(getSoilTextureCodesSQL().text); + const species_agency_code = await connection.query(getSpeciesAgencyCodesSQL().text); + const species_density_code = await connection.query(getSpeciesDensityCodesSQL().text); + const species_distribution_code = await connection.query(getSpeciesDistributionCodesSQL().text); + const species = await connection.query(getSpeciesCodesSQL().text); + const specific_use_code = await connection.query(getSpecificUseCodesSQL().text); // Add code responses to results object result.data.observation_aspect_code = (observation_aspect_code && observation_aspect_code.rows) || []; diff --git a/api-mobile/src/paths/misc/version.ts b/api-mobile/src/paths/misc/version.ts new file mode 100644 index 000000000..6e2ddbb72 --- /dev/null +++ b/api-mobile/src/paths/misc/version.ts @@ -0,0 +1,48 @@ +import { Operation } from 'express-openapi'; +import { getLogger } from '../../utils/logger'; + +const defaultLog = getLogger('observation-controller'); + +export const GET: Operation = [ + (req, res, next) => { + defaultLog.debug({ label: 'misc-version-get' }); + + const versionInfo = { + version: process.env.VERSION || '0', + environment: process.env.environment || process.env.NODE_ENV || 'localhost' + }; + + res.status(200).json(versionInfo); + } +]; + +GET.apiDoc = { + description: 'Get all observation plant code values.', + tags: ['misc'], + operationId: 'misc-version', + responses: { + 200: { + description: 'Code values for a plant observation', + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + version: { + description: 'api version', + type: 'number' + }, + environment: { + description: 'api environment', + type: 'string' + } + } + } + } + } + }, + default: { + $ref: '#/components/responses/default' + } + } +}; diff --git a/api-mobile/src/paths/observation/plant/{observationId}.ts b/api-mobile/src/paths/observation/plant/{observationId}.ts new file mode 100644 index 000000000..c3bb52b75 --- /dev/null +++ b/api-mobile/src/paths/observation/plant/{observationId}.ts @@ -0,0 +1,87 @@ +import { Operation } from 'express-openapi'; +import { SQLStatement } from 'sql-template-strings'; +import { ALL_ROLES } from '../../../constants/misc'; +import { getDBConnection } from '../../../database/db'; +import { getSingleObservationPlantSQL } from '../../../queries/observation-queries'; +import { getLogger } from '../../../utils/logger'; + +const defaultLog = getLogger('observation-controller'); + +export const parameters = [ + { + in: 'path', + name: 'observationId', + required: true + } +]; + +export const GET: Operation = [ + async (req, res, next) => { + defaultLog.info({ label: 'observation-plant-{observationId}', message: 'params', params: req.params }); + + if (!req.params || !req.params.observationId) { + defaultLog.warn({ label: 'observation-plant-{observationId}', message: 'observationId was null' }); + throw { + status: 400 + }; + } + + const observationId = req.params.observationId; + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503 + }; + } + + const sqlStatement: SQLStatement = getSingleObservationPlantSQL(observationId); + + if (!sqlStatement) { + throw { + status: 400 + }; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + + const result = (response && response.rowCount && response.rows[0]) || null; + + connection.release(); + + return res.status(200).json(result); + } +]; + +GET.apiDoc = { + description: 'Get a plant observation for the specific observationId.', + tags: ['observation', 'plant'], + operationId: 'observation-plant-{observationId}', + security: [ + { + Bearer: ALL_ROLES + } + ], + responses: { + 200: { + description: 'Plant observation', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/ObservationPlantResponse' + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index a44c35e49..dccb02bd7 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -1,45 +1,42 @@ import { ActivityPostBody } from '../models/activity'; -import { ParameterizedQuery } from './query-types'; +import { SQL, SQLStatement } from 'sql-template-strings'; /** * SQL query to insert a new activity, and return the inserted record. * * @param {ActivityPostBody} activityData - * @returns {ParameterizedQuery} sql parameterized query object + * @returns {SQLStatement} sql query object */ -export const postActivitySQL = (activityData: ActivityPostBody): ParameterizedQuery => { +export const postActivitySQL = (activityData: ActivityPostBody): SQLStatement => { if (!activityData) { return null; } - // Geometry needs to be stringified. Postgresql doesn't know to cast - // GeoJSON into a string... Even though it works for a regular JSON field. -// const geometry = JSON.stringify(activityData.locationAndGeometry['geometry']); - - // Formulate the sql statement - const sql = ` + return SQL` INSERT INTO activity_incoming_data ( activity_type, activity_sub_type, received_timestamp, - activity_payload + activity_payload, + geom, + media_keys ) VALUES ( - $1, - $2, - $3, - $4 + ${activityData.activityType}, + ${activityData.activitySubType}, + ${activityData.date}, + ${activityData.activityPostBody}, + public.ST_Force2D( + public.ST_Transform( + public.ST_SetSRID( + public.ST_GeomFromGeoJSON(${JSON.stringify(activityData.locationAndGeometry['geometry'])}) + ,4326 + ) + ,3005 + ) + ), + ${activityData.mediaKeys} ) RETURNING - activity_incoming_data_id + activity_incoming_data_id; `; - - // Data to be passed - const values = [ - activityData.activityType, - activityData.activitySubType, - activityData.date, - activityData.activityPostBody, - ]; - - return { sql, values }; }; diff --git a/api-mobile/src/queries/code-queries.ts b/api-mobile/src/queries/code-queries.ts index 269f5d103..91f565613 100644 --- a/api-mobile/src/queries/code-queries.ts +++ b/api-mobile/src/queries/code-queries.ts @@ -1,83 +1,86 @@ +import { SQL, SQLStatement } from 'sql-template-strings'; + /** * SQL query to fetch observation aspect codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getObservationAspectCodesSQL = (): string => `SELECT * from observation_aspect_code;`; +export const getObservationAspectCodesSQL = (): SQLStatement => SQL`SELECT * from observation_aspect_code;`; /** * SQL query to fetch jurisdiction codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getJurisdictionCodesSQL = (): string => `SELECT * from jurisdiction_code;`; +export const getJurisdictionCodesSQL = (): SQLStatement => SQL`SELECT * from jurisdiction_code;`; /** * SQL query to fetch observation geometry codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getObservationGeometryCodesSQL = (): string => `SELECT * from observation_geometry_code;`; +export const getObservationGeometryCodesSQL = (): SQLStatement => SQL`SELECT * from observation_geometry_code;`; /** * SQL query to fetch observation type codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getObservationTypeCodesSQL = (): string => `SELECT * from observation_type_code;`; +export const getObservationTypeCodesSQL = (): SQLStatement => SQL`SELECT * from observation_type_code;`; /** * SQL query to fetch observation proposed action codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getObservationProposedActionCodesSQL = (): string => `SELECT * from observation_proposed_action_code;`; +export const getObservationProposedActionCodesSQL = (): SQLStatement => + SQL`SELECT * from observation_proposed_action_code;`; /** * SQL query to fetch observation slope codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getObservationSlopeCodesSQL = (): string => `SELECT * from observation_slope_code;`; +export const getObservationSlopeCodesSQL = (): SQLStatement => SQL`SELECT * from observation_slope_code;`; /** * SQL query to fetch texture codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getSoilTextureCodesSQL = (): string => `SELECT * from soil_texture_code;`; +export const getSoilTextureCodesSQL = (): SQLStatement => SQL`SELECT * from soil_texture_code;`; /** * SQL query to fetch agency codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getSpeciesAgencyCodesSQL = (): string => `SELECT * from species_agency_code;`; +export const getSpeciesAgencyCodesSQL = (): SQLStatement => SQL`SELECT * from species_agency_code;`; /** * SQL query to fetch density codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getSpeciesDensityCodesSQL = (): string => `SELECT * from species_density_code;`; +export const getSpeciesDensityCodesSQL = (): SQLStatement => SQL`SELECT * from species_density_code;`; /** * SQL query to fetch distribution codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getSpeciesDistributionCodesSQL = (): string => `SELECT * from species_distribution_code;`; +export const getSpeciesDistributionCodesSQL = (): SQLStatement => SQL`SELECT * from species_distribution_code;`; /** * SQL query to fetch species codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getSpeciesCodesSQL = (): string => `SELECT * from species;`; +export const getSpeciesCodesSQL = (): SQLStatement => SQL`SELECT * from species;`; /** * SQL query to fetch specific use codes. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getSpecificUseCodesSQL = (): string => `SELECT * from specific_use_code;`; +export const getSpecificUseCodesSQL = (): SQLStatement => SQL`SELECT * from specific_use_code;`; diff --git a/api-mobile/src/queries/observation-queries.ts b/api-mobile/src/queries/observation-queries.ts index e3f77a1f8..e878f76ba 100644 --- a/api-mobile/src/queries/observation-queries.ts +++ b/api-mobile/src/queries/observation-queries.ts @@ -1,26 +1,22 @@ -import { ParameterizedQuery } from './query-types'; +import { SQL, SQLStatement } from 'sql-template-strings'; /** * SQL query to fetch all plant observations. * - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getAllObservationPlantSQL = (): string => `SELECT * FROM observation;`; +export const getAllObservationPlantSQL = (): SQLStatement => SQL`SELECT * FROM observation;`; /** * SQL query to fetch a single plant observation. * * @param {string} observationId observation primary key - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getSingleObservationPlantSQL = (observationId: string): ParameterizedQuery => { +export const getSingleObservationPlantSQL = (observationId: string): SQLStatement => { if (!observationId) { return null; } - const sql = 'SELECT * FROM observation WHERE observation_id = $1;'; - - const values = [observationId]; - - return { sql, values }; + return SQL`SELECT * FROM observation WHERE observation_id = ${observationId};`; }; diff --git a/api-mobile/src/queries/query-types.ts b/api-mobile/src/queries/query-types.ts deleted file mode 100644 index 0c4e0ecd1..000000000 --- a/api-mobile/src/queries/query-types.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Return value type for building parameterized sql queries. - * - * @export - * @class IQuery - */ -export class ParameterizedQuery { - sql: string; - values: any[]; -} diff --git a/api-mobile/src/queries/user-queries.ts b/api-mobile/src/queries/user-queries.ts index ab6ef800f..350c7f72a 100644 --- a/api-mobile/src/queries/user-queries.ts +++ b/api-mobile/src/queries/user-queries.ts @@ -1,23 +1,20 @@ -import { ParameterizedQuery } from '../queries/query-types'; +import { SQL, SQLStatement } from 'sql-template-strings'; /** * SQL query to fetch a user and their associated role. * * @param {string} email user email - * @returns {string} sql query string + * @returns {SQLStatement} sql query object */ -export const getUserWithRolesSQL = (email: string): ParameterizedQuery => { +export const getUserWithRolesSQL = (email: string): SQLStatement => { if (!email) { return null; } - const sql = - 'SELECT * FROM application_user ' + - 'LEFT JOIN user_role USING (user_id) ' + - 'LEFT JOIN app_role_code USING (role_code_id) ' + - 'WHERE email = $1;'; - - const values = [email.toLowerCase()]; - - return { sql, values }; + return SQL` + SELECT * FROM application_user + LEFT JOIN user_role USING (user_id) + LEFT JOIN app_role_code USING (role_code_id) + WHERE email = ${email.toLowerCase()}; + `; }; diff --git a/api-mobile/src/swagger/swagger.yaml b/api-mobile/src/swagger/swagger.yaml deleted file mode 100644 index 41d4ad5ab..000000000 --- a/api-mobile/src/swagger/swagger.yaml +++ /dev/null @@ -1,911 +0,0 @@ -swagger: "2.0" # npm library `swagger-tools` does not yet support 3.0 - -info: - version: "0.0.0" - title: lucy-api-mobile - description: API for lucy mobile. - license: - name: Apache 2.0 - url: "http://www.apache.org/licenses/LICENSE-2.0.html" -host: localhost:3002 -basePath: /api - -tags: - - name: misc - description: Miscellaneous endpoints - - name: activity - description: | - Activity endpoints - An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' - - name: observation - description: Observation activity endpoints - - name: treatment - description: Treatment activity endpoints - - name: monitor - description: Monitor activity endpoints - - name: plant - description: Plant endpoints - - name: animal - description: Animal endpoints - - name: code - description: Code endpoints - -externalDocs: - description: Visit GitHub to find out more about this API - url: "https://github.com/bcgov/lucy-web.git" - -schemes: - - http - - https - -securityDefinitions: - Bearer: - type: apiKey - name: Authorization - in: header - description: | - To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. - The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` - -consumes: - - application/json -produces: - - application/json - -paths: - # Misc routes - - /misc/version: - x-swagger-router-controller: misc-controller - options: - tags: - - misc - summary: Pre-flight request - description: Options on public version route - operationId: publicOptions - responses: - "200": - description: Success - get: - tags: - - misc - summary: Pre-flight request - description: Get api version information - operationId: publicGet - responses: - "200": - description: Fetched api version information - schema: - $ref: "#/definitions/VersionResponse" - - # Activity Routes - - /activity: - x-swagger-router-controller: activity-controller - options: - tags: - - activity - summary: Pre-flight request - description: Options on authenticated activity route - operationId: authenticatedOptions - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - post: - tags: - - activity - summary: Create a new activity - description: Create a new activity - operationId: authenticatedPost - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAE # data editor - - SUP # super user - parameters: - - in: body - required: true - name: postBody - schema: - $ref: "#/definitions/ActivityPostBody" - responses: - "201": - description: Created - schema: - $ref: "#/definitions/ActivityResponse" - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - - # Observation/Plant Routes - - /observation/plant: - x-swagger-router-controller: observation-plant-controller - options: - tags: - - observation - - plant - summary: Pre-flight request - description: Options on authenticated plant observation route - operationId: authenticatedOptions - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - get: - tags: - - observation - - plant - summary: Pre-flight request - description: Get all plant observations - operationId: authenticatedGet_All - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAV # data viewer - - DAE # data editor - - SUP # super user - responses: - "200": - description: Fetched observation with id - schema: - $ref: "#/definitions/ObservationPlantResponse" - "422": - description: Validation error - no observation with id - schema: - $ref: "#/definitions/Error" - - /observation/plant/{observationId}: - x-swagger-router-controller: observation-plant-controller - options: - tags: - - observation - - plant - summary: Pre-flight request - description: Options on authenticated plant observation route - operationId: authenticatedOptions - parameters: - - in: path - required: true - name: observationId - type: number - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - get: - tags: - - observation - - plant - summary: Pre-flight request - description: Get a single plant observation based on its id (observation id) - operationId: authenticatedGet_One - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAV # data viewer - - DAE # data editor - - SUP # super user - parameters: - - in: path - required: true - name: observationId - type: number - responses: - "200": - description: Fetched observation with id - schema: - $ref: "#/definitions/ObservationPlantResponse" - "422": - description: Validation error - no observation with id - schema: - $ref: "#/definitions/Error" - - # Code Routes - - /code/observation/plant: - x-swagger-router-controller: code-controller - options: - tags: - - code - - observation - summary: Pre-flight request - description: Options on authenticated observation code route - operationId: authenticatedOptions - responses: - "200": - description: Success - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - get: - tags: - - code - summary: Get all observation code values - description: API to get all observation code values - operationId: authenticatedGet_ObservationPlant - security: - - Bearer: [] - x-security-scopes: - - ADM # admin - - DAV # data viewer - - DAE # data editor - - SUP # super user - responses: - "200": - description: Fetched code values - schema: - $ref: "#/definitions/ObservationCodeResponse" - "401": - description: Unauthorized user - schema: - $ref: "#/definitions/Error" - -definitions: - # Misc definitions - - Error: - description: | - Error response object. - Returned in the non-200 responses for all routes. - required: - - message - - errors - properties: - message: - type: string - errors: - type: array - items: - type: string - - VersionResponse: - description: Version response object. - required: - - version - - environment - properties: - version: - type: string - environment: - type: string - - - # Activity Definitions - - ActivityPostBody: - description: Activity post body object. - type: object - required: - - activityType - - activityTypeData - - activitySubType - - activitySubTypeData - - date - - locationAndGeometry - properties: - activityType: - type: string - activitySubType: - type: string - date: - type: string - description: Date in YYYY-MM-DD format - format: date - deviceRequestUID: - type: string - locationAndGeometry: - type: object - properties: - anchorPointY: - type: number - anchorPointX: - type: number - area: - type: number - geometry: - type: object - jurisdiction: - type: string - agency: - type: string - observer1FirstName: - type: string - observer1LastName: - type: string - locationComment: - type: string - generalComment: - type: string - photoTaken: - type: boolean - activityTypeData: - type: object - activitySubTypeData: - type: object - - ActivityResponse: - description: Activity response object. - type: object - required: - - activityType - - activitySubType - - date - - locationAndGeometry - properties: - activityType: - type: string - activitySubType: - type: string - date: - type: string - description: Date in YYYY-MM-DD format - locationAndGeometry: - type: object - - # Observation Plant Definitions - - ObservationPlantResponse: - description: | - Observation plant response object. - Returned in the 200 responses for all `/observation/plant/*` routes. - type: object - required: - - observation_id - - observation_date - - access_description - - observer_first_name - - observer_last_name - - sample_identifier - - range_unit_number - - general_comment - - legacy_site_ind - - early_detection_rapid_resp_ind - - research_detection_ind - - sample_taken_ind - - well_ind - - special_care_ind - - biological_ind - - aquatic_ind - - species_id - - jurisdiction_code_id - - species_density_code_id - - species_distribution_code_id - - observation_type_code_id - - species_agency_code_id - - soil_texture_code_id - - specific_use_code_id - - observation_slope_code_id - - observation_aspect_code_id - - observation_proposed_action_code_id - - created_at - - updated_at - - updated_by_user_id - - created_by_user_id - - space_geom_id - - hex_id - - hex_sub_id - - total_area - - negative_occurance_ind - - paper_id_primary - - paper_id_secondary - - elevation_meters - - well_proximity - - well_tag - - observation_geometry_code_id - - photo_indicator - - flowering - - bec_zone - - riso - - ipma - - ownership - - regional_district - - flnro_district - - moti_district - - raw_longitude - - raw_latitude - - raw_utm_zone - - raw_utm_easting - - raw_utm_northing - - raw_albers_x - - raw_albers_y - properties: - observation_id: - type: number - observation_date: - type: string - access_description: - type: string - observer_first_name: - type: string - observer_last_name: - type: string - sample_identifier: - type: string - range_unit_number: - type: string - general_comment: - type: string - legacy_site_ind: - type: boolean - early_detection_rapid_resp_ind: - type: boolean - research_detection_ind: - type: boolean - sample_taken_ind: - type: boolean - well_ind: - type: boolean - special_care_ind: - type: boolean - biological_ind: - type: boolean - aquatic_ind: - type: boolean - species_id: - type: object - jurisdiction_code_id: - type: object - species_density_code_id: - type: object - species_distribution_code_id: - type: object - observation_type_code_id: - type: object - species_agency_code_id: - type: object - soil_texture_code_id: - type: object - specific_use_code_id: - type: object - observation_slope_code_id: - type: object - observation_aspect_code_id: - type: object - observation_proposed_action_code_id: - type: object - created_at: - type: string - updated_at: - type: string - updated_by_user_id: - type: number - created_by_user_id: - type: number - space_geom_id: - type: number - hex_id: - type: number - hex_sub_id: - type: number - total_area: - type: number - negative_occurance_ind: - type: boolean - paper_id_primary: - type: string - paper_id_secondary: - type: string - elevation_meters: - type: number - well_proximity: - type: number - well_tag: - type: number - observation_geometry_code_id: - type: object - photo_indicator: - type: boolean - flowering: - type: boolean - bec_zone: - type: string - riso: - type: string - ipma: - type: string - ownership: - type: string - regional_district: - type: string - flnro_district: - type: string - moti_district: - type: string - raw_longitude: - type: number - raw_latitude: - type: number - raw_utm_zone: - type: number - raw_utm_easting: - type: number - raw_utm_northing: - type: number - raw_albers_x: - type: number - raw_albers_y: - type: number - - # Observation Code Definitions - - ObservationCodeResponse: - required: - - message - - data - properties: - message: - type: string - data: - type: object - $ref: "#/definitions/ObservationCode" - - ObservationCode: - description: Observation code tables. - required: - - observation_aspect_code - - jurisdiction_code - - observation_geometry_code - - observation_type_code - - observation_proposed_action_code - - observation_slope_code - - soil_texture_code - - species_agency_code - - species_density_code - - species_distribution_code - - species - - specific_use_code - properties: - observation_aspect_code: - type: array - items: - $ref: "#/definitions/AspectCode" - jurisdiction_code: - type: array - items: - $ref: "#/definitions/JurisdictionCode" - observation_geometry_code: - type: array - items: - $ref: "#/definitions/ObservationGeometryCode" - observation_type_code: - type: array - items: - $ref: "#/definitions/ObservationTypeCode" - observation_proposed_action_code: - type: array - items: - $ref: "#/definitions/ProposedActionCode" - observation_slope_code: - type: array - items: - $ref: "#/definitions/SlopeCode" - soil_texture_code: - type: array - items: - $ref: "#/definitions/SoilTextureCode" - species: - type: array - items: - $ref: "#/definitions/Species" - species_density_code: - type: array - items: - $ref: "#/definitions/SpeciesDensityCode" - species_distribution_code: - type: array - items: - $ref: "#/definitions/SpeciesDistributionCode" - species_agency_code: - type: array - items: - $ref: "#/definitions/SpeciesAgencyCode" - specific_use_code: - type: array - items: - $ref: "#/definitions/SpecificUseCode" - - # Code Definitions - - AspectCode: - type: object - required: - - observation_aspect_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_aspect_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - JurisdictionCode: - type: object - required: - - jurisdiction_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - jurisdiction_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ObservationGeometryCode: - type: object - required: - - observation_geometry_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_geometry_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ObservationTypeCode: - type: object - required: - - observation_type_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_type_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ProposedActionCode: - type: object - required: - - observation_proposed_action_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_proposed_action_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SlopeCode: - type: object - required: - - observation_slope_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_slope_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SoilTextureCode: - type: object - required: - - soil_texture_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - soil_texture_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - Species: - type: object - required: - - species_id - - mapCode - - earlyDetection - - containmentSpecies - - containmentSpacialRef - - species - - genus - - commonName - - latinName - - updateAt - - createdAt - properties: - species_id: - type: number - mapCode: - type: string - earlyDetection: - type: boolean - containmentSpecies: - type: number - containmentSpacialRef: - type: number - species: - type: string - genus: - type: string - commonName: - type: string - latinName: - type: string - updateAt: - type: string - createdAt: - type: string - - SpeciesDensityCode: - type: object - required: - - species_density_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_density_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpeciesDistributionCode: - type: object - required: - - species_distribution_code_id - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_distribution_code_id: - type: number - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpeciesAgencyCode: - type: object - required: - - species_agency_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_agency_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpecificUseCode: - type: object - required: - - specific_use_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - specific_use_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts index 77a127066..0596f2c64 100644 --- a/api-mobile/src/utils/auth-utils.ts +++ b/api-mobile/src/utils/auth-utils.ts @@ -2,8 +2,10 @@ import { decode, verify } from 'jsonwebtoken'; import JwksRsa, { JwksClient } from 'jwks-rsa'; +import { SQLStatement } from 'sql-template-strings'; import { promisify } from 'util'; -import { getUserWithRoles } from '../controllers/user-controller'; +import { getDBConnection } from '../database/db'; +import { getUserWithRolesSQL } from '../queries/user-queries'; import { getLogger } from './logger'; const defaultLog = getLogger('auth-utils'); @@ -14,7 +16,7 @@ const APP_CERTIFICATE_URL = const TOKEN_IGNORE_EXPIRATION: boolean = process.env.TOKEN_IGNORE_EXPIRATION === 'true' || - process.env.NODE_ENV === 'development' || + process.env.NODE_ENV === 'dev' || process.env.DB_HOST === 'localhost' || false; @@ -27,18 +29,28 @@ const TOKEN_IGNORE_EXPIRATION: boolean = * @param {*} callback * @returns {*} */ -export const authenticate = async function (req: any, authOrSecDef: any, token: any, callback: any): Promise { +export const authenticate = async function (req: any, scopes: string[]): Promise { try { - defaultLog.debug({ label: 'authenticate', message: 'authenticating user', token }); + defaultLog.debug({ label: 'authenticate', message: 'authenticating user', scopes }); - if (!token) { + if (!req.headers || !req.headers.authorization) { defaultLog.warn({ label: 'authenticate', message: 'token was null' }); - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } + const token = req.headers.authorization; + + defaultLog.debug({ label: 'authenticate', message: 'authenticating user', token }); + if (token.indexOf('Bearer ') !== 0) { defaultLog.warn({ label: 'authenticate', message: 'token did not have a bearer' }); - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } // Validate the 'Authorization' header. @@ -47,7 +59,10 @@ export const authenticate = async function (req: any, authOrSecDef: any, token: if (!tokenString) { defaultLog.warn({ label: 'authenticate', message: 'token string was null' }); - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } // Decode token without verifying signature @@ -55,7 +70,10 @@ export const authenticate = async function (req: any, authOrSecDef: any, token: if (!decodedToken) { defaultLog.warn({ label: 'authenticate', message: 'decoded token was null' }); - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } // Get token header kid @@ -63,7 +81,10 @@ export const authenticate = async function (req: any, authOrSecDef: any, token: if (!decodedToken) { defaultLog.warn({ label: 'authenticate', message: 'decoded token header kid was null' }); - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } const jwksClient: JwksClient = JwksRsa({ jwksUri: APP_CERTIFICATE_URL }); @@ -75,7 +96,10 @@ export const authenticate = async function (req: any, authOrSecDef: any, token: if (!key) { defaultLog.warn({ label: 'authenticate', message: 'get signing key' }); - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } const signingKey = key['publicKey'] || key['rsaPublicKey']; @@ -84,27 +108,36 @@ export const authenticate = async function (req: any, authOrSecDef: any, token: const verifiedToken = verifyToken(tokenString, signingKey); if (!verifiedToken) { - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } // Add the verified token to the request for future use, if needed - req.swagger.params.auth_payload = verifiedToken; + req.auth_payload = verifiedToken; // Verify user - const verifiedUser = await verifyUser(req); + const verifiedUser = await verifyUser(req, scopes); if (!verifiedUser) { - return callback(setError(req)); + throw { + status: 401, + message: 'Access Denied' + }; } // Add the user to the request for future use, if needed - req.swagger.params.auth_user = verifiedUser; + req.auth_user = verifiedUser; + + return true; } catch (error) { - defaultLog.error({ label: 'authenticate', message: 'unexpected error', error }); - return callback(setError(req)); + defaultLog.warn({ label: 'authenticate', message: `unexpected error - ${error.message}`, error }); + throw { + status: 401, + message: 'Access Denied' + }; } - - return callback(null); }; /** @@ -153,24 +186,21 @@ const verifyToken = function (tokenString: any, secretOrPublicKey: any): any { * @param {*} req * @returns */ -export const verifyUser = async function (req: any) { +export const verifyUser = async function (req: any, scopes: string[]) { // get user and their role - const response = await getUserWithRoles(req.swagger.params.auth_payload.email); + const response = await getUserWithRoles(req.auth_payload.email); if (!response) { defaultLog.warn({ label: 'verifyUser', message: 'failed to find user with matching email', - email: req.swagger.params.auth_payload.email, + email: req.auth_payload.email, response }); return null; } - // allowed scopes/roles for the current endpoint - const currentSecurityScopes = req.swagger.operation['x-security-scopes']; - - const userHasRole = verifyUserRoles(currentSecurityScopes, response['role_code']); + const userHasRole = verifyUserRoles(scopes, response['role_code']); if (!userHasRole) { defaultLog.warn({ label: 'verifyUser', message: 'user verification error: insufficient roles' }); @@ -178,7 +208,7 @@ export const verifyUser = async function (req: any) { label: 'verifyUser', message: 'user verification error: insufficient roles', userRoles: response['role_code'], - requiredRoles: currentSecurityScopes + requiredRoles: scopes }); return null; } @@ -217,11 +247,35 @@ export const verifyUserRoles = function (allowedRoles: string[] | string, userRo }; /** - * Set default error status on response when authentication fails. + * Finds a single user based on their email. * - * @param {*} req - * @returns response with default error status set + * @param {string} email + * @returns user */ -function setError(req: any) { - return req.res.status(401).json({ message: 'Error: Access Denied' }); -} +export const getUserWithRoles = async function (email: string) { + defaultLog.debug({ label: 'getUserWithRoles', message: 'email', email }); + + if (!email) { + return null; + } + + const connection = await getDBConnection(); + + if (!connection) { + return null; + } + + const sqlStatement: SQLStatement = getUserWithRolesSQL(email); + + if (!sqlStatement) { + return null; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + + const result = (response && response.rowCount && response.rows[0]) || null; + + connection.release(); + + return result; +}; diff --git a/api-mobile/src/utils/controller-utils.ts b/api-mobile/src/utils/controller-utils.ts deleted file mode 100644 index d4a4015d9..000000000 --- a/api-mobile/src/utils/controller-utils.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { - Handler, - IValidatorConfig, - ValidationErrorType, - IValidationError, - ValidationResult -} from 'swagger-object-validator'; -import { Schema, Spec } from 'swagger-schema-official'; - -export type IValidateSwaggerObjectCondensedErrors = Array<{ errorType: ValidationErrorType; trace: string }>; -export interface IValidateSwaggerObject { - // overall error message - message: string; - // array of errors - errors: IValidateSwaggerObjectCondensedErrors; -} - -/** - * Validate a swagger params object against the expected swagger params object definition. - * - * @param {*} swaggerParamsObject A swagger params object. - * - Example: args.swagger.params.MyPostBody.value - * @param {string} swaggerDefinitionName The name of the swagger object definition that the swagger params object is - * expected to match. - * - Example: 'MyPostBodyDefinition' - * @param {string} swaggerFilePath The filepath to the swagger file that contains the swaggerDefinitionName to validate - * against. - * - Example: './src/swagger/swagger.yaml' - * @param {IValidatorConfig} [swaggerValidatorConfig=null] An optional custom validator config. - * - See: https://www.npmjs.com/package/swagger-object-validator#config - * @returns {Promise} - */ -export const validateSwaggerObject = async function ( - swaggerParamsObject: any, - swaggerDefinitionName: string, - swaggerFilePath: string, - swaggerValidatorConfig: IValidatorConfig = null -): Promise { - const validator = new Handler(swaggerFilePath, swaggerValidatorConfig); - - const validationResult = await validator.validateModel(swaggerParamsObject, swaggerDefinitionName); - - if (!validationResult) { - return { message: 'unable to validate swagger params object', errors: null }; - } - - const errors = getCondensedErrorTraceString(validationResult); - - if (!errors) { - return { message: 'swagger params object is valid', errors: null }; - } - - return { message: 'swagger params object is invalid', errors: errors }; -}; - -/** - * Convert the original validation errors array into a more condensed and human readable version. - * - * @param {ValidationResult} validationResult - * @returns {IValidateSwaggerObjectCondensedErrors} condensed error string or null if no errors present - */ -export const getCondensedErrorTraceString = function ( - validationResult: ValidationResult -): IValidateSwaggerObjectCondensedErrors { - if (!validationResult) { - return null; - } - - const validationErrors = validationResult.errorsWithStringTypes(); - - if (!validationErrors || !validationErrors.length) { - return null; - } - - return validationErrors.map(validationError => { - return { - errorType: validationError.errorType, - // condense the original array of trace objects into a single period delimited string - trace: validationError.trace.map(traceStep => `"${traceStep.stepName}"`).join('.') - }; - }); -}; - -/** - * A custom validator config that ignores ADDITIONAL_PROPERTY errors on fields that are defined as being ANY object. - * - IE: they have `type: object` and NO additional properties - */ -export const ignoreAdditionalPropertyErrorsOnAnyObjectFields: IValidatorConfig = { - ignoreError: (error: IValidationError, value: any, schema: Schema, spec: Spec) => { - // Only ADDITIONAL_PROPERTY errors are potentially ignorable - if (error.errorType !== ValidationErrorType.ADDITIONAL_PROPERTY) { - return false; - } - - // Only ignore if schema has `type: object` and no additional properties - if (Object.keys(schema).length !== 1 || schema.type !== 'object') { - return false; - } - - // Ignore additional property errors, as this field was defined as being ANY object. - return true; - } -}; diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts new file mode 100644 index 000000000..42cd75688 --- /dev/null +++ b/api-mobile/src/utils/file-utils.ts @@ -0,0 +1,86 @@ +'use strict'; + +import AWS from 'aws-sdk'; +import { Metadata, ManagedUpload } from 'aws-sdk/clients/s3'; +import { v4 as uuidv4 } from 'uuid'; +import { S3ACLRole } from '../constants/misc'; +import { MediaBase64 } from '../models/activity'; + +const OBJECT_STORE_BUCKET_NAME = process.env.OBJECT_STORE_BUCKET_NAME; +// const OBJECT_STORE_URL = process.env.OBJECT_STORE_URL || 'nrs.objectstore.gov.bc.ca'; +// const AWS_ENDPOINT = new AWS.Endpoint(OBJECT_STORE_URL); +const S3 = new AWS.S3({ + // endpoint: AWS_ENDPOINT.href, + accessKeyId: process.env.OBJECT_STORE_ACCESS_KEY_ID, + secretAccessKey: process.env.OBJECT_STORE_SECRET_KEY_ID, + signatureVersion: 'v4', + s3ForcePathStyle: true +}); + +/** + * Fetch a file from S3, based on its key. + * + * @export + * @param {string} key the unique key assigned to the file in S3 when it was originally uploaded + * @returns the response from S3 or null if required parameters are null + */ +export async function getFileFromS3(key: string) { + if (!key) { + return null; + } + + return S3.getObject({ Bucket: OBJECT_STORE_BUCKET_NAME, Key: key }).promise(); +} + +/** + * Upload a file to S3. + * + * Note: Assigns the `authenticated-read` permission. + * + * @export + * @param {MediaBase64} media an object containing information about a single piece of media + * @param {Metadata} [metadata={}] A metadata object to store additional information with the file + * @returns {Promise} the response from S3 or null if required parameters are null + */ +export async function uploadFileToS3(media: MediaBase64, metadata: Metadata = {}): Promise { + if (!media) { + return null; + } + + const key = `${uuidv4()}-${media.fileName}`; + + return S3.upload({ + Bucket: OBJECT_STORE_BUCKET_NAME, + Body: media.fileBuffer, + ContentType: media.contentType, + Key: key, + ACL: S3ACLRole.AUTH_READ, + Metadata: metadata + }).promise(); +} + +// Regex matches a Data URL base64 encoded string, and has matching groups for the content type and raw encoded string +const base64DataURLRegex = new RegExp(/^data:(image\/\w+);base64,(.*)/); + +/** + * Takes a Data URL base64 encoded string, and parses out the contentType (`image/jpeg`, `image/png`, etc) and the + * base64 contentString. + * + * @export + * @param {string} base64String + * @return {{ contentType: string; contentString: string }} returns an object with the Data URL encoded strings + * contentType and contentString, or null if string is invalid or encoded incorrectly. + */ +export function parseBase64DataURLString(base64String: string): { contentType: string; contentString: string } { + if (!base64String) { + return null; + } + + const matches = base64String.match(base64DataURLRegex); + + if (!matches || matches.length !== 3) { + return null; + } + + return { contentType: matches[1], contentString: matches[2] }; +} diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts index a1dbc8d5c..f7fd971ea 100644 --- a/api-mobile/src/utils/logger.ts +++ b/api-mobile/src/utils/logger.ts @@ -1,6 +1,6 @@ 'use strict'; -import * as winston from 'winston'; +import winston from 'winston'; /** * Logger input. @@ -12,7 +12,6 @@ import * as winston from 'winston'; export interface ILoggerMessage extends winston.Logform.TransformableInfo { timestamp?: string; // Optionally overwrite the default timestamp label: string; // Add a label to this message (generally the name of the parent function) - error?: Error; // An Error object } /** @@ -69,11 +68,10 @@ export const getLogger = function (logLabel: string) { winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.errors({ stack: true }), winston.format.colorize(), - winston.format.printf(({ timestamp, level, label, message, error, ...other }: ILoggerMessage) => { + winston.format.printf(({ timestamp, level, label, message, ...other }: ILoggerMessage) => { const namespace = label ? ` ${label} -` : ''; - const errorStack = error ? `\n${error}` : ''; const otherMeta = other && Object.keys(other).length ? `\n${JSON.stringify(other, undefined, 2)}` : ''; - return `[${timestamp}] (${level}) (${logLabel}):${namespace} ${message} ${otherMeta} ${errorStack}`; + return `[${timestamp}] (${level}) (${logLabel}):${namespace} ${message} ${otherMeta}`; }) ) }) diff --git a/api-mobile/src/utils/query-actions.ts b/api-mobile/src/utils/query-actions.ts deleted file mode 100644 index 502bff55f..000000000 --- a/api-mobile/src/utils/query-actions.ts +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -import { getLogger } from './logger'; -const defaultLog = getLogger('query-actions'); - -/** - * Sends an http response. - * - * @param {*} res an http response - * @param {number} code an http code (200, 404, etc) - * @param {*} [object] the response data. - * @returns {*} res an http response - */ -export const sendResponse = function (res: any, code: number, object?: any) { - defaultLog.debug({ label: 'sendResponse', code, res }); - - res.writeHead(code, { 'Content-Type': 'application/json' }); - return res.end(JSON.stringify(object)); -}; diff --git a/api-mobile/test/activity-with-files.json b/api-mobile/test/activity-with-files.json new file mode 100644 index 000000000..df466b14d --- /dev/null +++ b/api-mobile/test/activity-with-files.json @@ -0,0 +1,54 @@ +{ + "activityType": "observation", + "activitySubType": "plant", + "date": "2020-08-30", + "locationAndGeometry": { + "anchorPointY": 48.3, + "anchorPointX": -125.6, + "area": 0, + "geometry": { + "type": "Feature", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + -126.6, + 49.3 + ], + [ + -125.6, + 48.3 + ], + [ + -125.6, + 49.3 + ], + [ + -126.6, + 49.3 + ] + ] + ] + }, + "properties": {} + } + }, + "activityTypeData": { + "pokiness": 17 + }, + "activitySubTypeData": { + "density": "hard", + "colour": "green" + }, + "media": [ + { + "fileName": "bunnyFile", + "data": "/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APT1YlhnHBxweRU0ed5Pp0HT/wDV0qIR5bAxt9D61MqfMoAz1z/jX6Kfz3Kcrkm76HPOOmfrTkYsqnnjkj0/p2NBwygMSze/r9akVQd2MFl4GeaAUpdyRZDtwCPQ/wD16lTrjHTNNUA7j36Z6ZI4qYLuwFU59z7VJfNIfFhlz8xHr261Zh4Y8HPOfb3qCGNlO4EAdh1H+eatovbbnHTtk0wUpbjwx6/MST6UrSHblunX/PvTdvTHSjgscYx/KpsWqkgXGCXJPA5xxU0bDbyeRnOFwSRTPLLH+tTKuFHXp69KQ1OQ9Tzyx6fT/PFShunBPP502LPJ55HWpIx1OAWBOfzpMpSkKmORknGSO54p/O08H+dIiDqdvPoeTTh8vODyPr/nvSLUmPVuAeQO/wDKnxt6t25pirx+v0p6joCM4HWkxxcnuP653MORx/n/AD1pV5wVJ+gpyr6EfMB3/wA/5NOWPaRwR7en/wBakVzSEWQtgZUZHbtT484IbNIqjcTkA/T/AD7VJHGf4SMAZx60DUpCKcc9s+2OlPDDbyev93jOPSl2gL6g8/jQqlVIYED/AOvRYfOxyt83yjH07f5xR5zbgWJwfzIpVTAXAUk+lLtKsxxyO1Kw3OQ9V2g85I/2fzqQNlSFHfrj/PNNVOM87e4B/GnIp25AGRyKLFKUhzfJt474/rR075Hcev8AnimsoJH3QcGnL6bVXHXnpS5RqbFzhQGGP1pd/wApIPXHFIYxhgoDU8qMNt9/aiw1KQzcc8Zx2p/Lbd3cc/Sl2/M3ON3PXgd6PyyOp70NApMNwyBzgmhmJJHK4P0p20kg9Rijpz6d/wCdIptjNxZm6/LwaQMc8E56+tP2lio+7jkUnl+uADzSE2xYxnLDABHHrSsxLksMAdlNLnb93AHXOQaTaTx8oPOOvFAc7EDDc24HA9qQt7HHtzzTtoXsOBnr3pdv949qaFdjV+Y9Thf5Uq5PA7etKq7sBguBjpxScnAwCc8epFId2NMmM7cdfWkBOcenH0pzgEnjJP8AhzTCpVSWwMfrQHMxdxYEcge/ak3Y/hGevFKw5IXOVPfikaP6Z9apIlyZHuIOBg/WkZs8dz+nrTyu3HcDtSBeMv07c8+9FrC5pDVZsHcTjt9KRpD0UHPQ0bS3UEH64p23IblgQabQlNkQYkZ6dcAj8qa2R+JxmpWXc2D97pnuaaVB5wPm5poV2Qs25CR8pI/zjNMbnJKruHPpUzJ13AEDPHpTPKBUjjrk4/Q0E3ZC33v7tRyKWY99pqd4wDlu36CoWG3Cgn0FNCcmJuPBXjGe1JyfbB4xxmn7R8u7ILZ3fyqN8fxYH1phzMZJ+7zuJyffpUUh6EY44PHSpZOc5GBjn3qOQZJHf/P+fzoE5Mi3ngZyRnoO/wDkUhYksOMKPXr9adt2kFiAAe/9Ka67e2D0Pv600Z80hrOXwedw9Rke1VWY7jjI+vT61ZkB5xke3+fwqBhnjv8AyppESkyPcc5z9Se1NVgQNwOfzqRuOOQRUartHqfSqI55LYiZs4JPBHp1qP73zE4BGQD61MVzn7uPTP8AP9ajVSGxjHX/ADjtTQnJkWccsSR7r09KgeYliMHnjI7/AE/lU8i8nqvP9764qB4/lIGDk8ZppEc8ivJJyB1GOv51BkqG3joenv6fyqd1wv3s9OPw+vNQSodx5GD06cUyXUlbUZksARgjoef61WfPRWAHQcVM+VPO7npj+tRSJuA9M4HPP6dqaIcnYhZm3EK2fpxTGkIxyc9T1xmnMvy/KG/Pr+HWo5FAYlckt+H6/wBfem0TzSITL8pwA2O4H+fSoGYdQ3A56CrDKUGTwW/iB6ntUKqfmZSAccAdfpQJSlsaUf8ArFLDA478VK33sL179s+nPam4PqCAeccinqo/H8+MVB0T7CrEOrbTnjOOlTxjLEYb5uM01V3MCuFUDGPapwp2tjoTg0EodGn3drZz+GPrVtlO0fNhtvTPGe9RLGGwWIIHHr+FSRqN2VOcZ/8ArfXipKTJVUBT7dDnt71KqbW+Uex7k0xOpA4XPU1NGeRnvz8vahDF8vc21s4A+lCgDA4AA+vSnLk4yuPUY6U5U5Xdz9P6mkWG09sdRipkXuTxTGXBPHQZ/KpVIwDxx+FIpLUVfTj7v86l3bfT6dP89qYvDA88fnU0fAHIGOTSKSBWZl7jHtn/AD/9al2/N35/U04+nA9+w/zijlidxPHpSKtYeq9ORk1IqnIJwcn/APVTVPBIyR/nNPxx8uBjjj0pWLRIucgHp+dAjGeh/wAPrQuVHr3+lOVvUjcf1oHdCheQcc4AJH+fpU4HykYBP1pB93aOSOlOYBV9S3b2pAhPvcrjIGN1JuHJU9OTSgj396cqnkt1PfHWgbYKvbPGPw96cydRzx1xSqp+7nPTPvT1U9hnFA0K2VJOcd/xqQDOGJ4Ix+tN2EZPX9f0p233yBwTmky0HEeMAdaRudu3HPGPWjO77w61IuedxHNDDcI1xgMScjPFHpu5bvjrRuOCfXmk+8w5zgUkULtxkbs/1p3LD5h+fNMOR2+Y+9Sr045GP1pWBBGu5sKOh4ouIzBjzEKg1asTtmRm4FbeqafFqNj8oAdemK4MZjPq9tD38qyf69F+9Zo5odCUwOPXpTgvyg8nPoO9Z0V59lvHtmP8WBWk5yFH4iumjWjVgpx2Z5eLwtTDVXTmrNDPfH/16P4Rjntilboc9up96a+GPT8q1OUAM8t34pfurhvyH+fahfk5x69aXpnv/wDroATd83GOvrSbSGycgnp3pyLwvA6dhTgvpyQeOaAIdpDYbpj8KR4+DwWI6fWpOjd+aT0wTjr7UCI2X5j6ZOTmkCgLydwHfH4Yp7KVAPAx2pCfMHyjOfeqT0JQm3sOcUxlHLEk46ZqRc9HJ+9n6Urd/bp7UXHYiYb1BPQdRnrRu2qv3cfSn4OMKD27VUvrpbaM7iAf5VMpqMW5GlOlKpJRirtk8OJJMKQdx7U+6h8slc8n/P8AWsnQ7kySyXExwi9Perwuhdys+eBxx3ryMJmMsRiHGPwo+nzHI6eCwCqVPjYjcHqCMcE0z+8NvPb/AA/SpmX+7jPvUYGXIyOf4q9tHyDIT3AAP1qI565x6+g9P5VaxjlvpxUDY7cjnj04NNEtWI3boOnfpUe47s5Jx/X/ACKdKu1iOmP1/CmMD/FggevGKaE09xG9ue/rUZxy33s4x/8AWoOOrdueaafvdMEccdKYXGlVyewH60wjcfmGVH0z+tS52scAAc1GSd2MFsDp1oM2kJswpODnPGOMVBsK56DOanbnp8uevv8A41E2eeSRznBzn/OaaZnIh5MbcDnrx1qNkH1Hf61M2GHv+P1x/Ok2lfwqiehWk5VTjLA9f50zBVdzA56mp2+7xggnIqMruT5sHbgiglrsQSf7HAA/KoJl6YwwxjGfU9zVmTaCw2kgduv5VBO25crnPsfaqIexVMZZsKOvQZHGKjkUMh4ztU9O9WfdiQSem3k/5/rUc2G+ZiC3Tb6j/CmSUJcMDz8p6554pkyk4Izz0568f/qqw2OSC2Tzg/yqLYMgAths8df0/KmIrspPcdRjnsKhk6+mTg8+/wD+urUse5SFwR1qu/3g3IwOvrVIhqxUl6DOMn2zimqBg7vl9/b/APUalZTJxkg9j3qJsk9MZ4yemf8A9VFiFdSuahz1XtzScs6nk5/nUm3nuAOuT70+GPzOWAwSR/nHvUHVJO9iSNdrBVOA3b+dTxJ83IOGPJzyaXb90rjPbnI69/wp7YzgEkD2yf8AJ4FILDgo2jdgZOfcj+dSrGGxz7DBqIHbnnKgYwen+etTQnLEr1H1xn2pWGmnoyWOMjJU9wOnFSx/M2VCkk/5/kaRRliQcdeD/hUq4Xgg4z+tFykhy/MflH6/oacuFOCWHvQqgMc5GMc+n+TihiTnPXpzjr/+qlcoUcMdxJI/lUsanIXjjt/9aoox8xALY789KsIp24xyeffuKhlxVxyrxnPXpzT1UkMGwB/PvSBflG47qejcZxn1x3oZSYbGdRz9eakWNVz0GR3pqnPpj045qRF3ABunrSuUrB95cfjU+w7sdDSRLgcbiR+ZqfcORntk0yhijcMdu/P86cPlAKkZJ69KVOOeDnrz0o5ODtIx2zzUh5kmN3A49z2NO2kc8cfw0sYXrzkUqdcDBNBVhqrhc4GMfMPanqu1ccetKqbc4AzjJ+npSr8wwSM9dtIaQAfKpXIx75qTlSCf8fzzTVxwQCR1POfx/nUnLcMBnvx/n3oZSDb83PPNO2n5iABQMbfm/D1FO9AcZ6UmUNjQdG5xwfSnKOp5BNG37o6D1ApQeBzk/XrUhcYq/McgUpUDnoKk27uc57D2pNjcnLYOfrRcdhgzu+UDr3PanKpOCCV69TTtg3AZODkdetSKNuegpAkTWv8ArV+71+nNaAuDGQO1Z1vw46gipbhyJB17V42aq6SPs+F5W5jh/Hl02k6gt0q4UkbsVqaHrkeqW8Wxg2AKh8f2JvNJkYDdtU/hXkfgrxNLpOum1uG2gthQe/8AnFeJluYfVsT7Gfws+l4hyT67g/rNL4orXzPesZB5xg03aCFzjH+eaZY3S3cCNCQAw7dKnC7cfX07/wCTX2Z+UtMYF+bH6Z60bQcDB4qRvfPWkKnpzmmKwgG0jbyfX0owd2c4HXmnY+76Zz1pOTk4xx/nNIYxl69/XPem8bu2Dxx+VPZTn39c00r29e3NMkRgd3ufSk46AgYz26UpYMxxkD3704oQF4GOuBTC43g84J703BHytnPcmn7cdDnHFI5WMZ56cUiormdivdXKWsYYAE85rjdc1TzZgFb6/h7flV/XNSOWVD7df8+lcZPebrhkk3Z+9u6e9fH5zm3M/Y09j9O4X4c5EsRWWvQ1NW8ULpOmqsbENJgbR1JzXU+GZDdacsjbvmBNfPXi7xBv1qKJGLiJwcDpwa+gfBcvn6LCeMbOSOv+etbcPS/eSXkYccQl7KD6XNraVU7Rx04/lTdu1uxz+lSZ+YDjIxgD+VIV79vX619cfmTREyhcYwDUDKGz3A6/5/OrTDa2CSDnt6VE2M5bp0FNESK8iZVh1/2fSoJELc5yTx7E/SrjZPoR7elRyRruz39OuRimLoU23dCMep56/wCR+lN2/MRxVtoVzjhc9sf0qEjH3R1b17UxMg25JPPP3aTG37oySBz1qVh2BDc565pjrtXLEH2oJYxgGP8AKmt83GVwM5qRcq2WyM/lUbYDAMQP6U7EuxC2F+7ggdM1Gxxyoz1qY5Zvm3emPxNQSKV4GT7+v+c1SM2Q/wAICggLjg0j/dPX3+lS5wPmBJOf/wBdQyEcngDOeuP8/wD1qdybaEbxjgcAHBFV5s7j0yBjrz0/SrMi/MTzuPf0quxHOTkfXpmmZsjYdsAnjPPXOelNbAUDHyjOak+7gFWVh/8AqBpkg3ZG7AP8vWmkK5RkjHHAxu9xx9PyqF1LYAycDt1/Grci7Vc8kDp+fTp6VXkyclsqeg+XB49aYnsQbcYwMYx3zxVeRV5HUn1qzL/s7g3t61Aybf8AdbrVIyfYrP8ANkKPl3f3e+f/AK9M8voSBk1OFDcOCen/AOqmbQGJYbSejevHf8xQCNPy9zDjn3qaNdq4XPfHXj/JppVduOeTk/N/WnrIqrhi2T145rJHVPck3FegGeOPXPpUik723DB7+9QKpJ3MxPt0Hp/n8Ksr8zAY6Hgg+nbNMi5Ii/L8px6/SplQNkY47ZP+frTFXgkKA2Ppj8aniTaV2k8/5/xpFrzHRofXoehNTLGc8MRg+vWmx8dBj+lSZOe+T156mkUP2nB2Z/xpiqepB+o4/wA9KCv0OD2471IAS2Tz60h2vqPRR7ce+KmRcrnafXI9fpTI16lhnpnIqQfn/WpZrEUZHHA570gXceMkg889KVVPG7r1Ht/nmnL90nk5GcUrleoqqPlHHpj1zU6KVUcZz6/qaYinqwIJ/u+tTquOPm5HT+v86Bocqn+EdaeM8fLnnAz3pBhecDH0zxR8yqu773fB7+tIL6ig4yoOBilVSW7bjSMx3A9fXj371Oq9gDn/AD0oGKELZ6+30qRVK54PvQq9we3rTl+8Rg9edp/pSNLID/q9uTxwc/59KF78EsBzikI+Yj+H/PSlX5cHJH0oC45f0FPXGcZ54zmkVgwAwCx65/z60/hmPPf8v8gVJQgGMbvpuxT1Uc9B0FIBkALx0p3J+hxyaVhpDVHzZGR7t2pypwNx4H8PrQo24xj8qd8uPl6etIYqt7D04FO4xxk/pSdMZYDFOXgDHUfnSKQwjLZPGO+elL/CT15pT975Tx69OKM9dxznpTESwcMMdqiv5D+Psf6VLbrtYZIA7YqDUAm4c8kV4ubOyifacKJtyKkwN5ayRTLuyPzr5y8f6bcaTrjTwqU8tsg19FRZSTIAAPtXDfEzQEurN5o1w4HJx0r5DNqT5VUjuj9OyipHmdKS0Zm/DPx8NQgSC6YeYOG57163FMJEU9R1r480/V5NB1YMrFcN69v84r6O+H/jBNa0+Is4LEDv0r6Dh/OFiKapVH7yPz3jHhp4Ks69Je4/wO3cdAvHtn/PrSbunXPFJGNy/T3pSu0EYxnpX1B8A2BHbOf0o/iz3PNKOP8APtSlQMDBAznn/PtQBHuzj396GHqeTS4J7njrx1pduevOOlADCuOxznPT1p8eT2zn0FCx7W7/AFoLMx+hzxQCGY5HmHpzx9aydZvBbqwz83XrWpczfZ4i7c+1ee+J9WH7wg8dueteJnOYLD0uWL1Z9dwxkrxdZVJL3UZmq6lsk67s+9ct4guv7Psp5pONw6n/AAq2haZhJKxDHk8nH61zHxB1AYSEZ2rzgdsV8HSm6k3J9D9kdGNKmoI8/uLszX6SMcMz9c5x6n/PpX1N8OJvM0KEtg4T/wDVXyhNII7iM8HLjA68elfVPwvk8zw/BwxIVT29BX0nDkr4mXofCcdQtg4ep2RUr0z16/jTdhbOMZH509SWwNvQdPUetJ8wOD9304xX25+RkJ+XJ7j0GPzpjJgfUdfzqV1wT75/KmH0IOR0OfSqRLRDwMEZz2oKHHy4AHWnKNx9ATz70rKAcN9Pw+tMgrtllz0qNhtXjkZ4Hap2HdcgDoKjbpu9cdaZKIXjGce386jbKgc5PT/9Rqwy+xIHNQyfePG38On9aYmyLaAeT8p4qFx155zUsigNkYyKaUP3hn1waCZa7EX3foM9B1qvJzywK465PX/P9Ksvggjtt6VEyfMMnGPTjrTMmQN0HHIqCTLHHTBGP8f8+tWWUD1BX9aYR8zbemBjjrVImRCV3KOhBHYdfbFRfdjyvXGT9KnbsAM59+gpjKvzYyfp0/zimSyvtx269fyqNl2uNvT6f1qxJjb7E8jpio5FIA7e1NEWKcy/eDce/wBOlVpVwuV4I9f/AK9W5iCuI84VgeB/L1qpIpWTa3cAFsfzpiIWi9vvdPXpUEh3LwDjPQfX3qx9DjcaieME4lxgcYA9KZD8iu3HYKPYHgZ//XTXA9c5xyvSnt1I5BPpTDkYbp8xA560wi9TYjXpnP0xnNCKWzuBPHU9D/nHf1p6MFzzknpzgU1lKyBR0BOARWR1THrEC2QC2cH361ZRNuT1+nNQw27Mw3Y4J/z/AJ96thdqjb2/LrTM9x0MR2jGcehNTLnjnNRcEDjgD7vPSp1YHHY/z/yKVy12Qq4wTtA69+vTFSK3y78cdKTbwDktg8e9KudxGM9fXtSHsO7469z369OKlVD8xIOT75/nTI1zkNyCARzip8Hd/LJpMsWL73XGO/Q//qqQfKvJ5AxTY14POBjpUvTPIwR6c96lmsboaEB4Pf8AWnRqzZ3ev0zQsbdjg+oFSL8q46ikmUkSRqCoz/8AqqTlgDk8dlNIqFV28Z45p6Y/iHNAx+NhULyc0mVbO0jmlbsOW7DmnlcJk8gf5NLoNCKhbG0kY/z/AJ+lTLjPzAY/Kosf3s+vSpVXJJx25PtmgaJAwBx2PpxkUqr8vzZ56d6Yi89B0yOO1THPRh/D2pFpdxoUAkr8tLg8HHyn+tKx78nHf3oVPm+Q5PbrU6j06Cx/MoLfyqTnoMbiKbwMcg8dc9KcoPbofeloNIUfez6dsdaVh25wPSkB+YHPJbtyRSheo6ikMUJjDMDg9v5UYGeO1KvOOSf50vp/j1oAVVxkjknqKVn4xk8/e9aRf60oIGCMUikAwuD6/wCelKF7NgH/AAo3dQo60v3+gwfWgCSP5WyCMnrWXqEgNxtY9P1rWjXr3HUfWsLUHzeY4O2vAzt6RR91wfTu5sex2sNvzHr9adqFiuoae6soO5PSqsmVwRkMPStXT2MsJWX5iQa8Rx9pSaZ9zBunUUkfKHxJ8NtpmrOI8Bd2cfU074d+KpNF1GNJJfkJAI3V3vxs0XypjcRrxz7ZrxKS4FvcDaMk91HvXyNKtLC4rR2sz7DE4Wnj8DyzV00faPh7VI9Ws0eMgjA5/wDrVqMp/wCWfXtn/PvXhvwZ8ablW0uH5H3ct2r3SF1kRWXnOK/WctxscVQU1v1P52zzKpYDFypNadA2/d4Hel2fLjrjGPakYFcA9Pp1o3cH17kDpXeeMNb1/vUHH8J+nr+FKy7uR1pFHUn+VAgwCdrYx60NhVyx46cd6DjdngHPeqGq3y2tqSp+boB/SufE140aTm+h3Zfg5YqvGnHqZGval5asqkdOa8w1y+826xvYrk8Duf8AOa3vEWrNFGzMxyc9a45WNxdKPU5avy/NMbOtUbfU/e8jyunhaKSWxsQsPseVXL45J4/z2ry7xhdbr6QlixGe/of/AK9el6w32LTyYF+fbxxg147qkhmunaVsknk/57VUFyUvM65PnqmJduVkWTsCOh4x19K+p/hDcC58PwAY4jA+vAr5ZvmDHaPvA8N3/wA9fzr6Q+B1wJdBhTPRccHrjp/KvY4bqf7Zbuj5PjujfLVLsz1UrnAORjpTVAZjnOVp+3gD36/5+tNXj7vUcf5/z2r9CR+JDZFHrj+ftUXB4zxUjdMZ5zimc4PoeM0xMZtOPlA/z/n9KRst9T1460/cPbIPPt/nNJtzknAPuc0E2I2ULjpx97/9dQyL2PQnnvipj82Rzxxx6/41EylsgdeT71RLZE33sY6mmSct3UgHJx1p7Yyh2ggnPP596ayBlzkjB96ZL1IWHQMeRg9O9MbbuyMEZyDUrKFz3x0x3FROpBDKc/1poTdiFvnb25zUZ9GUHHP1qZjx26ZqNs7icZB6c0zNld1BYg5GfX+tIy9uBjsae3y4Zcknjgcj/P8AjTZFZcZHJpozIG7DO0dAKaw+XpyfXrT23Zx/D60yVvkfjnBzntVkNkL4XjAAz/8ArqBgJFPZm4GTVhiejZG38cmoXULnJGO1BPoVpFJYhyFJ49aikX+7t3Zwcdz9foasSfe6j2H+f88VBKdwO0Zwewxz60yWyuYzvwpwvU/N15quzbeW44wOMjB9KsSZUbsbd2CM/Tn/AD6VXmYn7xPyjA44x/jTIb10IG/i25GM4GOKiZV/iz34H+c1PJtZWK4HP6VECGUcHHTnvj/P6VS2BayNuMd8q2eMDr/nmnwxhiQQRk8/lSL90Fc8e9PTK8lixz+X+c1jY6JXLC4HVcjJ4p+Dx5i9Bz1/H+VNjXOAxBPf1z/nNPY7U6tg9fU47fzphcWNQmeff1x9am9dpIK54x+VRrgdB/SpVY4IUcVLHEcuNoLYI/Pv0p6Y6YYEGkRflHy9Tx2qVgOd3PXGDSLsAUM2OhqwGPOePcf/AF6iUBWxuP8ALAqRSOnQdwaVyo+Q5MFuM57YqTJ3Hdxn+H1qMD5gM/MOnfnmpFyzfKB070jRDtoUqMAccGpIgMEYHHFIi4xt9PX9amGemNvYt7VLNLJDlHXd1HUU8LuJ3cfpTVj+U+vT609U5zyOM4oEh/3R2wOKcMgfMMdunFNVvlwoBxU2TjOB144yf880FIauSM46cGnryCVOBz+dIo4OP8/54pS25TyT34/GkMdG3y/IcgdMc05W+9gcZo2lgDkkn8Mmn8sp25oKQOueTk8Z/wDr/pSDHG3PHvn6UpUnGV/D0/zzS5P8I3D3qblCsxYZH88Uq/O3+c/55pR0XtTh0HAz7elIe7F27cEd/wCVPVujdCBjr0ox/eFLGu5c9xzSKGrxjjpxzT9ozjORQ2eBjP48mgdM9PWkAu4HoMHHendjtxj1HaiMAjqc4/Cjbx3+tAwI5yOnr60qqFGe9NO4BSuOT1xQowMY6+lAiWMfKemBXNXysuoN+XHaulRfl+g696528YrfP/hXzefPWB+h8Fx92ZaRo2jCt1NWNNUrJ6q2dtUoVLpjnOOK0NLUJL82T25/pXk0n0PsqkThvi9pgn09pO3Xivl3XIRDcNxkZ7jkGvsnx5ZLd6TKuB93jNfKfi3SzHfOjrlVzyPrxXyWcU+XEcy6n2ORT58PyvoUfDesNpGpQzxthgw3c/596+sPAviJNa0mB0cMdgxzXxw8Zt1C4G4ccf5/zmvYPgn4uENyLOZ1APTnv3/rXu8NZl7GsqcnpI+O45yRYjDOtBe9H8j6Rx8vTjPbtUYA6dMUkMvmRo6nII61LkFc449u1fpR+GNDC3UNgHpx3pvA3Drn9Kf/AKxcEce1H3ePoTmgLNjJsKjHIwMjA61wviTViJCisdoJz+ddN4g1IWdq+SQfrivK9e1JnPynr9K+L4kzC0vZJ7H6lwTlC9n7eS1exn6xeC6uAGx5YOW56nPWqemFbi+3K2VXgVl6peNtEeWG737V0Xg20SSQu+NijnHeviYN1KqR+qumqWHbQzxlMLXSWYgDjCivGZG86YyM2Mc16f8AE25Hkqm5gBjI9PYV5eVG3nAH+fSvWxLtZHk4ZdSheBW+6OT2r3n4Ay7tPxk4B646YrwSdfMkygBx3z6d691+AORasGzncRXTw/L/AG+J43GlO+US8rHuO0HO3NG07jzkHtx1/wAin8qAOlRsnykZGetfpyZ+BMaccZwaZyuemefxp5Xdxj+tNZflGRlcf5/pVIl3Ix2DZHHIphU7gW98jPSpm+bO4KxFRZ2jrndz65oIem4x+wUcnpUbEHK54HSpJP1z370xuFGMc1SJbIjywLAe2fWmMo5DbT1PrUmzJJ4PA+lIVz2ppE3K7KC2MnNM292x+XNTsoYf55qKTpj6j261SJaKzY4IzmomxtxgcH8xVmQfMCMH6Z/z61ERuHTJHWghkLYwPM6DAx71GVHG5Wwecn0qZv8AZwT/ADFRSHA4H6fpTIaIZCUJJyW5yv8An8Kj27m7kjn/AB/pUrN5jkZ9c4P+femthhnP6/jVIhlVmXdx0Ht6VXmxIrY9BgdRnvVuT5sjod351XkUbcDgD9KpGbKwX5twHJ9/6fWo2AUg8kA9AORx/wDXqboTuznpt/8Ar1FJtwX4xkgZFMggbLKx6gep/X+lVpPvEnPAzndk/r+NWGyNytnjAznr/wDXqCb5toz9Cw/xoGV5D8w2qNvrjrzxUasFxkgn16fp2p0mQCrN16/1pv3W+Xtxx3qraEJ+8b0a8Y+8VOf8mpYw3Lbh9481Hjc37zk56fpUkfyqBuJx6d6xZ1S0JI8sehbI+mOamC7h0Ud847GmKu45ySBxnof89adkdN2Px6Ypkof2IUYJ59QDipVxuwwPHH0/z/Wo1XackZxU6fLjJO0+3X/OaTKQ6PBXjgFQCMcVNGoU5xtwOvNMjjHIPIb29qlX5ccnA9v0qTRCIgWQt1OPzqThW9uegpAvzHj2z6U9FCnPc5zxSNEhVzkHn8un4VKq7fmDHd1APWhV6ds9qkbpyp98+v0/CgaVhVUZ7FTjoc49f6U8cbu+OhpARtGSGJHt+tKM9R7/AP16llEin5fmGPY/0p+75e4Hv6CmrgZAyxA65/z3qXByeGP0pDtdCrwvykflipl7AA5H+fxqPduwASSfWnKu49vT/wCvSLQ8Hr/nNIcN0JJoVehz7keozTxnHBJPX0zQUAwuMAkDpT1AU+55HPNMx8vbFSKCvoQaTY0tR3RVLY6Uo+X0A9O9G0Fc/lSqvTOM9/8ACoKe4u3P0FSL/sjAz6U2MDj0J6ntTsFuPvGkNDz93AGMdjTQTjK04D7vX8+KOvHbFBRHn5hxyKkz2xg01eODjA/GpEwUwcAj1oEg2jnBGTxQy7eB079KXg5LdDSjGeOvTk0DDpz0ANIrDAFLwwAx9PxpfLG4dAB/td6Bj7f5I84IBrAvMG8fAH5VvxjB6ZPSsK84unJx1r5nP94n6LwS7xmhtq5PGOBW1Zw7iNgwPSsqzxuwx68+tb2mruYZHTmvKon2FYzPE8ZOnS5XIwa+ZfGVsWmmLfKQ3y4z619VeJYw1i8ZXJI596+a/HlttuGwpbLZPoa+czmPvo+lyKVo2PLhEJSwYL8vNRaJqEmk64sqsVKyA4H8q0ja7b1lwBurKvbIpcFo8jbgsB6V5VCbi1bdHr4ulGrFxezPsjwLqy6zo0DKedo9+1dF04H8PpXinwD8SGazNnIQDGcBc9v8mvbdoPTHrX7HleK+sYWFQ/mfP8veCx9Sj56egjZIHGADnikb5QWwOOadtweR/wDXqrqkyw2srHC4HNdlaoqdOU30PPwdCVevGmurOF8c6l8zLG2Snb1/yK81urpmkUTZJ3dPWuo8QXW64LsS2G/i5rk5VJvGlkA27a/IcwrutVc31P6MyjBww9CNNdEY+sEyyJ5YAPXA7H/P867PwYjJbDB5fG7j/CuCuS93egRkcPwOP1r0zwrCLWEBuXAx161z4T+MmerjdKNjkviVCqsh6dPy6V5fdKPMwRjsPavXfiFZl8zSdP4Rn/PrXlksZ3nuNxxz1r1MU9TysIZc0LLH8mdzcbule3fs/tm3lHfeQP8AP5149dQ7GCcDbgH2r1v4DSrG0iN94N+VbZC7ZhA8jjCLeU1D3lTt3BuoHemMDu9h6dqkHpjH+FG0tnBO79a/U0fz40R/xfKRyP8AIprLubdkZHUU/aFwvLCk2jkYwO/tTQiDkdt3v3/lSMnzA4PTpUzHB+bqf5VEw+YdufWmTYjYKTh8D+lMdQWPU4/HNSO3UEAduvSmEAcc8kYFVYzdiFsbgcEKcgfSmSYbpj14qd8qNzYxUJznv6degpolsj9l4qGQlVwp45qw0YXJ7ZPU1A21h71RHUi4baMjp0qFvm+6Tx3qZo9udvPOMdOKj49sUyZETKWxnnFROMNzye+KsFj8w5x27VAynI46ck+vFFyWkRtjYSST14A4P+fWon28huO57dqn8vPOCAecelQv8zMMnHPU00QyCRRkHH3e1QyANnaeDx/n8qsSDONuV28cD2qu2G74B6GrRkyCRQqnpt6EVXONuV7c49T9PwzVplBXO08dBULNswcsB09x+f4VSIZUkbexEi4zxnt61Xmk6Hnkfge3+FWGwHxhe2RjqeKrzKFHRQDx9B/OgOhXkUsCM56c1C2Sckd+tSy/dHfqeDkCmZztyQR04Hb8aZC3Om4BGce3NJu3N8rEg/j+tKq7m+ViCx4HvSxjdkYwQfrx/jWR11NyXJ2/Lg8fnSqu7nHB74oRCpPPOOO2fyqVcLgY56YxQTYVQPbpjGPyqaPJYFTyKYq/MNwyakzlsclT0ytTcuKH4zxkg5z1FSKvp9evJNM557YP1p6/MeQAc9cc0i9Ljh94hiTgetTR4284z/WmovcHGcdvepYgS2cH5e+fekaRiKuA3QqBxUoG5cKG44H1NMCgc5PoKkXDZKtnjB7HmpZaQfL05PTJ6U5UK5U5BHQD+VCqMdTx7VKi7cDp9aTCKuKqgghTx2NSqB6dB6VGMqMqcc8elShSpznBxmkWh21mUc5P6mnqoXvgqaaxCggLgHvjmlbt9OPQ+9BQ7nkKetCpiT5f5Uq49TzS7fm9h+goGL/vA9O3rTl6knn8OKWNdw6H86VfbBJqShQDz7fpT9o28EelC5zhenrQexY9/pSuOw5ewXHPrSqu3r1ojJ9+f85pP4tuT3NIfS48dieB+opMcYbnNC4xzToyVBx074H8qBiD5tvPSn8s2ccHmhV2n19KXbxngAigFsKVGMkf5zSDA4xjI/yKcGwNvcUcntSHYQL82V45qTbhenXtTVXaT1AP4U9f4l5JyfxoBD41+Ut0AB/Kubu33Xsgz0xXR7cxt2xXJ3W/7dJyPf8ApXy3ELfNA/SuCIrkmy1a5WX1AzXU6QpJB45rndOUM3zcmuk04NDgLzXlUn7p9dXWtiPxJ/x6sO+3H0rwXxtpiyNIyjJ9/wBa98175rZyp421494ws/NOVBHzEk/5/CvBzN3ke3lL5UeJ3tm0d4CCQQcdKyr602Xnlndgrkd67LX7NUvgq5CjB/WsXUrb7jjOdp2/415EVY+h5uY1fhXrA0XxNFEzhUnOPXFfVNrIJrdGGcOAc4r4dstSksddtZEO0xzAtX2V4T1AX2j2r7gx2AZr9B4RxXNSnSfTU/GfEbAcmJp119pW+42/vMR3HSuc8YXv2a0ZNwG79K6M45KkYPr+lcB40u/OudnDBTmvXz7EezwUkt3ofPcJYJ1syhJrRanGX4N1NsbkZ5H1rD17/R1OzCbF7cZroLhQo+XII5P/ANesTWwLhMRjcpHOevSvy6Z+70NGmzmfD6fM7N8zbs8fWvRfDMgcsrE/h6elcLppS2t3MYyQ3Ndf4RkDB2O4E1WFfLURri1zQYvjiz+2wk8gKegHSvKprfy7lmY8Jngev+cV7F4quI49PKw/MzcV49qzeWxiz87tuIA9DwK9XENctzzMMnexh6nJsjZ1GSeRXoXwDlcanKWY/Ng4/lXB3tq8luWYHcB1A6ivRPgREo1KTAye596nJ7/X6b8zk4m5f7Jreh9Hr80Y6Zx1poXk5OKcuPLB6fjSdj7V+sI/nKS1I29PWmjc3Xpweae3bd26e9RMc5x941ojPYGOVJzxjqO9RnPXI5z909KlJ3cc5/rUefvYyfXtmgTZG2cnjp1H9M1Fxuzlsn2qaQq3cDA9KhbDds8/eqkZNDGXbwVz9f8AP0pjfNwWII6VI2eehA/WmSDf95hx2PX86pEEZwG+bknufyqFvl4JwQ3/ANfNTyfMfmywHaonUcnpk+tNCkQbSOGJ4x0HvTF+U9fryOf8etTsWOOCe9QMx56njBxzmmT5kb46r2/DNRMOcMwOemccfjUjAAAL9feo2HGWOPfPSmiG9SJiF4XJPI//AFVGxGCeABx681K/dm5AOelQ7fbqfloRLI5G4HUjA7/r/Sq8nc9DVibLY2jj9RUMmOBxx2q0ZyKsg285wO2e1QyLwNhOefr/AJ6VNNjzMrgZ/Dt6VFIcL16Hgn+lUZWuVZAQ25Rn/dyD0qrMx69AfarEi5UmMAA4AHXJP+TVeQk4VhjPTPGKaJZDt3Lj5SBy3+FRqDzjGc/0qR2zj7uCflH+foKaMZ7c+3X/ADjNA1udLGpB5Gf6VIvG0t/WkXcpHPBP9f8A69SJhnHAI7HPH1rH1OudugIpJyp5NTKNvHoelJ6cknrkUgYtnAHXse9INiZM9eueenFSJzyh59c8VFt+bPJGKlXK8KcYA+lIaJOygjOeKft6Hp6/WmRqeevvzUy8HBAOP1pFoeqjk5Py9vWnqNzEKGx1NMjUfxYO31PtTvvZ2jBPY9KDVEqsWbpgYqQL0B/i44qOMbWO49anjwozgnGOD1HrSY0LGp29M55/CpEXaT9T/n9aRS3Ug9OB/k0773BOM8mpY1sJ91eOCefpUi+mVB9uc1Gq7lG7JH+ealQhflABOOfekVEXcVxx2p6sWX5frimqFPTP+TUi/Mpz0+lA0KmevbPfj9Kf0Yf5zS4P4+p4pc7sNjPWky0IuVzjP0/z9KeuScYJHt0FN6qDzyMnFKCAv0H1zSaGmODexAp3foTz0PpUQ9SSAOKfuOctk/0/GlYLokYe5GQKcpPQjk/jUatzgrx70/8Aizj6c0ikL6k85qRc7VI5+tNVfl46nGadkbQOvH4mkOwKpZRmlwdwBAPtSBjuxjnp6Uu3tz/WgELjdu2k0qZLZ596aMmP5QeOv605QeSeB0/yKBofjoDn/GnIuQTg/lTMluDj6g09WPQgBqBpIkXOMGsK4tdupEkcNjnFbQb5gME+/rVa+iw6yKOD1r57PqbcIy7H3fBmIUakoX3IUsjFIHXtzkVu2C/u1LDNV4Ss0ajHNW7dfKjPPFfPp2ifdyu5FPWnCxP0wRXl/iALIzKepOAfX0r0PXHPksP5V5vrUMl27CMfNXg4xuU7HuYH3Y3OC1W3WSchxndgj+lc/cabNNhFTcB325/z0r0ePwjcX0iZQrkevNdJb+DoIYUEgXK9c9/88Vzxwz3Z3fXIx0Wp84XPhO6N15oiIUvwdpFfQfw31CWz0mKKYnKKBzWnf6DZiNYxGm1eV9az7FoLaTZGuMEbcelelgsYsDPmgzxc2wMczp8lRaI6q51w7flG4H0riNcklluHkctx6dq6iOSNgNwHGOKjvrOCaI+Yq10YvMpYlWnscmX5PRwT/drU4Vs7j5gBQjqSOKw9RUQLOU2uv+fWux1TRw6t9nJ3Nz9K858RWN9ZRzcOVYY+npXh1IXeh9LQl0ZXscRaPO/V3bj2/Cuq8NgWtkrSP8zY4z9K8/s74rbhZgAwOME/54rprHVN20DhUwcA9umf0rGLcZI66i5oM6rVWE1sWOS7cfhXlGrQibVWESkqpwNvQDP869FkumurctnCquMfhiuL1C3NvdM+Ccn5eP8APrXqufNBHm0lyyaMjVmWC0IJwdp7fhXefArT3aZ5iCNxx9cV5/qEf2iQbwck9PU5Ne8/CHQRpejxu3ylufrXo5Dh3Wxyl0R85xljVh8rlG+stD0lV+QBgTikJ29M4Pf0pS3J54pN24fMB71+lI/BmRtk44OSaYy4x3x0z1/SpP4unT/Ipi/mQKszdhjZ298dev8AWkxtwqndjrzT9rLjbgAmmsMkFeh4z70xMhZAD6j0pjZ3Dhcg9PWpGQtwMeh7Zpp9Sc545NNGYx9xbkdOOO1Qsv8AdABHc81LgFR2/HimSfL94fSrREtSBsce/HUU3JHB7VJtG0ls5B9KYwyxUD7w/OqIIWzuXg5J9ahbAXB2jI4qzJhhnAx2xUEq8DgDAwNvfvQmKxXZTx2A/lTG54bGV/H/AD/+qpP97OfYenpTWXbx6gYJpktFdzjHtSPwuFwM5OfWplxyFB59eKibrjA280EWIX+6Nw6/oT6fpVeYBvXjv0qzMmcqVJIORxk/jVRtxX0ANWjKb6FdhtXtluOPTtUEmONxJGcrxjp/n+dTyMyj5cAnoeR61FKBtJxyOeuM1RnbsVGZFJ5BBI5P07VVbdtIIBHf1/zxUsgKk9d36+//AOuoJcKQG5PJ69f84p2IbIpGPBwcHpiotxXJzu25BqVmBy3T+vFQvIV5zk5wcnrQJbnW4O3Gc4NSK5ydzH8/xpPmyuTken/16TA6Dkk9PTHfmsk7nbUXVD13cnJIOf8A9f61KnpjHzdhjnrUYY9SMEdh9f8A9VSx8ghQOvbt1qWJD1G1ju5xk4Aqb1HsOCcYP41FGvzYyABxzUin5e+T+n9KRaZMML1Oe9PXG7OOvvUUf3cZGPapY/lY/lwOKRaZIrbccknr1pV6YXAYimcMT146VIq9OM+pNI0v0JI8qc8ce3+fapxjd82RkY5/z71HuxjjgY4x29acuDxnOO9ALsSrnj0IHPej+LDEY9KFb5eSGPTNPRQ3I7D6HFIpC7fkbg5Pbt0oBG4ls5P+f60rLuByDz/ED0o7bsEg98ZxUljl+XAxzU8chYdhxUK4K/MRwPzp4bcy8+n/ANb+VA0TqOmMYHJpSyngjn0pNxOOmPUDik3K7Hr8vTjGBSsXcdzt5JBB60vDc846U1fu+n55FPHcN6dzUjQoX5cY70rY65Bx70gU+hOaUZz7H7uTQwQqqf4cY6Z6/nUn3fSo17YyMfnT9w5A4zmkxokwMZzx296Ujdzxg/54pPu4OfTijO5eMDP92kULjp3/AM+tKvcDqaRlwwzzjpUi8DnGaAAR4Ugk4zQvfgjHvTtwAz60ZGflHBzQUKsf0B5/GjrxkA84+tI2FAPUdKeOg/hGOKBiKdxwM5qWSPzrbHHA6VDtO3I6gcGrNrIG+8CPWuTHUPbUXE9bJsX9XxUZ9CvZxkNhc8Gtl0Aj/wBrFQw6fscOoyrVPcKFjIzyK+Hqpw0P1ujUjUtJHPaxGZsiPkms/SdEVVaS4UZz+lby24Lb25A/Ss/UrxLWMqpCg54FebUio++z06c5S91GbePFbyM1uFUL1xjisS81TKZ7D86i1LUCmdpJMlY15L8hO4njOc9K8ivXfQ9WhRXU1ItSjuG2SuCfQmqbSQQ3OB1IrnbiTy54ZFbarDOc8Uy5vik3zYyAOR0PNcTryO5UEb0niBImCHAbdt4FVrnWpPMKs/3mx9frWJMySeS8Pylm3fQ8cVLMpaOWQg5cbl/Cp9rN6NmnsILU2LPWPO1ERsP4eaNS09LuOTzNuGJ7VjaezC4MzjJKflWgdQEsaMx6Ntx75relWezMalJX0OG1vw2kfmNCMuei/T0rn7K7aG4MeMMpAORnocV6ZNCLi5LqPkQYPvmuT1TRY4WlvFCgKScEdT2Fdbhzq6IhV5dGa2nKJI44srt6t9faq2u2KxwlhggDIxVPRb8oo3H5vy/WtXU5BdW7JGcZXv6f5zXTQlfQ5q/u6nHaHpsmra7FHhiiPk4Xpz3r6Z8O2ItNPhRf4VHr1/GvO/hz4PEbfaJF69yP516tGnlqFXkAcf8A16+84ewUqVN1Jbs/IeN81jiK0aEHpHcccLjPXOPrSM3TAPXk07OVPIIz1JpjenTvxX0h8AxrKG5woIpoAXhuMmnHGfmOT1waYq4PQc960WxDYm0LwvT2pCvXYMenankZP19KZ0wGxjjmmIi4Vvm3Yx7HFR87jnA5/n/+uppMcZznNRN3BDAn+Hv/APXp3JaI5MBsdqjdfY8e/WpSoxnnK9aa3YZ2mncyaIWGWbnOD9ajZQrE4BzmpmwVPIO3+VQMp2kHHvVIlqwx/lGMgfhx/nrVeXJUDj0/l/8AXqwykK2Dj345qJ16gng56jpTQmtCHrgtyf5/55qMt8pxwvb/AD+dTHK4O4DPGR6f5/lULf7ROD298e1NESRH91T1z7VDJ8uTknGOf6VYkI24bBx1qBxw2e3r2NNMzaIZsHJwMVUfLbhwAO/+FWZlH8B7np3qN13dev8AdH/66tGU1cpth+OnX8PSoJ2IUjJ3D0PX/wCvVqb5fTaeB0GPxqrLlmGf4sj/AB/lVIzemxQkLM5yqbccDuP88/nUUyjjjt1xz3qdl3YYdV44/OoJCDgqcn35x+H407kepBJ06kjg/WonXOSoAAb6g5//AF1PcPsGVCsTwMf/AF6rMDknJJHt2ovoO2p2IbJIyDz2Pv8A4U4MFY88jkZP4fhTOeN3UnqB/jTujBlXdz65rI6paEiru7Y5PB54/wA5qWP5sc8n/Of1qIKRjqM4qXkY6A7v881IyWPO7vxxzTlwOAcg4z/9em4OOu7GakX5SeoByeO5FIpD1G7k459cU8KMjcDz+pFIvy4K9e2Kcp5OCG4z9aRaFU9Bk/Mcdf6/561Mqhe24nI56/54qKPKqC452/5/z/jU6KdvUdOMUMpXH8/wjnA25qSEZYlsBfcdzUfLMM4PI6cVKvDDaRgnj86RSdx6qefQ9akjVd3bCimxsOuB9aeCNrDgGpKSW4m3P3RnHGaXaOR7YpVbtk8/hmndW7Djof8APSkNDdm5SDwCMnn9amVTwPw/+vTVjP8AEOKkX7w3MOBx70FpWFA3ZzgjOPrTlXP13detNXO48/xVJwOeSRQMVlPr+H/6qUjkHjjpzimg+4B6/Sn4575J7/SpsVcevyr04zzSIwHbp2pFwvHfp9fWnfw9wT61JQq5U56dKdj5vmPHX603Awp4Gf8AP4U9cNxnHoKAQLwxB9adgnG0Mc+9Ku0gYGKVWJbHB9xRcqwqrjHAx/hSq2PvHAoVsD/ClUBj0xmkMVk+UD0/KlwBgMelDE7uvT9cGkLDo3Ud6BgqnJBO0CpBzxnHemDGfRjTs4/1nymgEgLBsAttz7Up/dnzFz6H3FM2ZAYYxnrTtwwNwGfehji5Jmzp975gAbqeanvYhx154Irn4br7Owy3B6Vt/aBcQBl5wM18vm2GipcyP0Xh3HznS5JboqX2IbNjnpXAa5fZkLfMMcV2WpTGaHbnAK/lXBavJtuAjcg88+tfGY+XQ/QMuj1Mu+J3Rs2Dv5/z+lUb7BiZW4YDjHFWNQUuwYDhcDdjpUNzF+7BUliD8wHpXi1E3c92npYxrxWkhtY2QgA5+oqG5zNGysm0xgDgds8GtTUo2S1haNiylf4euT/+qqrwFp4ssALhsbRnp1rBx1OuDVrle3XzoUOAUzhvbtVyO3EihXY4D4H0qO/aPTYp1XgZJ6deRV2zdFs4y3LGPP44HNCj0CUvd0KMKn7cwThXUgr7etZ9xIfMCjPlsMjHHNXlj3aqblXAEWVI6cH/APXVmTT1VlbgoTjn+db048xjUlyszbe9KqySMST93I6VV1R43j8juqgnHc/5NT6jp/2aXzVJIXjGOtZjLI1w8khIB/8Ar16VGMo6M4asov3kYYD21x90bVxg+v8AjXTeH7NtU1COPkIDkjr+FYuoDc+I+B1z6n1rr/hugjujJMApzXo5bhfaYmMXseNneP8AYYGVRb2PXNI09NOs1SNQOKut83rUVvcJJGNrDAHX1qb5mUlR/hX6hCKjFJbH4HWlKpNyluxpI54x2pqt69eae3UF/UdO3+cUnGTgc8Cruc7iM44OQP5mmdOO49v60/v06cU323DJ6nNXFkSQz3Xv3prZC5bGPx4p3XnvUbN3YHAJOBTJEk+ZccYOeaY3ytnaBn8MUrcNnJ9qYfmPXHbIpiuMkcnPTt+FM+6Md6dIRxz0GPWmd/UjjH/1qaM29dBrfLjqAf1/zioj+W7mntlvunAOf85/KmH5ei59u1UiWRlt69iRz1xn/PFRMN3r0xipMhpPvZ460xiGPB9snv70yCFmLEdMDn8/8imSLtYhMAdOKkJLKQcfQVDNhTwMZPp1xVIT8yKTPRSeec5qDBGePb8KmfJ4LZPTp7VA/wB7DDnpTRkxrZXJbgD1/pVeVxgjrjrip2y2MHge3XP9KgkPHHyg/wCeapGUivJ/3yAOP61UkHykZ98dPTg1dk64XOcd6pzL8y45O4kkH8/1xVIzaKsi/KWIGBzt4zVfbzjaDx0HvUzFWA6Hnrn/AB5qvI3A6AHkFf5dKZLsRzFeSvyk9+hJzVRh5eD8wI7GpZZPMUqucjPBJNV9y8EdcEdzQTe8jt+FYDOc880L8uABkDnj8v8AA0zAboMf7pxTskYPHXnn/PNZI7JvUmVjtJYctT87ty8en1PNRxt3wW/mT2zT42zhSMdtp4xUjvcmV+i4+9mpVz0Bwcc7e1RqBsA4zj61IpGPlOO/Pb1pFIkXjOTz/n/9dKMbjzzjkn/PWmD5eW+6TzzyelPjOecgDHQDuTSKJVGNvfJ6EVOpCrj0zjj/ADzUKqOAuMf73X609euRxx24pWLuyXrnOTn36f5/rUuScds9MVEGGQPlB6n/AOvU0Z6ckj69KY7kkeMAdAv4Z/zinM7bjtzxxjPP40xW68f59PypDIPTkjjvmkF9B65wM55/WpfUcfnx7+1QKPUAnpyDxU+4KflHbikykPVjkFT3+7mnL6Y/+vTMcAtwD+lSbs/dyo/z/jSZakLu6EYXNP4ZuR19utNCg8LgE+lIzDdjgButIu4/qflAxz3p6/L25PrTFB57gc/lSrncdoGRnqaATHq3TkjP51Jt75zUUfy9MYP+ealUhj1z35qWio+YvHBx0HSl3HJPQA8UbhwMADjim4Az6k80khseuevp6U4Dco3cGmL90BeMU9mOORk0DuP3Dquf8aF+bnIBFMVufY+1PU7ePypDTuA+XtwKduzg+nvTQQWP+TSrJ8vY+1ILj9uOKVmGMn6fWmHHoDiq9xPt+6Rx+dKUlFXZrThKcrIkkmVclWAPORmqtzqCwqBnoeQKy77WNhO1j9KxLrUzcZ+bg8jBrwMZndOm+WG59dl3DNSslOeiNi41gOwXcwya7TwvI11YkyHoMdeleZ6bayXlwq4ZcsNretetWdiNL0VXUAHbhuK8KeMqVrylsfXYbLaWG5YR3MbVGSGOTdwFziuB15t0gn6jOH/xrtrz99C7MpJAPfrXIasqxxt5gOJBjHXg183jZOWp9ngKairGJNJ9n3StkxTMqMc/dJ6frTo4DNCY5OHhbDleS47H6UhtftEc0OQBNGD+OaYqmG6Z5+TKgH1Zf/rGvOuenYgvsTaVsUMGjkHbtnFZ2xnltzICGTDxqR6HDVpSOt19pELZZZAdpHTnmnW8cXlpdTEBUmwp9mI7/wCelSo82rKcuVGd4ihTyIQp3CZyCp6gcYqZdrXjxQqg8kCPvx8o6VLeFI9QmtZHUTRKskK9yO/6VStZQdTcqpwHzuzw3ajk1GnoQ2cgubyQYLLFvWTt6CtY7VsQZONsn9KybULY3lxOAczuc84IIbBP41buJt2mquTuZ889ef8A9VKn7qLqK5dtLddSjaRkVVT5ce47msLxBZ7dxt8BM9B3H+f5Vs6bcBbN1Jzt4O09Se1UNXmPktuwG4x9K9ig+aKPIxEeWRwWouY2XYDtHHJrZ0XWJLEgbgefWuf1qdhJt7noPSodPvGVgsnc134et7KpzI8nMMM8RQcT3Tw34gM0alTn1zXaw3CyqCrHkZ/GvCtD1YwsAgYAe9em+H9aWTCyMOeOvWvuMuzCFeNup+R5xlNTCz5raHWj7vfOaY2OM/hjmkjk3oGAA6U9GI/nXrHzztsNZT6Dg55PrUbcf1qRm75AB71Dwrew6CmiJAX7dPp3qJ/mxuyMkc05mBzwAf5mmu23HU56djWhkxjbeQOMUxmx6Ljp/n8ac67mbuenvxSSYBO3J5A9cc1SIImX5QckHrkfhTGXnCgZxj/JqXh8HjI5yaibBHQBffrQiWRnv6Lxkmo2bGTzgHP1/wAmnPlcleDTJDt3EdBz9atIhsY2OTzz6H9Kilz1Xg+/09fw+lPZiuev51CGyxDdeMn1ppEkf3cFcAt/Ko2kGOmO9SMx6cA+v61C7/3uc9jTRLRGxKkcjB/SoW7tnBGB1p8knzFt24Ec9/8APWoWbAPlge49KZiNmbK5XkDv/hVd3yx3Y9Rj8KfuxjkD1z9KrzSbcgbjxj/P41aM5MiZsMRtB5/CobiQqu0nnPXHTrUhYKx45PtVS4YHjGAM7f8AD0xVGKfUrfxYbDE+v+fWoZnG7IyeCeecfhUkj7sn7zA889OP/wBVVppPL5JPy/qP84oFYhmyoPAyMfT8KgMmD8p2jGOO/wDnipmbdu2nLD/J5qtnlicKQCeff2pNkr4tDvNwKnoSPWl4C/KB3x+lIq45XHPP1pFYL2wOOPf/ACKyO+bsSx9h8uTjjn3qeNMLu6nPQjtxioVY9OOc/j2qRCW4Ukn/ADikBNHuIyxwen09KlClT83U8/8A1qjVum4fMV/SpPu9QB/QUih0e38O9SKQrAfnTBjvyfQ/r/Onxeu7jPX1oLJWxuByMj8M/j+FScnG0nJqHILZyR0GP6Yp/cAZJPfNKxVyZW3cNwTgn61LH6NjseR2NRR4YdOWI988VNxkBiRjj+v+NIelhyf7Iwev1pzZbG7IB/X8KTaD24buO1O/h6AetAIFOGIBHvUgYg/Nj0wajVgBj198/wCelSKPwFKwyUAkAk7s/wCf8KXdt4AyM8Z9f84pinH3eT6c05fQ8g4pFLsP/gIx3zQvykKcHnvTB8w+Y4Jzn2+lOTIYlwCR/nOKBokGe/zY681KqfhnvUBkwSDuOBn2A+lShuvHPbPpSKiPQDPygUoOMds9fzpgOcZzjHf+ppyk9+tBSY5j/e5/lQc+g5xTeWYjBpV+UkdvSlYdxyse3UdeKf1YH9aQAEfNyO1JjIB6benoKGND1HI3EY56DrT2I68Y9T39KiVj7nng5qTcNyn8+tJjWw9RnOTyTx/TFBB3dABSK3vnj0pJMRj5mzj9al6FRjfQbJJs9D3NYuo3wjX73BH5/wCc1avrrapP5VzF/M0zHrzn5a+bzjMeSPJB6n3HDmTe0kqk1oU7qRrhjtxwfzq1pemG6kVewPFP0/Tzctjbnn5uK6ix0s26jbwa+QiuZ3Z+hykoR5IlO0ktdKuFiuAcnHzEdK9AnufP0WMo29CPlZTXnXjLRom0a4nuLn7OIIyxkJxtx7/hVT9nf4hQfETwnqFlDc/a5NLuDFvz95R0Nd0IylBpbHJHljNX3O2hszJBKzk4OBj61xXiS3P2T/R93mwMWXPfBr1iSwFvp7NyAwDY9xXmfibKQvLD0GXOehHTH6g14+MpcsdT6HBVOaehzF9I72263UblToOvXcR/OnXW1WRlw2wrIN3QnH8iP50y13Da4Kh1UEHB5AbIz+B/SjVz9ijiubfkRSJuTrkFgCPbGfyryrdT17a2IIVihvI7xRmK7UJIpHIz0z+I/nUe1LG3uLFgWKSELk8Ag8f0o0uZNU0S5ZYmVrXzCwY91y3H/fIpl9qFvgzM6FhbFgT1Pynt74H5UN9UCjd2K2oASXkMquS0QeNCf4vlJx/n2qrZ7IbqYSbtoLOrZ4AIz/MA0xldbe3Teqm1n812PLMPmYge3zAVG1263zRKnyuMrkdA20dvcH86zv1N+XSwkUh/tMROAYjJuB9yQT156k1peT+88psYU/LjuazrWPzNQnRl+ZcSxnuSBzz6ciugmhM0kE8eOc5x2OMf1FaUabkhVJ8rRj3WoQaRZ3EkpUCPLyMW4X8a8Zvvi3BrGsTW+lzLJgleuQx7c/0qD9qzx83gfwbJbqyC7u8liSRtRf8A6+K+R/gb8XNPvPFElr4ihw9wQIZt33T7eg6V7lDDTcPd6Hh4rEU6crz6n2baXyzR7rnO98AYXHuam+1Rqw2uMgZ+lc9psgG1FLMpA2tk9K2fJQx7c4NcE8RqdsKGhv6bqDBhlue3P866XR/ErWbjc3TAFefKrw/6vke1aUMzNgDnHfrXdgsbKlLmieJmuVQxNPlkj3Pw/wCJluEG5hjPSuvt7pZlUrg8ZwD/AJ9a+e9H1iS1mUbjhuv+fzr1Hw14gEijkHOM8jj6V9/luZxxEbPc/IM5ySpg53S0O22++RnvTZM8A/xfh+VNhmEiqV5z2p0jH2I9fSvYR82xhxycgfWo2HzfJgDpwOKkz13dB+lNbGcjBz+vFURZETLuJPJH0qNuGOMAn8sVLIx6j+H+f4VEwPzdsfrVpmcoh07jB9e9QyZ6f3f0qVsqxVmBz/Kq8jfiapXMZCM31yPX+lV5OOOeuRx7052LZOcZ464zUTfMoPXHUnrV2IbvoxjDgljj/PFRnOfl9eKeW3DHH+e9Qb8qQOvQY600SxshGDuOf5/SopO/HU8YXrSyyD+I4xx1/wA96rzNtzyDgY68ZpEMRmG/rn+lQSNtHUnOMc9c0sknzdwPr161XkduQF6/dOf096tGLkLNJ1KjOWPT/P8AnFVZJm5G0YQ9B6e360NKWVhlsH14xUM0m3upY8/TPH+NMhyvsMk2/M2cAkk5APuP5VUmlKsSqnjk4/z0ok3KvDPwcdevtUU0hZfvE5688f5yKq5kyKSUbvmJwx+g/P8AKopWG0sOOfm7+9DbVX5jnjGCevpULn5SGPJ55H9KTB+Yx8McYJB4z/SopJN3fgHPpgdOaa7EsQMHnOPbk/8A1qjZsqF5BGOc+3p60myIP3j0PPOGz1x93r7UDOMggY7fypu35g6k8Y7+9SJ6568ccD/9VSd0vMeG2qPmHuRUqYUdMn+lQb1B+Y4+oyfzqYfdxzx60EolVsA4Xn1HXNSrn3J64NRRnso4HHB/z70/G7b2PYelSaXJUBJI7jsKn3Y5GC3P4/WoF47g8dTUi53Edx2pFJjuP4gSfbtU0YYjPGGHvg96hVdx9MdP8ipo1PAUHgcenWgtIljXaxK4yOhzj+XviplXaPlBB5qJRkktnKjuc/Q5qTAVRnA4/H/P+NK5VmP9zg5xwR+FO/hYHufy4pFwe+W9ad977oIPr/n8aQ0uo/ouWHQZ60K3X8QPemj0PXpTl5bKmkhseuMdcj27U7A/iJwOT/Xmm+hA5yf8/wA6cv1K8Z69KBjl7jOD7/5607I64554pjKORz19f8+tPyVU7R7ZHTFBQsfTGMHnrS7sAjPG7+fWmRglum38cY/WpPLG0nIx3FJgrki4x/ESPQ9KDkcng4x703cR0OB16U5V+X29vekaXHK244b3/SnAAZ24BI4Gabt68dexqRSN3PI6e9A0LwzY9PxpM8naWzSgD057Um44wuePT0oAfxwe3uKTaG47/gaQ/dGMg9aOn0P+f60mCFVjH94ZFQT3IC8cn0NK8hVT25z1rOu5vlIB5b6fnXmZjjI0KbfU9/Jctliqi00KmoXBc4Bzzg1Vt7RriTGM4JNLIjMxGM/4Vt6LayIczKPm5GK+Bq1JVajkz9aw9COHoqCLmm2Udoo3A+/vWnGi4zk+1Ml8vkbhxUErfZ42eNjtAJIpI0UerPE/20PGk3gn4K6nPYsVkuNsWQcHDHB/wrwP/gl98WNEm8R3Gix3d5/bmqzPJd20q/u9vO1lP5cfWvTv2xta0/xD8NbzSriRTK43InoRXyb+wTptt4W/aC0p4ZPLeSQq67jyp6f5969bBVbUWjhxGH/fc5+xXiaRbeIAYw3AFeTa5DIY5Io0yxGUX1POR/n1FemeJZPtFuGDcKvavNtUU3hkRnMUh4Rj0V+34HpXh5n8TR72VbXOVVh5EUkaljbbkkVf4lIz0/z3qou+BpEwJYDKOSBynJGfzxn2NXGf7JIb7biKRitwq/wkdW/D+RoCiH5CwYROuWI6qHwOfoc/hXgtnvoxYI/7HvLhJQDEbUPIx6YKOP5g59qqXVm0zadtGI1tykwAz1VlGD35I/M1c8QM9vJqFvboQGMMS55G04BHX/aY/jSfY/IvltYd0kUnzj5s4WMszH6fd/I1D7G8VbVmTHNPcTasIgPMCGKM43YyxI/Haox9R61FaI91cWYG4EIXdi2AQrYQj2yAatJbG1tWkjLl74zSMNwXaoQlOfYMv5VZ02BdOt7Brhw0821WbGPkGcD2wT/I0ki5NdCG33NMphH+qUo3PA3dOfwre0uZYfLMi/J/DxWPBKI5Gg+XIZgxI54yW79iQKSa+YWaSMAoTK7enJ/+t/Ou/Bu0rs4MTqj4U/4KHeLpZPFlrpaOTG0ZJGen+TXxpZ3ktjcxz2zFJImDKw7EV9Pft1E6h46trpSxMcZRlAyMZ6k/hXzHbRJJdRBv9WWG4fzFfU4fSHN3PmMfeVXk7H6IfCnXJPEHw+0TUZh++lt18z645r0LT2Tblm3Ej8OteLfBbxDHceD7Syhj2G2XZjj0/wD1V6xZtI0K7UKnb1PX2718njNMRJrZs+qwcf8AZoxe6RtSFWUmPJz/AFp1vI6t1Oeu3FUljkKkli2fbtV21Dyrux8oOOe/vWUZWLnBWJ0umVxnPP8An8q6rQdcNvMoZtuOnp+Nc3La/KrRZBPfNVxK8Lque/8A+uvYwWKlSkpJnzma5bTxNNxaPftB17z415J966iOQSLkH5SO9eEeGPEDQsis2eeDnivVdE1ITou5sjnp0+tfomWZjHEQ13PxjO8nqYKq+x0RkTJ7kDNRhmxnOB2NCzBk+XJK4yR/n60u7c27HBJ+UV7CPnLjJMFiSST6EdP8/wBKaW284744P+fejuQeg5x/npTGccleuc1XKYuY1s5weMc1Wd/4ecHoRz/KpJSHboPQEVXkkCj5uc9c9Mf55rQxbEkY5Jyep4b/AD+FQt1z3PPrmkaX5v4hz0BwKZI4boOMnvTIuBkO085b61WlkCqPvc8AnrT3YM3Dde+KrySBuGxwOh7fWhCkxs8mF+XpngfrUDkfN8uPXvimvKRz0wcc9qhaTdjng9wMU0jJyHPJu+6Dj6dqrzSYzt3Y284/z60kknXaOcEL3qtJKfM3EYAPy47f5xTRm5CNIFwu75j3/wA9KrMwDPvJ5OMZ/MU+aZd5HJ5znPUf/qqrI/GOnQFu+R0/GmQxrSAglmxnoSM9f51EzBVzuPPbFN3fN93Cnj5uOlMZvmC7gMZwBTJuMkH8WCQPX6VVkxlg3UjrUkxOGVSRxjk9Mf5FVpJNygdlI70rk2Wwksir/rN2fqMetVN+/G/Jzk7QeSfanyTbRlcBu3PSoGkLAn5eW7nn0qGy6cdT08feGAOOmaf/ABDGADx06j+VN5XhSTjH+NAYliDnJ/HimdEpEgXoUBwB9MetTrwuMH8OOaiVj2OAR39/8ipPMIAwCR/nFAJ21JgxUMOuBT15xnODUcfZuDjHPpUiqOjccdMcCpNLD879u0nB5Prj8qlGOeSCT1qLnd8o4zUsfJBXHX6ZoGiQAcnOMn68fWpVx3PzHJx/OmqoOTyWxxzxS539VPAPfrSLJAV2ngj1wePbpUi52jaBk9cdM1Cu1uhB6dT61PGoUDaG4z+ApFXHk4Ueo4FP468jtkdqjXG0jgHaOM5qRW3DA6nigExy4b7xz/Wl+6enQ/jTf4cIwA9xzx/k0qYyQvUCkVceCD2YU9R8uBjOenpTVyB0HtTwPzH50DS1F6MMjBWpNoZctn061Ftzk8Y7dafwAAT0x/KkNMmb5lxy2e2aYx6Yz93v3/KmgnruwCOBTlKqcMRkdeO3+cUi2x3OQcc9s05cK54HSmr/ALIbBp3zAYzyeOeKQ0SDHBbgnHBpAQSSBwenNJtAyT2FJzjOcA/zoHckXH0xg8Uq9Plb8+1MzjB5PODipY2zxjtQyou+gxWkG3hHOev3R+XNNeYxglldT2+XP8qfI3TA59KryScfMeMetcWJxdOlG7PUwOWVcRJWRVuLoP8Adf5RycGqrSGRctzj9KkmhE56Z/2u/wCdRSQvH/qmDY/hfv8Aj+FfD5hi5V56bH6nk2XRwtNXWpPY26yzfNwRXS2NsqxgYByOmKwdOkEbD7QrQ8/xfd/Pp+ddZYxp5YYEc964kj1Zu8incWSjDZI3dqozIY8Yfh8A7j37fn/nrWveK75VGA4rGubry/3N0oEjZAP8L/Q+vt/PrUzaiawi5HkvxV+Dg8b26+XCu9Tnjqa8/wDhH+yu3gzx5YeIIbcia0mB9NyHqDjuOv519U6NcLkI21scglfvD39/b/8AVXUWcMJw7IFPqK6aErq6JqvlXK0VdUmENnjPov0rkbq1VppBGFJkyVPQEDr/AFrqdQXfu2nJHYjgiuevIX3CSMlZYW+6eN3t9fT3rgxPvM7sGuWJyMtmQl8JPlWQB1JHCkDBJz/nrVaz8saWgmBGFMPz+irwT+Sn8a6ia0WWUuRs3xlPTHTqPrn865uzCR29sjruZbqQLxjdhRgZ9eD/AN814848srHt05c0TnGtZ9Yu9seE+03COWHIVFQsT+GR+Qq1HCnmXNxDgBY1h8484UnGB7nBOf8AbFWLORrGG9aN1Pkx+UrejYIIII9DVfUpks/DYtoQxeSFJJVDcgsRwSOpx/I1irJXN93ZGVa4mkA2KUl3mNZOuFAX8BkqP8mr7Ya4WSQF3EXlJ6M78kj6Ac/hU1vYmHybdUUyvGPlA75Ic+3zE+nUelXLe3Vo3liPyoCkXoqDqfqc9h1I9KqEGE5nOyQrZ3UseWKyD75PLEkkgf1/CoNUtQ1vOCwXbEAqjsTkk5x+Fb7aUF1Ca7mUu1sgTLfcDnnCj6kn8axZJpby6lijVnBIEmV6Hkk+4wR+INdMFyM5pvm1Pg39o3wBqnjzxMLbTYJ281gdyocqi5wMH14PXtXIeHf2VLizvLdtWSbefmVZD0x3IH4V93+IPC9vaXH2uKFmmc4QHqT6Y+n5c+lcxdWYVnMxJuGPzYU/l9P89TXTXx06cbJhRwdKpLmcbs848C+BR4YhFuqBQOFwevtXfWtuGwNu0npTWjUMo2lhnB96t2W4y4OAgXhl+teXKv7R3Z3+w9nsK8Rj+deT0qe3eRl/cxdOKmO2ZQ1viXod2QBjr1PXj09K2LPCwndktj5tvGP65xjvW0Y3OaTsY0szxlRJnLdFzyagaZpR/qyQMj0P61t3qpyY40UdTgYzwevvVJ4Y5o3KqMYB646/5FaQduphNJ7lSzu44X+ZmVunqR7V3Ph/xMI2Rd+QcH0zXlV5vhuMRAsAf881r6fM8EYfkbRnn9K9XBYydGomj5/Ncrp4qi4yPojR9ajmjUHHPH3q2fPDqCvU8/X0rxLwz4q+YB35DYavUNJ1NbuIHdlW9+a/SsuxsMTTuj8OzrLKuCquLWhtsw47g+neopGwxI5PQ9xTg24ccZHFQyZLAdjjHOa9VI+dlIZId3U5AP8AnFU5ZCzHjBzyR6VKzjOO44zjPFVWYtnpnJzVWI5rgzfMRg5z19agaQqeCQO//wCr8KWaTaG2qvBzjHT/ACKrSN1KnAzjrj/P/wBanYych0rE/eLAcZ9fU1Azn/lmT79/b86bNIcqM4yMHJ6/lUE0nzL0P9KLEuRHJtbHTb0PPFRux2gsMZGPpnjmk3bsn5cj19uahZyjEtk55OTzQzNsWRyN3JyTjpyaqySLuZtoXAGMjp/h1/SnPJ0PJz1yOT+NV5GHJG0nGP8A636U0IbIysW52gkY9fwNQOwReo59cU52JA7DufU1XkyDuUdunQUyGnuRq3zbTksT77c+n+famzPtUn5R7dcfhQW5yBn5jjP0qGaQtznI56HAPHpQ2LoQzSAKSSw7emarnO7qQo5b2/Cns3zEOcZ5UjjNVZWDfNn5i3fn+dSybDJMsxGQxP8AL6VGzHgdhxgnpTmbOT8xAyc/Wq7SHJC8H61LRvCyeh65jc3zEr/jTtvQg8GkCkepAoU4wMFsn8+39ao3mSLjcNuAfoTnNSKNqqVIJ9RxkVFgvg8e561Mi7lO7b2GfakIlX5QOoz2wKni528Zxx71BGpYlR0X171P90Dr0pMuIqsBkErgH+dSR5ZvmzjJ+ucVEM7uxA6j0/zmnJk4BxxwMetIq5YJ7sOfrS7c8bsZHqKZyRjBXGOpqX7uAxPGe34UFD1UKecYHcdqlTJXORz1IH50xB/wHpnpUiABvmwduOtIdxwbBAwcdaeGPUjHPrTBhQdwHTIOecUv8XzDJxx60Bcfn5j0PP8An/P1p8bDdgD+vP0pinqy8D60K2ABg/4CkVclVhnsD/nvUi/Ngg9Oevb2qJehO7BH6Uq53YHJHb0osNS7j2HBxux7U8Mck8Ypg9f4T3IpQxXDKDxzSKuOONuOuOmKdH6DOevvTBz904HPFOj4zu4B6e1DBakmTknBHr2px3A+57elRr15J78D+tOweB269fWkWPGVYbSOe/rQGJbv/h/n+lC/MeuOw4zS84w3btUlIev3jtOcc08N19B7e9R8+mMdOKduKr17+nesa9RQjdnZhKMqtRRQy4Ydc5xxknFZ8k35+tS3EwU4bg461SEybvX1HWvhMwxTrVPI/Xcmy+NCkm1qWY5AOT0Hv1+lSx4LBcDB981TSQA/xliem0/4VPayOOfIlb+7tB6fjXnHtXN2xtY2GMg5H+RV+HTDGB9nZoSf4UPy5Pt0rLs7mKNkylwpB/55N/hW1baxBMwWN0O3hs9qpGFxs6zWsJM6ZGPvxjp9V6/zrnrnZeK3zLMhPPf+vWug1K+VowBIpB6EMK5yaOO6m3KSsnZ0OD+dY1I8zOyjLliX9Bs2t5D9qzNb5OJMfPGff1Hv+eetddHcbVVJCvzrlXHRx7Vi6LHcWcI81ROnXci4YD3Hf8PyqPVNSiWNjYyKQeXhzjB9R/db/PvW6apwMUpVKhtXLRt8ucE9PesW+h3BlY4IGD249awV8YxTN5UzNuHy5xySOxHZv59R7TjXhOg+fO3noc4NcFStCWx6dOjOKGXTAKd7jIX5hj35P44NY18pSGLySu3erfL0JORx78inX2qLPOVhIy6gEYJ6n2+grI1DVFmbZGwCBtrN0IxjP4j+vtXJKUHud0FJaIzL6cWbSxxBPLaNrhueOemPTsKo3kolihctumnVELjgIMkkn3wT+dZl7qSGZ180mJkYAK2d+MEDjtwwPrzWVd6pE3ki3uJCI5gfMIJABULyBjrk/TbiuNyh0O6EJ9TuP7S8uWSdkChlEcS4w0jEYyPzP860IVjt7eKEjLYVAO+7OWY56ksR+Arz3TfEqSa5GNQJ8uE7416Attxkfhx+dd1Hq9tbq1xKytPJlsDnYo9T6/r0rppcr1bMaylF2sWtcdLezSBwWlYgR26P8xYnuRk5z1P+GRi3hi0Oxjh2Hd0KRr88jkZ6Dpnkn8SazNa8XR6bI9xcNtKkiMg5eSQnBxweAMKDwevqKNP1RBELm4VRM+QNzZKKff68nHJP0qnVg5WJjTla5RvoZZFd7lSbhl6r92NePlz/AJycdOAPP9cjkivGdUZAc435x7H0r0k6xbXbMkO+4kQZKoSEHf5m6Dnt1rifESlJA2oESK//ACziGAPz6/j+VY1oKUbs2w8+SRzKzNI4VWMnqy8IP8anis90oE0pYkdG+VfwH5dSaVZYmmO7f17N0/Kns1tLJtgbzG54Dgn8q5VS7I7JVO5sWUcar8+D0JB53exrYhuII1KlQGUdB2/xrB0uaRH2NFICfWM4X8q1/LMhw0jL2ICAZH+cV1049TiqS1M7UJU8xjHuOPUf54qi80eGDfLuzjHGDWjqDpCjeXvLn7xbP54/CueulkmZirgntgY/Sh+67iiror30gRugPbPtU1vIsqhc4z2Paqy2sysDMSyjgDt0q3bxBcBVwacaj5hVKS5RIZm0+4VxkjPNel+FfEylUJK8nHXpXnd5biRQUUr/AHcj86q2WpSafINpc8/d9K+hy3MJYWafQ+Lz/JoY6na2qPpGz1ZJo1z16D3qzLIOuTgfj+leT+GfFwm2hmxhseleg2Go/aoRzx3xX6LgcdDEQuj8SzbKqmDqcsi5JJtA6ZXP0FQySHd8uQPT04pzHdznp0GaryTZ4ODhjnnH/wCuvRPBbIpmZgzfLkenQVC0y7gG6c8D9RT2kZs/eAb9apzTfOTjBPX8aZjKVh82GyM9R2OP89KrSj5fUgfezSecW2kkjdwO1QtMwHJ28HHHX8aCXJMSaYLF8vCjk7e/41XuGdscDhc89/8AP+NJNNtZRzwDioJG3dDwORx2/wAmkTuNlzuDHPPX0/P16VG03zsueTzwehNJNJ8p5IxkbRzVczbVJ5IFNCcrErv8pBAHGMD+tVGmLDp/vf5/KlZvlYcc55PHIqszKc7TkD6/5NBLkxzMWXO3GOq57D+dQTSFvvZPce+KY7BckdT39arySNkncTgnacVLYaiNMzSNhSuBkL6dP8aZuU52snz8ldvX0qESb2LLnaP9nAwfSopGG8f3edoIH45oZUdNR8mCuMYIPcnmq5bG3d8ufRv59qfJIdu0lgccHr+lVWb5jzuAbgf571m2ax3PaFPzfM2CpH1H40oJJ7ZPT2qHdgg8HGaerH5euD7fyrU3k7k65JPbHU/n/wDXqdcfQH9PaqyttB2/X/OKkjzuGQcCgSZaBHc8+n+fxp2Twyt14z9ahU5wMgDjA9amzgkY247/AOfyqS7jo1+U84I6D17fhUvIHUYBz/8ArqMZ64xzjGakj79x/npSsUmPVhz0x79qfGp+bjjnnvimKxGSBjFSxYORjODxx/KgZOrFeOME8VIct90/iDyahjxjjBHr/n8af5mwE454osXccCP581IrH5jnBAqDdu56kflUigZOCc+9IESD7p79sU8qP4cd/ao0y3IwMnP/ANen549xxSuMfy2fb3/Wl+7kHIHqKjLdMU/IY9OKClYcv3gBgfU/lS/73AXqORSBl5PY8jmjcOOAAfSgE+xIp9iPfFLu25wopikKQefy60oPXrn+HNIZIW+Y9RjsB0+tOViBluBnk1HnOcDk/wAJ4z/nmpF+cH+EY/pSNE7j+W7Ece3+etOZl4GeTxxSL8zDp9OnanAfvPlyADjNItC7ixyqAfXrTJAyg7nJyOgGKl6rnjP9aimXrjqa8bNKvLTZ9Tw9h3KsmUJo1LENinKg9v6UyY7GznGO9Lbz9AqFs88dPzr4dn6rBWikidYz+OR26Vo2iBeXBAPtVeONzydqqOemaimY52MzsB/tY/lUJlcrex0FnsZgy4yMZxV6ZPtEYDIrL2DKDXN2USsF+9k/3mJNbtlZr5YaVQSa2jqZNcrMrULCGRyNpDew6D6dBWbHYurBYSyYbjHy/wCI/Suh1KxOwlIlizxlZDnH51l2mmyG4Gbu6QZ4XcD/ADBpOPvGkZ6G000+mWJZwWyONybuP+A/4Vw+q6ol5KWWRNyt96Nufx/+vXV65JcLAFjvEGO8kQP48EV57qFo00wN0IJGGTuQFCPxySK87MJvZHpZdBfExbrT0vm3NkNn+FsE0yYT2luPMLMoO3cepHv75q5p0MlrGjKjOpPDbwdv5gGtXUNPDaf5uGVTztwc/pXmODUbnrRnFySOXhuGVXkZj85x82OBjt681ivG2rXMdp8yvPkR7jz04/U4rQvrUXVqybxGoUnnjb34PTtmr/hawjeaS5kJRLWQsG24AZSMAk9Bz/497cGGw0q80uhtVqqlFvqee+JvD91o92I7iJ/MzsQrheMkdPdQx/8A11hSTfKrwKCsoIdR/EwJPzccDp+Yr3fx14OOqaXHdxBftCQKQc8jC5/PI9a8b1DTza3dj50flS7XUrglVLfLgkD7xzgDPGfatMXl8qNRrobYTGRrQXc57U5B5EVxakyFZMemWBIbBJ46dewGe9PtNcutTYwWUgkWNfvAlSZOhw3ooHp15xxWjcKWt5bZY4f3xYqm3bt6nHX2H3c9Pxrb8K+GRHpbeYFWMD/cC47ZHTJGPXiuGOkuU658vLzGedJWVYpbpWkkiVSqxxnag9B1/rxSatrEcsJihk8mJBhgHJyffkH09KPEGqz/AGoWsFvGiAY8wM2G/IEk4/DjrXNS6JJBvuJJws6L91MD6deh+hquW2xnHXcvw6myxpBp/msi525+RCSOpyOfwzU2paPqN9biW8mtkjUZwg+Ye2T1+vFc5Zfa7y83yTssYwU2gu3t3xXSrNGsKxrNczsQBhm2YP4EZNb0ZX0ZjXg4u6ORZLSFmR23lO8h3Ae4zWnDeWsKIweHOeFB5PPODVHXNPihuDL5fPB5XkVb0u0aTHkxKOOg4zTt71mDfumjHqRkyIAqk8ZMg4/X2q7BPcOu6ZweME5HPvRZ2M9u33GYdTzgVcltF2/NE/Xcc8j/ADit+XQ5pPUxdTmST5VZgQc7scCqMFiDxHLuyf7tbNxZsOYbTzCTj5Ttzn/IqCaZbRV32phJ59T19azlEuD6FYaZKvyyHCnvjoKmWGKMD5kDeowccVWk1u3mXy3R0/2gv6VmzzeY2IWBLNgL0P4k8Cslq9GaS21Rt3bxeSyqQRjqDk5rBvI+q9DjtVi13eXuk46gFh1qtdMI5C2B1PPXIr0YaI8aqveaQul3bWN0pyRzn/PrXrHhnVt0SruOccgnj614/Ip4K7iRXQeGdceGRUcjGccV9Dk2YewqWezPiuJ8m+tUXJLVHtouNyZ6kcdO/eoJWAY5AX29/WsjSbz7VGu5s5HBPpWk3zJjo2Mj1r9Ho1IzjdH4bi6E6U3GXQhkk+6SWAAPfkfWq8kwyxUE+vH4U64VmODgAdO1VZFPVeQOCcdT+Fa3R5zcuw1pOMkDO70x9agaXIO3gnk+v1FK6tuHy9fX17ZPrmpLezLlt20DhW/KpcktRwpzlLlRR+fgbWA7fT+opDG3O0Hjrnjmt6DSh93bnd146f8A16s/2TwOmB+tc88VFHq0MqqTOTa1KtjB59KrtbtGTg4H06//AF66yfTevBPHzdcVV/sstzjgdff/ADzULFxOl5JM5drdtuVGQD3NQyWr7SXHK84xk12LaSVXpkj2qtNpSkA4I6Z5qXikNZHI4yaJ1J3DAOOc/r/KqkwdeMNg9OOnv9ea6280/lhjB6DufxrOk03rgZHfH40RxSZjPJ5xOdCuWxgnoOe5FOa3ZVXbuyB71vw6UWbKA/N6/wCfapJNJxGSAOOfp1pSxSNKWUza1OJuBIvUYx6Z96jbKqNoJzzz6d66O+0s4ZdvT19s1k3Fm0Z+6M8+2RSVZMxll1SnI9f+zncSOcY7Dj6U9YSzgjdg1tx2G7cufl6dMVL/AGcF7cGtPrJ6TyeRheWQp5PryalC7fu7eeMdcitWax6471Gmn9c8g+lNYlGUsrmnoUV3HAUc9PSpPm/uitJLLLZ4yfSk+xhemCcE9Kf1hEPLKiRTRAVI6dvr9acsZIJbjPeraWpLH7vHpVqO0/vA5BFDroUcumzP+dTzgn+eakX72MgDnpV2aw67ewqL7Kyt6AHp9KarRYSwNSL2I0XcP3nHT8PxqRYztHA5zkfT2q1Da7shucY/KrIs+MKAT9OtS6yLhgJMzTjaqjjIx9P8/wBanjVpM4AzkcY64/8Ar1P9h+foee5q3b2pTJcd/TFJ10VHLptlHyjznJHoRULna3U4NbD23y45HrWVdQvye7c5zSjXQ6uXyjsRCYc88luMd/8A61Sb/wC7k/55rP2vv74B65q5EpKjucZ/+v8ArW3Oji9jPsWN2Qen4Um4NkKwz1zmkZCOoPrn+lTLCzbc9f8AP4Uc0QVKd9hF/Dn2xipFXnGM8fnUgtjjJxgj06U9LUZO4D1x9aTnE0VCp2IoxjG4EY5HPWn7T/EfoB05q0lv8o3LzjrT/s52kc89qj2h0LCS6FVR1wMEev8An6VIOh2jqak28jg4IxxUqw55/wA/Wk6qLjhZDI17cnHQVHNCdpPJyM/hVwRleBnJ796SdAseTwOK+ezad4n2nD1JxlqYVxEOuM49R0pLWMsQTn8KszruPy8nqPY0tvbDb8/zdvYe1fJs+9iy1HII0BbPTtzUDK0wHlISD/eOKtthY9oCn3qjNJt+62Ce1ZVJWOuhFsuW0JiwXlUE9VVe/wCNa6SDYAJ5WP1A/pXPR3EcKhppACew7Vdt9SLMBAowPXqfwq6NQdelbU0prTzDmQyuePlaRjUUVhFC7SSwKQeOT0pY7i6m4ACqe6kKP6mmfZ2ZyZmDYPPBP866dzjMvXWs9o2lA3GAD/SuOnsopGJUYx/tkDPtzXUa1bpuI3Ow9N2APyrlbx0hysLc56r/AI9a8nGwvLU9nAy901NKMaqsXmM7g8Bj1/8ArV0V5DuscBshhxkjmuFhvFsUDyKqhR1/i+vvV2PxBcbNsjfL/EZDuJz6CuZOMdGdrhKTuhLZrVtTWzvFQzscosjDn6HH146+9dUtsbO3dAka4BKswz8wAwT7DmuH8QTWlxbu+oQO5+8gXBPB7ZIFZOn/ABKmhgNk0dzqEkfztGWBliTvgk8j3z27135fiaFOXLszLE0q01zbo9We+huLWWRpi4e2MUce4KN+OTz+P5V5P4msFsbxHhgbdKzy72wQgY4ABJ+8RjB9hXI+I/2iNK8M65DYalHqz3Exd0t4bFm3gITkNtxnt1/xrktR8X+NvjFeyWun20/hnQHwskkmFubmPHODnEY56Dk55OK7cxnSlS13FgqVSM7x2LN14wsbjXP7G02Wa4u43KzKkhEYLdS7LwT16k16/otg1r4eCStE/wAo+Y52jI7Adf5/nXNeA/A+leBbEf2dHCzOcs54LE8nOc/lir/iLxh9mXy41jDp95dpwTjrnNfMxjGN5Pdns1JSnaK2Ry+uT2+jzTtcy7AzYBVdvfgAEn/Jrk9Ut31AeZJNMwA3MqsVYgnPr/WjVdQS/aSWe4aUrlmjTkH6DvxWJ9oNwzSaXLJbueACQV69hWLXQ6IaIsSSR2eyOG6cjGNrXDBhzzkVNp9qrYka6ufwlJzz659azm0X5DJfMrvgtv27s+vIxSyanFAvlSCIlhgMeMn6mqpppk1UnE6a4ewkhKSXEzN6FgxH50uk28m4G1nbap645A9uKwLG3t5tsjJIvQeoP9K6fSW+zMTDluO47evH411LVnHsjdW1mMalZenoASv9f0prfaWyImQnP8S4x60sEx6sMDk5U9O/Sorq+EJYQyAycnn1rVqxildkMk+p2udyRkZzx2qtJdyzcakjBT/EVHBzyasw+JBIjRTNEe2B2rO1KYyq5tG3J12en+P1rnqvsdNKD6oq31rtjZ7Vkcjt61lRTOzbJQVJ45FTrcRRyHzXZWHZhUkkkFyCMKG6dPeueCV7m1S9rD7NvJJEbHDDBBwRjqOvB5xwaqX0a9VG0jIb0+o/z/8AWs2cQ8zarDaf7w5FTXMIkztxjHGDjFerT1hY8OsrTMFZOQGGMDHJ6/8A16lhuhb3SFWVTu644P8AnFNuo2hyc4z15rNuJ2GCp4Xrj6/pRTlyyMq0FODR7F4S1E3CIFK7uPzrvoYd6gqcrgdOc1414B1ItIg3AYI6dTXuGjL51uD8oHpj/wCtX6BlWOvRSZ+P57k3+0tpFVtP3KeOarSaduBC9Rx93p/nNdP9lDL0HFRrZhieQN3r1Nek8YeMsli+hzaaSWxkA/0+nNaNrpAGNy5ANbSWoPHH19asRwqoIyMevpWM8UdmHyaEWtCjb6aqgcYPuKdJp4H3hg+/etf5VA45A7d6guGAHAwPc964qldnv0cBCJgT2o+bA49McVEum7nbcAB0HfFa7FSxAHB9OKaqgcnnNRGqzWeFiloiidOXj7xye9U5rERrnC/StxmVV4zxWdeS7t3PH1/pVOoyYYeJzdxZ7sjHQcn0rPaxPmevvmuibC54/wDr1A0K7ty5z7VEazRFXBQl0M6CxC87VNPlsUZeRjrx0q8rL1yDk579+lRyzbYxtIyOeuf/ANdN1mKGDiuhzl9p5UE4GV9PrzWHPp+4naua7No1f7xGOvSqV9aewJ6+lXCuzGvl0Wtj01YQMdBzUiRAk7RkDrUUzGNsLg4qNbrPOe3+f51u5s6PZR2LElvnP16elQ+QuTxU8UnmZHUnmpvLyQVx3oU2ZyoRZWSPDE4B96JIlzgj86ssdq4zjHPSombcR0GcU/aMyeGiMhtl/hHTj61bjtTy20nP+z1psLBQPf8ASrsJDY6gGn7WQRwsCFrcfxL9aj+yhm6HJ9q0F27eeeOn+NNVRkk/iMUKrIUsJFlWG0KnkcL/ADq39nG0gDAH4VPGoz057mpGA20nVkTHCQRnLBhj1qdI+o4B6U5u31p0bYwOfal7SRpHDRGtB+A9KoXlvnJbBAz3rXX51AAIpsluG5pKo7hPDQaObWzDN8uOv93pViOzCgnpmtmPT0X1wOlSfYhnpxWqryOSWXwfQy1syWyB3zx0qWKzAzxgjtV4wBWPHX9aeq7m+tX9YZmsuj2IobQbMMODxTvsuG9R61ehjC/NzyKXy/oBjmp9uzZYCJRS2G36/nQLUhSTwBz+NXlUKoHNO8v5emQaTqstYKKMloCWzxn0q1b2u7sfepxGGbjirsce0fNz7VLqyLp4KPMUHtt2dq8+pqtcWoVc8k9eeBW1In92qF5Hlfl//VXl42Tkj28DSjTehzV0u3cFIGPemQzYfGMZ4q3cxhcHrxVVIyZBuGB/drwJqzPfgyS8kPkkKTk/3ay/LcqzMdmPfmttowIjgcd/l5rNmzgiPnrkn0rlqno4ZlW3sxM27LYHUk/5zWhBGrNtjdlVew4zVPzFjOzcQmOaa90xAW1UKuOrdK5VdSPQfK46nRpqkVlGF3E571DcXrzjEasQ3YdzWVbqsah5/wB5Ied23gfhViTWEhwYwuR/Gw/kK9KlVXU8yvQf2Svqmi3T2/mXk3lJ1KLxx6E9a4y8DJJstIgqKPmZh19frXp1pHHqUe+4csO4b/DtWFr3h3ycvaqCD14+7Sr0eZXQsPW5HZnIQq9xgtHuUDtxn+tRXaFr1zChXav4D/69aH9nzrmOVu33Bxj61Yl0iYhQ5Zyy5zsyBx1ArhlhrnqwxCMSWabdGVMWwr/Fnc/pxnp+FZeoXMlraSzNFDwNxUqU3EepI6cd66a402RYlfdKH3AZkODj8Olcx4mLSwSsqbmjGIwV7+uep+la0cCm7sp4zoj5x8deKJbz4maJNfxwvHbs6KEycjGCD06jP59698tL4alp0U2lwQpcNs+7MyqzHkqOBn/I9K8K17wrJf8AivTJ5jgG5O3zG6kjA617ZpenzaXDiRW3LgLIGO5R7dsfgepr0JYOM4NMueIUJRcdx095LauUnYJHINpkzhkbGBnJHFc9qEhvpE8/fdSoDtIjA+b8+P8APXt0l1YzbV8wNLCuWymGbPqOzA5FY17avNsSOVniH+sYxncmffv9eDXi1cL7NtI7KWJUtzkTdQ291Ogtn8wglvMDL26Zb6n1rOurqRrP7QluzHPzK2M/4HrXTakpkjDpH5xRvLYqvPbjFc1cahJ5zWggaF2GY5GGQwzyK4507HXGoYrZvFLx3Mluc8hfX3Bqsum3SygmSK4Rxwc8kd/6Crdzpv8AaXyTZt50+6yHhvX/APVWxpOn3Onxj7VGrR/xP2IHT6Gs4Rux1JWWhHoaQwAfZ5TG3GYphwT6CunhuFUgOPLbHbGD9DVK8ubIW37yNX6fMQCRVWBJGVhaBp7Z1+6WyB9D/jW6lGJhyOR0nl7ozJazfMMll3dPwqRL+PyfKu03HOMsBmsixtJ127UO8DKo/B/D1rWFvHMoaJXDjAb1/EH/ADxUTq9jWNJLcguNJt7ohtgVn5U+/X/61ZVw32G7xcPgnHOSM4//AFVt7GUskgYDcQN3H5ZPv0P/ANaqOs2aTQ5uyHK9G7gisHqbRVijNbR3C5jAdT3zyP8AIqg1rJBLlASvbFNtY7m2b5SWQjqe4/CrAikdS1uzEH7ylenHaojrsEy/b2olVGU4JHH+e46VI8PltnH1yecVBYySRruddy/TmmXl5u5flh7/AOfevTou0Dxa8bzIdTtRJCfIY5H8PAP4HvXK3hMbH6kV0NxcmRTuAHHRj1/OsLVJxLxL8zEnBH3ufX1rW6bOZppGr4L1Iw3q5J2lsAn/AAr6R8I3XnWyHBAbjmvlXRbj7PfIwxIpb/OfTvX0N4F1LNum1t2Mf5/z617eWVnF8p8zm9BSfNY9NZlPr75pm4bu3FV4boshLDDd6jkmPbHPvXtuZ8+qJfDBRnPTtQJ1XuCcVltdFe/OP60xrg4xuOf/ANdLmuX7OxrGcbcKec8VBJcKQSDgcdfSs1rzsx61DJdZbJzkH8qehSuX3nG4qCSfam+cyqdzZwO9Z7XQwOhA5x1qGa56jJ5/yapNIiSb3LdxebfX/PSqDXQZhtYHJzWddXBXIzweelVftDfxjJ6nJ9Khy1HGOhsGY4J9efXFMkkUeuevX1/rVRbg7VXJ/E9qY8oYAD+HIx357UaC94lkkPriomYtjODnn6Co2mEi/M3X1A6UM3ygtjKj6du1FikmSb9pJBYgAdaAN0ZBAJznp+NVPNCtlsjH40+O8+baMkkjnd29KEVZs9LuEDcqTVBozuwufT/P+e1W4pd4+bue4p5jDZ2g++PrXXKRk4XK9mGLYbOPatyG3Hkhm49awlkEUxDcfyrZtbwGPGcgYBzUqfQaporXi7WziqZyG+Ynr1rTkAmzu/Om+SCMYz7+9O5nKmQQg45B+tXY2wfm59fUUxYdi8ZAqNnK8E1dyVAuH1PORmpo1HPBPrj/AD9agj4981YiYjjgnpmlcTgyZQAp4qOaXa3OKtKo8s96ybqUhu2OtTzopUGTeZxnjnqKWGRd2OBVNXJwWoWY+Y3OBjoadx+yNRJhnnt6VKsueOwrIjmJY8k1Zhcs2Vz+NJPUTpmouH57VKyfLn+dQQsMAscVZaZfL5P4+tXcUaZXkTdzxjpQF24LEfWkWeNuhDZqO4mCqNvPtnpWfOaex0LkfYVKw3L1I9KzoLpfUHHqatNcjkZ5p86HGiEkgUjpn+dCybuM8dqzru9GT5ZxS2lwWIzyaUancHQfQ0sYyeBSfatrf/WqJm3KDWZcTNuIU/8A1qHUHGibJvQVz3PpUUkvmrheprJSRi3vmtC1UYJ9fWuWuro6qOjKdzGFJOOT3NUdo3EdPStW7UcelZkjYfC8kV4ldWZ61J6XJrn/AFXy81g3E7KCsZyx61tKrN9/8u1UbmKODc7cnBwP5VxVY6Ho4WeupjtIISDMd0h4APNPgaQkeYDk9B3NMkVY5PMYFpD+lNkuMD92cMe//wBeuO56S7l55vlGWBH90VT3edMN2Mg9u34VXj27ssxO44z61t2NnE0m1OD/ABEd6VOTbLkklqX9NuBbsF3HH8TnotdEix3EIPLJ/Cv9a5c7WmZIyDHHy2P61esdZ8jLSZ+X7or1KVZWszya1Bt3Rp/8I/FmSV0G9sdvujtUd5YxNGsYGOx9vqao3XjBAoLKSewHeqH/AAkDX7iOTEe73rojKD0Rl7KotStrLWdqzszBhH91fUnpXnfiOW8vmkTTbcNgFSzg4P0/WvUrrTbfau5QSTn8ayLyCK2DMgXaOQQOlaONjSnNnzP4i+GOs69qkNzeTsWhlDRonAUj0H4Dn2r0Hw/Jq9rarBqXl3MkH7sM3DcAHmup1C6hF0kkOfkXjHrUcdxAsiuVUByMnsaUaiWh0ScpLUSGG3vYwl1D5Sn0H3COMjH8qd/wjsUlxIbcqTIg8xf4X98du/Na1qsc0OAAMHB9R6VdjtVSP90QpHNZzpxluEaso7HE6n4QRoHjYuJI/mRs8gjpXLN4POsWvk3o2yqeGUYIb1r03U9Qijj8y4UEpn5vX/PH5Vy154hs7OQSwliG4b5ePr/SvOr0Io76FebOJbwz/ZbCO+TzVfhWJ4b6+9M1CY6NCQoE1tIvG5c7a6vVtattQh8mSJmEq8Pt4Brh5oriK4KsQ8RbGMdK86pyw0R6VJSnuYf2MXkzNakopOSh/h+ntXS+G4VEgj5V8A9Ov+TVmz0bzPntVxIOWUAcj0FacWFiUrCFf+IYwc9vpXK3fc7L2Wg+6iRgGmjI5+R1U8f5xUEKpdRzRsVEqjG5T1HvWpEn9oWe0btyZ3IeDj296yGt57W6WaBizhiJFPXBpPTcFZrQoxu8KSRXA8zb91+4P8zWfeSS2/yyp5sTDKHuOvQ9q6a5kikw64jmXqDxmsm6v45AIysQmTj5h/nFPk0uiVO+jMCx1JJJ9rL04w3b9KmvJRauCFyG9PSqV9cgXJ821CsD95eh/HtUtvcGWMblLKeBntUx7Dntc0YpvtCEyDP+0nUfX1rNuo1Vz1PpjoauW7pakNj5TnP41Vur9X3rHGB+HSvRg7R1PIqfFoZczDccEYPPP1rG1JljyQow3ftWjdOfMLKCCDkY/Wsa/mVlbJzz60X1M5bFfTrjbcja2D3H+Ne3+A9Q8uGMMcgY/wAK8O0+FWvAcnJYcck8V7B4PHlxxY7/AF/SvSwjfMeLmKTiex2VxuUc5yPzH1qd5Sc5981iafMdoyeenWtDzjtXoQOte3zHz6hbQl8zBxxn3HSl3f3jjHv1qsrDd8pz7Zpxl7LRzD5BJpML1/H1quzt17e3FSS/7PU1B9wZIPTPY0OQKmhWf5uTUU03Xpz+H/6qbLJ16Z96pTTnaQxB4qfamioIZcOSzgNx70xGIJweB07H6/yqNpNx4IHPFOZ9wG7ByPWp9qUqCJhIFVtpAIPBI4/Oq1zc7U69v73akZsHryKp3Rds7V57kdv84qlU0IlRV9B8d8N20kA5NXo5GkTLMQDx0/nWJb2rlwVXAz1BrYtYSu0NwKFVk2afV0JNDuX5ScEZ4pkWVGc9OorQMHAHfgnjkUfZVCDPXoK1UmzN0knc9Fjtysa7ccjrVqCPIHHWtBrMKAo/Sry2KJHkDn1FekcTRyOpW7pJmM7SP1plk0j4VgwHWty+tx824Af1qpbwqMbgBg1DQkXbOEMo6ZqVk24CjdTrdfwpzAKwHAHf/wCtWlxctxpjBUBgAOw9Kz5Btmyw49K2DENg2jk1Ta3GSTn8KlyH7OxHJIFjHHJqJbhtvTBHrVe93btsYOafbxtx5g7Vjz3lY0dOyL0d/tHOPxquzCaT5AOtElqPLypJzVKzdobz5s4+vSk5W3FZ2NNrUxxggcGqyRs3410Meya1GDmqDQrHId5A/rWikJxsUliIxwK0LVV2kY+bv61XdhI2FwBzViD5Rjrx0FLmsNRuyVpiudv4VWuJ5FjwAQOvP+NXY4mPJ570XEKeXleo/nU8zL9nExre6xJhiQK2FiFxGNueOPpxWDNYyeYWXdj2rY0mQggN6YrHmlc3jCCVmVrqM25zjGOvvVJtQK8BhXR30PnKx65rj9RtvLkbaOD+tHNJD9nAmW6ExyxBI9q0reTjPbrXO2cMkkn8Sgf5xXQW0J2/MCOcZrSLuZyiomlHJuAFQ3Efttz1xV+1tf3a7sA/yqC/wowMc8dKGxR3MtZAsvHPPFX4mIXqM9R7VTht8t5nDZ7VayqcKR0+mKj4lqNqz0EuJBxk/Ss6QfN149u9Sz53fSmKNz8ivLxUddDuoy0Hpnbj8qpXdvv+YnnGFrT25Us2B3qldf6k7epzmuOcdDroytK5zeoEQg9GY+h71TtWaVgoHzEd+lW763LSHzCAex9qjWZLWItkM2Dg15VSL5j3qcrx03LNnY/vAXY/4Vqaex8yQoCAPU1habdmabrwvqa01uWRm2nDE9/5VULWuhTu9GWo5AsLqTjJyx74qJI/tEeeiv8A0qvcSF4SI+AeCfUVNHIRAduQen0qk9RNaEUlurY75H5VnyKyTF4uuflz0q+Q0xx1ULj3NU1mj8xh18vjHrQqjWxfJoWRNKqkNIWOMsTWVqk9xJauuTumPbsKuxzH+LjH6Gq95dI90IUK4HzOT2FbvFPlIjh1zbHJyaW+3IZidw59sVm6k01uwjUnaGB/Wu1v5Imm8mEchctj1rOl0n7VHhUBIx+OO9Zqs0bKkjC03W5I3UMzfP8AL+Pet6W7vPKV7dipXlfcd6y9S0DybiGSMbCGBAHrXRoQ2lpKV5jbDLW0a8mmiZUYppmHfWct8Czk7XwSufzrB/4Rkwwusigopxg+h713HlxrKw4aN+Rj3qreBY7gbWBQgZHpXLWblqzoppR0Riw6LE9gQFUyIodFx1welUrrT4JiHaLpgFV9PX9a6ORNsRKkgpz+H9awJVeGYJvwVJaNuxHofeuSp0OmmyGSGKz2BQWG3KSLgH8R9adIgklSWMrl+HjOMN9KrzyncrbyQp67fzFZ0lxJbsfMAkXd8vtWT5b3NVc2Hj+Yy2/yMRzj+X16isXVHaOcTIAFI5YVFea0lzG80JIljB3R5+8AcfnzWe+qNdjyym5JU+XJ6HuP60OCeg4trU0Vuba+XypHCyEcZ4zXL6tC9pfIswOM8MOhH+f61VuLv7HcKJmIA6N/nvUi6ol+rRzOXK8jdjg/Wov06mqjrfoV7iRpJvLjXf7EdR7fhU+mny5Nsykrnj/Cq6MVAC5Dg8ZHSl+1PMxSYkOOA2Ov1qoQ5ncyqzsrHRyQwyx9VGff+dc3qMKWshLE4Ge9WluJIogTnqP4sfjxWffXaythgO/HXP8An/Gu7Sx5jWpnXUw2kKQB0rnr5n+c4+9+PTrW3NIFbG0Z/T65rI1EjnA5Xk56UkyZqw/RI2kuEOcAHPqa9j8KwFIYyTkCvINClRZlBbqf8/yr1TQNVRY4wGBG0YINenhrRV2eFjFKTsj0izm2R/M2M+/PFW1m6cEbsiuNh19FwCy4Pv8AlWhb60snJYZ613e1i9med7FrdHShyM8hu33qUTc/MBjpWF/bCHG1s444pi6oW/i4/lUe2NPZaXOhEm3Hf/61Vpptv3ev481RgumYgAjFXEs3ulYxnpwetdEVKWxjZRZUkmLOwyTu/Oq8gLeoHH4CtS30syS4YdBj8RVibTwqYwOBngU4wvuaS2OcaNtwGTxjPXFO2lVGT9a3IdKMh/vAcZ61FfaP5MLHjoD6dqp0na6IjJGOuG5x1PPFTC3DYPf1x0pvkMOGAAz+GBVq3RtvTgD8zWSUupfukcdoq42/8C7VbS1wvByB6Used3zAr2FWlUYwoGT2reELmdSpYg8sLjgAZz1/z2FR7yvoff2xVib7uOKz/M/fEL36gV0KFtTJPmZ7rbRKyqWHIqSSQKhGRio493kgqeapm6bfheMZrufY5JdytdHexUZ4GOtMt7Q789f61JEAbglupq7J8sY2jipsybq4x0EXKnOevvVS+uCMbQTgc+1TqzjJYNj0xwKntrSO4bMijH1pNNl3VrIp6fcNdybOnrWu1ooUhgP8aSysI7aSR1AOSfwps03lv9TSb5RRV9zI+zbrgiQYHb6VPJaqWG3gD9KkZhLMVY8mq17di2UrgZ6mp5i5QJmhbyzyDgemaz5YQsmWHNb2ikXFoWYcVDdoHchVGM0NxYlCRFZSFY+T8o7elFxi4U+TyQM1ct7M+TgAZYf5H602zsRBIxZuT2p3RKhrqZFrC7TFGyDnGK0pIGgj+YYIFW0SETq+V69ar65fAKyp8zY4wetRKdjWNG5Vi1aONtjkZ/Wp2ujdRlY1zkVzdrYyX0zOyuoGf8n/AD2rrvDlmWhkLjhR6VMZtlSo8vUp7jH8rICf51Eswt2zz+NXLzCTttHc8Vl6grJGz4IAyT70+ZIl05NFptWBU9iO1Z08iXEhI61lWt19vuvLBwOgqe4hNrKx3nA6j+oqVNA6ctjRtYlVhnHBrTRlYDy+oxXItrohbGTx0ro/Dsq30bPuzj9KqNSLdkT7KVrs1UkkjUnnnpgdKxry8eSUrjoT0GM10Fv5ckgTJJHas3Wlit5GK8DvjtU1GawgzAm1CS3yFBJPai11Ge5dQUzlj82elW4LMahMAnJPtXSWekRWEIMi/Nj2rKKb9C1oYDZU5YEbun9artJg4X/9VT61dLHKTkLj3rI+3fN1zg9c9PrXDiJdEdUI2NWSciPCn9aYxO39eaprdLJHuYmk+3Zjzxt/pXK3pqbR3KV0g3MBz9KydU/0eIIvDNzW4skcjE8Lxnk1lX1sGkznlcnn/P0rjr0uZHq4arbcp6ept4XlkAHHfvWhauJPmY4FZ1wr+WmRhE9P0/pUscgW0JZjkVzJW0Oxvm1NKSTcuRwg6ZPeplkCWB3H5s5wO9YM2rAQxxxAhmPPFWXvXzhtvyj5evNKM1crkdjS3fu1LHDDtVK7h2tIy4UuwPPt7VZn3L5TLk7wBioLoFokbJHzHd/kUTjoOEtdSjO5ZpRHkbcH3zTGt/LVJZD/AK5RuyfT/wDVUsJRb+VGJJZML70+aHzI0kY7UUFfzrBnRF2MlW26lcBiCGxt9x+Na0Mg+xrt5KDJ/PmsySzMBSfHzI+Pf86tW0x8txgcZ+X2P86dLqmVNX2FuW+3bPLAzkceuagljazM8YG5CMkZ7etW7W4hWEMMLhse4+vem3FwJL5lkOAY+T6jH/661j36mb7HNW2uI0p2sSVO1gTWlJKL6MEZ3LwcnnFcTLby2PiSQIW8gktt7AZrqZZFit0uI87AQsmO31qVPmvc15bNNElvNLazMJPni2nr1WquoSIs0W0lVZjnPTNVJLuRZS+ONuCPUVFJ/plm0bkhjyjZ6fjWUtVZFx0dyWaxW4jmijIWV/nTjp9Kz5mH2eE7MsjYfGKlF5I0aMz/AL+A/gwHamaxi3YMjbo7gBhj+E/5FZ8qNHLU5fUrVWvna0yhUljt6ZqG4t5FhW5tz+6LgSJ/cb1rat5I7qXLKqyLxn1Hf/PvRfQLZsfMBEM/DY6AdiPpUxjqa8xx+rQRtxcdG79lPt/n1rPh0kqWe3bIPIwemK3dSjEkbptOYmIZW6n6fzrn7XUjYXTRtgRvz1yB/nioqR940hL3dC/5jSJscbG9aZGpEmJDlh0OasTMlxD5itkcY7VTaQQsOBkenH0ropxtuclaRPMzbHR8dScnuewrNkiZSS2ee38+lXlkxt6FOnNJIgZcdG2nvwK3tc47mLNCu3bt79AAPr+FYGoSeXJnnJ9OK6W5jQMeV5znjt2rl9Ub5iEGQe2e1NRtuROVytb6isbg7ySe3aum0vXH+UDn5h0PT3rjINOlkZcL78dfx7d637PTZ7dRngj73bipnOothwpU5bnb2upNIwy7DnPXrWxb6k5XAPI44PT0rzz7VPCwGDt+v+feuk8NSXGpXCIsZx/tdaqhWk5WMsRhoKNzvdO33WAq8H+9jH4Vs2tqd43DP1HSr2geHZFRA643/wAv8a6pfC8dvFvb5vQe1e9Rw0pas8KrKNrI52OxbaGGBn3roNNXyLFsrhh+v+cU37GWxtPyqfTvU8ULNBsUHA74wK9KjTUdUcco3Y+3DfeI680y6+ZlGM+9T26uqc52r07U1owzZ7/rmsnG0rmqd42LFjHtxj9abqUayRsCMdquW6rFHuYjnp7j8qzbuffMFj6fXpWqnaNifZFKHT1mPyjIBqS60nyVDNkdxWtpm1fnYD296g1O48yTapyc1S5bGfsHYyY7PrwSP89KhkbY2Ov071p3DG3gJJ/PnNcvcXh87APKnnH+fpWjcYmaoNs0b9GWNXjH0xnNYcmVuN7EkcV0SXCS6ewbkle/0rktUujHLhQw5xmsZTdzqVFKLsfQkczquzqPpTGsZI2V05J68dKT7VFMcRurFufQ47dau21wscWGyz56Y7V3JnkziiJrffHuwAy+lMaF1jDN1461I18I5CPXrx3qe3kN5E4BDAeg5pmNtdBlvMjPsIzkcGgfuZDtwB3qtbxvDeKrc5PBxVvUMwyOMdBnrWMpWWh0RjcnjkXyz9e1ULyQeb8w4HeobO+3SOOoUZwe1PaYSyLgjBbFTe5pCKuV/LPmbjkY6YrH1r5pwXzt6d/xrrGhRImLFRgd8YrDuIxdMBtwQfzrCTaOhQTLOi3XkosJ6HpW75abRyOe2Olc5ZzIt55a4JT0HStSa8C8Ljn61pB6XIlDsWJrwwsAq8AVQk1IPMxVQKbdSfu8ofmxnFUbGQ3UjOoDYHrnHvSlOw4UkPmumaTCsfwq1p+kTTSGS4yyN2JqKzsUe/Qucc9K6WSZLf5VYAKvT2qIu7uzZw00M6O1FvJJHHgZ/Gr2nSJa28ikg7u+KyWvBIssq8np1rMn1JljCK3zt0FVKfKiY0m2Wby6H2ptozg5qDVJ1a0kHHKH+VY7PcLOzSKzKThWwT3xVXVNQMls6Q8kKe9ckqj6nXCirGVY3y2dySzZLHtV+/1MzKoH8XA7elciBMt4iSBl56t35rodQZIbYyN8rKuTnjtxWMakrGvsIlS8tZWYMoJA56f0rsPCMxg08hulcz4ZuDqM+JhvjJx/n9K7+10+No/JhUYGefSumgteZHLVjy6Mq2eqD+0cBiQRTvEGZrVvL5Pb3rF1hxpN5GVGNzYJ7Vo3V4JrEFeWI49qtyvdByrdGp4Js22eZMORmtbWL7a2xeWFZ2hXL2enfdIyOOayNY1WSO4jKjPmnvVt8tOxnGHNMq6xYvMWlcnjpmuUaYrKV3fd6V6FfqLzR8AgSY6CuE+ywiR2uGGVz+NcNelfY1HJcBVyxBwP8/0qOS+OSo4U9azb66SKTEJG32qmuoN83oK4pNrQ2pwudJ9uEagKTk8nNRreJJl5CAOnNc//AGn34Pahrl7uZrdGxJH95R1FRe50wTia9xKt3sSM4Q/e9qZJE32fZGSC2Bj9a1NN8K3P2H7RcfIsg/dr3+tZU9wYZGHUx8HPH5etKpQdtVua062u5VjgK3SdSuPfFT3EzTXblSqxwYXnGSTnoPwNaX/CP39xaxywqDFIm7rjH19eKs23g26u7e4n2JERhR8+eQDkD1HTr/8Ar51gqmyR0/W6a3YktwuyFl5yv0/Go5JF8oDjI4qvNp91+7itgkn2dfmdemPcnp0ottKvpLWe9RYzawS7JGL9zyMfnzV+wnvYlVY9yG8gZbiCdR8ynDDPUf5FXb/MtuI+is2T7VTvjJtHU7WHzKvAz05/T8qm0u7F5MYLjd56puzjIGOOQPfFR7DddzX22z7FPUX+Z7ZSTtwV+tOljMJhnQHa42uPQ1jyamzas6bGdwy4jx83OMe3cVptdrJCywlpYXXIGDkEf/qrH2LvdG/ttEUZVaSR44zywJP+NU/tzw3Ecczr5wXHXrj/ACam84qM/PGUGeQRkf5NYGoSfbLqJ4WIeN88e/aueUWjphJSLN5Cbq8Dou0pkDitDRbctLPHdiXy0AcxqOZAeg56cd+fp6Ulncttk+WXhlY9/euh8N3yzThYSkR5DgnruIDDnp65HPHpmtMLGMqq5iMROUab5TEurDMTxqhO3+EnlD/nFVbVRtMUjASBgVbHB/zmun1nTXt74iHfNvj3+WASNp5z7dj+Nc5df6NL5pGUbjA/h/z/AEqq9F0p2YUa6qwujH1i3mhmEsKB1kGMbv8APvVVWlvLFUmjAdM89euf85rq2VJ7XA27Xwcd6ymt03B0ODJkP6A81k4amqmra9DnrVRHMSu4H+JWNT6tuurMhGJaM5A74/8A1VDqEj6fNv2gE9ct1x2qjf3zqEnhOY24kj60uSxopXKWrSbbBLiMcodsmR09Dmsi50uOZEmhwVkGR061pX80KrIxH7qRfmXng+tZtnqCNbmMlcwtnaeh6f4Ck6Y1PoMtYzZ71Ytsft1ptxHuQtD0xx171buirQho23D6YrAkuTFIQp4HQU4x5TOTuXLW5/5Zyn/d+bv/AJ/nU3nbhgnB5rIkuBMSIiGf0H+etaVnZzffYEBuozn/AD0reEWzlqNIpXpGGC555x7965i8mVJn8z5gMfjXpFn4TuNUmVQrbG+7WlqnwbV7cMjAN/c9666dCTOKpVseZ6deRF9rHHOOvNdNYwrcBQqkDGDkZpzfDttIkCsxbnnH+fwrp9D8PiFgXjUen1rRUnszJVOpUtPCf2pl3xgk/l/nFejeC/A9vZP5jRjrnp+dXPDmirNIpdcd8/59q9B0fS1Vh0AXpkZr0MLhIr3rHLWrzl7pVt7XyZEUDGe4qTULhpJFhVgWPP1zWrPaFgPLA+Xjms9dLnXUI5WG6MEbm7/54rv9DmdraleS3NjgSA/MafdXixQ4AAXjPbNauueXNIrqflUda43WLrduiBPyjr/9eqlLlRkkXJ9Uj5WM/dz155rOXUS0xG/5T71zs2opHkMTuPvU8bboRKpyK5JVeY1Ubbo66O+LLyScjgD/AD71WadST6579Sawm1DyV+9yevvU0NztjyxJ4/zzUe0Zpoa/9qFRtXIH1xn/ADmn290GIZiTnkfNWBJeHHynPPrxTo74RR5J9+nFaQqakPXY1NUvMqyKSSfQ1zDs3nFgchalurx5NpUH5umD1FN+yzy4YIQT1yK295mSqRTsWoWfyzySDjC+lZ+qDy8OwBB56Zya3NOtQrYuB9V4NQa8rSR+XYxFwg5bBGa6IwW7MKlXm0R6jCzW8nmr5oQtkHA6c55/AflUq6oSpaFgfm6Y5HfA/OoZmEKR7f8AVjn/AHTVKymLXUj5G9O/r+FdLPOaH3t3PbMzSttkUAhe2Oc9f51u+G7xfPVSrAyZ3DA4yAe31rmtW/0i4VTgu/HPcd/51eh2WTRi1JyRknPI/wAe1ZN6lRhY6p761XUFAZSB1I6euDWfquoo0zqjBgRx9KyLkLccxkiXOSQeveq0l39mmhZscLiTcO/H9Kl2NU5bIuRTIWkktM78ZZT2/wA81XkubiFR5IbcTlAOMjJ+vrj16VDbqZrxplUOid8/TH+FP1CN5Y1DMdu4njtilzJrQSpSuLHr11DLcR3bruTopAxjJyffj/Ip8WtI/wDrHiZi2UO4AKM8Anuen51yupSy2rFreSTvz3GeD/TvVJPMWMSKZhgkspzk5IJOP89Olc0ql9LHSqbj1O20q5ZtYLOvltN0Vl5Hp9RXTzWMswV9u1UGW9x/jWL4E0WO6hW9fLbSpVWU/L15P1612WpT7rV/mHPB4744reEbRMnOT0OXaSJWBcP8vQqSMf5ODVawt5H1CWFCEBAbcq44Of8ACpbuF/sjhWByTgY9T3rZsbeKzhhEhHmGMBm9TQ/MceZFKaMW8itG28q3K45z/wDXrSS0+0fvbhztK/ezjPUfj2qhfS+dcE26k7W+XHrjjFbP2No7dAp3EfMQTxUx5ZbFvnXU52+jNrI0dqqcfeJB4zz681XNr5c8gKhggyDycg446D2raljOW8/cGfGB1BHHf1rI1CTFwilJU+blTzuA7n/P9aUnYS5mjVv9PVtDcuI0Yll/dgAEDgCuB0/T5JpC3luyFjtO0KAAcDgHrgjr19+p7ibVPOsVVPlYYGD275rJka4SEbSwB7gYORzx+orGpGM3dm0Jypx06kM2hxRw+ZdRpGwXO1uenP8ASuZfQZNcmkWN8QqDuJ4A5/n1ra1C5u9RyjkmacY8v+6ue/v3pt0zWsUdhCu7znHmMoPze+aznGLei0LpVpLfco6fJp2m3jRWpMYgO0YXg47109lrHlsnzLl/ur61yGmeDW0nR47bz57lYiUee6naSVzyT+8PznGevHAFdLpultDAkqxuViKblboRxkHvjkc5q4xktyZ1IyLGs2ceoGOVY/lGCSeSf8mrmi6ClxH5l0uI1+6u7sKgtZpPLaKYON7H5iA27uP5fzrdj/eRxxzN5aquW52nHarSs7kOTtZD5F+1Yht1VLdcDgelVm0GHVGWDbuaNs7hz+lWr66WzQRW2UMYwflzVbQtSFr9p+0MUe5wIyf4cdfxwTVt66kxTtoW7/QxbW4t1wNsZLE/T1rwvXLi4/tOeCPcoViFUZ6Cvbdd1+M6e0wAV5QTt/u47ZrktA0tLnUIp7ld6SfOW247+vtgH6E1hW99qKN6XuK7OGuvCl9Z6et1c4XcM7Tk5zzgcVgQ6feXjMYw4jT5mK87R7//AK6+iPEGj29/arHLhgjHyxnuB/8AXFVtB8L2tvJsEarHtUu5UAyYGRn8/wBawqYHmlZPQqOJ5YtnlnhP4SarrUdxcao4s7WRc2u4ZLE55wPQgH0545Ga9Is/hrpWi2o8pTLKVZVndsuOuSAD1ySa7yzHn3EQjTPTqcBQP8/5xS3sgjhIYbwRlmI55HA6+prqp4SlTWiMJ4qrUer0MKx0f7ZGyuVCpiNDn72OxHrWLrHhe0u5oZmtVYxkcADBwOM9+MDHNdRBdG1hUxhsq2/5eCf84pPMDwrH95+SFb+HOe30I/z1qylpYavHW5zYhPmFJlWOOMYLA/L79cn3zWvp2nB9IZ41XbI52/Q45H44qLVNPbyCJCchcDnk8dCfxqPQ7lIY4IZgYzEPvAnAI+nJ7+/500rSsx30uihY+E7aPVjCwbE77X3Z7noOw6/p+FWta8PWdrMlvDAzwNHlEAP3uxJH+8SR+Nb9rCbgiUh2ZcFcYAx9aS4i2t5lwpfZwM56+3vTVJLYj22pxEnhO3guiqqzQMMLhc4IyQevHIX8O/euj0PwLZ6JZL51usty6t5jZ3MwY7tue4HH1xUklwXYuoKBe2aqSalJZyK7Endn8aUaMI62HKvOWlzgfHHgeO41Yf2eUhD8SB1xgYxgenbPqRnsK1PDvw2it/JW6laeOEMwDENgnO1VJ6qAcY/Pmt6RotQuM3BlZXfIVT0J9efQfpXR280Mdi68RwIAFy2MkdPrWUKEOZuxvPETUErnzv4gtHXxReRWKJOsF0yMxJJ3AA4I9OQMjnjr0rB8YeDbzwu0WpXTyR20zgeWAGP1xnAHevoXR9BtbjWZ9R+zwrBDlo2K8s56kEngY/CuP+K0v/CSWpsI/lhPRtuSDnArjr4GDpyl16Hbh8wn7SMenU8qLJqFmr2zMXjj8zccLx7fhg/nWbLe3EKlLdsNw/ynhwD6d+v6mvQvCnha10nSSt7K8x24LN8oOCoHTt8oxxnnNadt4ZtIbMvNMZWlk39yCOeo9Qenv29eCOXy0knY73mMFdbmNeXcmraa8pSMTwltyjkEgsF298YBxz26nGTXg8F3WvW4eMmJJF+Z2ORuHQYHeuzh8Pwts+8EbkNjLDaMAYHbOOnvXdeFfDltY6RNBCsbq4L85z+H5V6f1ONVrn1PN+vOknyHz5daBc2jfZp9+5MhSBjec9MnA6d6NH8KX7NB9oSQLc5KRlcsV5wQO/Ga90j8NQOym+RHf73oB7U++0dBNBJbQnbEmO3POf6VP9lwTuW82nax45/whMut3CW15Ao2fPE6gjfkk4bttAx04615z4q8E3vhPVbqFYLq5sc7oWRCWcbSSoPTghQeOAc44r6o03TR9qkuJImRk4BPXpjn2wOnvVHxBYw3U6DA4QLnn6nPPQjiqqZfTlHzFSzKpGXkfG39j6p4owuj2Uq7JVjc7T5aEtjkn3PX8aoXHw/1fTbyFb5TELoH5o42faBwchc88dPYnoM19h2OiIJJVjtQx+0ZVdg4J9j75rG8ZfBf/hKo7mfVSEupsLHIpJMScEqDxjJAOMdsVzvKouPdnSs4alZ6I+SbK3v1ZoIVaXacD5eTTI9Lvry8aERjKEglfr0NfQ158JpNJs2jRs3LyAg7uHJ4J9ifyqzpfwhvGZ5r2MQJsA3IPvAdzWEcra0Z0SzWm1c+adW0ZtGvUVmyxIDDsa7fwdodxqlwokTMKnOSOtejeIfgnb6xdRC2uZodh3OxQHc2047jgYH5nHWu58P/AA2sdB0eEbmF0iAM27IJ65x+nFbU8BPm0Whz1Mwpcu92YFn4eh02MNIioFGdtUdYvlkjY25BVcDNa3iDSr24ZkjeRIt+2PbHktj8av6T4Lie1e2u9qOxVtxHUjPFdcaEvhSOaeIhbmueWfYrnVLxdqOyL19c56VuR6HcQsgEZVSBu4+lerWPhO20/iGEsR0bbmm39iFXLQ7VCgZ29OlVHC21Zl9aj0OX0pTbqqxjJI9M811WnzOVJbp9f61m29mnmptwC5wP/wBdXrkSWtsZI2CFTt64z711QizKeIjfQ1YZouTMyjDYPzVUl1yFlkIXCJkBs8Zz/LrWH/aUgjM0myIyLnaQSecgEY4Pp6/lVgLajTQzxS3AZiWZW27R1OB+H+eKuMLHPOpJ7CXitIrAODluinIP5f55rjNYt51d2tvnyOoPf8av33imxjmSys5GEyBc7jldx4A3HGD39ORjrV/S7Oa4uT9oPl7IxuYjGFPGAcdSM/5FRKHNoCqyj7zPPJNEvLj7u6RyB8u3JPPAAH+eldJpXhPWp7AqtpLhR8pbA+vXt716ho9jZQ2rXBjCmOQJvboSARknjg8du4/HSmuoorUNCCgdSVbe2H/3hnHXH/1uDUwwke4Sxc3sjxFdJuLUyz3DLIkIJKx5Ow5CjJxjGSM5+nFVJrs9FUnYQTtbIK46/wA/zr1Xxhp8F5YrcNuDyAsUcAk/KMdf5deMe9cQy20ELrBsjZkG5jySOCO3B4/zg1E8IujFHFtfEtTl7/VPJRBlgW4x3pLW+lumCWqszY5wucY9anurGO/baSIyGCszenr9f/r11+g6bbx2Sw26ABMbm6Z4H+fxpUsNLn12HUxkeX3VqYmlafPcNG0nypHn5j0z16/XI/rWw0MzRkJ8kcXGevbnA7dquSanZ2t0qRMqxmMZMZymTyOhPXPfkYIxmoJLhZJ2EJZYiAY+3rn+or0LJaI4HKTd2UpI2jYJIf3hb7ifeP6e386qNqXVLeMrvfBHHTb1+lF/cwxsfny24ZY5J6855wOhJqpb3kVjN5skXDdMdMD35OeOmKaZLi2euyWhVl+bKY5z0FZbSLZ3MojVQfX+8P8AJrorjZ5b4xu6H3rjLy73XjAjgZB5rCrPleh2wopkt1JuIlySy+nenapqaJFuAy5xzjp71Rh1GNGYTIzs2dvHH+elXbXTRqMJZjwPXsKzjOUmaShGKuzW0LlC0zZJXO01R16ZYZkdjmPvjt9K0P3drbokfVPWsbUoZL2No84PZv8ACtpL3dDGDXNdly11KJbaMK5KHdtNM1G83qNpOG5461i2em3Sx+W2Bh+o6A1pxobdgtx8/wCOaxSlLc3bhEht7FbhWaR8jOPrWhHooSaKXexTpt9c1Wi+W4xDnYTnp1rUupWjVSpA+XrVKnGxDcmzqNBmGk6TBbxncFJDbupBJ/pT7/VNtsUyCDnP5Vwq6863AQs3Axya2LWaa8jO9cAUvadEP2dtS8JVms0C4JLevWrl7BNbRCVWcjAP0rJs4zbzFpjn5sgj/Cte51QXUbRrtfcPlHpU2bWo7j/D8yzQzykHk+3yn/8AXWg15uj2birFjuNZFg0enKDGcFj8wpJL4SXGVQFWH5elO7jGw7JyuXr64QxIq58xOD6H1/Csm41dZtoZQGzjcw6VIdsgUtwXJHPY1QvLcxyNNxtVdpUf/qqHd6lrlRauYn4eNCRjDYOevcVPbq88WWBKqmMn1/zmprCZGtFY5GeCrVoWtxEsT7gME4x04qvZ6XM3J3tY4TVLiTS7xmYM6MPkzz046/QZqXwqBqGpBpn27gwww4PPBB7c/wCetWdcSK+YxjG09M9gazlhbR7yzmt94hDAP83qcGsU9S3DsdvcW7NZyRRqmEc8r/D1Jz7/AOFTQWdvY2ccch8zeoxuPfgDH+fWpdLmhuIvMLHLZbg/dHHFczfa0JLi5t43YrC/7snnP+ea09oJUr6HUR28bQLJGqLtJ3HH8ie/vWVJI012Y4WVRyWOTycH9f8ACqOhaq7xym6ZlQsQvOS3HPes2bVg2pSNDEQgY9M5GBjrRKd7DVNLQ07q5umjxauojB2bsEDjgH61nTahJGBDqJETqSV/dj5T3PPXsPT0rYtr5ZrBlRVwfm+77dc/lVTVtPW609bhkHmxgKvqaJJ7omPYxLiX7fAfldjGxKhW3bgO2B9AK6jw35kNin25YyxONq4xtz65PPTof51y9hHNJMREGQfc+UcjjgZ9McV29jp62tpmIBjjdlxySamjB83MxV56WJ5Ibm+vpA6vFAqlRt5LHAHTt16j0qyy/Z42tyqlI/kBVuuPf9aqWzSpIpmkDj+7WxZ2Ek0wOAqkfnXWktzkcpDbW+ltIXefcXlbqRn8Pxyeakub/wA4BVkIDqN5C9ABjitFrJFYCQggDvWVdLGkwaPkigaEjt5DCDv+QDkEn5h2q3aMqxkou1yRkN1NJCRIV3FQCelT3EaR5wRyOKEhu/Ug8SSo6qIz7HFYNq0NrD+7J3SNgseSO3P5mtGSNZsrM2AaZLp8VumV2kVPLrcvm92xoaddGOPDSZjAOWNU9U1LdmO3JZWbr/OoYZosFG4XGMdqPNt1kO059B6U9xLQprGzScFkUD5qqalKdiR4LH6c1fmUsMQ4JaoYY33b7hd2D8uRSeqsWviuzNsbO5jkR2+ZeSAQPlzU+oPK3lxNuVE79c1sT3ShQFBB/KqsLLIrs+Mjv6GsHHlNk+bUVLhHsxbRhoolXsRljVC6022e3Koib5CC21e/rmq11cHexXO3uV71JG01xCILfOZD8zdwPahu+g0uXUw7Pw9dXiyKpCwmY7TgHvyePpUknh86feQpI+U4x6YyOtdnbw+THFEq7VjHPvVe+09r24TcQFTpjrVKitjN1rspw6Wt+w25j2cZXAx/n+lbkjPGiQxk7sbSyjA4osoo9Pt/LjQ568j9KdNIZCPlCg8VulYxcmSQqWQqp3NjqRn61BPIyrsyD6EVasJhGdkY46HNXhZrtJ25Z/0pslnNRzkRlUyGz8xbvRbWMbeY8xDM4PfpWnd6aNx38A/rUMMMUeRkVCjqVzaCabDHZTF2+YscjP8AD/nmrt9eLdKyx4VcdTTLey8zO0dDUE9qI2xngVdhHI31ml9rUQkUsquGHHA/z/Suk1CJZLPy48/MOxxUV1FHGpeMAMPQd6bZXUjr8wzjpxUrQp33M+30FfLwwwTz9B1ouIY44Cu37vU561vR28jKXY9RxWBrm6O3dFOHPSh6IlK7MuNobj5FQAqfTPIqGbT3tlYnJZzxml8P2ckdyWmycc+1ad7IlzdhVJZuoXPSojI2cWZiTXWmnLMr4XjHP51btdUh1i3ZZIgki53cc1ZuNFLQ7lPJHQ1JpOhJDHuZdrE+lWr3MdNzml0W7W6cw/cz3zSzaPO8flzAFyx5I6Zrs2jW3Qlug9axpb7zJScAAdqcnYEm9jnLrRpMMkjgsDlW7/SrNvbzQWYikUIcgk8dB0rTXF0xDHLdaSEeYDFMOnQ1PNcpxkcRrfgW0vlL+RA653FGjB57EHHXk1t+GdFeC3Mt/Ir5yEUdl7V0kOlmWPpkL7VX+zssojhXrxgCtIpbmbctuhkXVxJbrNDbblEnAZewznH50tpZTvbs8kvzDLJ8oDAkev0AH510DaKVUyMOCKz5ZltlkXqAOfpWiRDb2MWTzoV2yv5m3uxzg4xn9axdStVvoXjYQMJBgLjBXkn5SPun3GK2IJlupJTICFXpWbIRFKXY7Qp6UpAk7mBN4fHlvukZd/8AD0xznH6daks4Wtgd07P8u0huQAOn9KmutU8yVu6gccYNQQrPdK3lkAKfyqE0KUJIns0ieR440YgYAPXtjp64rSvNLgjsdyqDIygN9AMY/KrmjaSscbTMfnIzRqEe23KxnJz83tWl9CYw7nGLbvLuJj3AMdo7j8/yqO+tUVUxDmQENu7Kfp06Z5+tXJka1nZlfIJ4XNYGsaqJrpo4224xu2n6cVm52N40meqR6ozYO5snG7PtWbNKomdlAJY5x2NEMZdgsZyKsvp6mNm5DCs5wuzdVCguGlj+XHXI/pXQw3UMUKrGdjHjPv61xDXzQ3RVhwpHIPT6V0WmY1J1G4lcfn9aIKxM3zRuyee4dpC0ZGPUHirNjcLchYuNycCopYltnKbRgd+1ZUmojT7rzM8Z6+lXKSSJjByOquLVoYS0YAz6DisyGzackyEZz1p1nrTanGAmDkcCpVvlimCscjdS5lYPZy6BPm1XKqOn3hVRrwTEBzx0xV3WLhTbg84Iz0/z6VzlvIguSmDuPPtWU520NqdN2NebTYywmhy3TH1rorKQfZlH8RHp/OsOO8WCPHTjnt/n/wCtVmzmkkk2w9x3qE7bFuL6l9rxY2KMecdPSsg3Usd4SvTdzn61Yvo2R9z5BH+11FSnygm/aAR3x0quWTIbikXI1Nwq5Jyeatx2ZjbLZx29qzLeRjkjqO1aCXR3bWwPwrRR7kcyFuucc4OaZJIJPlzlT61Be3SqvX5uv+f0qolwWXdkk/5/z+FRJpbFRTNWaVViwo46fSqsl55MY75qhcX+Mg9AM/SsxtRJDByR6VzTqnTSpDb3UG+3NzhSMD2rTcPdWGEdiwAI+tcxdXA8zeRleuCa2bLUd0K7MYHQY6VhGeupvKLsXLXWpLCCRJwVIVgpzg5Ix/hWBY6k8NzKxDszzbizfMMYFaWptFMwZfvd8VRtrdCx8slhJjK+tNRfNoTzJRsWLJpbppBE0hYv8qj/AD79a67StJH2fZMBu9fWoNH0+G3EbjGT2611kcaFRt6Hriu2lSstTkq1HLY5xLL7HMBkeWOFAqxuLKoKhscjPQVeurfbMoY5FNmK7eBkj04zWjSRmtRumyQxtveBBjuoraW6iuEPlhdm3jHasBpNsJC4BqgZp4FJVuuelQ522H7PubsM0LatGmejZb0roLzVI7dlFvgDH515/YyPG2+ZvmZvyregb7Uo5zVw1RnOCRevNYMzLhiO3B601bjzVJzkgfh9ahk03zEPlsfr3qOGFoVxTbBRuWYb8qwVm71pzc2fmKecVydy7rOu49DzW7DcGS02qeMUlMbpWMmS4uJZDtJ4PrS3d9IkYLPkD3q2sO0vtUjk9az723du3B5rK7ub8sbFnTU/tAZUsR0qzcWkduSzMQR7dateG9P8mHcwxxnNUfEDK0gRSMHtW32TGMby0J7W+iKFWHPanMwdcL0zmseKBoV3tn2FWY5mYHaGIX8KyUi5QsS3KiTC55zQ9qTAAh4PWq9pIWvAsg4PrXRSLHHCuzHTnmtFFPUz95aI54aewjMfTOat6XEbXIfG4/dqSWTdkLnioo3Mbbm+Y01GwpSlszSWN2yzHHf0pqyJbklgMiq/29pAOdoqnNcM3A4HWqEomxlLiPcTz9aRcbeoNc/JdPCDgkVPYaiWmG8jaKycnzGsYrlOmghWKPfgVajvU2nJ5FZX24vGADxULXDc7e9bWMLXJNS1PdJtHf1qhbFpblQDlSar3duzZdiQeevarGjy7D8xqLPmNtOWx1kapDCq8Agc1QvlRUbcQD15qJb85OTnPasrVJ5ZMiPPPtWhko66mfdyGSVlj+bH6021mfzguDjPcdahWRbedROwyTWpNGkcPmxkZ65Fc8nrc6FBWsWXvvLUIpye9U57NbwksOf5VTtbwTzYbGA1Xbq4EYXnj+VXF3V2JwtoZ11bra5EeCO5qhZo32kyqMknrjtV24uRLncRj+dXrO3SO13kAcdxyaW+wWsNtLjc+2YkjpWxa26sh9+cVysl6PtZ2du/rXTeH5vOUCTr07VcJXMqkFEj1KyLQt9OBXHalb/ZyRnB5r0TVV2g8YFcZ4htA1rlevJzU1WaUo6HLQ6gIZgFbPb64rTs9QSWZRn5s8GuJ1O4ks585GTzhqdperN9qjAY72/KueFS0rG06Dauex27KtmNw+ZsU6OxjCiTblmrP0+43Qwg8EgVtwyKGAHYCu+NmcTjYyfEM0lva7YAAdtcja2dxqEh80MFPBrstaIml2Y5FT2tnHBb7yBVbaifkcbfadDZx4Ubf8a5PVF8yQqozniuy8QXibmXI57VyEkyyTHJHtXPVldHTTpPczbixWGEuxO7B60ujyIEIUEs3ema9eFbV1UEZGM0zwoq8GTOScf5/MVlGp7xVSj7tzqNjqq7soG6461m6uzrCfJHAHPvXUy2fnW4foBye2azJ4VuLdl644rrUrnPyHjuvXl35xjtQ7MTjg/4Vh3M0tiDvCCR8FyT0/8Ar16nqlja6NC81yuWboD/ACrxnxHcXeoaqzQI+xmyFA4+tcVRNHZBc3oe6eG5Wuk3MSQDV+/uCqkjisnwiSbEHJztX9a1pep966uTmMZWicw0LNcszfxdyePzrpPD+Lcbug7VjXvy5x6Vds5GW3IU8c/zpxhYzbci5rGoLGXYEECuM1zVvNU+XjIPpWprzNn7zckA8+9cpP8ANbuWySvSuSs5M78PSVkaWg+KWtVwy5HetxNbFxOJNxxnBGa461hQq3y9wP0q1YE+W/8Au1hCUrHV7GJ6Tbk6hHhWzkce9VJLL7PPuYH04qPwtM5jUliTuxWhqfzMxbkg8fnXUoc0bnFP3JWKqyGZtuM4q1Y3UlrcKQMoD3NLp8a5Q7Rk1ehjViMjPP8AUVcadtTKc9bC3lzJdNhvp7mpZGCwYbghalSJGfBUYGKS+iRYWCqAB09q0sc6fMUrO+SObDH2FWJrgyMDCQf/ANdYsihbjA4xWirERs2TuUnFRK+50KCLjWryKck5Iz9ayLm6e1dhk5HXFb9sxbOfcVj6lGjtllB3AZ9+lcsrs2jBIwZtYaSYgZ5/T/Gpl8yXB5yB2qb7HCszsI1yGroLO1ia3XKL/nFRGjfct1FHZHF3HnPuHlk9z2+lVo7yayKmRHQH27V3UVvEZD8i9P8AH/CotSsoGQ7o1Od1H1bsxe38jj/+EgMhIZfnH8qkstRkluCFBBzn2qc2Nu2WMS7gRWnZWsKyDbGowccDtmiFN825U5xfQ67w8rXNqskxxx6VrQ3Bikx/DWXp7GO3UR/KD6VbhOdpPJyK70jgkXJ7rcct+tU5rtOmcVHfMQvBrBmkfzpPmP3c/jSkVTjc1Zr0BcKwPrVSS+MylVBPP8qzRIzTAFiRW7bQR5Hyjkc+/Wua2p0WsVFmbGCCAvOa19LugwABAqndKFjbAHA4/Wq+lsRcEAnAb+tawdtDLluegWqp5PzHt/Os64kSOUjIGO/pVTz5NifMRxVO5Y/McnPFKepcYEeqSDzAyg81JY6ntwrdCabJ8yDdzgUhhRVRlUA8VnbUpxTR0EcyNEW459qpyXkbvtbkZqtayN5WMnvTVUbicc1tYy5UbEmppb2pCHGBjiufW7+1XW5+/NTTfvIju54FV/LVJiVGDux/OnK4QRYuJDLwoI7kf5/zxU+nxgR/NyWqszHGc96sWLFuSc9aFAcnoW47HDhlHH0qdvMC4Oav2gDIu4A5H+FEygqMgf5Fa20Oa7uYUm6Ny2T+NV5LrAPXFa95GgU4UcZrDukHPH8Of0rOTsioRuRPfbcjdjPX3pYJjJjP8qyrknd6ZIrQsP6VkpO50OnpcluMr97O30qmJirbVO3NaVyo2Lx1XNZe0eb09qcldXJSN6wuB5YDEe1XWukXnp/Wuft2OAMnpTrqRs9f85rZaRMuT3jVvLpWjJBP+FU9Nu1ZyqnvWVLM5U5YnJo0r/j4b6D+dZ3fMbOC5TsoVCrljwfeorqZVznr0qKORgoGTiqVzI3HJ561u1ocsdzK1CJppgykkBquy3m2x2Mcnp0qtIx3L7gE1DOx3YycHHFY+zRupMZp4dJHbtuzVq9vDxznPGfeorcDDfh/Wqd9/rD9DVqnaNiHNuRIzDzMk5FXbrWFjtQikj1rGkY/Zi2TkA1i72kkO4k//rNZqOhorvU6S3w2XYjJ7+ldH4ZulWTBI45+tchbsRGME8ir+muyMu0kZPNXFW0M2ubc7TXL5PLPln06VzV5O9xannpT55GaFtzE4pkHMLZ7UNX0NIaI8p8VeY14Io1yc/1q54f0CRZI55BuYY5PQf5zWzqlvG+qNuQHBH9K6KONI7bEahQOB7VlSormuy69eSjZE1heKsw3MPkH0rXs9UWSZmY9O1cbds0atsJGRmp9Nmfy3O45A4/SulLU5t4nVLcxy3TPIRx71DrOsJDCwQgAehrn5JnUrtY8sB+tZHiCaTyD85onLQKMOaRR1TVg0jNv5OeO9ZMMvmSM2c5PAz37VjyyuZyCxPzHr+P+FbNnGoZMD07+4/xNcivJnrqNjL1+Ty4982cZ5981P4R1CO6kG3qCRg+3tSa9Ck2FkG4fX2rO0GJLe4iEKhd2Sf0qXH3hNXjY9qs4xJabWwQV64rPhtVjuGU4AHPNTaLIzWK7iT8tNuOJ5B23Y/CupI43HocJ4ksTq2rmLAaKPtjgdqxtS8OQW+CqqCfTtXZXShZpCowcnmuP1WeRmJZicGm4akRV9j//2Q==" + }, + { + "fileName": "bunnyFile2", + "data": "/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX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" + } + ] +} diff --git a/api-mobile/test/activity.sh b/api-mobile/test/activity.sh new file mode 100644 index 000000000..abd75f824 --- /dev/null +++ b/api-mobile/test/activity.sh @@ -0,0 +1,6 @@ +# TODO replace `{1}` with a valid JWT token string +curl -X POST \ + -d @activity-with-files.json \ + 'localhost:3002/api/activity/' \ + --header "Content-Type: application/json" \ + --header 'Authorization: Bearer {1}' \ diff --git a/api-mobile/tsconfig.json b/api-mobile/tsconfig.json index e41306af6..a6f121be5 100644 --- a/api-mobile/tsconfig.json +++ b/api-mobile/tsconfig.json @@ -17,7 +17,8 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "skipLibCheck": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "typeRoots": ["node_modules/@types"] }, "include": ["src/**/*"], "exclude": ["**/*.spec.ts", "**/node_modules", "dist"] diff --git a/docker-compose.yml b/docker-compose.yml index 3dea42993..afece8b80 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -95,10 +95,10 @@ services: - APP_CERTIFICATE_URL_TEST=${APP_CERTIFICATE_URL_TEST} - ENVIRONMENT=local - NODE_ENV=local - - APP_EMAIL_SENDER=${APP_EMAIL_SENDER} - - APP_EMAIL_SENDER_PWD=${APP_EMAIL_SENDER_PWD} - - APP_EMAIL_TEST_RECEIVER=${APP_EMAIL_TEST_RECEIVER} - - APP_REPORT_RECEIVER=${APP_REPORT_RECEIVER} + - OBJECT_STORE_URL=${OBJECT_STORE_URL} + - OBJECT_STORE_ACCESS_KEY_ID=${OBJECT_STORE_ACCESS_KEY_ID} + - OBJECT_STORE_SECRET_KEY_ID=${OBJECT_STORE_SECRET_KEY_ID} + - OBJECT_STORE_BUCKET_NAME=${OBJECT_STORE_BUCKET_NAME} volumes: - ./api-mobile:/opt/app-root/src - npmcache_api-mobile:/opt/app-root/src/api-mobile/node_modules diff --git a/env_config/env.docker b/env_config/env.docker index 1ce5589bc..53a829a94 100644 --- a/env_config/env.docker +++ b/env_config/env.docker @@ -54,3 +54,12 @@ APP_EMAIL_SENDER= APP_EMAIL_SENDER_PWD= APP_EMAIL_TEST_RECEIVER= APP_REPORT_RECEIVER= + +# ------------------------------------------------------------------------------ +# Object Store (S3) +# ------------------------------------------------------------------------------ +OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca +OBJECT_STORE_ACCESS_KEY_ID= +OBJECT_STORE_SECRET_KEY_ID= +OBJECT_STORE_BUCKET_NAME= + From 5e7dc26988383bb988da9f2cc1b4601843791117 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Thu, 3 Sep 2020 18:25:46 -0700 Subject: [PATCH 051/194] 841: Code review updates - Update `test/activity.sh` - update base64 parsing regex - increase accepted request size --- api-mobile/app.ts | 4 ++-- api-mobile/src/utils/file-utils.ts | 4 ++-- api-mobile/test/activity-with-files.json | 8 ++++---- api-mobile/test/activity.sh | 6 +++++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/api-mobile/app.ts b/api-mobile/app.ts index 8ada9d17b..d2a127800 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -37,8 +37,8 @@ const openAPIFramework = initialize({ routesIndexFileRegExp: /(?:index)?\.[tj]s$/, // updated default to allow .ts promiseMode: true, // allow endpoint handlers to return promises consumesMiddleware: { - 'application/json': bodyParser.json({ limit: '10mb' }), - 'application/x-www-form-urlencoded': bodyParser.urlencoded({ limit: '10mb', extended: true }) + 'application/json': bodyParser.json({ limit: '50mb' }), + 'application/x-www-form-urlencoded': bodyParser.urlencoded({ limit: '50mb', extended: true }) }, securityHandlers: { Bearer: function (req, scopes) { diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts index 42cd75688..f3364605c 100644 --- a/api-mobile/src/utils/file-utils.ts +++ b/api-mobile/src/utils/file-utils.ts @@ -60,10 +60,10 @@ export async function uploadFileToS3(media: MediaBase64, metadata: Metadata = {} } // Regex matches a Data URL base64 encoded string, and has matching groups for the content type and raw encoded string -const base64DataURLRegex = new RegExp(/^data:(image\/\w+);base64,(.*)/); +const base64DataURLRegex = new RegExp(/^data:(\w+\/\w+);base64,(.*)/); /** - * Takes a Data URL base64 encoded string, and parses out the contentType (`image/jpeg`, `image/png`, etc) and the + * Takes a Data URL base64 encoded string, and parses out the contentType (`image/jpeg`, `file/png`, etc) and the * base64 contentString. * * @export diff --git a/api-mobile/test/activity-with-files.json b/api-mobile/test/activity-with-files.json index df466b14d..893ff7c7f 100644 --- a/api-mobile/test/activity-with-files.json +++ b/api-mobile/test/activity-with-files.json @@ -43,12 +43,12 @@ }, "media": [ { - "fileName": "bunnyFile", - "data": "/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APT1YlhnHBxweRU0ed5Pp0HT/wDV0qIR5bAxt9D61MqfMoAz1z/jX6Kfz3Kcrkm76HPOOmfrTkYsqnnjkj0/p2NBwygMSze/r9akVQd2MFl4GeaAUpdyRZDtwCPQ/wD16lTrjHTNNUA7j36Z6ZI4qYLuwFU59z7VJfNIfFhlz8xHr261Zh4Y8HPOfb3qCGNlO4EAdh1H+eatovbbnHTtk0wUpbjwx6/MST6UrSHblunX/PvTdvTHSjgscYx/KpsWqkgXGCXJPA5xxU0bDbyeRnOFwSRTPLLH+tTKuFHXp69KQ1OQ9Tzyx6fT/PFShunBPP502LPJ55HWpIx1OAWBOfzpMpSkKmORknGSO54p/O08H+dIiDqdvPoeTTh8vODyPr/nvSLUmPVuAeQO/wDKnxt6t25pirx+v0p6joCM4HWkxxcnuP653MORx/n/AD1pV5wVJ+gpyr6EfMB3/wA/5NOWPaRwR7en/wBakVzSEWQtgZUZHbtT484IbNIqjcTkA/T/AD7VJHGf4SMAZx60DUpCKcc9s+2OlPDDbyev93jOPSl2gL6g8/jQqlVIYED/AOvRYfOxyt83yjH07f5xR5zbgWJwfzIpVTAXAUk+lLtKsxxyO1Kw3OQ9V2g85I/2fzqQNlSFHfrj/PNNVOM87e4B/GnIp25AGRyKLFKUhzfJt474/rR075Hcev8AnimsoJH3QcGnL6bVXHXnpS5RqbFzhQGGP1pd/wApIPXHFIYxhgoDU8qMNt9/aiw1KQzcc8Zx2p/Lbd3cc/Sl2/M3ON3PXgd6PyyOp70NApMNwyBzgmhmJJHK4P0p20kg9Rijpz6d/wCdIptjNxZm6/LwaQMc8E56+tP2lio+7jkUnl+uADzSE2xYxnLDABHHrSsxLksMAdlNLnb93AHXOQaTaTx8oPOOvFAc7EDDc24HA9qQt7HHtzzTtoXsOBnr3pdv949qaFdjV+Y9Thf5Uq5PA7etKq7sBguBjpxScnAwCc8epFId2NMmM7cdfWkBOcenH0pzgEnjJP8AhzTCpVSWwMfrQHMxdxYEcge/ak3Y/hGevFKw5IXOVPfikaP6Z9apIlyZHuIOBg/WkZs8dz+nrTyu3HcDtSBeMv07c8+9FrC5pDVZsHcTjt9KRpD0UHPQ0bS3UEH64p23IblgQabQlNkQYkZ6dcAj8qa2R+JxmpWXc2D97pnuaaVB5wPm5poV2Qs25CR8pI/zjNMbnJKruHPpUzJ13AEDPHpTPKBUjjrk4/Q0E3ZC33v7tRyKWY99pqd4wDlu36CoWG3Cgn0FNCcmJuPBXjGe1JyfbB4xxmn7R8u7ILZ3fyqN8fxYH1phzMZJ+7zuJyffpUUh6EY44PHSpZOc5GBjn3qOQZJHf/P+fzoE5Mi3ngZyRnoO/wDkUhYksOMKPXr9adt2kFiAAe/9Ka67e2D0Pv600Z80hrOXwedw9Rke1VWY7jjI+vT61ZkB5xke3+fwqBhnjv8AyppESkyPcc5z9Se1NVgQNwOfzqRuOOQRUartHqfSqI55LYiZs4JPBHp1qP73zE4BGQD61MVzn7uPTP8AP9ajVSGxjHX/ADjtTQnJkWccsSR7r09KgeYliMHnjI7/AE/lU8i8nqvP9764qB4/lIGDk8ZppEc8ivJJyB1GOv51BkqG3joenv6fyqd1wv3s9OPw+vNQSodx5GD06cUyXUlbUZksARgjoef61WfPRWAHQcVM+VPO7npj+tRSJuA9M4HPP6dqaIcnYhZm3EK2fpxTGkIxyc9T1xmnMvy/KG/Pr+HWo5FAYlckt+H6/wBfem0TzSITL8pwA2O4H+fSoGYdQ3A56CrDKUGTwW/iB6ntUKqfmZSAccAdfpQJSlsaUf8ArFLDA478VK33sL179s+nPam4PqCAeccinqo/H8+MVB0T7CrEOrbTnjOOlTxjLEYb5uM01V3MCuFUDGPapwp2tjoTg0EodGn3drZz+GPrVtlO0fNhtvTPGe9RLGGwWIIHHr+FSRqN2VOcZ/8ArfXipKTJVUBT7dDnt71KqbW+Uex7k0xOpA4XPU1NGeRnvz8vahDF8vc21s4A+lCgDA4AA+vSnLk4yuPUY6U5U5Xdz9P6mkWG09sdRipkXuTxTGXBPHQZ/KpVIwDxx+FIpLUVfTj7v86l3bfT6dP89qYvDA88fnU0fAHIGOTSKSBWZl7jHtn/AD/9al2/N35/U04+nA9+w/zijlidxPHpSKtYeq9ORk1IqnIJwcn/APVTVPBIyR/nNPxx8uBjjj0pWLRIucgHp+dAjGeh/wAPrQuVHr3+lOVvUjcf1oHdCheQcc4AJH+fpU4HykYBP1pB93aOSOlOYBV9S3b2pAhPvcrjIGN1JuHJU9OTSgj396cqnkt1PfHWgbYKvbPGPw96cydRzx1xSqp+7nPTPvT1U9hnFA0K2VJOcd/xqQDOGJ4Ix+tN2EZPX9f0p233yBwTmky0HEeMAdaRudu3HPGPWjO77w61IuedxHNDDcI1xgMScjPFHpu5bvjrRuOCfXmk+8w5zgUkULtxkbs/1p3LD5h+fNMOR2+Y+9Sr045GP1pWBBGu5sKOh4ouIzBjzEKg1asTtmRm4FbeqafFqNj8oAdemK4MZjPq9tD38qyf69F+9Zo5odCUwOPXpTgvyg8nPoO9Z0V59lvHtmP8WBWk5yFH4iumjWjVgpx2Z5eLwtTDVXTmrNDPfH/16P4Rjntilboc9up96a+GPT8q1OUAM8t34pfurhvyH+fahfk5x69aXpnv/wDroATd83GOvrSbSGycgnp3pyLwvA6dhTgvpyQeOaAIdpDYbpj8KR4+DwWI6fWpOjd+aT0wTjr7UCI2X5j6ZOTmkCgLydwHfH4Yp7KVAPAx2pCfMHyjOfeqT0JQm3sOcUxlHLEk46ZqRc9HJ+9n6Urd/bp7UXHYiYb1BPQdRnrRu2qv3cfSn4OMKD27VUvrpbaM7iAf5VMpqMW5GlOlKpJRirtk8OJJMKQdx7U+6h8slc8n/P8AWsnQ7kySyXExwi9Perwuhdys+eBxx3ryMJmMsRiHGPwo+nzHI6eCwCqVPjYjcHqCMcE0z+8NvPb/AA/SpmX+7jPvUYGXIyOf4q9tHyDIT3AAP1qI565x6+g9P5VaxjlvpxUDY7cjnj04NNEtWI3boOnfpUe47s5Jx/X/ACKdKu1iOmP1/CmMD/FggevGKaE09xG9ue/rUZxy33s4x/8AWoOOrdueaafvdMEccdKYXGlVyewH60wjcfmGVH0z+tS52scAAc1GSd2MFsDp1oM2kJswpODnPGOMVBsK56DOanbnp8uevv8A41E2eeSRznBzn/OaaZnIh5MbcDnrx1qNkH1Hf61M2GHv+P1x/Ok2lfwqiehWk5VTjLA9f50zBVdzA56mp2+7xggnIqMruT5sHbgiglrsQSf7HAA/KoJl6YwwxjGfU9zVmTaCw2kgduv5VBO25crnPsfaqIexVMZZsKOvQZHGKjkUMh4ztU9O9WfdiQSem3k/5/rUc2G+ZiC3Tb6j/CmSUJcMDz8p6554pkyk4Izz0568f/qqw2OSC2Tzg/yqLYMgAths8df0/KmIrspPcdRjnsKhk6+mTg8+/wD+urUse5SFwR1qu/3g3IwOvrVIhqxUl6DOMn2zimqBg7vl9/b/APUalZTJxkg9j3qJsk9MZ4yemf8A9VFiFdSuahz1XtzScs6nk5/nUm3nuAOuT70+GPzOWAwSR/nHvUHVJO9iSNdrBVOA3b+dTxJ83IOGPJzyaXb90rjPbnI69/wp7YzgEkD2yf8AJ4FILDgo2jdgZOfcj+dSrGGxz7DBqIHbnnKgYwen+etTQnLEr1H1xn2pWGmnoyWOMjJU9wOnFSx/M2VCkk/5/kaRRliQcdeD/hUq4Xgg4z+tFykhy/MflH6/oacuFOCWHvQqgMc5GMc+n+TihiTnPXpzjr/+qlcoUcMdxJI/lUsanIXjjt/9aoox8xALY789KsIp24xyeffuKhlxVxyrxnPXpzT1UkMGwB/PvSBflG47qejcZxn1x3oZSYbGdRz9eakWNVz0GR3pqnPpj045qRF3ABunrSuUrB95cfjU+w7sdDSRLgcbiR+ZqfcORntk0yhijcMdu/P86cPlAKkZJ69KVOOeDnrz0o5ODtIx2zzUh5kmN3A49z2NO2kc8cfw0sYXrzkUqdcDBNBVhqrhc4GMfMPanqu1ccetKqbc4AzjJ+npSr8wwSM9dtIaQAfKpXIx75qTlSCf8fzzTVxwQCR1POfx/nUnLcMBnvx/n3oZSDb83PPNO2n5iABQMbfm/D1FO9AcZ6UmUNjQdG5xwfSnKOp5BNG37o6D1ApQeBzk/XrUhcYq/McgUpUDnoKk27uc57D2pNjcnLYOfrRcdhgzu+UDr3PanKpOCCV69TTtg3AZODkdetSKNuegpAkTWv8ArV+71+nNaAuDGQO1Z1vw46gipbhyJB17V42aq6SPs+F5W5jh/Hl02k6gt0q4UkbsVqaHrkeqW8Wxg2AKh8f2JvNJkYDdtU/hXkfgrxNLpOum1uG2gthQe/8AnFeJluYfVsT7Gfws+l4hyT67g/rNL4orXzPesZB5xg03aCFzjH+eaZY3S3cCNCQAw7dKnC7cfX07/wCTX2Z+UtMYF+bH6Z60bQcDB4qRvfPWkKnpzmmKwgG0jbyfX0owd2c4HXmnY+76Zz1pOTk4xx/nNIYxl69/XPem8bu2Dxx+VPZTn39c00r29e3NMkRgd3ufSk46AgYz26UpYMxxkD3704oQF4GOuBTC43g84J703BHytnPcmn7cdDnHFI5WMZ56cUiormdivdXKWsYYAE85rjdc1TzZgFb6/h7flV/XNSOWVD7df8+lcZPebrhkk3Z+9u6e9fH5zm3M/Y09j9O4X4c5EsRWWvQ1NW8ULpOmqsbENJgbR1JzXU+GZDdacsjbvmBNfPXi7xBv1qKJGLiJwcDpwa+gfBcvn6LCeMbOSOv+etbcPS/eSXkYccQl7KD6XNraVU7Rx04/lTdu1uxz+lSZ+YDjIxgD+VIV79vX619cfmTREyhcYwDUDKGz3A6/5/OrTDa2CSDnt6VE2M5bp0FNESK8iZVh1/2fSoJELc5yTx7E/SrjZPoR7elRyRruz39OuRimLoU23dCMep56/wCR+lN2/MRxVtoVzjhc9sf0qEjH3R1b17UxMg25JPPP3aTG37oySBz1qVh2BDc565pjrtXLEH2oJYxgGP8AKmt83GVwM5qRcq2WyM/lUbYDAMQP6U7EuxC2F+7ggdM1Gxxyoz1qY5Zvm3emPxNQSKV4GT7+v+c1SM2Q/wAICggLjg0j/dPX3+lS5wPmBJOf/wBdQyEcngDOeuP8/wD1qdybaEbxjgcAHBFV5s7j0yBjrz0/SrMi/MTzuPf0quxHOTkfXpmmZsjYdsAnjPPXOelNbAUDHyjOak+7gFWVh/8AqBpkg3ZG7AP8vWmkK5RkjHHAxu9xx9PyqF1LYAycDt1/Grci7Vc8kDp+fTp6VXkyclsqeg+XB49aYnsQbcYwMYx3zxVeRV5HUn1qzL/s7g3t61Aybf8AdbrVIyfYrP8ANkKPl3f3e+f/AK9M8voSBk1OFDcOCen/AOqmbQGJYbSejevHf8xQCNPy9zDjn3qaNdq4XPfHXj/JppVduOeTk/N/WnrIqrhi2T145rJHVPck3FegGeOPXPpUik723DB7+9QKpJ3MxPt0Hp/n8Ksr8zAY6Hgg+nbNMi5Ii/L8px6/SplQNkY47ZP+frTFXgkKA2Ppj8aniTaV2k8/5/xpFrzHRofXoehNTLGc8MRg+vWmx8dBj+lSZOe+T156mkUP2nB2Z/xpiqepB+o4/wA9KCv0OD2471IAS2Tz60h2vqPRR7ce+KmRcrnafXI9fpTI16lhnpnIqQfn/WpZrEUZHHA570gXceMkg889KVVPG7r1Ht/nmnL90nk5GcUrleoqqPlHHpj1zU6KVUcZz6/qaYinqwIJ/u+tTquOPm5HT+v86Bocqn+EdaeM8fLnnAz3pBhecDH0zxR8yqu773fB7+tIL6ig4yoOBilVSW7bjSMx3A9fXj371Oq9gDn/AD0oGKELZ6+30qRVK54PvQq9we3rTl+8Rg9edp/pSNLID/q9uTxwc/59KF78EsBzikI+Yj+H/PSlX5cHJH0oC45f0FPXGcZ54zmkVgwAwCx65/z60/hmPPf8v8gVJQgGMbvpuxT1Uc9B0FIBkALx0p3J+hxyaVhpDVHzZGR7t2pypwNx4H8PrQo24xj8qd8uPl6etIYqt7D04FO4xxk/pSdMZYDFOXgDHUfnSKQwjLZPGO+elL/CT15pT975Tx69OKM9dxznpTESwcMMdqiv5D+Psf6VLbrtYZIA7YqDUAm4c8kV4ubOyifacKJtyKkwN5ayRTLuyPzr5y8f6bcaTrjTwqU8tsg19FRZSTIAAPtXDfEzQEurN5o1w4HJx0r5DNqT5VUjuj9OyipHmdKS0Zm/DPx8NQgSC6YeYOG57163FMJEU9R1r480/V5NB1YMrFcN69v84r6O+H/jBNa0+Is4LEDv0r6Dh/OFiKapVH7yPz3jHhp4Ks69Je4/wO3cdAvHtn/PrSbunXPFJGNy/T3pSu0EYxnpX1B8A2BHbOf0o/iz3PNKOP8APtSlQMDBAznn/PtQBHuzj396GHqeTS4J7njrx1pduevOOlADCuOxznPT1p8eT2zn0FCx7W7/AFoLMx+hzxQCGY5HmHpzx9aydZvBbqwz83XrWpczfZ4i7c+1ee+J9WH7wg8dueteJnOYLD0uWL1Z9dwxkrxdZVJL3UZmq6lsk67s+9ct4guv7Psp5pONw6n/AAq2haZhJKxDHk8nH61zHxB1AYSEZ2rzgdsV8HSm6k3J9D9kdGNKmoI8/uLszX6SMcMz9c5x6n/PpX1N8OJvM0KEtg4T/wDVXyhNII7iM8HLjA68elfVPwvk8zw/BwxIVT29BX0nDkr4mXofCcdQtg4ep2RUr0z16/jTdhbOMZH509SWwNvQdPUetJ8wOD9304xX25+RkJ+XJ7j0GPzpjJgfUdfzqV1wT75/KmH0IOR0OfSqRLRDwMEZz2oKHHy4AHWnKNx9ATz70rKAcN9Pw+tMgrtllz0qNhtXjkZ4Hap2HdcgDoKjbpu9cdaZKIXjGce386jbKgc5PT/9Rqwy+xIHNQyfePG38On9aYmyLaAeT8p4qFx155zUsigNkYyKaUP3hn1waCZa7EX3foM9B1qvJzywK465PX/P9Ksvggjtt6VEyfMMnGPTjrTMmQN0HHIqCTLHHTBGP8f8+tWWUD1BX9aYR8zbemBjjrVImRCV3KOhBHYdfbFRfdjyvXGT9KnbsAM59+gpjKvzYyfp0/zimSyvtx269fyqNl2uNvT6f1qxJjb7E8jpio5FIA7e1NEWKcy/eDce/wBOlVpVwuV4I9f/AK9W5iCuI84VgeB/L1qpIpWTa3cAFsfzpiIWi9vvdPXpUEh3LwDjPQfX3qx9DjcaieME4lxgcYA9KZD8iu3HYKPYHgZ//XTXA9c5xyvSnt1I5BPpTDkYbp8xA560wi9TYjXpnP0xnNCKWzuBPHU9D/nHf1p6MFzzknpzgU1lKyBR0BOARWR1THrEC2QC2cH361ZRNuT1+nNQw27Mw3Y4J/z/AJ96thdqjb2/LrTM9x0MR2jGcehNTLnjnNRcEDjgD7vPSp1YHHY/z/yKVy12Qq4wTtA69+vTFSK3y78cdKTbwDktg8e9KudxGM9fXtSHsO7469z369OKlVD8xIOT75/nTI1zkNyCARzip8Hd/LJpMsWL73XGO/Q//qqQfKvJ5AxTY14POBjpUvTPIwR6c96lmsboaEB4Pf8AWnRqzZ3ev0zQsbdjg+oFSL8q46ikmUkSRqCoz/8AqqTlgDk8dlNIqFV28Z45p6Y/iHNAx+NhULyc0mVbO0jmlbsOW7DmnlcJk8gf5NLoNCKhbG0kY/z/AJ+lTLjPzAY/Kosf3s+vSpVXJJx25PtmgaJAwBx2PpxkUqr8vzZ56d6Yi89B0yOO1THPRh/D2pFpdxoUAkr8tLg8HHyn+tKx78nHf3oVPm+Q5PbrU6j06Cx/MoLfyqTnoMbiKbwMcg8dc9KcoPbofeloNIUfez6dsdaVh25wPSkB+YHPJbtyRSheo6ikMUJjDMDg9v5UYGeO1KvOOSf50vp/j1oAVVxkjknqKVn4xk8/e9aRf60oIGCMUikAwuD6/wCelKF7NgH/AAo3dQo60v3+gwfWgCSP5WyCMnrWXqEgNxtY9P1rWjXr3HUfWsLUHzeY4O2vAzt6RR91wfTu5sex2sNvzHr9adqFiuoae6soO5PSqsmVwRkMPStXT2MsJWX5iQa8Rx9pSaZ9zBunUUkfKHxJ8NtpmrOI8Bd2cfU074d+KpNF1GNJJfkJAI3V3vxs0XypjcRrxz7ZrxKS4FvcDaMk91HvXyNKtLC4rR2sz7DE4Wnj8DyzV00faPh7VI9Ws0eMgjA5/wDrVqMp/wCWfXtn/PvXhvwZ8ablW0uH5H3ct2r3SF1kRWXnOK/WctxscVQU1v1P52zzKpYDFypNadA2/d4Hel2fLjrjGPakYFcA9Pp1o3cH17kDpXeeMNb1/vUHH8J+nr+FKy7uR1pFHUn+VAgwCdrYx60NhVyx46cd6DjdngHPeqGq3y2tqSp+boB/SufE140aTm+h3Zfg5YqvGnHqZGval5asqkdOa8w1y+826xvYrk8Duf8AOa3vEWrNFGzMxyc9a45WNxdKPU5avy/NMbOtUbfU/e8jyunhaKSWxsQsPseVXL45J4/z2ry7xhdbr6QlixGe/of/AK9el6w32LTyYF+fbxxg147qkhmunaVsknk/57VUFyUvM65PnqmJduVkWTsCOh4x19K+p/hDcC58PwAY4jA+vAr5ZvmDHaPvA8N3/wA9fzr6Q+B1wJdBhTPRccHrjp/KvY4bqf7Zbuj5PjujfLVLsz1UrnAORjpTVAZjnOVp+3gD36/5+tNXj7vUcf5/z2r9CR+JDZFHrj+ftUXB4zxUjdMZ5zimc4PoeM0xMZtOPlA/z/n9KRst9T1460/cPbIPPt/nNJtzknAPuc0E2I2ULjpx97/9dQyL2PQnnvipj82Rzxxx6/41EylsgdeT71RLZE33sY6mmSct3UgHJx1p7Yyh2ggnPP596ayBlzkjB96ZL1IWHQMeRg9O9MbbuyMEZyDUrKFz3x0x3FROpBDKc/1poTdiFvnb25zUZ9GUHHP1qZjx26ZqNs7icZB6c0zNld1BYg5GfX+tIy9uBjsae3y4Zcknjgcj/P8AjTZFZcZHJpozIG7DO0dAKaw+XpyfXrT23Zx/D60yVvkfjnBzntVkNkL4XjAAz/8ArqBgJFPZm4GTVhiejZG38cmoXULnJGO1BPoVpFJYhyFJ49aikX+7t3Zwcdz9foasSfe6j2H+f88VBKdwO0Zwewxz60yWyuYzvwpwvU/N15quzbeW44wOMjB9KsSZUbsbd2CM/Tn/AD6VXmYn7xPyjA44x/jTIb10IG/i25GM4GOKiZV/iz34H+c1PJtZWK4HP6VECGUcHHTnvj/P6VS2BayNuMd8q2eMDr/nmnwxhiQQRk8/lSL90Fc8e9PTK8lixz+X+c1jY6JXLC4HVcjJ4p+Dx5i9Bz1/H+VNjXOAxBPf1z/nNPY7U6tg9fU47fzphcWNQmeff1x9am9dpIK54x+VRrgdB/SpVY4IUcVLHEcuNoLYI/Pv0p6Y6YYEGkRflHy9Tx2qVgOd3PXGDSLsAUM2OhqwGPOePcf/AF6iUBWxuP8ALAqRSOnQdwaVyo+Q5MFuM57YqTJ3Hdxn+H1qMD5gM/MOnfnmpFyzfKB070jRDtoUqMAccGpIgMEYHHFIi4xt9PX9amGemNvYt7VLNLJDlHXd1HUU8LuJ3cfpTVj+U+vT609U5zyOM4oEh/3R2wOKcMgfMMdunFNVvlwoBxU2TjOB144yf880FIauSM46cGnryCVOBz+dIo4OP8/54pS25TyT34/GkMdG3y/IcgdMc05W+9gcZo2lgDkkn8Mmn8sp25oKQOueTk8Z/wDr/pSDHG3PHvn6UpUnGV/D0/zzS5P8I3D3qblCsxYZH88Uq/O3+c/55pR0XtTh0HAz7elIe7F27cEd/wCVPVujdCBjr0ox/eFLGu5c9xzSKGrxjjpxzT9ozjORQ2eBjP48mgdM9PWkAu4HoMHHendjtxj1HaiMAjqc4/Cjbx3+tAwI5yOnr60qqFGe9NO4BSuOT1xQowMY6+lAiWMfKemBXNXysuoN+XHaulRfl+g696528YrfP/hXzefPWB+h8Fx92ZaRo2jCt1NWNNUrJ6q2dtUoVLpjnOOK0NLUJL82T25/pXk0n0PsqkThvi9pgn09pO3Xivl3XIRDcNxkZ7jkGvsnx5ZLd6TKuB93jNfKfi3SzHfOjrlVzyPrxXyWcU+XEcy6n2ORT58PyvoUfDesNpGpQzxthgw3c/596+sPAviJNa0mB0cMdgxzXxw8Zt1C4G4ccf5/zmvYPgn4uENyLOZ1APTnv3/rXu8NZl7GsqcnpI+O45yRYjDOtBe9H8j6Rx8vTjPbtUYA6dMUkMvmRo6nII61LkFc449u1fpR+GNDC3UNgHpx3pvA3Drn9Kf/AKxcEce1H3ePoTmgLNjJsKjHIwMjA61wviTViJCisdoJz+ddN4g1IWdq+SQfrivK9e1JnPynr9K+L4kzC0vZJ7H6lwTlC9n7eS1exn6xeC6uAGx5YOW56nPWqemFbi+3K2VXgVl6peNtEeWG737V0Xg20SSQu+NijnHeviYN1KqR+qumqWHbQzxlMLXSWYgDjCivGZG86YyM2Mc16f8AE25Hkqm5gBjI9PYV5eVG3nAH+fSvWxLtZHk4ZdSheBW+6OT2r3n4Ay7tPxk4B646YrwSdfMkygBx3z6d691+AORasGzncRXTw/L/AG+J43GlO+US8rHuO0HO3NG07jzkHtx1/wAin8qAOlRsnykZGetfpyZ+BMaccZwaZyuemefxp5Xdxj+tNZflGRlcf5/pVIl3Ix2DZHHIphU7gW98jPSpm+bO4KxFRZ2jrndz65oIem4x+wUcnpUbEHK54HSpJP1z370xuFGMc1SJbIjywLAe2fWmMo5DbT1PrUmzJJ4PA+lIVz2ppE3K7KC2MnNM292x+XNTsoYf55qKTpj6j261SJaKzY4IzmomxtxgcH8xVmQfMCMH6Z/z61ERuHTJHWghkLYwPM6DAx71GVHG5Wwecn0qZv8AZwT/ADFRSHA4H6fpTIaIZCUJJyW5yv8An8Kj27m7kjn/AB/pUrN5jkZ9c4P+femthhnP6/jVIhlVmXdx0Ht6VXmxIrY9BgdRnvVuT5sjod351XkUbcDgD9KpGbKwX5twHJ9/6fWo2AUg8kA9AORx/wDXqboTuznpt/8Ar1FJtwX4xkgZFMggbLKx6gep/X+lVpPvEnPAzndk/r+NWGyNytnjAznr/wDXqCb5toz9Cw/xoGV5D8w2qNvrjrzxUasFxkgn16fp2p0mQCrN16/1pv3W+Xtxx3qraEJ+8b0a8Y+8VOf8mpYw3Lbh9481Hjc37zk56fpUkfyqBuJx6d6xZ1S0JI8sehbI+mOamC7h0Ud847GmKu45ySBxnof89adkdN2Px6Ypkof2IUYJ59QDipVxuwwPHH0/z/Wo1XackZxU6fLjJO0+3X/OaTKQ6PBXjgFQCMcVNGoU5xtwOvNMjjHIPIb29qlX5ccnA9v0qTRCIgWQt1OPzqThW9uegpAvzHj2z6U9FCnPc5zxSNEhVzkHn8un4VKq7fmDHd1APWhV6ds9qkbpyp98+v0/CgaVhVUZ7FTjoc49f6U8cbu+OhpARtGSGJHt+tKM9R7/AP16llEin5fmGPY/0p+75e4Hv6CmrgZAyxA65/z3qXByeGP0pDtdCrwvykflipl7AA5H+fxqPduwASSfWnKu49vT/wCvSLQ8Hr/nNIcN0JJoVehz7keozTxnHBJPX0zQUAwuMAkDpT1AU+55HPNMx8vbFSKCvoQaTY0tR3RVLY6Uo+X0A9O9G0Fc/lSqvTOM9/8ACoKe4u3P0FSL/sjAz6U2MDj0J6ntTsFuPvGkNDz93AGMdjTQTjK04D7vX8+KOvHbFBRHn5hxyKkz2xg01eODjA/GpEwUwcAj1oEg2jnBGTxQy7eB079KXg5LdDSjGeOvTk0DDpz0ANIrDAFLwwAx9PxpfLG4dAB/td6Bj7f5I84IBrAvMG8fAH5VvxjB6ZPSsK84unJx1r5nP94n6LwS7xmhtq5PGOBW1Zw7iNgwPSsqzxuwx68+tb2mruYZHTmvKon2FYzPE8ZOnS5XIwa+ZfGVsWmmLfKQ3y4z619VeJYw1i8ZXJI596+a/HlttuGwpbLZPoa+czmPvo+lyKVo2PLhEJSwYL8vNRaJqEmk64sqsVKyA4H8q0ja7b1lwBurKvbIpcFo8jbgsB6V5VCbi1bdHr4ulGrFxezPsjwLqy6zo0DKedo9+1dF04H8PpXinwD8SGazNnIQDGcBc9v8mvbdoPTHrX7HleK+sYWFQ/mfP8veCx9Sj56egjZIHGADnikb5QWwOOadtweR/wDXqrqkyw2srHC4HNdlaoqdOU30PPwdCVevGmurOF8c6l8zLG2Snb1/yK81urpmkUTZJ3dPWuo8QXW64LsS2G/i5rk5VJvGlkA27a/IcwrutVc31P6MyjBww9CNNdEY+sEyyJ5YAPXA7H/P867PwYjJbDB5fG7j/CuCuS93egRkcPwOP1r0zwrCLWEBuXAx161z4T+MmerjdKNjkviVCqsh6dPy6V5fdKPMwRjsPavXfiFZl8zSdP4Rn/PrXlksZ3nuNxxz1r1MU9TysIZc0LLH8mdzcbule3fs/tm3lHfeQP8AP5149dQ7GCcDbgH2r1v4DSrG0iN94N+VbZC7ZhA8jjCLeU1D3lTt3BuoHemMDu9h6dqkHpjH+FG0tnBO79a/U0fz40R/xfKRyP8AIprLubdkZHUU/aFwvLCk2jkYwO/tTQiDkdt3v3/lSMnzA4PTpUzHB+bqf5VEw+YdufWmTYjYKTh8D+lMdQWPU4/HNSO3UEAduvSmEAcc8kYFVYzdiFsbgcEKcgfSmSYbpj14qd8qNzYxUJznv6degpolsj9l4qGQlVwp45qw0YXJ7ZPU1A21h71RHUi4baMjp0qFvm+6Tx3qZo9udvPOMdOKj49sUyZETKWxnnFROMNzye+KsFj8w5x27VAynI46ck+vFFyWkRtjYSST14A4P+fWon28huO57dqn8vPOCAecelQv8zMMnHPU00QyCRRkHH3e1QyANnaeDx/n8qsSDONuV28cD2qu2G74B6GrRkyCRQqnpt6EVXONuV7c49T9PwzVplBXO08dBULNswcsB09x+f4VSIZUkbexEi4zxnt61Xmk6Hnkfge3+FWGwHxhe2RjqeKrzKFHRQDx9B/OgOhXkUsCM56c1C2Sckd+tSy/dHfqeDkCmZztyQR04Hb8aZC3Om4BGce3NJu3N8rEg/j+tKq7m+ViCx4HvSxjdkYwQfrx/jWR11NyXJ2/Lg8fnSqu7nHB74oRCpPPOOO2fyqVcLgY56YxQTYVQPbpjGPyqaPJYFTyKYq/MNwyakzlsclT0ytTcuKH4zxkg5z1FSKvp9evJNM557YP1p6/MeQAc9cc0i9Ljh94hiTgetTR4284z/WmovcHGcdvepYgS2cH5e+fekaRiKuA3QqBxUoG5cKG44H1NMCgc5PoKkXDZKtnjB7HmpZaQfL05PTJ6U5UK5U5BHQD+VCqMdTx7VKi7cDp9aTCKuKqgghTx2NSqB6dB6VGMqMqcc8elShSpznBxmkWh21mUc5P6mnqoXvgqaaxCggLgHvjmlbt9OPQ+9BQ7nkKetCpiT5f5Uq49TzS7fm9h+goGL/vA9O3rTl6knn8OKWNdw6H86VfbBJqShQDz7fpT9o28EelC5zhenrQexY9/pSuOw5ewXHPrSqu3r1ojJ9+f85pP4tuT3NIfS48dieB+opMcYbnNC4xzToyVBx074H8qBiD5tvPSn8s2ccHmhV2n19KXbxngAigFsKVGMkf5zSDA4xjI/yKcGwNvcUcntSHYQL82V45qTbhenXtTVXaT1AP4U9f4l5JyfxoBD41+Ut0AB/Kubu33Xsgz0xXR7cxt2xXJ3W/7dJyPf8ApXy3ELfNA/SuCIrkmy1a5WX1AzXU6QpJB45rndOUM3zcmuk04NDgLzXlUn7p9dXWtiPxJ/x6sO+3H0rwXxtpiyNIyjJ9/wBa98175rZyp421494ws/NOVBHzEk/5/CvBzN3ke3lL5UeJ3tm0d4CCQQcdKyr602Xnlndgrkd67LX7NUvgq5CjB/WsXUrb7jjOdp2/415EVY+h5uY1fhXrA0XxNFEzhUnOPXFfVNrIJrdGGcOAc4r4dstSksddtZEO0xzAtX2V4T1AX2j2r7gx2AZr9B4RxXNSnSfTU/GfEbAcmJp119pW+42/vMR3HSuc8YXv2a0ZNwG79K6M45KkYPr+lcB40u/OudnDBTmvXz7EezwUkt3ofPcJYJ1syhJrRanGX4N1NsbkZ5H1rD17/R1OzCbF7cZroLhQo+XII5P/ANesTWwLhMRjcpHOevSvy6Z+70NGmzmfD6fM7N8zbs8fWvRfDMgcsrE/h6elcLppS2t3MYyQ3Ndf4RkDB2O4E1WFfLURri1zQYvjiz+2wk8gKegHSvKprfy7lmY8Jngev+cV7F4quI49PKw/MzcV49qzeWxiz87tuIA9DwK9XENctzzMMnexh6nJsjZ1GSeRXoXwDlcanKWY/Ng4/lXB3tq8luWYHcB1A6ivRPgREo1KTAye596nJ7/X6b8zk4m5f7Jreh9Hr80Y6Zx1poXk5OKcuPLB6fjSdj7V+sI/nKS1I29PWmjc3Xpweae3bd26e9RMc5x941ojPYGOVJzxjqO9RnPXI5z909KlJ3cc5/rUefvYyfXtmgTZG2cnjp1H9M1Fxuzlsn2qaQq3cDA9KhbDds8/eqkZNDGXbwVz9f8AP0pjfNwWII6VI2eehA/WmSDf95hx2PX86pEEZwG+bknufyqFvl4JwQ3/ANfNTyfMfmywHaonUcnpk+tNCkQbSOGJ4x0HvTF+U9fryOf8etTsWOOCe9QMx56njBxzmmT5kb46r2/DNRMOcMwOemccfjUjAAAL9feo2HGWOPfPSmiG9SJiF4XJPI//AFVGxGCeABx681K/dm5AOelQ7fbqfloRLI5G4HUjA7/r/Sq8nc9DVibLY2jj9RUMmOBxx2q0ZyKsg285wO2e1QyLwNhOefr/AJ6VNNjzMrgZ/Dt6VFIcL16Hgn+lUZWuVZAQ25Rn/dyD0qrMx69AfarEi5UmMAA4AHXJP+TVeQk4VhjPTPGKaJZDt3Lj5SBy3+FRqDzjGc/0qR2zj7uCflH+foKaMZ7c+3X/ADjNA1udLGpB5Gf6VIvG0t/WkXcpHPBP9f8A69SJhnHAI7HPH1rH1OudugIpJyp5NTKNvHoelJ6cknrkUgYtnAHXse9INiZM9eueenFSJzyh59c8VFt+bPJGKlXK8KcYA+lIaJOygjOeKft6Hp6/WmRqeevvzUy8HBAOP1pFoeqjk5Py9vWnqNzEKGx1NMjUfxYO31PtTvvZ2jBPY9KDVEqsWbpgYqQL0B/i44qOMbWO49anjwozgnGOD1HrSY0LGp29M55/CpEXaT9T/n9aRS3Ug9OB/k0773BOM8mpY1sJ91eOCefpUi+mVB9uc1Gq7lG7JH+ealQhflABOOfekVEXcVxx2p6sWX5frimqFPTP+TUi/Mpz0+lA0KmevbPfj9Kf0Yf5zS4P4+p4pc7sNjPWky0IuVzjP0/z9KeuScYJHt0FN6qDzyMnFKCAv0H1zSaGmODexAp3foTz0PpUQ9SSAOKfuOctk/0/GlYLokYe5GQKcpPQjk/jUatzgrx70/8Aizj6c0ikL6k85qRc7VI5+tNVfl46nGadkbQOvH4mkOwKpZRmlwdwBAPtSBjuxjnp6Uu3tz/WgELjdu2k0qZLZ596aMmP5QeOv605QeSeB0/yKBofjoDn/GnIuQTg/lTMluDj6g09WPQgBqBpIkXOMGsK4tdupEkcNjnFbQb5gME+/rVa+iw6yKOD1r57PqbcIy7H3fBmIUakoX3IUsjFIHXtzkVu2C/u1LDNV4Ss0ajHNW7dfKjPPFfPp2ifdyu5FPWnCxP0wRXl/iALIzKepOAfX0r0PXHPksP5V5vrUMl27CMfNXg4xuU7HuYH3Y3OC1W3WSchxndgj+lc/cabNNhFTcB325/z0r0ePwjcX0iZQrkevNdJb+DoIYUEgXK9c9/88Vzxwz3Z3fXIx0Wp84XPhO6N15oiIUvwdpFfQfw31CWz0mKKYnKKBzWnf6DZiNYxGm1eV9az7FoLaTZGuMEbcelelgsYsDPmgzxc2wMczp8lRaI6q51w7flG4H0riNcklluHkctx6dq6iOSNgNwHGOKjvrOCaI+Yq10YvMpYlWnscmX5PRwT/drU4Vs7j5gBQjqSOKw9RUQLOU2uv+fWux1TRw6t9nJ3Nz9K858RWN9ZRzcOVYY+npXh1IXeh9LQl0ZXscRaPO/V3bj2/Cuq8NgWtkrSP8zY4z9K8/s74rbhZgAwOME/54rprHVN20DhUwcA9umf0rGLcZI66i5oM6rVWE1sWOS7cfhXlGrQibVWESkqpwNvQDP869FkumurctnCquMfhiuL1C3NvdM+Ccn5eP8APrXqufNBHm0lyyaMjVmWC0IJwdp7fhXefArT3aZ5iCNxx9cV5/qEf2iQbwck9PU5Ne8/CHQRpejxu3ylufrXo5Dh3Wxyl0R85xljVh8rlG+stD0lV+QBgTikJ29M4Pf0pS3J54pN24fMB71+lI/BmRtk44OSaYy4x3x0z1/SpP4unT/Ipi/mQKszdhjZ298dev8AWkxtwqndjrzT9rLjbgAmmsMkFeh4z70xMhZAD6j0pjZ3Dhcg9PWpGQtwMeh7Zpp9Sc545NNGYx9xbkdOOO1Qsv8AdABHc81LgFR2/HimSfL94fSrREtSBsce/HUU3JHB7VJtG0ls5B9KYwyxUD7w/OqIIWzuXg5J9ahbAXB2jI4qzJhhnAx2xUEq8DgDAwNvfvQmKxXZTx2A/lTG54bGV/H/AD/+qpP97OfYenpTWXbx6gYJpktFdzjHtSPwuFwM5OfWplxyFB59eKibrjA280EWIX+6Nw6/oT6fpVeYBvXjv0qzMmcqVJIORxk/jVRtxX0ANWjKb6FdhtXtluOPTtUEmONxJGcrxjp/n+dTyMyj5cAnoeR61FKBtJxyOeuM1RnbsVGZFJ5BBI5P07VVbdtIIBHf1/zxUsgKk9d36+//AOuoJcKQG5PJ69f84p2IbIpGPBwcHpiotxXJzu25BqVmBy3T+vFQvIV5zk5wcnrQJbnW4O3Gc4NSK5ydzH8/xpPmyuTken/16TA6Dkk9PTHfmsk7nbUXVD13cnJIOf8A9f61KnpjHzdhjnrUYY9SMEdh9f8A9VSx8ghQOvbt1qWJD1G1ju5xk4Aqb1HsOCcYP41FGvzYyABxzUin5e+T+n9KRaZMML1Oe9PXG7OOvvUUf3cZGPapY/lY/lwOKRaZIrbccknr1pV6YXAYimcMT146VIq9OM+pNI0v0JI8qc8ce3+fapxjd82RkY5/z71HuxjjgY4x29acuDxnOO9ALsSrnj0IHPej+LDEY9KFb5eSGPTNPRQ3I7D6HFIpC7fkbg5Pbt0oBG4ls5P+f60rLuByDz/ED0o7bsEg98ZxUljl+XAxzU8chYdhxUK4K/MRwPzp4bcy8+n/ANb+VA0TqOmMYHJpSyngjn0pNxOOmPUDik3K7Hr8vTjGBSsXcdzt5JBB60vDc846U1fu+n55FPHcN6dzUjQoX5cY70rY65Bx70gU+hOaUZz7H7uTQwQqqf4cY6Z6/nUn3fSo17YyMfnT9w5A4zmkxokwMZzx296Ujdzxg/54pPu4OfTijO5eMDP92kULjp3/AM+tKvcDqaRlwwzzjpUi8DnGaAAR4Ugk4zQvfgjHvTtwAz60ZGflHBzQUKsf0B5/GjrxkA84+tI2FAPUdKeOg/hGOKBiKdxwM5qWSPzrbHHA6VDtO3I6gcGrNrIG+8CPWuTHUPbUXE9bJsX9XxUZ9CvZxkNhc8Gtl0Aj/wBrFQw6fscOoyrVPcKFjIzyK+Hqpw0P1ujUjUtJHPaxGZsiPkms/SdEVVaS4UZz+lby24Lb25A/Ss/UrxLWMqpCg54FebUio++z06c5S91GbePFbyM1uFUL1xjisS81TKZ7D86i1LUCmdpJMlY15L8hO4njOc9K8ivXfQ9WhRXU1ItSjuG2SuCfQmqbSQQ3OB1IrnbiTy54ZFbarDOc8Uy5vik3zYyAOR0PNcTryO5UEb0niBImCHAbdt4FVrnWpPMKs/3mx9frWJMySeS8Pylm3fQ8cVLMpaOWQg5cbl/Cp9rN6NmnsILU2LPWPO1ERsP4eaNS09LuOTzNuGJ7VjaezC4MzjJKflWgdQEsaMx6Ntx75relWezMalJX0OG1vw2kfmNCMuei/T0rn7K7aG4MeMMpAORnocV6ZNCLi5LqPkQYPvmuT1TRY4WlvFCgKScEdT2Fdbhzq6IhV5dGa2nKJI44srt6t9faq2u2KxwlhggDIxVPRb8oo3H5vy/WtXU5BdW7JGcZXv6f5zXTQlfQ5q/u6nHaHpsmra7FHhiiPk4Xpz3r6Z8O2ItNPhRf4VHr1/GvO/hz4PEbfaJF69yP516tGnlqFXkAcf8A16+84ewUqVN1Jbs/IeN81jiK0aEHpHcccLjPXOPrSM3TAPXk07OVPIIz1JpjenTvxX0h8AxrKG5woIpoAXhuMmnHGfmOT1waYq4PQc960WxDYm0LwvT2pCvXYMenankZP19KZ0wGxjjmmIi4Vvm3Yx7HFR87jnA5/n/+uppMcZznNRN3BDAn+Hv/APXp3JaI5MBsdqjdfY8e/WpSoxnnK9aa3YZ2mncyaIWGWbnOD9ajZQrE4BzmpmwVPIO3+VQMp2kHHvVIlqwx/lGMgfhx/nrVeXJUDj0/l/8AXqwykK2Dj345qJ16gng56jpTQmtCHrgtyf5/55qMt8pxwvb/AD+dTHK4O4DPGR6f5/lULf7ROD298e1NESRH91T1z7VDJ8uTknGOf6VYkI24bBx1qBxw2e3r2NNMzaIZsHJwMVUfLbhwAO/+FWZlH8B7np3qN13dev8AdH/66tGU1cpth+OnX8PSoJ2IUjJ3D0PX/wCvVqb5fTaeB0GPxqrLlmGf4sj/AB/lVIzemxQkLM5yqbccDuP88/nUUyjjjt1xz3qdl3YYdV44/OoJCDgqcn35x+H407kepBJ06kjg/WonXOSoAAb6g5//AF1PcPsGVCsTwMf/AF6rMDknJJHt2ovoO2p2IbJIyDz2Pv8A4U4MFY88jkZP4fhTOeN3UnqB/jTujBlXdz65rI6paEiru7Y5PB54/wA5qWP5sc8n/Of1qIKRjqM4qXkY6A7v881IyWPO7vxxzTlwOAcg4z/9em4OOu7GakX5SeoByeO5FIpD1G7k459cU8KMjcDz+pFIvy4K9e2Kcp5OCG4z9aRaFU9Bk/Mcdf6/561Mqhe24nI56/54qKPKqC452/5/z/jU6KdvUdOMUMpXH8/wjnA25qSEZYlsBfcdzUfLMM4PI6cVKvDDaRgnj86RSdx6qefQ9akjVd3bCimxsOuB9aeCNrDgGpKSW4m3P3RnHGaXaOR7YpVbtk8/hmndW7Djof8APSkNDdm5SDwCMnn9amVTwPw/+vTVjP8AEOKkX7w3MOBx70FpWFA3ZzgjOPrTlXP13detNXO48/xVJwOeSRQMVlPr+H/6qUjkHjjpzimg+4B6/Sn4575J7/SpsVcevyr04zzSIwHbp2pFwvHfp9fWnfw9wT61JQq5U56dKdj5vmPHX603Awp4Gf8AP4U9cNxnHoKAQLwxB9adgnG0Mc+9Ku0gYGKVWJbHB9xRcqwqrjHAx/hSq2PvHAoVsD/ClUBj0xmkMVk+UD0/KlwBgMelDE7uvT9cGkLDo3Ud6BgqnJBO0CpBzxnHemDGfRjTs4/1nymgEgLBsAttz7Up/dnzFz6H3FM2ZAYYxnrTtwwNwGfehji5Jmzp975gAbqeanvYhx154Irn4br7Owy3B6Vt/aBcQBl5wM18vm2GipcyP0Xh3HznS5JboqX2IbNjnpXAa5fZkLfMMcV2WpTGaHbnAK/lXBavJtuAjcg88+tfGY+XQ/QMuj1Mu+J3Rs2Dv5/z+lUb7BiZW4YDjHFWNQUuwYDhcDdjpUNzF+7BUliD8wHpXi1E3c92npYxrxWkhtY2QgA5+oqG5zNGysm0xgDgds8GtTUo2S1haNiylf4euT/+qqrwFp4ssALhsbRnp1rBx1OuDVrle3XzoUOAUzhvbtVyO3EihXY4D4H0qO/aPTYp1XgZJ6deRV2zdFs4y3LGPP44HNCj0CUvd0KMKn7cwThXUgr7etZ9xIfMCjPlsMjHHNXlj3aqblXAEWVI6cH/APXVmTT1VlbgoTjn+db048xjUlyszbe9KqySMST93I6VV1R43j8juqgnHc/5NT6jp/2aXzVJIXjGOtZjLI1w8khIB/8Ar16VGMo6M4asov3kYYD21x90bVxg+v8AjXTeH7NtU1COPkIDkjr+FYuoDc+I+B1z6n1rr/hugjujJMApzXo5bhfaYmMXseNneP8AYYGVRb2PXNI09NOs1SNQOKut83rUVvcJJGNrDAHX1qb5mUlR/hX6hCKjFJbH4HWlKpNyluxpI54x2pqt69eae3UF/UdO3+cUnGTgc8Cruc7iM44OQP5mmdOO49v60/v06cU323DJ6nNXFkSQz3Xv3prZC5bGPx4p3XnvUbN3YHAJOBTJEk+ZccYOeaY3ytnaBn8MUrcNnJ9qYfmPXHbIpiuMkcnPTt+FM+6Md6dIRxz0GPWmd/UjjH/1qaM29dBrfLjqAf1/zioj+W7mntlvunAOf85/KmH5ei59u1UiWRlt69iRz1xn/PFRMN3r0xipMhpPvZ460xiGPB9snv70yCFmLEdMDn8/8imSLtYhMAdOKkJLKQcfQVDNhTwMZPp1xVIT8yKTPRSeec5qDBGePb8KmfJ4LZPTp7VA/wB7DDnpTRkxrZXJbgD1/pVeVxgjrjrip2y2MHge3XP9KgkPHHyg/wCeapGUivJ/3yAOP61UkHykZ98dPTg1dk64XOcd6pzL8y45O4kkH8/1xVIzaKsi/KWIGBzt4zVfbzjaDx0HvUzFWA6Hnrn/AB5qvI3A6AHkFf5dKZLsRzFeSvyk9+hJzVRh5eD8wI7GpZZPMUqucjPBJNV9y8EdcEdzQTe8jt+FYDOc880L8uABkDnj8v8AA0zAboMf7pxTskYPHXnn/PNZI7JvUmVjtJYctT87ty8en1PNRxt3wW/mT2zT42zhSMdtp4xUjvcmV+i4+9mpVz0Bwcc7e1RqBsA4zj61IpGPlOO/Pb1pFIkXjOTz/n/9dKMbjzzjkn/PWmD5eW+6TzzyelPjOecgDHQDuTSKJVGNvfJ6EVOpCrj0zjj/ADzUKqOAuMf73X609euRxx24pWLuyXrnOTn36f5/rUuScds9MVEGGQPlB6n/AOvU0Z6ckj69KY7kkeMAdAv4Z/zinM7bjtzxxjPP40xW68f59PypDIPTkjjvmkF9B65wM55/WpfUcfnx7+1QKPUAnpyDxU+4KflHbikykPVjkFT3+7mnL6Y/+vTMcAtwD+lSbs/dyo/z/jSZakLu6EYXNP4ZuR19utNCg8LgE+lIzDdjgButIu4/qflAxz3p6/L25PrTFB57gc/lSrncdoGRnqaATHq3TkjP51Jt75zUUfy9MYP+ealUhj1z35qWio+YvHBx0HSl3HJPQA8UbhwMADjim4Az6k80khseuevp6U4Dco3cGmL90BeMU9mOORk0DuP3Dquf8aF+bnIBFMVufY+1PU7ePypDTuA+XtwKduzg+nvTQQWP+TSrJ8vY+1ILj9uOKVmGMn6fWmHHoDiq9xPt+6Rx+dKUlFXZrThKcrIkkmVclWAPORmqtzqCwqBnoeQKy77WNhO1j9KxLrUzcZ+bg8jBrwMZndOm+WG59dl3DNSslOeiNi41gOwXcwya7TwvI11YkyHoMdeleZ6bayXlwq4ZcsNretetWdiNL0VXUAHbhuK8KeMqVrylsfXYbLaWG5YR3MbVGSGOTdwFziuB15t0gn6jOH/xrtrz99C7MpJAPfrXIasqxxt5gOJBjHXg183jZOWp9ngKairGJNJ9n3StkxTMqMc/dJ6frTo4DNCY5OHhbDleS47H6UhtftEc0OQBNGD+OaYqmG6Z5+TKgH1Zf/rGvOuenYgvsTaVsUMGjkHbtnFZ2xnltzICGTDxqR6HDVpSOt19pELZZZAdpHTnmnW8cXlpdTEBUmwp9mI7/wCelSo82rKcuVGd4ihTyIQp3CZyCp6gcYqZdrXjxQqg8kCPvx8o6VLeFI9QmtZHUTRKskK9yO/6VStZQdTcqpwHzuzw3ajk1GnoQ2cgubyQYLLFvWTt6CtY7VsQZONsn9KybULY3lxOAczuc84IIbBP41buJt2mquTuZ889ef8A9VKn7qLqK5dtLddSjaRkVVT5ce47msLxBZ7dxt8BM9B3H+f5Vs6bcBbN1Jzt4O09Se1UNXmPktuwG4x9K9ig+aKPIxEeWRwWouY2XYDtHHJrZ0XWJLEgbgefWuf1qdhJt7noPSodPvGVgsnc134et7KpzI8nMMM8RQcT3Tw34gM0alTn1zXaw3CyqCrHkZ/GvCtD1YwsAgYAe9em+H9aWTCyMOeOvWvuMuzCFeNup+R5xlNTCz5raHWj7vfOaY2OM/hjmkjk3oGAA6U9GI/nXrHzztsNZT6Dg55PrUbcf1qRm75AB71Dwrew6CmiJAX7dPp3qJ/mxuyMkc05mBzwAf5mmu23HU56djWhkxjbeQOMUxmx6Ljp/n8ac67mbuenvxSSYBO3J5A9cc1SIImX5QckHrkfhTGXnCgZxj/JqXh8HjI5yaibBHQBffrQiWRnv6Lxkmo2bGTzgHP1/wAmnPlcleDTJDt3EdBz9atIhsY2OTzz6H9Kilz1Xg+/09fw+lPZiuev51CGyxDdeMn1ppEkf3cFcAt/Ko2kGOmO9SMx6cA+v61C7/3uc9jTRLRGxKkcjB/SoW7tnBGB1p8knzFt24Ec9/8APWoWbAPlge49KZiNmbK5XkDv/hVd3yx3Y9Rj8KfuxjkD1z9KrzSbcgbjxj/P41aM5MiZsMRtB5/CobiQqu0nnPXHTrUhYKx45PtVS4YHjGAM7f8AD0xVGKfUrfxYbDE+v+fWoZnG7IyeCeecfhUkj7sn7zA889OP/wBVVppPL5JPy/qP84oFYhmyoPAyMfT8KgMmD8p2jGOO/wDnipmbdu2nLD/J5qtnlicKQCeff2pNkr4tDvNwKnoSPWl4C/KB3x+lIq45XHPP1pFYL2wOOPf/ACKyO+bsSx9h8uTjjn3qeNMLu6nPQjtxioVY9OOc/j2qRCW4Ukn/ADikBNHuIyxwen09KlClT83U8/8A1qjVum4fMV/SpPu9QB/QUih0e38O9SKQrAfnTBjvyfQ/r/Onxeu7jPX1oLJWxuByMj8M/j+FScnG0nJqHILZyR0GP6Yp/cAZJPfNKxVyZW3cNwTgn61LH6NjseR2NRR4YdOWI988VNxkBiRjj+v+NIelhyf7Iwev1pzZbG7IB/X8KTaD24buO1O/h6AetAIFOGIBHvUgYg/Nj0wajVgBj198/wCelSKPwFKwyUAkAk7s/wCf8KXdt4AyM8Z9f84pinH3eT6c05fQ8g4pFLsP/gIx3zQvykKcHnvTB8w+Y4Jzn2+lOTIYlwCR/nOKBokGe/zY681KqfhnvUBkwSDuOBn2A+lShuvHPbPpSKiPQDPygUoOMds9fzpgOcZzjHf+ppyk9+tBSY5j/e5/lQc+g5xTeWYjBpV+UkdvSlYdxyse3UdeKf1YH9aQAEfNyO1JjIB6benoKGND1HI3EY56DrT2I68Y9T39KiVj7nng5qTcNyn8+tJjWw9RnOTyTx/TFBB3dABSK3vnj0pJMRj5mzj9al6FRjfQbJJs9D3NYuo3wjX73BH5/wCc1avrrapP5VzF/M0zHrzn5a+bzjMeSPJB6n3HDmTe0kqk1oU7qRrhjtxwfzq1pemG6kVewPFP0/Tzctjbnn5uK6ix0s26jbwa+QiuZ3Z+hykoR5IlO0ktdKuFiuAcnHzEdK9AnufP0WMo29CPlZTXnXjLRom0a4nuLn7OIIyxkJxtx7/hVT9nf4hQfETwnqFlDc/a5NLuDFvz95R0Nd0IylBpbHJHljNX3O2hszJBKzk4OBj61xXiS3P2T/R93mwMWXPfBr1iSwFvp7NyAwDY9xXmfibKQvLD0GXOehHTH6g14+MpcsdT6HBVOaehzF9I72263UblToOvXcR/OnXW1WRlw2wrIN3QnH8iP50y13Da4Kh1UEHB5AbIz+B/SjVz9ijiubfkRSJuTrkFgCPbGfyryrdT17a2IIVihvI7xRmK7UJIpHIz0z+I/nUe1LG3uLFgWKSELk8Ag8f0o0uZNU0S5ZYmVrXzCwY91y3H/fIpl9qFvgzM6FhbFgT1Pynt74H5UN9UCjd2K2oASXkMquS0QeNCf4vlJx/n2qrZ7IbqYSbtoLOrZ4AIz/MA0xldbe3Teqm1n812PLMPmYge3zAVG1263zRKnyuMrkdA20dvcH86zv1N+XSwkUh/tMROAYjJuB9yQT156k1peT+88psYU/LjuazrWPzNQnRl+ZcSxnuSBzz6ciugmhM0kE8eOc5x2OMf1FaUabkhVJ8rRj3WoQaRZ3EkpUCPLyMW4X8a8Zvvi3BrGsTW+lzLJgleuQx7c/0qD9qzx83gfwbJbqyC7u8liSRtRf8A6+K+R/gb8XNPvPFElr4ihw9wQIZt33T7eg6V7lDDTcPd6Hh4rEU6crz6n2baXyzR7rnO98AYXHuam+1Rqw2uMgZ+lc9psgG1FLMpA2tk9K2fJQx7c4NcE8RqdsKGhv6bqDBhlue3P866XR/ErWbjc3TAFefKrw/6vke1aUMzNgDnHfrXdgsbKlLmieJmuVQxNPlkj3Pw/wCJluEG5hjPSuvt7pZlUrg8ZwD/AJ9a+e9H1iS1mUbjhuv+fzr1Hw14gEijkHOM8jj6V9/luZxxEbPc/IM5ySpg53S0O22++RnvTZM8A/xfh+VNhmEiqV5z2p0jH2I9fSvYR82xhxycgfWo2HzfJgDpwOKkz13dB+lNbGcjBz+vFURZETLuJPJH0qNuGOMAn8sVLIx6j+H+f4VEwPzdsfrVpmcoh07jB9e9QyZ6f3f0qVsqxVmBz/Kq8jfiapXMZCM31yPX+lV5OOOeuRx7052LZOcZ464zUTfMoPXHUnrV2IbvoxjDgljj/PFRnOfl9eKeW3DHH+e9Qb8qQOvQY600SxshGDuOf5/SopO/HU8YXrSyyD+I4xx1/wA96rzNtzyDgY68ZpEMRmG/rn+lQSNtHUnOMc9c0sknzdwPr161XkduQF6/dOf096tGLkLNJ1KjOWPT/P8AnFVZJm5G0YQ9B6e360NKWVhlsH14xUM0m3upY8/TPH+NMhyvsMk2/M2cAkk5APuP5VUmlKsSqnjk4/z0ok3KvDPwcdevtUU0hZfvE5688f5yKq5kyKSUbvmJwx+g/P8AKopWG0sOOfm7+9DbVX5jnjGCevpULn5SGPJ55H9KTB+Yx8McYJB4z/SopJN3fgHPpgdOaa7EsQMHnOPbk/8A1qjZsqF5BGOc+3p60myIP3j0PPOGz1x93r7UDOMggY7fypu35g6k8Y7+9SJ6568ccD/9VSd0vMeG2qPmHuRUqYUdMn+lQb1B+Y4+oyfzqYfdxzx60EolVsA4Xn1HXNSrn3J64NRRnso4HHB/z70/G7b2PYelSaXJUBJI7jsKn3Y5GC3P4/WoF47g8dTUi53Edx2pFJjuP4gSfbtU0YYjPGGHvg96hVdx9MdP8ipo1PAUHgcenWgtIljXaxK4yOhzj+XviplXaPlBB5qJRkktnKjuc/Q5qTAVRnA4/H/P+NK5VmP9zg5xwR+FO/hYHufy4pFwe+W9ad977oIPr/n8aQ0uo/ouWHQZ60K3X8QPemj0PXpTl5bKmkhseuMdcj27U7A/iJwOT/Xmm+hA5yf8/wA6cv1K8Z69KBjl7jOD7/5607I64554pjKORz19f8+tPyVU7R7ZHTFBQsfTGMHnrS7sAjPG7+fWmRglum38cY/WpPLG0nIx3FJgrki4x/ESPQ9KDkcng4x703cR0OB16U5V+X29vekaXHK244b3/SnAAZ24BI4Gabt68dexqRSN3PI6e9A0LwzY9PxpM8naWzSgD057Um44wuePT0oAfxwe3uKTaG47/gaQ/dGMg9aOn0P+f60mCFVjH94ZFQT3IC8cn0NK8hVT25z1rOu5vlIB5b6fnXmZjjI0KbfU9/Jctliqi00KmoXBc4Bzzg1Vt7RriTGM4JNLIjMxGM/4Vt6LayIczKPm5GK+Bq1JVajkz9aw9COHoqCLmm2Udoo3A+/vWnGi4zk+1Ml8vkbhxUErfZ42eNjtAJIpI0UerPE/20PGk3gn4K6nPYsVkuNsWQcHDHB/wrwP/gl98WNEm8R3Gix3d5/bmqzPJd20q/u9vO1lP5cfWvTv2xta0/xD8NbzSriRTK43InoRXyb+wTptt4W/aC0p4ZPLeSQq67jyp6f5969bBVbUWjhxGH/fc5+xXiaRbeIAYw3AFeTa5DIY5Io0yxGUX1POR/n1FemeJZPtFuGDcKvavNtUU3hkRnMUh4Rj0V+34HpXh5n8TR72VbXOVVh5EUkaljbbkkVf4lIz0/z3qou+BpEwJYDKOSBynJGfzxn2NXGf7JIb7biKRitwq/wkdW/D+RoCiH5CwYROuWI6qHwOfoc/hXgtnvoxYI/7HvLhJQDEbUPIx6YKOP5g59qqXVm0zadtGI1tykwAz1VlGD35I/M1c8QM9vJqFvboQGMMS55G04BHX/aY/jSfY/IvltYd0kUnzj5s4WMszH6fd/I1D7G8VbVmTHNPcTasIgPMCGKM43YyxI/Haox9R61FaI91cWYG4EIXdi2AQrYQj2yAatJbG1tWkjLl74zSMNwXaoQlOfYMv5VZ02BdOt7Brhw0821WbGPkGcD2wT/I0ki5NdCG33NMphH+qUo3PA3dOfwre0uZYfLMi/J/DxWPBKI5Gg+XIZgxI54yW79iQKSa+YWaSMAoTK7enJ/+t/Ou/Bu0rs4MTqj4U/4KHeLpZPFlrpaOTG0ZJGen+TXxpZ3ktjcxz2zFJImDKw7EV9Pft1E6h46trpSxMcZRlAyMZ6k/hXzHbRJJdRBv9WWG4fzFfU4fSHN3PmMfeVXk7H6IfCnXJPEHw+0TUZh++lt18z645r0LT2Tblm3Ej8OteLfBbxDHceD7Syhj2G2XZjj0/wD1V6xZtI0K7UKnb1PX2718njNMRJrZs+qwcf8AZoxe6RtSFWUmPJz/AFp1vI6t1Oeu3FUljkKkli2fbtV21Dyrux8oOOe/vWUZWLnBWJ0umVxnPP8An8q6rQdcNvMoZtuOnp+Nc3La/KrRZBPfNVxK8Lque/8A+uvYwWKlSkpJnzma5bTxNNxaPftB17z415J966iOQSLkH5SO9eEeGPEDQsis2eeDnivVdE1ITou5sjnp0+tfomWZjHEQ13PxjO8nqYKq+x0RkTJ7kDNRhmxnOB2NCzBk+XJK4yR/n60u7c27HBJ+UV7CPnLjJMFiSST6EdP8/wBKaW284744P+fejuQeg5x/npTGccleuc1XKYuY1s5weMc1Wd/4ecHoRz/KpJSHboPQEVXkkCj5uc9c9Mf55rQxbEkY5Jyep4b/AD+FQt1z3PPrmkaX5v4hz0BwKZI4boOMnvTIuBkO085b61WlkCqPvc8AnrT3YM3Dde+KrySBuGxwOh7fWhCkxs8mF+XpngfrUDkfN8uPXvimvKRz0wcc9qhaTdjng9wMU0jJyHPJu+6Dj6dqrzSYzt3Y284/z60kknXaOcEL3qtJKfM3EYAPy47f5xTRm5CNIFwu75j3/wA9KrMwDPvJ5OMZ/MU+aZd5HJ5znPUf/qqrI/GOnQFu+R0/GmQxrSAglmxnoSM9f51EzBVzuPPbFN3fN93Cnj5uOlMZvmC7gMZwBTJuMkH8WCQPX6VVkxlg3UjrUkxOGVSRxjk9Mf5FVpJNygdlI70rk2Wwksir/rN2fqMetVN+/G/Jzk7QeSfanyTbRlcBu3PSoGkLAn5eW7nn0qGy6cdT08feGAOOmaf/ABDGADx06j+VN5XhSTjH+NAYliDnJ/HimdEpEgXoUBwB9MetTrwuMH8OOaiVj2OAR39/8ipPMIAwCR/nFAJ21JgxUMOuBT15xnODUcfZuDjHPpUiqOjccdMcCpNLD879u0nB5Prj8qlGOeSCT1qLnd8o4zUsfJBXHX6ZoGiQAcnOMn68fWpVx3PzHJx/OmqoOTyWxxzxS539VPAPfrSLJAV2ngj1wePbpUi52jaBk9cdM1Cu1uhB6dT61PGoUDaG4z+ApFXHk4Ueo4FP468jtkdqjXG0jgHaOM5qRW3DA6nigExy4b7xz/Wl+6enQ/jTf4cIwA9xzx/k0qYyQvUCkVceCD2YU9R8uBjOenpTVyB0HtTwPzH50DS1F6MMjBWpNoZctn061Ftzk8Y7dafwAAT0x/KkNMmb5lxy2e2aYx6Yz93v3/KmgnruwCOBTlKqcMRkdeO3+cUi2x3OQcc9s05cK54HSmr/ALIbBp3zAYzyeOeKQ0SDHBbgnHBpAQSSBwenNJtAyT2FJzjOcA/zoHckXH0xg8Uq9Plb8+1MzjB5PODipY2zxjtQyou+gxWkG3hHOev3R+XNNeYxglldT2+XP8qfI3TA59KryScfMeMetcWJxdOlG7PUwOWVcRJWRVuLoP8Adf5RycGqrSGRctzj9KkmhE56Z/2u/wCdRSQvH/qmDY/hfv8Aj+FfD5hi5V56bH6nk2XRwtNXWpPY26yzfNwRXS2NsqxgYByOmKwdOkEbD7QrQ8/xfd/Pp+ddZYxp5YYEc964kj1Zu8incWSjDZI3dqozIY8Yfh8A7j37fn/nrWveK75VGA4rGubry/3N0oEjZAP8L/Q+vt/PrUzaiawi5HkvxV+Dg8b26+XCu9Tnjqa8/wDhH+yu3gzx5YeIIbcia0mB9NyHqDjuOv519U6NcLkI21scglfvD39/b/8AVXUWcMJw7IFPqK6aErq6JqvlXK0VdUmENnjPov0rkbq1VppBGFJkyVPQEDr/AFrqdQXfu2nJHYjgiuevIX3CSMlZYW+6eN3t9fT3rgxPvM7sGuWJyMtmQl8JPlWQB1JHCkDBJz/nrVaz8saWgmBGFMPz+irwT+Sn8a6ia0WWUuRs3xlPTHTqPrn865uzCR29sjruZbqQLxjdhRgZ9eD/AN814848srHt05c0TnGtZ9Yu9seE+03COWHIVFQsT+GR+Qq1HCnmXNxDgBY1h8484UnGB7nBOf8AbFWLORrGG9aN1Pkx+UrejYIIII9DVfUpks/DYtoQxeSFJJVDcgsRwSOpx/I1irJXN93ZGVa4mkA2KUl3mNZOuFAX8BkqP8mr7Ya4WSQF3EXlJ6M78kj6Ac/hU1vYmHybdUUyvGPlA75Ic+3zE+nUelXLe3Vo3liPyoCkXoqDqfqc9h1I9KqEGE5nOyQrZ3UseWKyD75PLEkkgf1/CoNUtQ1vOCwXbEAqjsTkk5x+Fb7aUF1Ca7mUu1sgTLfcDnnCj6kn8axZJpby6lijVnBIEmV6Hkk+4wR+INdMFyM5pvm1Pg39o3wBqnjzxMLbTYJ281gdyocqi5wMH14PXtXIeHf2VLizvLdtWSbefmVZD0x3IH4V93+IPC9vaXH2uKFmmc4QHqT6Y+n5c+lcxdWYVnMxJuGPzYU/l9P89TXTXx06cbJhRwdKpLmcbs848C+BR4YhFuqBQOFwevtXfWtuGwNu0npTWjUMo2lhnB96t2W4y4OAgXhl+teXKv7R3Z3+w9nsK8Rj+deT0qe3eRl/cxdOKmO2ZQ1viXod2QBjr1PXj09K2LPCwndktj5tvGP65xjvW0Y3OaTsY0szxlRJnLdFzyagaZpR/qyQMj0P61t3qpyY40UdTgYzwevvVJ4Y5o3KqMYB646/5FaQduphNJ7lSzu44X+ZmVunqR7V3Ph/xMI2Rd+QcH0zXlV5vhuMRAsAf881r6fM8EYfkbRnn9K9XBYydGomj5/Ncrp4qi4yPojR9ajmjUHHPH3q2fPDqCvU8/X0rxLwz4q+YB35DYavUNJ1NbuIHdlW9+a/SsuxsMTTuj8OzrLKuCquLWhtsw47g+neopGwxI5PQ9xTg24ccZHFQyZLAdjjHOa9VI+dlIZId3U5AP8AnFU5ZCzHjBzyR6VKzjOO44zjPFVWYtnpnJzVWI5rgzfMRg5z19agaQqeCQO//wCr8KWaTaG2qvBzjHT/ACKrSN1KnAzjrj/P/wBanYych0rE/eLAcZ9fU1Azn/lmT79/b86bNIcqM4yMHJ6/lUE0nzL0P9KLEuRHJtbHTb0PPFRux2gsMZGPpnjmk3bsn5cj19uahZyjEtk55OTzQzNsWRyN3JyTjpyaqySLuZtoXAGMjp/h1/SnPJ0PJz1yOT+NV5GHJG0nGP8A636U0IbIysW52gkY9fwNQOwReo59cU52JA7DufU1XkyDuUdunQUyGnuRq3zbTksT77c+n+famzPtUn5R7dcfhQW5yBn5jjP0qGaQtznI56HAPHpQ2LoQzSAKSSw7emarnO7qQo5b2/Cns3zEOcZ5UjjNVZWDfNn5i3fn+dSybDJMsxGQxP8AL6VGzHgdhxgnpTmbOT8xAyc/Wq7SHJC8H61LRvCyeh65jc3zEr/jTtvQg8GkCkepAoU4wMFsn8+39ao3mSLjcNuAfoTnNSKNqqVIJ9RxkVFgvg8e561Mi7lO7b2GfakIlX5QOoz2wKni528Zxx71BGpYlR0X171P90Dr0pMuIqsBkErgH+dSR5ZvmzjJ+ucVEM7uxA6j0/zmnJk4BxxwMetIq5YJ7sOfrS7c8bsZHqKZyRjBXGOpqX7uAxPGe34UFD1UKecYHcdqlTJXORz1IH50xB/wHpnpUiABvmwduOtIdxwbBAwcdaeGPUjHPrTBhQdwHTIOecUv8XzDJxx60Bcfn5j0PP8An/P1p8bDdgD+vP0pinqy8D60K2ABg/4CkVclVhnsD/nvUi/Ngg9Oevb2qJehO7BH6Uq53YHJHb0osNS7j2HBxux7U8Mck8Ypg9f4T3IpQxXDKDxzSKuOONuOuOmKdH6DOevvTBz904HPFOj4zu4B6e1DBakmTknBHr2px3A+57elRr15J78D+tOweB269fWkWPGVYbSOe/rQGJbv/h/n+lC/MeuOw4zS84w3btUlIev3jtOcc08N19B7e9R8+mMdOKduKr17+nesa9RQjdnZhKMqtRRQy4Ydc5xxknFZ8k35+tS3EwU4bg461SEybvX1HWvhMwxTrVPI/Xcmy+NCkm1qWY5AOT0Hv1+lSx4LBcDB981TSQA/xliem0/4VPayOOfIlb+7tB6fjXnHtXN2xtY2GMg5H+RV+HTDGB9nZoSf4UPy5Pt0rLs7mKNkylwpB/55N/hW1baxBMwWN0O3hs9qpGFxs6zWsJM6ZGPvxjp9V6/zrnrnZeK3zLMhPPf+vWug1K+VowBIpB6EMK5yaOO6m3KSsnZ0OD+dY1I8zOyjLliX9Bs2t5D9qzNb5OJMfPGff1Hv+eetddHcbVVJCvzrlXHRx7Vi6LHcWcI81ROnXci4YD3Hf8PyqPVNSiWNjYyKQeXhzjB9R/db/PvW6apwMUpVKhtXLRt8ucE9PesW+h3BlY4IGD249awV8YxTN5UzNuHy5xySOxHZv59R7TjXhOg+fO3noc4NcFStCWx6dOjOKGXTAKd7jIX5hj35P44NY18pSGLySu3erfL0JORx78inX2qLPOVhIy6gEYJ6n2+grI1DVFmbZGwCBtrN0IxjP4j+vtXJKUHud0FJaIzL6cWbSxxBPLaNrhueOemPTsKo3kolihctumnVELjgIMkkn3wT+dZl7qSGZ180mJkYAK2d+MEDjtwwPrzWVd6pE3ki3uJCI5gfMIJABULyBjrk/TbiuNyh0O6EJ9TuP7S8uWSdkChlEcS4w0jEYyPzP860IVjt7eKEjLYVAO+7OWY56ksR+Arz3TfEqSa5GNQJ8uE7416Attxkfhx+dd1Hq9tbq1xKytPJlsDnYo9T6/r0rppcr1bMaylF2sWtcdLezSBwWlYgR26P8xYnuRk5z1P+GRi3hi0Oxjh2Hd0KRr88jkZ6Dpnkn8SazNa8XR6bI9xcNtKkiMg5eSQnBxweAMKDwevqKNP1RBELm4VRM+QNzZKKff68nHJP0qnVg5WJjTla5RvoZZFd7lSbhl6r92NePlz/AJycdOAPP9cjkivGdUZAc435x7H0r0k6xbXbMkO+4kQZKoSEHf5m6Dnt1rifESlJA2oESK//ACziGAPz6/j+VY1oKUbs2w8+SRzKzNI4VWMnqy8IP8anis90oE0pYkdG+VfwH5dSaVZYmmO7f17N0/Kns1tLJtgbzG54Dgn8q5VS7I7JVO5sWUcar8+D0JB53exrYhuII1KlQGUdB2/xrB0uaRH2NFICfWM4X8q1/LMhw0jL2ICAZH+cV1049TiqS1M7UJU8xjHuOPUf54qi80eGDfLuzjHGDWjqDpCjeXvLn7xbP54/CueulkmZirgntgY/Sh+67iiror30gRugPbPtU1vIsqhc4z2Paqy2sysDMSyjgDt0q3bxBcBVwacaj5hVKS5RIZm0+4VxkjPNel+FfEylUJK8nHXpXnd5biRQUUr/AHcj86q2WpSafINpc8/d9K+hy3MJYWafQ+Lz/JoY6na2qPpGz1ZJo1z16D3qzLIOuTgfj+leT+GfFwm2hmxhseleg2Go/aoRzx3xX6LgcdDEQuj8SzbKqmDqcsi5JJtA6ZXP0FQySHd8uQPT04pzHdznp0GaryTZ4ODhjnnH/wCuvRPBbIpmZgzfLkenQVC0y7gG6c8D9RT2kZs/eAb9apzTfOTjBPX8aZjKVh82GyM9R2OP89KrSj5fUgfezSecW2kkjdwO1QtMwHJ28HHHX8aCXJMSaYLF8vCjk7e/41XuGdscDhc89/8AP+NJNNtZRzwDioJG3dDwORx2/wAmkTuNlzuDHPPX0/P16VG03zsueTzwehNJNJ8p5IxkbRzVczbVJ5IFNCcrErv8pBAHGMD+tVGmLDp/vf5/KlZvlYcc55PHIqszKc7TkD6/5NBLkxzMWXO3GOq57D+dQTSFvvZPce+KY7BckdT39arySNkncTgnacVLYaiNMzSNhSuBkL6dP8aZuU52snz8ldvX0qESb2LLnaP9nAwfSopGG8f3edoIH45oZUdNR8mCuMYIPcnmq5bG3d8ufRv59qfJIdu0lgccHr+lVWb5jzuAbgf571m2ax3PaFPzfM2CpH1H40oJJ7ZPT2qHdgg8HGaerH5euD7fyrU3k7k65JPbHU/n/wDXqdcfQH9PaqyttB2/X/OKkjzuGQcCgSZaBHc8+n+fxp2Twyt14z9ahU5wMgDjA9amzgkY247/AOfyqS7jo1+U84I6D17fhUvIHUYBz/8ArqMZ64xzjGakj79x/npSsUmPVhz0x79qfGp+bjjnnvimKxGSBjFSxYORjODxx/KgZOrFeOME8VIct90/iDyahjxjjBHr/n8af5mwE454osXccCP581IrH5jnBAqDdu56kflUigZOCc+9IESD7p79sU8qP4cd/ao0y3IwMnP/ANen549xxSuMfy2fb3/Wl+7kHIHqKjLdMU/IY9OKClYcv3gBgfU/lS/73AXqORSBl5PY8jmjcOOAAfSgE+xIp9iPfFLu25wopikKQefy60oPXrn+HNIZIW+Y9RjsB0+tOViBluBnk1HnOcDk/wAJ4z/nmpF+cH+EY/pSNE7j+W7Ece3+etOZl4GeTxxSL8zDp9OnanAfvPlyADjNItC7ixyqAfXrTJAyg7nJyOgGKl6rnjP9aimXrjqa8bNKvLTZ9Tw9h3KsmUJo1LENinKg9v6UyY7GznGO9Lbz9AqFs88dPzr4dn6rBWikidYz+OR26Vo2iBeXBAPtVeONzydqqOemaimY52MzsB/tY/lUJlcrex0FnsZgy4yMZxV6ZPtEYDIrL2DKDXN2USsF+9k/3mJNbtlZr5YaVQSa2jqZNcrMrULCGRyNpDew6D6dBWbHYurBYSyYbjHy/wCI/Suh1KxOwlIlizxlZDnH51l2mmyG4Gbu6QZ4XcD/ADBpOPvGkZ6G000+mWJZwWyONybuP+A/4Vw+q6ol5KWWRNyt96Nufx/+vXV65JcLAFjvEGO8kQP48EV57qFo00wN0IJGGTuQFCPxySK87MJvZHpZdBfExbrT0vm3NkNn+FsE0yYT2luPMLMoO3cepHv75q5p0MlrGjKjOpPDbwdv5gGtXUNPDaf5uGVTztwc/pXmODUbnrRnFySOXhuGVXkZj85x82OBjt681ivG2rXMdp8yvPkR7jz04/U4rQvrUXVqybxGoUnnjb34PTtmr/hawjeaS5kJRLWQsG24AZSMAk9Bz/497cGGw0q80uhtVqqlFvqee+JvD91o92I7iJ/MzsQrheMkdPdQx/8A11hSTfKrwKCsoIdR/EwJPzccDp+Yr3fx14OOqaXHdxBftCQKQc8jC5/PI9a8b1DTza3dj50flS7XUrglVLfLgkD7xzgDPGfatMXl8qNRrobYTGRrQXc57U5B5EVxakyFZMemWBIbBJ46dewGe9PtNcutTYwWUgkWNfvAlSZOhw3ooHp15xxWjcKWt5bZY4f3xYqm3bt6nHX2H3c9Pxrb8K+GRHpbeYFWMD/cC47ZHTJGPXiuGOkuU658vLzGedJWVYpbpWkkiVSqxxnag9B1/rxSatrEcsJihk8mJBhgHJyffkH09KPEGqz/AGoWsFvGiAY8wM2G/IEk4/DjrXNS6JJBvuJJws6L91MD6deh+hquW2xnHXcvw6myxpBp/msi525+RCSOpyOfwzU2paPqN9biW8mtkjUZwg+Ye2T1+vFc5Zfa7y83yTssYwU2gu3t3xXSrNGsKxrNczsQBhm2YP4EZNb0ZX0ZjXg4u6ORZLSFmR23lO8h3Ae4zWnDeWsKIweHOeFB5PPODVHXNPihuDL5fPB5XkVb0u0aTHkxKOOg4zTt71mDfumjHqRkyIAqk8ZMg4/X2q7BPcOu6ZweME5HPvRZ2M9u33GYdTzgVcltF2/NE/Xcc8j/ADit+XQ5pPUxdTmST5VZgQc7scCqMFiDxHLuyf7tbNxZsOYbTzCTj5Ttzn/IqCaZbRV32phJ59T19azlEuD6FYaZKvyyHCnvjoKmWGKMD5kDeowccVWk1u3mXy3R0/2gv6VmzzeY2IWBLNgL0P4k8Cslq9GaS21Rt3bxeSyqQRjqDk5rBvI+q9DjtVi13eXuk46gFh1qtdMI5C2B1PPXIr0YaI8aqveaQul3bWN0pyRzn/PrXrHhnVt0SruOccgnj614/Ip4K7iRXQeGdceGRUcjGccV9Dk2YewqWezPiuJ8m+tUXJLVHtouNyZ6kcdO/eoJWAY5AX29/WsjSbz7VGu5s5HBPpWk3zJjo2Mj1r9Ho1IzjdH4bi6E6U3GXQhkk+6SWAAPfkfWq8kwyxUE+vH4U64VmODgAdO1VZFPVeQOCcdT+Fa3R5zcuw1pOMkDO70x9agaXIO3gnk+v1FK6tuHy9fX17ZPrmpLezLlt20DhW/KpcktRwpzlLlRR+fgbWA7fT+opDG3O0Hjrnjmt6DSh93bnd146f8A16s/2TwOmB+tc88VFHq0MqqTOTa1KtjB59KrtbtGTg4H06//AF66yfTevBPHzdcVV/sstzjgdff/ADzULFxOl5JM5drdtuVGQD3NQyWr7SXHK84xk12LaSVXpkj2qtNpSkA4I6Z5qXikNZHI4yaJ1J3DAOOc/r/KqkwdeMNg9OOnv9ea6280/lhjB6DufxrOk03rgZHfH40RxSZjPJ5xOdCuWxgnoOe5FOa3ZVXbuyB71vw6UWbKA/N6/wCfapJNJxGSAOOfp1pSxSNKWUza1OJuBIvUYx6Z96jbKqNoJzzz6d66O+0s4ZdvT19s1k3Fm0Z+6M8+2RSVZMxll1SnI9f+zncSOcY7Dj6U9YSzgjdg1tx2G7cufl6dMVL/AGcF7cGtPrJ6TyeRheWQp5PryalC7fu7eeMdcitWax6471Gmn9c8g+lNYlGUsrmnoUV3HAUc9PSpPm/uitJLLLZ4yfSk+xhemCcE9Kf1hEPLKiRTRAVI6dvr9acsZIJbjPeraWpLH7vHpVqO0/vA5BFDroUcumzP+dTzgn+eakX72MgDnpV2aw67ewqL7Kyt6AHp9KarRYSwNSL2I0XcP3nHT8PxqRYztHA5zkfT2q1Da7shucY/KrIs+MKAT9OtS6yLhgJMzTjaqjjIx9P8/wBanjVpM4AzkcY64/8Ar1P9h+foee5q3b2pTJcd/TFJ10VHLptlHyjznJHoRULna3U4NbD23y45HrWVdQvye7c5zSjXQ6uXyjsRCYc88luMd/8A61Sb/wC7k/55rP2vv74B65q5EpKjucZ/+v8ArW3Oji9jPsWN2Qen4Um4NkKwz1zmkZCOoPrn+lTLCzbc9f8AP4Uc0QVKd9hF/Dn2xipFXnGM8fnUgtjjJxgj06U9LUZO4D1x9aTnE0VCp2IoxjG4EY5HPWn7T/EfoB05q0lv8o3LzjrT/s52kc89qj2h0LCS6FVR1wMEev8An6VIOh2jqak28jg4IxxUqw55/wA/Wk6qLjhZDI17cnHQVHNCdpPJyM/hVwRleBnJ796SdAseTwOK+ezad4n2nD1JxlqYVxEOuM49R0pLWMsQTn8KszruPy8nqPY0tvbDb8/zdvYe1fJs+9iy1HII0BbPTtzUDK0wHlISD/eOKtthY9oCn3qjNJt+62Ce1ZVJWOuhFsuW0JiwXlUE9VVe/wCNa6SDYAJ5WP1A/pXPR3EcKhppACew7Vdt9SLMBAowPXqfwq6NQdelbU0prTzDmQyuePlaRjUUVhFC7SSwKQeOT0pY7i6m4ACqe6kKP6mmfZ2ZyZmDYPPBP866dzjMvXWs9o2lA3GAD/SuOnsopGJUYx/tkDPtzXUa1bpuI3Ow9N2APyrlbx0hysLc56r/AI9a8nGwvLU9nAy901NKMaqsXmM7g8Bj1/8ArV0V5DuscBshhxkjmuFhvFsUDyKqhR1/i+vvV2PxBcbNsjfL/EZDuJz6CuZOMdGdrhKTuhLZrVtTWzvFQzscosjDn6HH146+9dUtsbO3dAka4BKswz8wAwT7DmuH8QTWlxbu+oQO5+8gXBPB7ZIFZOn/ABKmhgNk0dzqEkfztGWBliTvgk8j3z27135fiaFOXLszLE0q01zbo9We+huLWWRpi4e2MUce4KN+OTz+P5V5P4msFsbxHhgbdKzy72wQgY4ABJ+8RjB9hXI+I/2iNK8M65DYalHqz3Exd0t4bFm3gITkNtxnt1/xrktR8X+NvjFeyWun20/hnQHwskkmFubmPHODnEY56Dk55OK7cxnSlS13FgqVSM7x2LN14wsbjXP7G02Wa4u43KzKkhEYLdS7LwT16k16/otg1r4eCStE/wAo+Y52jI7Adf5/nXNeA/A+leBbEf2dHCzOcs54LE8nOc/lir/iLxh9mXy41jDp95dpwTjrnNfMxjGN5Pdns1JSnaK2Ry+uT2+jzTtcy7AzYBVdvfgAEn/Jrk9Ut31AeZJNMwA3MqsVYgnPr/WjVdQS/aSWe4aUrlmjTkH6DvxWJ9oNwzSaXLJbueACQV69hWLXQ6IaIsSSR2eyOG6cjGNrXDBhzzkVNp9qrYka6ufwlJzz659azm0X5DJfMrvgtv27s+vIxSyanFAvlSCIlhgMeMn6mqpppk1UnE6a4ewkhKSXEzN6FgxH50uk28m4G1nbap645A9uKwLG3t5tsjJIvQeoP9K6fSW+zMTDluO47evH411LVnHsjdW1mMalZenoASv9f0prfaWyImQnP8S4x60sEx6sMDk5U9O/Sorq+EJYQyAycnn1rVqxildkMk+p2udyRkZzx2qtJdyzcakjBT/EVHBzyasw+JBIjRTNEe2B2rO1KYyq5tG3J12en+P1rnqvsdNKD6oq31rtjZ7Vkcjt61lRTOzbJQVJ45FTrcRRyHzXZWHZhUkkkFyCMKG6dPeueCV7m1S9rD7NvJJEbHDDBBwRjqOvB5xwaqX0a9VG0jIb0+o/z/8AWs2cQ8zarDaf7w5FTXMIkztxjHGDjFerT1hY8OsrTMFZOQGGMDHJ6/8A16lhuhb3SFWVTu644P8AnFNuo2hyc4z15rNuJ2GCp4Xrj6/pRTlyyMq0FODR7F4S1E3CIFK7uPzrvoYd6gqcrgdOc1414B1ItIg3AYI6dTXuGjL51uD8oHpj/wCtX6BlWOvRSZ+P57k3+0tpFVtP3KeOarSaduBC9Rx93p/nNdP9lDL0HFRrZhieQN3r1Nek8YeMsli+hzaaSWxkA/0+nNaNrpAGNy5ANbSWoPHH19asRwqoIyMevpWM8UdmHyaEWtCjb6aqgcYPuKdJp4H3hg+/etf5VA45A7d6guGAHAwPc964qldnv0cBCJgT2o+bA49McVEum7nbcAB0HfFa7FSxAHB9OKaqgcnnNRGqzWeFiloiidOXj7xye9U5rERrnC/StxmVV4zxWdeS7t3PH1/pVOoyYYeJzdxZ7sjHQcn0rPaxPmevvmuibC54/wDr1A0K7ty5z7VEazRFXBQl0M6CxC87VNPlsUZeRjrx0q8rL1yDk579+lRyzbYxtIyOeuf/ANdN1mKGDiuhzl9p5UE4GV9PrzWHPp+4naua7No1f7xGOvSqV9aewJ6+lXCuzGvl0Wtj01YQMdBzUiRAk7RkDrUUzGNsLg4qNbrPOe3+f51u5s6PZR2LElvnP16elQ+QuTxU8UnmZHUnmpvLyQVx3oU2ZyoRZWSPDE4B96JIlzgj86ssdq4zjHPSombcR0GcU/aMyeGiMhtl/hHTj61bjtTy20nP+z1psLBQPf8ASrsJDY6gGn7WQRwsCFrcfxL9aj+yhm6HJ9q0F27eeeOn+NNVRkk/iMUKrIUsJFlWG0KnkcL/ADq39nG0gDAH4VPGoz057mpGA20nVkTHCQRnLBhj1qdI+o4B6U5u31p0bYwOfal7SRpHDRGtB+A9KoXlvnJbBAz3rXX51AAIpsluG5pKo7hPDQaObWzDN8uOv93pViOzCgnpmtmPT0X1wOlSfYhnpxWqryOSWXwfQy1syWyB3zx0qWKzAzxgjtV4wBWPHX9aeq7m+tX9YZmsuj2IobQbMMODxTvsuG9R61ehjC/NzyKXy/oBjmp9uzZYCJRS2G36/nQLUhSTwBz+NXlUKoHNO8v5emQaTqstYKKMloCWzxn0q1b2u7sfepxGGbjirsce0fNz7VLqyLp4KPMUHtt2dq8+pqtcWoVc8k9eeBW1In92qF5Hlfl//VXl42Tkj28DSjTehzV0u3cFIGPemQzYfGMZ4q3cxhcHrxVVIyZBuGB/drwJqzPfgyS8kPkkKTk/3ay/LcqzMdmPfmttowIjgcd/l5rNmzgiPnrkn0rlqno4ZlW3sxM27LYHUk/5zWhBGrNtjdlVew4zVPzFjOzcQmOaa90xAW1UKuOrdK5VdSPQfK46nRpqkVlGF3E571DcXrzjEasQ3YdzWVbqsah5/wB5Ied23gfhViTWEhwYwuR/Gw/kK9KlVXU8yvQf2Svqmi3T2/mXk3lJ1KLxx6E9a4y8DJJstIgqKPmZh19frXp1pHHqUe+4csO4b/DtWFr3h3ycvaqCD14+7Sr0eZXQsPW5HZnIQq9xgtHuUDtxn+tRXaFr1zChXav4D/69aH9nzrmOVu33Bxj61Yl0iYhQ5Zyy5zsyBx1ArhlhrnqwxCMSWabdGVMWwr/Fnc/pxnp+FZeoXMlraSzNFDwNxUqU3EepI6cd66a402RYlfdKH3AZkODj8Olcx4mLSwSsqbmjGIwV7+uep+la0cCm7sp4zoj5x8deKJbz4maJNfxwvHbs6KEycjGCD06jP59698tL4alp0U2lwQpcNs+7MyqzHkqOBn/I9K8K17wrJf8AivTJ5jgG5O3zG6kjA617ZpenzaXDiRW3LgLIGO5R7dsfgepr0JYOM4NMueIUJRcdx095LauUnYJHINpkzhkbGBnJHFc9qEhvpE8/fdSoDtIjA+b8+P8APXt0l1YzbV8wNLCuWymGbPqOzA5FY17avNsSOVniH+sYxncmffv9eDXi1cL7NtI7KWJUtzkTdQ291Ogtn8wglvMDL26Zb6n1rOurqRrP7QluzHPzK2M/4HrXTakpkjDpH5xRvLYqvPbjFc1cahJ5zWggaF2GY5GGQwzyK4507HXGoYrZvFLx3Mluc8hfX3Bqsum3SygmSK4Rxwc8kd/6Crdzpv8AaXyTZt50+6yHhvX/APVWxpOn3Onxj7VGrR/xP2IHT6Gs4Rux1JWWhHoaQwAfZ5TG3GYphwT6CunhuFUgOPLbHbGD9DVK8ubIW37yNX6fMQCRVWBJGVhaBp7Z1+6WyB9D/jW6lGJhyOR0nl7ozJazfMMll3dPwqRL+PyfKu03HOMsBmsixtJ127UO8DKo/B/D1rWFvHMoaJXDjAb1/EH/ADxUTq9jWNJLcguNJt7ohtgVn5U+/X/61ZVw32G7xcPgnHOSM4//AFVt7GUskgYDcQN3H5ZPv0P/ANaqOs2aTQ5uyHK9G7gisHqbRVijNbR3C5jAdT3zyP8AIqg1rJBLlASvbFNtY7m2b5SWQjqe4/CrAikdS1uzEH7ylenHaojrsEy/b2olVGU4JHH+e46VI8PltnH1yecVBYySRruddy/TmmXl5u5flh7/AOfevTou0Dxa8bzIdTtRJCfIY5H8PAP4HvXK3hMbH6kV0NxcmRTuAHHRj1/OsLVJxLxL8zEnBH3ufX1rW6bOZppGr4L1Iw3q5J2lsAn/AAr6R8I3XnWyHBAbjmvlXRbj7PfIwxIpb/OfTvX0N4F1LNum1t2Mf5/z617eWVnF8p8zm9BSfNY9NZlPr75pm4bu3FV4boshLDDd6jkmPbHPvXtuZ8+qJfDBRnPTtQJ1XuCcVltdFe/OP60xrg4xuOf/ANdLmuX7OxrGcbcKec8VBJcKQSDgcdfSs1rzsx61DJdZbJzkH8qehSuX3nG4qCSfam+cyqdzZwO9Z7XQwOhA5x1qGa56jJ5/yapNIiSb3LdxebfX/PSqDXQZhtYHJzWddXBXIzweelVftDfxjJ6nJ9Khy1HGOhsGY4J9efXFMkkUeuevX1/rVRbg7VXJ/E9qY8oYAD+HIx357UaC94lkkPriomYtjODnn6Co2mEi/M3X1A6UM3ygtjKj6du1FikmSb9pJBYgAdaAN0ZBAJznp+NVPNCtlsjH40+O8+baMkkjnd29KEVZs9LuEDcqTVBozuwufT/P+e1W4pd4+bue4p5jDZ2g++PrXXKRk4XK9mGLYbOPatyG3Hkhm49awlkEUxDcfyrZtbwGPGcgYBzUqfQaporXi7WziqZyG+Ynr1rTkAmzu/Om+SCMYz7+9O5nKmQQg45B+tXY2wfm59fUUxYdi8ZAqNnK8E1dyVAuH1PORmpo1HPBPrj/AD9agj4981YiYjjgnpmlcTgyZQAp4qOaXa3OKtKo8s96ybqUhu2OtTzopUGTeZxnjnqKWGRd2OBVNXJwWoWY+Y3OBjoadx+yNRJhnnt6VKsueOwrIjmJY8k1Zhcs2Vz+NJPUTpmouH57VKyfLn+dQQsMAscVZaZfL5P4+tXcUaZXkTdzxjpQF24LEfWkWeNuhDZqO4mCqNvPtnpWfOaex0LkfYVKw3L1I9KzoLpfUHHqatNcjkZ5p86HGiEkgUjpn+dCybuM8dqzru9GT5ZxS2lwWIzyaUancHQfQ0sYyeBSfatrf/WqJm3KDWZcTNuIU/8A1qHUHGibJvQVz3PpUUkvmrheprJSRi3vmtC1UYJ9fWuWuro6qOjKdzGFJOOT3NUdo3EdPStW7UcelZkjYfC8kV4ldWZ61J6XJrn/AFXy81g3E7KCsZyx61tKrN9/8u1UbmKODc7cnBwP5VxVY6Ho4WeupjtIISDMd0h4APNPgaQkeYDk9B3NMkVY5PMYFpD+lNkuMD92cMe//wBeuO56S7l55vlGWBH90VT3edMN2Mg9u34VXj27ssxO44z61t2NnE0m1OD/ABEd6VOTbLkklqX9NuBbsF3HH8TnotdEix3EIPLJ/Cv9a5c7WmZIyDHHy2P61esdZ8jLSZ+X7or1KVZWszya1Bt3Rp/8I/FmSV0G9sdvujtUd5YxNGsYGOx9vqao3XjBAoLKSewHeqH/AAkDX7iOTEe73rojKD0Rl7KotStrLWdqzszBhH91fUnpXnfiOW8vmkTTbcNgFSzg4P0/WvUrrTbfau5QSTn8ayLyCK2DMgXaOQQOlaONjSnNnzP4i+GOs69qkNzeTsWhlDRonAUj0H4Dn2r0Hw/Jq9rarBqXl3MkH7sM3DcAHmup1C6hF0kkOfkXjHrUcdxAsiuVUByMnsaUaiWh0ScpLUSGG3vYwl1D5Sn0H3COMjH8qd/wjsUlxIbcqTIg8xf4X98du/Na1qsc0OAAMHB9R6VdjtVSP90QpHNZzpxluEaso7HE6n4QRoHjYuJI/mRs8gjpXLN4POsWvk3o2yqeGUYIb1r03U9Qijj8y4UEpn5vX/PH5Vy154hs7OQSwliG4b5ePr/SvOr0Io76FebOJbwz/ZbCO+TzVfhWJ4b6+9M1CY6NCQoE1tIvG5c7a6vVtattQh8mSJmEq8Pt4Brh5oriK4KsQ8RbGMdK86pyw0R6VJSnuYf2MXkzNakopOSh/h+ntXS+G4VEgj5V8A9Ov+TVmz0bzPntVxIOWUAcj0FacWFiUrCFf+IYwc9vpXK3fc7L2Wg+6iRgGmjI5+R1U8f5xUEKpdRzRsVEqjG5T1HvWpEn9oWe0btyZ3IeDj296yGt57W6WaBizhiJFPXBpPTcFZrQoxu8KSRXA8zb91+4P8zWfeSS2/yyp5sTDKHuOvQ9q6a5kikw64jmXqDxmsm6v45AIysQmTj5h/nFPk0uiVO+jMCx1JJJ9rL04w3b9KmvJRauCFyG9PSqV9cgXJ821CsD95eh/HtUtvcGWMblLKeBntUx7Dntc0YpvtCEyDP+0nUfX1rNuo1Vz1PpjoauW7pakNj5TnP41Vur9X3rHGB+HSvRg7R1PIqfFoZczDccEYPPP1rG1JljyQow3ftWjdOfMLKCCDkY/Wsa/mVlbJzz60X1M5bFfTrjbcja2D3H+Ne3+A9Q8uGMMcgY/wAK8O0+FWvAcnJYcck8V7B4PHlxxY7/AF/SvSwjfMeLmKTiex2VxuUc5yPzH1qd5Sc5981iafMdoyeenWtDzjtXoQOte3zHz6hbQl8zBxxn3HSl3f3jjHv1qsrDd8pz7Zpxl7LRzD5BJpML1/H1quzt17e3FSS/7PU1B9wZIPTPY0OQKmhWf5uTUU03Xpz+H/6qbLJ16Z96pTTnaQxB4qfamioIZcOSzgNx70xGIJweB07H6/yqNpNx4IHPFOZ9wG7ByPWp9qUqCJhIFVtpAIPBI4/Oq1zc7U69v73akZsHryKp3Rds7V57kdv84qlU0IlRV9B8d8N20kA5NXo5GkTLMQDx0/nWJb2rlwVXAz1BrYtYSu0NwKFVk2afV0JNDuX5ScEZ4pkWVGc9OorQMHAHfgnjkUfZVCDPXoK1UmzN0knc9Fjtysa7ccjrVqCPIHHWtBrMKAo/Sry2KJHkDn1FekcTRyOpW7pJmM7SP1plk0j4VgwHWty+tx824Af1qpbwqMbgBg1DQkXbOEMo6ZqVk24CjdTrdfwpzAKwHAHf/wCtWlxctxpjBUBgAOw9Kz5Btmyw49K2DENg2jk1Ta3GSTn8KlyH7OxHJIFjHHJqJbhtvTBHrVe93btsYOafbxtx5g7Vjz3lY0dOyL0d/tHOPxquzCaT5AOtElqPLypJzVKzdobz5s4+vSk5W3FZ2NNrUxxggcGqyRs3410Meya1GDmqDQrHId5A/rWikJxsUliIxwK0LVV2kY+bv61XdhI2FwBzViD5Rjrx0FLmsNRuyVpiudv4VWuJ5FjwAQOvP+NXY4mPJ570XEKeXleo/nU8zL9nExre6xJhiQK2FiFxGNueOPpxWDNYyeYWXdj2rY0mQggN6YrHmlc3jCCVmVrqM25zjGOvvVJtQK8BhXR30PnKx65rj9RtvLkbaOD+tHNJD9nAmW6ExyxBI9q0reTjPbrXO2cMkkn8Sgf5xXQW0J2/MCOcZrSLuZyiomlHJuAFQ3Efttz1xV+1tf3a7sA/yqC/wowMc8dKGxR3MtZAsvHPPFX4mIXqM9R7VTht8t5nDZ7VayqcKR0+mKj4lqNqz0EuJBxk/Ss6QfN149u9Sz53fSmKNz8ivLxUddDuoy0Hpnbj8qpXdvv+YnnGFrT25Us2B3qldf6k7epzmuOcdDroytK5zeoEQg9GY+h71TtWaVgoHzEd+lW763LSHzCAex9qjWZLWItkM2Dg15VSL5j3qcrx03LNnY/vAXY/4Vqaex8yQoCAPU1habdmabrwvqa01uWRm2nDE9/5VULWuhTu9GWo5AsLqTjJyx74qJI/tEeeiv8A0qvcSF4SI+AeCfUVNHIRAduQen0qk9RNaEUlurY75H5VnyKyTF4uuflz0q+Q0xx1ULj3NU1mj8xh18vjHrQqjWxfJoWRNKqkNIWOMsTWVqk9xJauuTumPbsKuxzH+LjH6Gq95dI90IUK4HzOT2FbvFPlIjh1zbHJyaW+3IZidw59sVm6k01uwjUnaGB/Wu1v5Imm8mEchctj1rOl0n7VHhUBIx+OO9Zqs0bKkjC03W5I3UMzfP8AL+Pet6W7vPKV7dipXlfcd6y9S0DybiGSMbCGBAHrXRoQ2lpKV5jbDLW0a8mmiZUYppmHfWct8Czk7XwSufzrB/4Rkwwusigopxg+h713HlxrKw4aN+Rj3qreBY7gbWBQgZHpXLWblqzoppR0Riw6LE9gQFUyIodFx1welUrrT4JiHaLpgFV9PX9a6ORNsRKkgpz+H9awJVeGYJvwVJaNuxHofeuSp0OmmyGSGKz2BQWG3KSLgH8R9adIgklSWMrl+HjOMN9KrzyncrbyQp67fzFZ0lxJbsfMAkXd8vtWT5b3NVc2Hj+Yy2/yMRzj+X16isXVHaOcTIAFI5YVFea0lzG80JIljB3R5+8AcfnzWe+qNdjyym5JU+XJ6HuP60OCeg4trU0Vuba+XypHCyEcZ4zXL6tC9pfIswOM8MOhH+f61VuLv7HcKJmIA6N/nvUi6ol+rRzOXK8jdjg/Wov06mqjrfoV7iRpJvLjXf7EdR7fhU+mny5Nsykrnj/Cq6MVAC5Dg8ZHSl+1PMxSYkOOA2Ov1qoQ5ncyqzsrHRyQwyx9VGff+dc3qMKWshLE4Ge9WluJIogTnqP4sfjxWffXaythgO/HXP8An/Gu7Sx5jWpnXUw2kKQB0rnr5n+c4+9+PTrW3NIFbG0Z/T65rI1EjnA5Xk56UkyZqw/RI2kuEOcAHPqa9j8KwFIYyTkCvINClRZlBbqf8/yr1TQNVRY4wGBG0YINenhrRV2eFjFKTsj0izm2R/M2M+/PFW1m6cEbsiuNh19FwCy4Pv8AlWhb60snJYZ613e1i9med7FrdHShyM8hu33qUTc/MBjpWF/bCHG1s444pi6oW/i4/lUe2NPZaXOhEm3Hf/61Vpptv3ev481RgumYgAjFXEs3ulYxnpwetdEVKWxjZRZUkmLOwyTu/Oq8gLeoHH4CtS30syS4YdBj8RVibTwqYwOBngU4wvuaS2OcaNtwGTxjPXFO2lVGT9a3IdKMh/vAcZ61FfaP5MLHjoD6dqp0na6IjJGOuG5x1PPFTC3DYPf1x0pvkMOGAAz+GBVq3RtvTgD8zWSUupfukcdoq42/8C7VbS1wvByB6Used3zAr2FWlUYwoGT2reELmdSpYg8sLjgAZz1/z2FR7yvoff2xVib7uOKz/M/fEL36gV0KFtTJPmZ7rbRKyqWHIqSSQKhGRio493kgqeapm6bfheMZrufY5JdytdHexUZ4GOtMt7Q789f61JEAbglupq7J8sY2jipsybq4x0EXKnOevvVS+uCMbQTgc+1TqzjJYNj0xwKntrSO4bMijH1pNNl3VrIp6fcNdybOnrWu1ooUhgP8aSysI7aSR1AOSfwps03lv9TSb5RRV9zI+zbrgiQYHb6VPJaqWG3gD9KkZhLMVY8mq17di2UrgZ6mp5i5QJmhbyzyDgemaz5YQsmWHNb2ikXFoWYcVDdoHchVGM0NxYlCRFZSFY+T8o7elFxi4U+TyQM1ct7M+TgAZYf5H602zsRBIxZuT2p3RKhrqZFrC7TFGyDnGK0pIGgj+YYIFW0SETq+V69ar65fAKyp8zY4wetRKdjWNG5Vi1aONtjkZ/Wp2ujdRlY1zkVzdrYyX0zOyuoGf8n/AD2rrvDlmWhkLjhR6VMZtlSo8vUp7jH8rICf51Eswt2zz+NXLzCTttHc8Vl6grJGz4IAyT70+ZIl05NFptWBU9iO1Z08iXEhI61lWt19vuvLBwOgqe4hNrKx3nA6j+oqVNA6ctjRtYlVhnHBrTRlYDy+oxXItrohbGTx0ro/Dsq30bPuzj9KqNSLdkT7KVrs1UkkjUnnnpgdKxry8eSUrjoT0GM10Fv5ckgTJJHas3Wlit5GK8DvjtU1GawgzAm1CS3yFBJPai11Ge5dQUzlj82elW4LMahMAnJPtXSWekRWEIMi/Nj2rKKb9C1oYDZU5YEbun9artJg4X/9VT61dLHKTkLj3rI+3fN1zg9c9PrXDiJdEdUI2NWSciPCn9aYxO39eaprdLJHuYmk+3Zjzxt/pXK3pqbR3KV0g3MBz9KydU/0eIIvDNzW4skcjE8Lxnk1lX1sGkznlcnn/P0rjr0uZHq4arbcp6ept4XlkAHHfvWhauJPmY4FZ1wr+WmRhE9P0/pUscgW0JZjkVzJW0Oxvm1NKSTcuRwg6ZPeplkCWB3H5s5wO9YM2rAQxxxAhmPPFWXvXzhtvyj5evNKM1crkdjS3fu1LHDDtVK7h2tIy4UuwPPt7VZn3L5TLk7wBioLoFokbJHzHd/kUTjoOEtdSjO5ZpRHkbcH3zTGt/LVJZD/AK5RuyfT/wDVUsJRb+VGJJZML70+aHzI0kY7UUFfzrBnRF2MlW26lcBiCGxt9x+Na0Mg+xrt5KDJ/PmsySzMBSfHzI+Pf86tW0x8txgcZ+X2P86dLqmVNX2FuW+3bPLAzkceuagljazM8YG5CMkZ7etW7W4hWEMMLhse4+vem3FwJL5lkOAY+T6jH/661j36mb7HNW2uI0p2sSVO1gTWlJKL6MEZ3LwcnnFcTLby2PiSQIW8gktt7AZrqZZFit0uI87AQsmO31qVPmvc15bNNElvNLazMJPni2nr1WquoSIs0W0lVZjnPTNVJLuRZS+ONuCPUVFJ/plm0bkhjyjZ6fjWUtVZFx0dyWaxW4jmijIWV/nTjp9Kz5mH2eE7MsjYfGKlF5I0aMz/AL+A/gwHamaxi3YMjbo7gBhj+E/5FZ8qNHLU5fUrVWvna0yhUljt6ZqG4t5FhW5tz+6LgSJ/cb1rat5I7qXLKqyLxn1Hf/PvRfQLZsfMBEM/DY6AdiPpUxjqa8xx+rQRtxcdG79lPt/n1rPh0kqWe3bIPIwemK3dSjEkbptOYmIZW6n6fzrn7XUjYXTRtgRvz1yB/nioqR940hL3dC/5jSJscbG9aZGpEmJDlh0OasTMlxD5itkcY7VTaQQsOBkenH0ropxtuclaRPMzbHR8dScnuewrNkiZSS2ee38+lXlkxt6FOnNJIgZcdG2nvwK3tc47mLNCu3bt79AAPr+FYGoSeXJnnJ9OK6W5jQMeV5znjt2rl9Ub5iEGQe2e1NRtuROVytb6isbg7ySe3aum0vXH+UDn5h0PT3rjINOlkZcL78dfx7d637PTZ7dRngj73bipnOothwpU5bnb2upNIwy7DnPXrWxb6k5XAPI44PT0rzz7VPCwGDt+v+feuk8NSXGpXCIsZx/tdaqhWk5WMsRhoKNzvdO33WAq8H+9jH4Vs2tqd43DP1HSr2geHZFRA643/wAv8a6pfC8dvFvb5vQe1e9Rw0pas8KrKNrI52OxbaGGBn3roNNXyLFsrhh+v+cU37GWxtPyqfTvU8ULNBsUHA74wK9KjTUdUcco3Y+3DfeI680y6+ZlGM+9T26uqc52r07U1owzZ7/rmsnG0rmqd42LFjHtxj9abqUayRsCMdquW6rFHuYjnp7j8qzbuffMFj6fXpWqnaNifZFKHT1mPyjIBqS60nyVDNkdxWtpm1fnYD296g1O48yTapyc1S5bGfsHYyY7PrwSP89KhkbY2Ov071p3DG3gJJ/PnNcvcXh87APKnnH+fpWjcYmaoNs0b9GWNXjH0xnNYcmVuN7EkcV0SXCS6ewbkle/0rktUujHLhQw5xmsZTdzqVFKLsfQkczquzqPpTGsZI2V05J68dKT7VFMcRurFufQ47dau21wscWGyz56Y7V3JnkziiJrffHuwAy+lMaF1jDN1461I18I5CPXrx3qe3kN5E4BDAeg5pmNtdBlvMjPsIzkcGgfuZDtwB3qtbxvDeKrc5PBxVvUMwyOMdBnrWMpWWh0RjcnjkXyz9e1ULyQeb8w4HeobO+3SOOoUZwe1PaYSyLgjBbFTe5pCKuV/LPmbjkY6YrH1r5pwXzt6d/xrrGhRImLFRgd8YrDuIxdMBtwQfzrCTaOhQTLOi3XkosJ6HpW75abRyOe2Olc5ZzIt55a4JT0HStSa8C8Ljn61pB6XIlDsWJrwwsAq8AVQk1IPMxVQKbdSfu8ofmxnFUbGQ3UjOoDYHrnHvSlOw4UkPmumaTCsfwq1p+kTTSGS4yyN2JqKzsUe/Qucc9K6WSZLf5VYAKvT2qIu7uzZw00M6O1FvJJHHgZ/Gr2nSJa28ikg7u+KyWvBIssq8np1rMn1JljCK3zt0FVKfKiY0m2Wby6H2ptozg5qDVJ1a0kHHKH+VY7PcLOzSKzKThWwT3xVXVNQMls6Q8kKe9ckqj6nXCirGVY3y2dySzZLHtV+/1MzKoH8XA7elciBMt4iSBl56t35rodQZIbYyN8rKuTnjtxWMakrGvsIlS8tZWYMoJA56f0rsPCMxg08hulcz4ZuDqM+JhvjJx/n9K7+10+No/JhUYGefSumgteZHLVjy6Mq2eqD+0cBiQRTvEGZrVvL5Pb3rF1hxpN5GVGNzYJ7Vo3V4JrEFeWI49qtyvdByrdGp4Js22eZMORmtbWL7a2xeWFZ2hXL2enfdIyOOayNY1WSO4jKjPmnvVt8tOxnGHNMq6xYvMWlcnjpmuUaYrKV3fd6V6FfqLzR8AgSY6CuE+ywiR2uGGVz+NcNelfY1HJcBVyxBwP8/0qOS+OSo4U9azb66SKTEJG32qmuoN83oK4pNrQ2pwudJ9uEagKTk8nNRreJJl5CAOnNc//AGn34Pahrl7uZrdGxJH95R1FRe50wTia9xKt3sSM4Q/e9qZJE32fZGSC2Bj9a1NN8K3P2H7RcfIsg/dr3+tZU9wYZGHUx8HPH5etKpQdtVua062u5VjgK3SdSuPfFT3EzTXblSqxwYXnGSTnoPwNaX/CP39xaxywqDFIm7rjH19eKs23g26u7e4n2JERhR8+eQDkD1HTr/8Ar51gqmyR0/W6a3YktwuyFl5yv0/Go5JF8oDjI4qvNp91+7itgkn2dfmdemPcnp0ottKvpLWe9RYzawS7JGL9zyMfnzV+wnvYlVY9yG8gZbiCdR8ynDDPUf5FXb/MtuI+is2T7VTvjJtHU7WHzKvAz05/T8qm0u7F5MYLjd56puzjIGOOQPfFR7DddzX22z7FPUX+Z7ZSTtwV+tOljMJhnQHa42uPQ1jyamzas6bGdwy4jx83OMe3cVptdrJCywlpYXXIGDkEf/qrH2LvdG/ttEUZVaSR44zywJP+NU/tzw3Ecczr5wXHXrj/ACam84qM/PGUGeQRkf5NYGoSfbLqJ4WIeN88e/aueUWjphJSLN5Cbq8Dou0pkDitDRbctLPHdiXy0AcxqOZAeg56cd+fp6Ulncttk+WXhlY9/euh8N3yzThYSkR5DgnruIDDnp65HPHpmtMLGMqq5iMROUab5TEurDMTxqhO3+EnlD/nFVbVRtMUjASBgVbHB/zmun1nTXt74iHfNvj3+WASNp5z7dj+Nc5df6NL5pGUbjA/h/z/AEqq9F0p2YUa6qwujH1i3mhmEsKB1kGMbv8APvVVWlvLFUmjAdM89euf85rq2VJ7XA27Xwcd6ymt03B0ODJkP6A81k4amqmra9DnrVRHMSu4H+JWNT6tuurMhGJaM5A74/8A1VDqEj6fNv2gE9ct1x2qjf3zqEnhOY24kj60uSxopXKWrSbbBLiMcodsmR09Dmsi50uOZEmhwVkGR061pX80KrIxH7qRfmXng+tZtnqCNbmMlcwtnaeh6f4Ck6Y1PoMtYzZ71Ytsft1ptxHuQtD0xx171buirQho23D6YrAkuTFIQp4HQU4x5TOTuXLW5/5Zyn/d+bv/AJ/nU3nbhgnB5rIkuBMSIiGf0H+etaVnZzffYEBuozn/AD0reEWzlqNIpXpGGC555x7965i8mVJn8z5gMfjXpFn4TuNUmVQrbG+7WlqnwbV7cMjAN/c9666dCTOKpVseZ6deRF9rHHOOvNdNYwrcBQqkDGDkZpzfDttIkCsxbnnH+fwrp9D8PiFgXjUen1rRUnszJVOpUtPCf2pl3xgk/l/nFejeC/A9vZP5jRjrnp+dXPDmirNIpdcd8/59q9B0fS1Vh0AXpkZr0MLhIr3rHLWrzl7pVt7XyZEUDGe4qTULhpJFhVgWPP1zWrPaFgPLA+Xjms9dLnXUI5WG6MEbm7/54rv9DmdraleS3NjgSA/MafdXixQ4AAXjPbNauueXNIrqflUda43WLrduiBPyjr/9eqlLlRkkXJ9Uj5WM/dz155rOXUS0xG/5T71zs2opHkMTuPvU8bboRKpyK5JVeY1Ubbo66O+LLyScjgD/AD71WadST6579Sawm1DyV+9yevvU0NztjyxJ4/zzUe0Zpoa/9qFRtXIH1xn/ADmn290GIZiTnkfNWBJeHHynPPrxTo74RR5J9+nFaQqakPXY1NUvMqyKSSfQ1zDs3nFgchalurx5NpUH5umD1FN+yzy4YIQT1yK295mSqRTsWoWfyzySDjC+lZ+qDy8OwBB56Zya3NOtQrYuB9V4NQa8rSR+XYxFwg5bBGa6IwW7MKlXm0R6jCzW8nmr5oQtkHA6c55/AflUq6oSpaFgfm6Y5HfA/OoZmEKR7f8AVjn/AHTVKymLXUj5G9O/r+FdLPOaH3t3PbMzSttkUAhe2Oc9f51u+G7xfPVSrAyZ3DA4yAe31rmtW/0i4VTgu/HPcd/51eh2WTRi1JyRknPI/wAe1ZN6lRhY6p761XUFAZSB1I6euDWfquoo0zqjBgRx9KyLkLccxkiXOSQeveq0l39mmhZscLiTcO/H9Kl2NU5bIuRTIWkktM78ZZT2/wA81XkubiFR5IbcTlAOMjJ+vrj16VDbqZrxplUOid8/TH+FP1CN5Y1DMdu4njtilzJrQSpSuLHr11DLcR3bruTopAxjJyffj/Ip8WtI/wDrHiZi2UO4AKM8Anuen51yupSy2rFreSTvz3GeD/TvVJPMWMSKZhgkspzk5IJOP89Olc0ql9LHSqbj1O20q5ZtYLOvltN0Vl5Hp9RXTzWMswV9u1UGW9x/jWL4E0WO6hW9fLbSpVWU/L15P1612WpT7rV/mHPB4744reEbRMnOT0OXaSJWBcP8vQqSMf5ODVawt5H1CWFCEBAbcq44Of8ACpbuF/sjhWByTgY9T3rZsbeKzhhEhHmGMBm9TQ/MceZFKaMW8itG28q3K45z/wDXrSS0+0fvbhztK/ezjPUfj2qhfS+dcE26k7W+XHrjjFbP2No7dAp3EfMQTxUx5ZbFvnXU52+jNrI0dqqcfeJB4zz681XNr5c8gKhggyDycg446D2raljOW8/cGfGB1BHHf1rI1CTFwilJU+blTzuA7n/P9aUnYS5mjVv9PVtDcuI0Yll/dgAEDgCuB0/T5JpC3luyFjtO0KAAcDgHrgjr19+p7ibVPOsVVPlYYGD275rJka4SEbSwB7gYORzx+orGpGM3dm0Jypx06kM2hxRw+ZdRpGwXO1uenP8ASuZfQZNcmkWN8QqDuJ4A5/n1ra1C5u9RyjkmacY8v+6ue/v3pt0zWsUdhCu7znHmMoPze+aznGLei0LpVpLfco6fJp2m3jRWpMYgO0YXg47109lrHlsnzLl/ur61yGmeDW0nR47bz57lYiUee6naSVzyT+8PznGevHAFdLpultDAkqxuViKblboRxkHvjkc5q4xktyZ1IyLGs2ceoGOVY/lGCSeSf8mrmi6ClxH5l0uI1+6u7sKgtZpPLaKYON7H5iA27uP5fzrdj/eRxxzN5aquW52nHarSs7kOTtZD5F+1Yht1VLdcDgelVm0GHVGWDbuaNs7hz+lWr66WzQRW2UMYwflzVbQtSFr9p+0MUe5wIyf4cdfxwTVt66kxTtoW7/QxbW4t1wNsZLE/T1rwvXLi4/tOeCPcoViFUZ6Cvbdd1+M6e0wAV5QTt/u47ZrktA0tLnUIp7ld6SfOW247+vtgH6E1hW99qKN6XuK7OGuvCl9Z6et1c4XcM7Tk5zzgcVgQ6feXjMYw4jT5mK87R7//AK6+iPEGj29/arHLhgjHyxnuB/8AXFVtB8L2tvJsEarHtUu5UAyYGRn8/wBawqYHmlZPQqOJ5YtnlnhP4SarrUdxcao4s7WRc2u4ZLE55wPQgH0545Ga9Is/hrpWi2o8pTLKVZVndsuOuSAD1ySa7yzHn3EQjTPTqcBQP8/5xS3sgjhIYbwRlmI55HA6+prqp4SlTWiMJ4qrUer0MKx0f7ZGyuVCpiNDn72OxHrWLrHhe0u5oZmtVYxkcADBwOM9+MDHNdRBdG1hUxhsq2/5eCf84pPMDwrH95+SFb+HOe30I/z1qylpYavHW5zYhPmFJlWOOMYLA/L79cn3zWvp2nB9IZ41XbI52/Q45H44qLVNPbyCJCchcDnk8dCfxqPQ7lIY4IZgYzEPvAnAI+nJ7+/500rSsx30uihY+E7aPVjCwbE77X3Z7noOw6/p+FWta8PWdrMlvDAzwNHlEAP3uxJH+8SR+Nb9rCbgiUh2ZcFcYAx9aS4i2t5lwpfZwM56+3vTVJLYj22pxEnhO3guiqqzQMMLhc4IyQevHIX8O/euj0PwLZ6JZL51usty6t5jZ3MwY7tue4HH1xUklwXYuoKBe2aqSalJZyK7Endn8aUaMI62HKvOWlzgfHHgeO41Yf2eUhD8SB1xgYxgenbPqRnsK1PDvw2it/JW6laeOEMwDENgnO1VJ6qAcY/Pmt6RotQuM3BlZXfIVT0J9efQfpXR280Mdi68RwIAFy2MkdPrWUKEOZuxvPETUErnzv4gtHXxReRWKJOsF0yMxJJ3AA4I9OQMjnjr0rB8YeDbzwu0WpXTyR20zgeWAGP1xnAHevoXR9BtbjWZ9R+zwrBDlo2K8s56kEngY/CuP+K0v/CSWpsI/lhPRtuSDnArjr4GDpyl16Hbh8wn7SMenU8qLJqFmr2zMXjj8zccLx7fhg/nWbLe3EKlLdsNw/ynhwD6d+v6mvQvCnha10nSSt7K8x24LN8oOCoHTt8oxxnnNadt4ZtIbMvNMZWlk39yCOeo9Qenv29eCOXy0knY73mMFdbmNeXcmraa8pSMTwltyjkEgsF298YBxz26nGTXg8F3WvW4eMmJJF+Z2ORuHQYHeuzh8Pwts+8EbkNjLDaMAYHbOOnvXdeFfDltY6RNBCsbq4L85z+H5V6f1ONVrn1PN+vOknyHz5daBc2jfZp9+5MhSBjec9MnA6d6NH8KX7NB9oSQLc5KRlcsV5wQO/Ga90j8NQOym+RHf73oB7U++0dBNBJbQnbEmO3POf6VP9lwTuW82nax45/whMut3CW15Ao2fPE6gjfkk4bttAx04615z4q8E3vhPVbqFYLq5sc7oWRCWcbSSoPTghQeOAc44r6o03TR9qkuJImRk4BPXpjn2wOnvVHxBYw3U6DA4QLnn6nPPQjiqqZfTlHzFSzKpGXkfG39j6p4owuj2Uq7JVjc7T5aEtjkn3PX8aoXHw/1fTbyFb5TELoH5o42faBwchc88dPYnoM19h2OiIJJVjtQx+0ZVdg4J9j75rG8ZfBf/hKo7mfVSEupsLHIpJMScEqDxjJAOMdsVzvKouPdnSs4alZ6I+SbK3v1ZoIVaXacD5eTTI9Lvry8aERjKEglfr0NfQ158JpNJs2jRs3LyAg7uHJ4J9ifyqzpfwhvGZ5r2MQJsA3IPvAdzWEcra0Z0SzWm1c+adW0ZtGvUVmyxIDDsa7fwdodxqlwokTMKnOSOtejeIfgnb6xdRC2uZodh3OxQHc2047jgYH5nHWu58P/AA2sdB0eEbmF0iAM27IJ65x+nFbU8BPm0Whz1Mwpcu92YFn4eh02MNIioFGdtUdYvlkjY25BVcDNa3iDSr24ZkjeRIt+2PbHktj8av6T4Lie1e2u9qOxVtxHUjPFdcaEvhSOaeIhbmueWfYrnVLxdqOyL19c56VuR6HcQsgEZVSBu4+lerWPhO20/iGEsR0bbmm39iFXLQ7VCgZ29OlVHC21Zl9aj0OX0pTbqqxjJI9M811WnzOVJbp9f61m29mnmptwC5wP/wBdXrkSWtsZI2CFTt64z711QizKeIjfQ1YZouTMyjDYPzVUl1yFlkIXCJkBs8Zz/LrWH/aUgjM0myIyLnaQSecgEY4Pp6/lVgLajTQzxS3AZiWZW27R1OB+H+eKuMLHPOpJ7CXitIrAODluinIP5f55rjNYt51d2tvnyOoPf8av33imxjmSys5GEyBc7jldx4A3HGD39ORjrV/S7Oa4uT9oPl7IxuYjGFPGAcdSM/5FRKHNoCqyj7zPPJNEvLj7u6RyB8u3JPPAAH+eldJpXhPWp7AqtpLhR8pbA+vXt716ho9jZQ2rXBjCmOQJvboSARknjg8du4/HSmuoorUNCCgdSVbe2H/3hnHXH/1uDUwwke4Sxc3sjxFdJuLUyz3DLIkIJKx5Ow5CjJxjGSM5+nFVJrs9FUnYQTtbIK46/wA/zr1Xxhp8F5YrcNuDyAsUcAk/KMdf5deMe9cQy20ELrBsjZkG5jySOCO3B4/zg1E8IujFHFtfEtTl7/VPJRBlgW4x3pLW+lumCWqszY5wucY9anurGO/baSIyGCszenr9f/r11+g6bbx2Sw26ABMbm6Z4H+fxpUsNLn12HUxkeX3VqYmlafPcNG0nypHn5j0z16/XI/rWw0MzRkJ8kcXGevbnA7dquSanZ2t0qRMqxmMZMZymTyOhPXPfkYIxmoJLhZJ2EJZYiAY+3rn+or0LJaI4HKTd2UpI2jYJIf3hb7ifeP6e386qNqXVLeMrvfBHHTb1+lF/cwxsfny24ZY5J6855wOhJqpb3kVjN5skXDdMdMD35OeOmKaZLi2euyWhVl+bKY5z0FZbSLZ3MojVQfX+8P8AJrorjZ5b4xu6H3rjLy73XjAjgZB5rCrPleh2wopkt1JuIlySy+nenapqaJFuAy5xzjp71Rh1GNGYTIzs2dvHH+elXbXTRqMJZjwPXsKzjOUmaShGKuzW0LlC0zZJXO01R16ZYZkdjmPvjt9K0P3drbokfVPWsbUoZL2No84PZv8ACtpL3dDGDXNdly11KJbaMK5KHdtNM1G83qNpOG5461i2em3Sx+W2Bh+o6A1pxobdgtx8/wCOaxSlLc3bhEht7FbhWaR8jOPrWhHooSaKXexTpt9c1Wi+W4xDnYTnp1rUupWjVSpA+XrVKnGxDcmzqNBmGk6TBbxncFJDbupBJ/pT7/VNtsUyCDnP5Vwq6863AQs3Axya2LWaa8jO9cAUvadEP2dtS8JVms0C4JLevWrl7BNbRCVWcjAP0rJs4zbzFpjn5sgj/Cte51QXUbRrtfcPlHpU2bWo7j/D8yzQzykHk+3yn/8AXWg15uj2birFjuNZFg0enKDGcFj8wpJL4SXGVQFWH5elO7jGw7JyuXr64QxIq58xOD6H1/Csm41dZtoZQGzjcw6VIdsgUtwXJHPY1QvLcxyNNxtVdpUf/qqHd6lrlRauYn4eNCRjDYOevcVPbq88WWBKqmMn1/zmprCZGtFY5GeCrVoWtxEsT7gME4x04qvZ6XM3J3tY4TVLiTS7xmYM6MPkzz046/QZqXwqBqGpBpn27gwww4PPBB7c/wCetWdcSK+YxjG09M9gazlhbR7yzmt94hDAP83qcGsU9S3DsdvcW7NZyRRqmEc8r/D1Jz7/AOFTQWdvY2ccch8zeoxuPfgDH+fWpdLmhuIvMLHLZbg/dHHFczfa0JLi5t43YrC/7snnP+ea09oJUr6HUR28bQLJGqLtJ3HH8ie/vWVJI012Y4WVRyWOTycH9f8ACqOhaq7xym6ZlQsQvOS3HPes2bVg2pSNDEQgY9M5GBjrRKd7DVNLQ07q5umjxauojB2bsEDjgH61nTahJGBDqJETqSV/dj5T3PPXsPT0rYtr5ZrBlRVwfm+77dc/lVTVtPW609bhkHmxgKvqaJJ7omPYxLiX7fAfldjGxKhW3bgO2B9AK6jw35kNin25YyxONq4xtz65PPTof51y9hHNJMREGQfc+UcjjgZ9McV29jp62tpmIBjjdlxySamjB83MxV56WJ5Ibm+vpA6vFAqlRt5LHAHTt16j0qyy/Z42tyqlI/kBVuuPf9aqWzSpIpmkDj+7WxZ2Ek0wOAqkfnXWktzkcpDbW+ltIXefcXlbqRn8Pxyeakub/wA4BVkIDqN5C9ABjitFrJFYCQggDvWVdLGkwaPkigaEjt5DCDv+QDkEn5h2q3aMqxkou1yRkN1NJCRIV3FQCelT3EaR5wRyOKEhu/Ug8SSo6qIz7HFYNq0NrD+7J3SNgseSO3P5mtGSNZsrM2AaZLp8VumV2kVPLrcvm92xoaddGOPDSZjAOWNU9U1LdmO3JZWbr/OoYZosFG4XGMdqPNt1kO059B6U9xLQprGzScFkUD5qqalKdiR4LH6c1fmUsMQ4JaoYY33b7hd2D8uRSeqsWviuzNsbO5jkR2+ZeSAQPlzU+oPK3lxNuVE79c1sT3ShQFBB/KqsLLIrs+Mjv6GsHHlNk+bUVLhHsxbRhoolXsRljVC6022e3Koib5CC21e/rmq11cHexXO3uV71JG01xCILfOZD8zdwPahu+g0uXUw7Pw9dXiyKpCwmY7TgHvyePpUknh86feQpI+U4x6YyOtdnbw+THFEq7VjHPvVe+09r24TcQFTpjrVKitjN1rspw6Wt+w25j2cZXAx/n+lbkjPGiQxk7sbSyjA4osoo9Pt/LjQ568j9KdNIZCPlCg8VulYxcmSQqWQqp3NjqRn61BPIyrsyD6EVasJhGdkY46HNXhZrtJ25Z/0pslnNRzkRlUyGz8xbvRbWMbeY8xDM4PfpWnd6aNx38A/rUMMMUeRkVCjqVzaCabDHZTF2+YscjP8AD/nmrt9eLdKyx4VcdTTLey8zO0dDUE9qI2xngVdhHI31ml9rUQkUsquGHHA/z/Suk1CJZLPy48/MOxxUV1FHGpeMAMPQd6bZXUjr8wzjpxUrQp33M+30FfLwwwTz9B1ouIY44Cu37vU561vR28jKXY9RxWBrm6O3dFOHPSh6IlK7MuNobj5FQAqfTPIqGbT3tlYnJZzxml8P2ckdyWmycc+1ad7IlzdhVJZuoXPSojI2cWZiTXWmnLMr4XjHP51btdUh1i3ZZIgki53cc1ZuNFLQ7lPJHQ1JpOhJDHuZdrE+lWr3MdNzml0W7W6cw/cz3zSzaPO8flzAFyx5I6Zrs2jW3Qlug9axpb7zJScAAdqcnYEm9jnLrRpMMkjgsDlW7/SrNvbzQWYikUIcgk8dB0rTXF0xDHLdaSEeYDFMOnQ1PNcpxkcRrfgW0vlL+RA653FGjB57EHHXk1t+GdFeC3Mt/Ir5yEUdl7V0kOlmWPpkL7VX+zssojhXrxgCtIpbmbctuhkXVxJbrNDbblEnAZewznH50tpZTvbs8kvzDLJ8oDAkev0AH510DaKVUyMOCKz5ZltlkXqAOfpWiRDb2MWTzoV2yv5m3uxzg4xn9axdStVvoXjYQMJBgLjBXkn5SPun3GK2IJlupJTICFXpWbIRFKXY7Qp6UpAk7mBN4fHlvukZd/8AD0xznH6daks4Wtgd07P8u0huQAOn9KmutU8yVu6gccYNQQrPdK3lkAKfyqE0KUJIns0ieR440YgYAPXtjp64rSvNLgjsdyqDIygN9AMY/KrmjaSscbTMfnIzRqEe23KxnJz83tWl9CYw7nGLbvLuJj3AMdo7j8/yqO+tUVUxDmQENu7Kfp06Z5+tXJka1nZlfIJ4XNYGsaqJrpo4224xu2n6cVm52N40meqR6ozYO5snG7PtWbNKomdlAJY5x2NEMZdgsZyKsvp6mNm5DCs5wuzdVCguGlj+XHXI/pXQw3UMUKrGdjHjPv61xDXzQ3RVhwpHIPT6V0WmY1J1G4lcfn9aIKxM3zRuyee4dpC0ZGPUHirNjcLchYuNycCopYltnKbRgd+1ZUmojT7rzM8Z6+lXKSSJjByOquLVoYS0YAz6DisyGzackyEZz1p1nrTanGAmDkcCpVvlimCscjdS5lYPZy6BPm1XKqOn3hVRrwTEBzx0xV3WLhTbg84Iz0/z6VzlvIguSmDuPPtWU520NqdN2NebTYywmhy3TH1rorKQfZlH8RHp/OsOO8WCPHTjnt/n/wCtVmzmkkk2w9x3qE7bFuL6l9rxY2KMecdPSsg3Usd4SvTdzn61Yvo2R9z5BH+11FSnygm/aAR3x0quWTIbikXI1Nwq5Jyeatx2ZjbLZx29qzLeRjkjqO1aCXR3bWwPwrRR7kcyFuucc4OaZJIJPlzlT61Be3SqvX5uv+f0qolwWXdkk/5/z+FRJpbFRTNWaVViwo46fSqsl55MY75qhcX+Mg9AM/SsxtRJDByR6VzTqnTSpDb3UG+3NzhSMD2rTcPdWGEdiwAI+tcxdXA8zeRleuCa2bLUd0K7MYHQY6VhGeupvKLsXLXWpLCCRJwVIVgpzg5Ix/hWBY6k8NzKxDszzbizfMMYFaWptFMwZfvd8VRtrdCx8slhJjK+tNRfNoTzJRsWLJpbppBE0hYv8qj/AD79a67StJH2fZMBu9fWoNH0+G3EbjGT2611kcaFRt6Hriu2lSstTkq1HLY5xLL7HMBkeWOFAqxuLKoKhscjPQVeurfbMoY5FNmK7eBkj04zWjSRmtRumyQxtveBBjuoraW6iuEPlhdm3jHasBpNsJC4BqgZp4FJVuuelQ522H7PubsM0LatGmejZb0roLzVI7dlFvgDH515/YyPG2+ZvmZvyregb7Uo5zVw1RnOCRevNYMzLhiO3B601bjzVJzkgfh9ahk03zEPlsfr3qOGFoVxTbBRuWYb8qwVm71pzc2fmKecVydy7rOu49DzW7DcGS02qeMUlMbpWMmS4uJZDtJ4PrS3d9IkYLPkD3q2sO0vtUjk9az723du3B5rK7ub8sbFnTU/tAZUsR0qzcWkduSzMQR7dateG9P8mHcwxxnNUfEDK0gRSMHtW32TGMby0J7W+iKFWHPanMwdcL0zmseKBoV3tn2FWY5mYHaGIX8KyUi5QsS3KiTC55zQ9qTAAh4PWq9pIWvAsg4PrXRSLHHCuzHTnmtFFPUz95aI54aewjMfTOat6XEbXIfG4/dqSWTdkLnioo3Mbbm+Y01GwpSlszSWN2yzHHf0pqyJbklgMiq/29pAOdoqnNcM3A4HWqEomxlLiPcTz9aRcbeoNc/JdPCDgkVPYaiWmG8jaKycnzGsYrlOmghWKPfgVajvU2nJ5FZX24vGADxULXDc7e9bWMLXJNS1PdJtHf1qhbFpblQDlSar3duzZdiQeevarGjy7D8xqLPmNtOWx1kapDCq8Agc1QvlRUbcQD15qJb85OTnPasrVJ5ZMiPPPtWhko66mfdyGSVlj+bH6021mfzguDjPcdahWRbedROwyTWpNGkcPmxkZ65Fc8nrc6FBWsWXvvLUIpye9U57NbwksOf5VTtbwTzYbGA1Xbq4EYXnj+VXF3V2JwtoZ11bra5EeCO5qhZo32kyqMknrjtV24uRLncRj+dXrO3SO13kAcdxyaW+wWsNtLjc+2YkjpWxa26sh9+cVysl6PtZ2du/rXTeH5vOUCTr07VcJXMqkFEj1KyLQt9OBXHalb/ZyRnB5r0TVV2g8YFcZ4htA1rlevJzU1WaUo6HLQ6gIZgFbPb64rTs9QSWZRn5s8GuJ1O4ks585GTzhqdperN9qjAY72/KueFS0rG06Dauex27KtmNw+ZsU6OxjCiTblmrP0+43Qwg8EgVtwyKGAHYCu+NmcTjYyfEM0lva7YAAdtcja2dxqEh80MFPBrstaIml2Y5FT2tnHBb7yBVbaifkcbfadDZx4Ubf8a5PVF8yQqozniuy8QXibmXI57VyEkyyTHJHtXPVldHTTpPczbixWGEuxO7B60ujyIEIUEs3ema9eFbV1UEZGM0zwoq8GTOScf5/MVlGp7xVSj7tzqNjqq7soG6461m6uzrCfJHAHPvXUy2fnW4foBye2azJ4VuLdl644rrUrnPyHjuvXl35xjtQ7MTjg/4Vh3M0tiDvCCR8FyT0/8Ar16nqlja6NC81yuWboD/ACrxnxHcXeoaqzQI+xmyFA4+tcVRNHZBc3oe6eG5Wuk3MSQDV+/uCqkjisnwiSbEHJztX9a1pep966uTmMZWicw0LNcszfxdyePzrpPD+Lcbug7VjXvy5x6Vds5GW3IU8c/zpxhYzbci5rGoLGXYEECuM1zVvNU+XjIPpWprzNn7zckA8+9cpP8ANbuWySvSuSs5M78PSVkaWg+KWtVwy5HetxNbFxOJNxxnBGa461hQq3y9wP0q1YE+W/8Au1hCUrHV7GJ6Tbk6hHhWzkce9VJLL7PPuYH04qPwtM5jUliTuxWhqfzMxbkg8fnXUoc0bnFP3JWKqyGZtuM4q1Y3UlrcKQMoD3NLp8a5Q7Rk1ehjViMjPP8AUVcadtTKc9bC3lzJdNhvp7mpZGCwYbghalSJGfBUYGKS+iRYWCqAB09q0sc6fMUrO+SObDH2FWJrgyMDCQf/ANdYsihbjA4xWirERs2TuUnFRK+50KCLjWryKck5Iz9ayLm6e1dhk5HXFb9sxbOfcVj6lGjtllB3AZ9+lcsrs2jBIwZtYaSYgZ5/T/Gpl8yXB5yB2qb7HCszsI1yGroLO1ia3XKL/nFRGjfct1FHZHF3HnPuHlk9z2+lVo7yayKmRHQH27V3UVvEZD8i9P8AH/CotSsoGQ7o1Od1H1bsxe38jj/+EgMhIZfnH8qkstRkluCFBBzn2qc2Nu2WMS7gRWnZWsKyDbGowccDtmiFN825U5xfQ67w8rXNqskxxx6VrQ3Bikx/DWXp7GO3UR/KD6VbhOdpPJyK70jgkXJ7rcct+tU5rtOmcVHfMQvBrBmkfzpPmP3c/jSkVTjc1Zr0BcKwPrVSS+MylVBPP8qzRIzTAFiRW7bQR5Hyjkc+/Wua2p0WsVFmbGCCAvOa19LugwABAqndKFjbAHA4/Wq+lsRcEAnAb+tawdtDLluegWqp5PzHt/Os64kSOUjIGO/pVTz5NifMRxVO5Y/McnPFKepcYEeqSDzAyg81JY6ntwrdCabJ8yDdzgUhhRVRlUA8VnbUpxTR0EcyNEW459qpyXkbvtbkZqtayN5WMnvTVUbicc1tYy5UbEmppb2pCHGBjiufW7+1XW5+/NTTfvIju54FV/LVJiVGDux/OnK4QRYuJDLwoI7kf5/zxU+nxgR/NyWqszHGc96sWLFuSc9aFAcnoW47HDhlHH0qdvMC4Oav2gDIu4A5H+FEygqMgf5Fa20Oa7uYUm6Ny2T+NV5LrAPXFa95GgU4UcZrDukHPH8Of0rOTsioRuRPfbcjdjPX3pYJjJjP8qyrknd6ZIrQsP6VkpO50OnpcluMr97O30qmJirbVO3NaVyo2Lx1XNZe0eb09qcldXJSN6wuB5YDEe1XWukXnp/Wuft2OAMnpTrqRs9f85rZaRMuT3jVvLpWjJBP+FU9Nu1ZyqnvWVLM5U5YnJo0r/j4b6D+dZ3fMbOC5TsoVCrljwfeorqZVznr0qKORgoGTiqVzI3HJ561u1ocsdzK1CJppgykkBquy3m2x2Mcnp0qtIx3L7gE1DOx3YycHHFY+zRupMZp4dJHbtuzVq9vDxznPGfeorcDDfh/Wqd9/rD9DVqnaNiHNuRIzDzMk5FXbrWFjtQikj1rGkY/Zi2TkA1i72kkO4k//rNZqOhorvU6S3w2XYjJ7+ldH4ZulWTBI45+tchbsRGME8ir+muyMu0kZPNXFW0M2ubc7TXL5PLPln06VzV5O9xannpT55GaFtzE4pkHMLZ7UNX0NIaI8p8VeY14Io1yc/1q54f0CRZI55BuYY5PQf5zWzqlvG+qNuQHBH9K6KONI7bEahQOB7VlSormuy69eSjZE1heKsw3MPkH0rXs9UWSZmY9O1cbds0atsJGRmp9Nmfy3O45A4/SulLU5t4nVLcxy3TPIRx71DrOsJDCwQgAehrn5JnUrtY8sB+tZHiCaTyD85onLQKMOaRR1TVg0jNv5OeO9ZMMvmSM2c5PAz37VjyyuZyCxPzHr+P+FbNnGoZMD07+4/xNcivJnrqNjL1+Ty4982cZ5981P4R1CO6kG3qCRg+3tSa9Ck2FkG4fX2rO0GJLe4iEKhd2Sf0qXH3hNXjY9qs4xJabWwQV64rPhtVjuGU4AHPNTaLIzWK7iT8tNuOJ5B23Y/CupI43HocJ4ksTq2rmLAaKPtjgdqxtS8OQW+CqqCfTtXZXShZpCowcnmuP1WeRmJZicGm4akRV9j//2Q==" + "fileName": "BunnyPNG.png", + "encodedFile": "data:image/png;base64,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" }, { - "fileName": "bunnyFile2", - "data": "/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX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" + "fileName": "BunnyJPEG.jpg", + "encodedFile": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX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" } ] } diff --git a/api-mobile/test/activity.sh b/api-mobile/test/activity.sh index abd75f824..e559f4e58 100644 --- a/api-mobile/test/activity.sh +++ b/api-mobile/test/activity.sh @@ -1,6 +1,10 @@ # TODO replace `{1}` with a valid JWT token string + +# local dev: localhost:3002/api/activity +# local dev using docker: localhost/api-mobile/activity + curl -X POST \ -d @activity-with-files.json \ - 'localhost:3002/api/activity/' \ + 'localhost/api-mobile/activity/' \ --header "Content-Type: application/json" \ --header 'Authorization: Bearer {1}' \ From c08b6eb0ccbf3cb29694763d70ca67d49c7e8549 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2020 03:32:56 +0000 Subject: [PATCH 052/194] Bump markdown-to-jsx from 6.11.1 to 6.11.4 in /app/lucy Bumps [markdown-to-jsx](https://github.com/probablyup/markdown-to-jsx) from 6.11.1 to 6.11.4. - [Release notes](https://github.com/probablyup/markdown-to-jsx/releases) - [Commits](https://github.com/probablyup/markdown-to-jsx/compare/6.11.1...6.11.4) Signed-off-by: dependabot[bot] --- app/lucy/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/lucy/package-lock.json b/app/lucy/package-lock.json index 42de2ada1..e7fde3445 100644 --- a/app/lucy/package-lock.json +++ b/app/lucy/package-lock.json @@ -11572,9 +11572,9 @@ } }, "markdown-to-jsx": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.1.tgz", - "integrity": "sha512-FdtDAv8d9/tjyHxdCvWZxxOgK2icwzBkTq/dPk+XlQ2B+DYDcwE89FWGzT92erXQ0CQR/bQbpNK3loNYhYL70g==", + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", + "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", "dev": true, "requires": { "prop-types": "^15.6.2", From 19ef368592bdfa71d1b7899e1dad5d59650b4046 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2020 07:30:59 +0000 Subject: [PATCH 053/194] Bump decompress from 4.2.0 to 4.2.1 in /api/api_sources Bumps [decompress](https://github.com/kevva/decompress) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/kevva/decompress/releases) - [Commits](https://github.com/kevva/decompress/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] --- api/api_sources/package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index a05e80669..b5202a320 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -2227,9 +2227,9 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", - "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "dev": true, "requires": { "decompress-tar": "^4.0.0", @@ -4430,7 +4430,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { "kind-of": "^3.0.2" @@ -4485,7 +4485,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { "kind-of": "^3.0.2" @@ -5814,7 +5814,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -5822,7 +5822,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -7355,7 +7355,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -8740,7 +8740,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" From 98737c60e961e12e14576a2444174758004cd3bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2020 16:39:54 +0000 Subject: [PATCH 054/194] Bump handlebars from 4.3.0 to 4.7.6 in /api/api_sources Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.3.0 to 4.7.6. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.3.0...v4.7.6) Signed-off-by: dependabot[bot] --- api/api_sources/package-lock.json | 59 +++++++++++++------------------ 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index a05e80669..6c170ef7a 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -4048,22 +4048,35 @@ } }, "handlebars": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.0.tgz", - "integrity": "sha512-7XlnO8yBXOdi7AzowjZssQr47Ctidqm7GbgARapOaqSN9HQhlClnOkR9HieGauIT3A8MBC6u9wPCXs97PCYpWg==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true } } }, @@ -4430,7 +4443,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { "kind-of": "^3.0.2" @@ -4485,7 +4498,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { "kind-of": "^3.0.2" @@ -5814,7 +5827,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -5822,7 +5835,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -6574,24 +6587,6 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } - } - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -7355,7 +7350,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -8740,7 +8735,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" @@ -10090,12 +10085,6 @@ "triple-beam": "^1.2.0" } }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", From 59a960ac2eeda935a19f89532068845797e96009 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Sep 2020 22:44:15 +0000 Subject: [PATCH 055/194] Bump tree-kill from 1.2.1 to 1.2.2 in /api/api_sources Bumps [tree-kill](https://github.com/pkrumins/node-tree-kill) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/pkrumins/node-tree-kill/releases) - [Commits](https://github.com/pkrumins/node-tree-kill/compare/v1.2.1...v1.2.2) Signed-off-by: dependabot[bot] --- api/api_sources/package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index a05e80669..fd08fdbaa 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -4430,7 +4430,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { "kind-of": "^3.0.2" @@ -4485,7 +4485,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { "kind-of": "^3.0.2" @@ -5814,7 +5814,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -5822,7 +5822,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -7355,7 +7355,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -8740,7 +8740,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" @@ -9202,9 +9202,9 @@ } }, "tree-kill": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", - "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" }, "trim-repeated": { "version": "1.0.0", From af156b8e431299ca7800ffb0bae76d717616235c Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Fri, 4 Sep 2020 16:17:32 -0700 Subject: [PATCH 056/194] New geog column --- .../20200811120312_activity_incoming_data.ts | 6 +++++- api-mobile/src/queries/activity-queries.ts | 13 +++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts index cfc24a291..c44e8a3a5 100644 --- a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts +++ b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts @@ -35,9 +35,13 @@ export async function up(knex: Knex): Promise { COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN geom geometry(Geometry,3005) CHECK (st_isValid(geom)); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.geom IS 'Geometry collection in Albers projection.'; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.geom IS 'Geometry in Albers projection.'; CREATE index activity_incoming_data_gist on ${DB_SCHEMA}.activity_incoming_data using gist ("geom"); + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN geog geography(Geometry); + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.geog IS 'Geography type containing a geometry.'; + CREATE index activity_incoming_data_gist2 on ${DB_SCHEMA}.activity_incoming_data using gist ("geog"); + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_payload JSONB; COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index dccb02bd7..a91a810be 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -18,7 +18,7 @@ export const postActivitySQL = (activityData: ActivityPostBody): SQLStatement => activity_sub_type, received_timestamp, activity_payload, - geom, + geog, media_keys ) VALUES ( ${activityData.activityType}, @@ -26,14 +26,11 @@ export const postActivitySQL = (activityData: ActivityPostBody): SQLStatement => ${activityData.date}, ${activityData.activityPostBody}, public.ST_Force2D( - public.ST_Transform( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${JSON.stringify(activityData.locationAndGeometry['geometry'])}) - ,4326 - ) - ,3005 + public.ST_SetSRID( + public.ST_GeomFromGeoJSON(${JSON.stringify(activityData.locationAndGeometry['geometry'])}) + ,4326 ) - ), + )::geography, ${activityData.mediaKeys} ) RETURNING From fa5d26a43234f4bb928104415705c165e176f81a Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Fri, 4 Sep 2020 18:59:16 -0700 Subject: [PATCH 057/194] 629: get activities - Add GET activity endpoint to fetch multiple activity records based on some initial simple filter criteria - Add GET activity/{id} endpoint to fetch a single activity record and any S3 media it has - media is returned as base64 encoded string, in the same object format as it was originally sent to the api for upload --- api-mobile/app.ts | 7 +- api-mobile/src/models/activity.ts | 50 +++- api-mobile/src/paths/activity.ts | 217 ++++++++++++++++- api-mobile/src/paths/activity/{activityId}.ts | 218 ++++++++++++++++++ .../src/paths/code/observation/plant.ts | 4 +- api-mobile/src/paths/misc/version.ts | 1 - .../observation/plant/{observationId}.ts | 10 +- api-mobile/src/queries/activity-queries.ts | 54 ++++- 8 files changed, 532 insertions(+), 29 deletions(-) create mode 100644 api-mobile/src/paths/activity/{activityId}.ts diff --git a/api-mobile/app.ts b/api-mobile/app.ts index d2a127800..d0d766375 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -45,9 +45,14 @@ const openAPIFramework = initialize({ return authenticate(req, scopes); } }, + errorTransformer: function (openapiError: object, ajvError: object): object { + // Transform openapi-request-validator and openapi-response-validator errors + return ajvError; + }, errorMiddleware: function (error, req, res, next) { if (!error.status) { - // log any unintentional errors (where no status has been set) + // TODO some unplanned errors do have a status, maybe change status to code for intentional errors? + // log any unintentionally thrown errors (where no status has been set) defaultLog.error({ label: 'errorMiddleware', message: 'unexpected error', error }); } diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 1b245a1a8..ac5c117e5 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -1,4 +1,4 @@ -import { parseBase64DataURLString } from '../utils/file-utils'; +import { parseBase64DataURLString } from './../utils/file-utils'; /** * A single media item. @@ -44,12 +44,12 @@ export class MediaBase64 { } /** - * Activity post body. + * Activity post request body. * * @export - * @class ActivityPostBody + * @class ActivityPostRequestBody */ -export class ActivityPostBody { +export class ActivityPostRequestBody { activityPostBody: object; activityResponseBody: object; @@ -66,10 +66,10 @@ export class ActivityPostBody { mediaKeys: string[]; /** - * Creates an instance of ActivityPostBody. + * Creates an instance of ActivityPostRequestBody. * * @param {*} [obj] - * @memberof ActivityPostBody + * @memberof ActivityPostRequestBody */ constructor(obj?: any) { // Add whole original object for auditing @@ -92,3 +92,41 @@ export class ActivityPostBody { this.mediaKeys = (obj && obj.mediaKeys) || null; } } + +/** + * Activity get search criteria object. + * + * @export + * @class ActivitySearchCriteria + */ +export class ActivitySearchCriteria { + activityType: string; + activitySubType: string; + + page: number; + limit: number; + + dateRangeStart: Date; + dateRangeEnd: Date; + + includeMedia: boolean; + + /** + * Creates an instance of ActivitySearchCriteria. + * + * @param {*} [obj] + * @memberof ActivitySearchCriteria + */ + constructor(obj?: any) { + this.activityType = (obj && obj.activityType) || null; + this.activitySubType = (obj && obj.activitySubType) || null; + + this.page = (obj && obj.page) || 0; + this.limit = (obj && obj.limit) || 50; + + this.dateRangeStart = (obj && obj.dateRangeStart) || null; + this.dateRangeEnd = (obj && obj.dateRangeEnd) || null; + + this.includeMedia = (obj && obj.includeMedia) || false; + } +} diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 6150eb8d4..6206fc5c6 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -4,15 +4,163 @@ import { ManagedUpload } from 'aws-sdk/clients/s3'; import { RequestHandler } from 'express'; import { Operation } from 'express-openapi'; import { SQLStatement } from 'sql-template-strings'; -import { WRITE_ROLES } from '../constants/misc'; -import { getDBConnection } from '../database/db'; -import { ActivityPostBody, IMediaItem, MediaBase64 } from '../models/activity'; -import { postActivitySQL } from '../queries/activity-queries'; -import { uploadFileToS3 } from '../utils/file-utils'; -import { getLogger } from '../utils/logger'; +import { ALL_ROLES, WRITE_ROLES } from './../constants/misc'; +import { getDBConnection } from './../database/db'; +import { ActivityPostRequestBody, ActivitySearchCriteria, IMediaItem, MediaBase64 } from './../models/activity'; +import { getActivitiesSQL, postActivitySQL } from './../queries/activity-queries'; +import { uploadFileToS3 } from './../utils/file-utils'; +import { getLogger } from './../utils/logger'; const defaultLog = getLogger('activity-controller'); +export const GET: Operation = [getAllActivities()]; + +GET.apiDoc = { + description: 'Fetches all activities based on search criteria.', + tags: ['activity'], + security: [ + { + Bearer: ALL_ROLES + } + ], + requestBody: { + description: 'Activities search criteria object.', + content: { + 'application/json': { + schema: { + properties: { + activityType: { + type: 'string' + }, + activitySubType: { + type: 'string' + }, + page: { + type: 'number', + default: 0, + minimum: 0 + }, + limit: { + type: 'number', + default: 25, + minimum: 0, + maximum: 100 + }, + dateRangeStart: { + type: 'string', + description: 'Date range start, in YYYY-MM-DD format' + }, + dateRangeEnd: { + type: 'string', + description: 'Date range end, in YYYY-MM-DD format' + } + } + } + } + } + }, + responses: { + 200: { + description: 'Activity get response object array.', + content: { + 'application/json': { + schema: { + type: 'array', + items: { + type: 'object', + properties: { + activityType: { + type: 'string' + }, + activityTypeData: { + type: 'object' + }, + activitySubType: { + type: 'string' + }, + activitySubTypeData: { + type: 'object' + }, + date: { + type: 'string', + description: 'Date in YYYY-MM-DD format' + }, + locationAndGeometry: { + type: 'object', + description: 'Location and geometry information', + properties: { + anchorPointY: { + type: 'number' + }, + anchorPointX: { + type: 'number' + }, + area: { + type: 'number' + }, + geometry: { + type: 'object', + description: 'A geoJSON object' + }, + jurisdiction: { + type: 'string' + }, + agency: { + type: 'string' + }, + observer1FirstName: { + type: 'string' + }, + observer1LastName: { + type: 'string' + }, + locationComment: { + type: 'string' + }, + generalComment: { + type: 'string' + }, + photoTaken: { + type: 'boolean' + } + } + }, + media: { + type: 'array', + description: 'An array of media objects associated to the activity record', + items: { + type: 'object', + properties: { + fileName: { + type: 'string' + }, + encodedFile: { + type: 'string', + format: 'base64', + description: 'A Data URL base64 encoded image', + example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' + } + } + } + } + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + export const POST: Operation = [uploadMedia(), createActivity()]; POST.apiDoc = { @@ -55,6 +203,8 @@ POST.apiDoc = { }, locationAndGeometry: { type: 'object', + additionalProperties: false, + description: 'Location and geometry information', properties: { anchorPointY: { type: 'number' @@ -93,10 +243,11 @@ POST.apiDoc = { } }, media: { - description: 'The keys for the uploaded files', type: 'array', + description: 'An array of media objects to upload and associate to the activity record', items: { type: 'object', + additionalProperties: false, required: ['fileName', 'encodedFile'], properties: { fileName: { @@ -173,7 +324,8 @@ function uploadMedia(): RequestHandler { } catch (error) { throw { status: 400, - message: 'Included media was invalid/encoded incorrectly' + message: 'Included media was invalid/encoded incorrectly', + errors: [error] }; } @@ -203,15 +355,16 @@ function createActivity(): RequestHandler { return async (req, res, next) => { defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); - const data: ActivityPostBody = { ...req.body, mediaKeys: req['mediaKeys'] }; + const data: ActivityPostRequestBody = { ...req.body, mediaKeys: req['mediaKeys'] }; - const sanitizedActivityData = new ActivityPostBody(data); + const sanitizedActivityData = new ActivityPostRequestBody(data); const connection = await getDBConnection(); if (!connection) { throw { - status: 503 + status: 503, + message: 'Failed to establish database connection' }; } @@ -219,16 +372,56 @@ function createActivity(): RequestHandler { if (!sqlStatement) { throw { - status: 400 + status: 400, + message: 'Failed to build SQL statement' }; } const response = await connection.query(sqlStatement.text, sqlStatement.values); + connection.release(); + const result = (response && response.rows && response.rows[0]) || null; + return res.status(200).json(result); + }; +} + +/** + * Fetches all activity records based on request search criteria. + * + * @return {RequestHandler} + */ +function getAllActivities(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); + + const sanitizedSearchCriteria = new ActivitySearchCriteria(req.body); + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + const sqlStatement: SQLStatement = getActivitiesSQL(sanitizedSearchCriteria); + + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + connection.release(); + const result = (response && response.rows) || null; + return res.status(200).json(result); }; } diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts new file mode 100644 index 000000000..d8562fac2 --- /dev/null +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -0,0 +1,218 @@ +'use strict'; + +import { GetObjectOutput } from 'aws-sdk/clients/s3'; +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { SQLStatement } from 'sql-template-strings'; +import { ALL_ROLES } from './../../constants/misc'; +import { getDBConnection } from './../../database/db'; +import { IMediaItem } from './../../models/activity'; +import { getActivitySQL } from './../../queries/activity-queries'; +import { getFileFromS3 } from './../../utils/file-utils'; +import { getLogger } from './../../utils/logger'; + +const defaultLog = getLogger('activity-controller'); + +export const GET: Operation = [getActivity(), getMedia(), returnActivity()]; + +export const parameters = [ + { + in: 'path', + name: 'activityId', + required: true + } +]; + +GET.apiDoc = { + description: 'Fetches a single activity based on its primary key.', + tags: ['activity'], + security: [ + { + Bearer: ALL_ROLES + } + ], + responses: { + 200: { + description: 'Activity get response object array.', + content: { + 'application/json': { + schema: { + properties: { + activityType: { + type: 'string' + }, + activityTypeData: { + type: 'object' + }, + activitySubType: { + type: 'string' + }, + activitySubTypeData: { + type: 'object' + }, + date: { + type: 'string', + description: 'Date in YYYY-MM-DD format' + }, + locationAndGeometry: { + type: 'object', + description: 'Location and geometry information', + properties: { + anchorPointY: { + type: 'number' + }, + anchorPointX: { + type: 'number' + }, + area: { + type: 'number' + }, + geometry: { + type: 'object', + description: 'A geoJSON object' + }, + jurisdiction: { + type: 'string' + }, + agency: { + type: 'string' + }, + observer1FirstName: { + type: 'string' + }, + observer1LastName: { + type: 'string' + }, + locationComment: { + type: 'string' + }, + generalComment: { + type: 'string' + }, + photoTaken: { + type: 'boolean' + } + } + }, + media: { + type: 'array', + description: 'An array of media objects associated to the activity record', + items: { + type: 'object', + properties: { + fileName: { + type: 'string' + }, + encodedFile: { + type: 'string', + format: 'base64', + description: 'A Data URL base64 encoded image', + example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' + } + } + } + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +/** + * Fetches a single activity record based on its primary key. + * + * @return {RequestHandler} + */ +function getActivity(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ label: '{activityId}', message: 'params', body: req.params }); + + const activityId = Number(req.params.activityId); + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + const sqlStatement: SQLStatement = getActivitySQL(activityId); + + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + + connection.release(); + + const result = (response && response.rows && response.rows[0]) || null; + + req['activity'] = result; + + return next(); + }; +} + +function getMedia(): RequestHandler { + return async (req, res, next) => { + const activity = req['activity']; + + if (!activity || !req['activity'].media_keys || !req['activity'].media_keys.length) { + // No media keys found, skipping get media step + return next(); + } + + const s3GetPromises: Promise[] = []; + + activity['media_keys'].forEach((key: string) => { + s3GetPromises.push(getFileFromS3(key)); + }); + + const response = await Promise.all(s3GetPromises); + + const result: IMediaItem[] = response.map((s3Object: GetObjectOutput) => { + // Encode image buffer as base64 + const contentString = Buffer.from(s3Object.Body).toString('base64'); + + // Append DATA Url string + const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; + + const mediaItem: IMediaItem = { fileName: s3Object.Metadata.filename, encodedFile: encodedFile }; + + return mediaItem; + }); + + // Add encoded media to activity + req['activity'].media = result; + + return next(); + }; +} + +/** + * Sends a 200 response with JSON contents of `rew.activity`. + * + * @return {RequestHandler} + */ +function returnActivity(): RequestHandler { + return async (req, res, next) => { + return res.status(200).json(req['activity']); + }; +} diff --git a/api-mobile/src/paths/code/observation/plant.ts b/api-mobile/src/paths/code/observation/plant.ts index cc5403af3..c92342429 100644 --- a/api-mobile/src/paths/code/observation/plant.ts +++ b/api-mobile/src/paths/code/observation/plant.ts @@ -29,7 +29,8 @@ export const GET: Operation = [ if (!connection) { throw { - status: 503 + status: 503, + message: 'Failed to establish database connection' }; } @@ -46,7 +47,6 @@ export const GET: Operation = [ GET.apiDoc = { description: 'Get all observation plant code values.', tags: ['code'], - operationId: 'code-observation-plant', security: [ { Bearer: ALL_ROLES diff --git a/api-mobile/src/paths/misc/version.ts b/api-mobile/src/paths/misc/version.ts index 6e2ddbb72..8b651db26 100644 --- a/api-mobile/src/paths/misc/version.ts +++ b/api-mobile/src/paths/misc/version.ts @@ -19,7 +19,6 @@ export const GET: Operation = [ GET.apiDoc = { description: 'Get all observation plant code values.', tags: ['misc'], - operationId: 'misc-version', responses: { 200: { description: 'Code values for a plant observation', diff --git a/api-mobile/src/paths/observation/plant/{observationId}.ts b/api-mobile/src/paths/observation/plant/{observationId}.ts index c3bb52b75..a5815da2d 100644 --- a/api-mobile/src/paths/observation/plant/{observationId}.ts +++ b/api-mobile/src/paths/observation/plant/{observationId}.ts @@ -22,7 +22,8 @@ export const GET: Operation = [ if (!req.params || !req.params.observationId) { defaultLog.warn({ label: 'observation-plant-{observationId}', message: 'observationId was null' }); throw { - status: 400 + status: 400, + message: 'Required param observationId was missing or invalid' }; } @@ -32,7 +33,8 @@ export const GET: Operation = [ if (!connection) { throw { - status: 503 + status: 503, + message: 'Failed to establish database connection' }; } @@ -40,7 +42,8 @@ export const GET: Operation = [ if (!sqlStatement) { throw { - status: 400 + status: 400, + message: 'Failed to build SQL statement' }; } @@ -57,7 +60,6 @@ export const GET: Operation = [ GET.apiDoc = { description: 'Get a plant observation for the specific observationId.', tags: ['observation', 'plant'], - operationId: 'observation-plant-{observationId}', security: [ { Bearer: ALL_ROLES diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index dccb02bd7..ed68ea898 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -1,13 +1,13 @@ -import { ActivityPostBody } from '../models/activity'; import { SQL, SQLStatement } from 'sql-template-strings'; +import { ActivityPostRequestBody, ActivitySearchCriteria } from './../models/activity'; /** * SQL query to insert a new activity, and return the inserted record. * - * @param {ActivityPostBody} activityData + * @param {ActivityPostRequestBody} activityData * @returns {SQLStatement} sql query object */ -export const postActivitySQL = (activityData: ActivityPostBody): SQLStatement => { +export const postActivitySQL = (activityData: ActivityPostRequestBody): SQLStatement => { if (!activityData) { return null; } @@ -40,3 +40,51 @@ export const postActivitySQL = (activityData: ActivityPostBody): SQLStatement => activity_incoming_data_id; `; }; + +/** + * SQL query to fetch activity records based on search criteria. + * + * @param {ActivitySearchCriteria} searchCriteria + * @returns {SQLStatement} sql query object + */ +export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLStatement => { + const sqlStatement: SQLStatement = SQL`SELECT * FROM activity_incoming_data`; + + if (searchCriteria.activityType) { + sqlStatement.append(SQL` WHERE activity_type = ${searchCriteria.activityType}`); + } + + if (searchCriteria.activitySubType) { + sqlStatement.append(SQL` WHERE activity_sub_type = ${searchCriteria.activitySubType}`); + } + + if (searchCriteria.dateRangeStart) { + sqlStatement.append(SQL` WHERE received_timestamp >= ${searchCriteria.dateRangeStart}::date`); + } + + if (searchCriteria.dateRangeEnd) { + sqlStatement.append(SQL` WHERE received_timestamp <= ${searchCriteria.dateRangeEnd}::date`); + } + + if (searchCriteria.limit) { + sqlStatement.append(SQL` LIMIT ${searchCriteria.limit}`); + } + + if (searchCriteria.limit) { + sqlStatement.append(SQL` OFFSET ${searchCriteria.page}`); + } + + sqlStatement.append(SQL`;`); + + return sqlStatement; +}; + +/** + * SQL query to fetch a single activity record based on its primary key. + * + * @param {number} activityId + * @returns {SQLStatement} sql query object + */ +export const getActivitySQL = (activityId: number): SQLStatement => { + return SQL`SELECT * FROM activity_incoming_data where activity_incoming_data_id = ${activityId}`; +}; From 83ce34196efc63c546ca92a2c5a6d510b2e3f812 Mon Sep 17 00:00:00 2001 From: Micheal Wells Date: Sat, 5 Sep 2020 11:03:55 -0700 Subject: [PATCH 058/194] comment out failing test for at present unused form --- .../inv-monitoring/nav_plant_monitoring_mech.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts b/app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts index 6f9e42904..29e491eb9 100644 --- a/app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts +++ b/app/cypress-e2e/cypress/integration/inv-monitoring/nav_plant_monitoring_mech.spec.ts @@ -1,5 +1,6 @@ import * as faker from 'faker'; +/* describe('Add or create mechanical monitoring record', () => { beforeEach(() => { cy.svcClientLogout(); @@ -166,3 +167,4 @@ describe('Add or create mechanical monitoring record', () => { cy.contains('button', 'Create Mechanical Treatment').click({ force: true }); }; }); +*/ From 0f2635ea62d4eb3af86e0f26d1355e6c7c8c2961 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2020 08:40:06 +0000 Subject: [PATCH 059/194] Bump http-proxy from 1.18.0 to 1.18.1 in /app/lucy Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1. - [Release notes](https://github.com/http-party/node-http-proxy/releases) - [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md) - [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1) Signed-off-by: dependabot[bot] --- app/lucy/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/lucy/package-lock.json b/app/lucy/package-lock.json index e7fde3445..8d1f1f55f 100644 --- a/app/lucy/package-lock.json +++ b/app/lucy/package-lock.json @@ -9788,9 +9788,9 @@ "dev": true }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", From f4fe290d014d85bcbd47aa0c4119641ac68d1ddf Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 8 Sep 2020 14:32:05 -0700 Subject: [PATCH 060/194] 629: WIP --- api-mobile/.eslintignore | 1 + api-mobile/.prettierignore | 1 + api-mobile/README.md | 7 +-- api-mobile/src/openapi/api-doc.yaml | 2 + api-mobile/src/paths/media/{key}.ts | 66 +++++++++++++++++++++++++++++ api-mobile/src/utils/file-utils.ts | 27 ++++++++++-- 6 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 api-mobile/src/paths/media/{key}.ts diff --git a/api-mobile/.eslintignore b/api-mobile/.eslintignore index 0948e605d..c94c5e177 100644 --- a/api-mobile/.eslintignore +++ b/api-mobile/.eslintignore @@ -1,4 +1,5 @@ node_modules +**/node_modules dist coverage diff --git a/api-mobile/.prettierignore b/api-mobile/.prettierignore index 0948e605d..c94c5e177 100644 --- a/api-mobile/.prettierignore +++ b/api-mobile/.prettierignore @@ -1,4 +1,5 @@ node_modules +**/node_modules dist coverage diff --git a/api-mobile/README.md b/api-mobile/README.md index e413476f3..f21e83376 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -66,10 +66,11 @@ The API is defined in `api-doc.yaml`. If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` or `http://localhost:7080/api/docs/` if running in Docker. -This project uses npm package `swagger-tools` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `api-doc.yaml`. +This project uses npm package `express-openapi` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `api-doc.yaml` and the `./src/path/` content. -- The controller file is specified by the `x-swagger-router-controller` field. -- The controller function, within the controller file, is specified by the `operationId` field. +- The endpoint paths are defined based on the folder structure of the `./src/paths/` folder. + - Example: `/api/activity` is handled by `./src/paths/activity.ts` + - Example: `/api/code/observation/plant` is handled by `./src/paths/code/observation/plant.ts` Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `api-doc.yaml` file. diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index a64e036f7..5e3a793dd 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -33,6 +33,8 @@ tags: description: Plant endpoints - name: code description: Code endpoints + - name: media + description: Media endpoints externalDocs: description: Visit GitHub to find out more about this API diff --git a/api-mobile/src/paths/media/{key}.ts b/api-mobile/src/paths/media/{key}.ts new file mode 100644 index 000000000..a8181dd3a --- /dev/null +++ b/api-mobile/src/paths/media/{key}.ts @@ -0,0 +1,66 @@ +'use strict'; + +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { ALL_ROLES } from './../../constants/misc'; +import { getS3SignedURL } from './../../utils/file-utils'; + +export const GET: Operation = [getSignedURL()]; + +export const parameters = [ + { + in: 'path', + name: 'key', + required: true + } +]; + +GET.apiDoc = { + description: 'Fetches a signed url for a single media item based on its key.', + tags: ['media'], + security: [ + { + Bearer: ALL_ROLES + } + ], + responses: { + 200: { + description: 'Activity get response object array.', + content: { + 'text/plain': { + schema: { + type: 'string', + description: 'A signed url' + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +function getSignedURL(): RequestHandler { + return async (req, res, next) => { + if (!req.params.key) { + throw { + status: 400, + message: 'Missing required path param `key`' + }; + } + + const result = await getS3SignedURL(req.params.key); + console.log('================'); + console.log(result); + console.log('================'); + + return res.status(200).json(result); + }; +} diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts index f3364605c..5a88a333e 100644 --- a/api-mobile/src/utils/file-utils.ts +++ b/api-mobile/src/utils/file-utils.ts @@ -1,7 +1,7 @@ 'use strict'; import AWS from 'aws-sdk'; -import { Metadata, ManagedUpload } from 'aws-sdk/clients/s3'; +import { GetObjectOutput, ManagedUpload, Metadata } from 'aws-sdk/clients/s3'; import { v4 as uuidv4 } from 'uuid'; import { S3ACLRole } from '../constants/misc'; import { MediaBase64 } from '../models/activity'; @@ -14,7 +14,8 @@ const S3 = new AWS.S3({ accessKeyId: process.env.OBJECT_STORE_ACCESS_KEY_ID, secretAccessKey: process.env.OBJECT_STORE_SECRET_KEY_ID, signatureVersion: 'v4', - s3ForcePathStyle: true + s3ForcePathStyle: true, + region: 'ca-central-1' }); /** @@ -22,9 +23,9 @@ const S3 = new AWS.S3({ * * @export * @param {string} key the unique key assigned to the file in S3 when it was originally uploaded - * @returns the response from S3 or null if required parameters are null + * @returns {Promise} the response from S3 or null if required parameters are null */ -export async function getFileFromS3(key: string) { +export async function getFileFromS3(key: string): Promise { if (!key) { return null; } @@ -59,6 +60,24 @@ export async function uploadFileToS3(media: MediaBase64, metadata: Metadata = {} }).promise(); } +/** + * Get an s3 signed url. + * + * @param {string} key S3 object key + * @returns {Promise} the response from S3 or null if required parameters are null + */ +export async function getS3SignedURL(key: string): Promise { + if (!key) { + return null; + } + + return S3.getSignedUrl('getObject', { + Bucket: OBJECT_STORE_BUCKET_NAME, + Key: key, + Expires: 300000 // 5 minutes + }); +} + // Regex matches a Data URL base64 encoded string, and has matching groups for the content type and raw encoded string const base64DataURLRegex = new RegExp(/^data:(\w+\/\w+);base64,(.*)/); From d68c4193f4976949d41eae1eaa376996d94b5704 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 8 Sep 2020 14:32:05 -0700 Subject: [PATCH 061/194] 629: Add endpoint for preSigned media url --- api-mobile/.eslintignore | 1 + api-mobile/.prettierignore | 1 + api-mobile/README.md | 7 +-- api-mobile/src/openapi/api-doc.yaml | 2 + api-mobile/src/paths/media/{key}.ts | 66 +++++++++++++++++++++++++++++ api-mobile/src/utils/file-utils.ts | 27 ++++++++++-- 6 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 api-mobile/src/paths/media/{key}.ts diff --git a/api-mobile/.eslintignore b/api-mobile/.eslintignore index 0948e605d..c94c5e177 100644 --- a/api-mobile/.eslintignore +++ b/api-mobile/.eslintignore @@ -1,4 +1,5 @@ node_modules +**/node_modules dist coverage diff --git a/api-mobile/.prettierignore b/api-mobile/.prettierignore index 0948e605d..c94c5e177 100644 --- a/api-mobile/.prettierignore +++ b/api-mobile/.prettierignore @@ -1,4 +1,5 @@ node_modules +**/node_modules dist coverage diff --git a/api-mobile/README.md b/api-mobile/README.md index e413476f3..f21e83376 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -66,10 +66,11 @@ The API is defined in `api-doc.yaml`. If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` or `http://localhost:7080/api/docs/` if running in Docker. -This project uses npm package `swagger-tools` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `api-doc.yaml`. +This project uses npm package `express-openapi` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `api-doc.yaml` and the `./src/path/` content. -- The controller file is specified by the `x-swagger-router-controller` field. -- The controller function, within the controller file, is specified by the `operationId` field. +- The endpoint paths are defined based on the folder structure of the `./src/paths/` folder. + - Example: `/api/activity` is handled by `./src/paths/activity.ts` + - Example: `/api/code/observation/plant` is handled by `./src/paths/code/observation/plant.ts` Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `api-doc.yaml` file. diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index a64e036f7..5e3a793dd 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -33,6 +33,8 @@ tags: description: Plant endpoints - name: code description: Code endpoints + - name: media + description: Media endpoints externalDocs: description: Visit GitHub to find out more about this API diff --git a/api-mobile/src/paths/media/{key}.ts b/api-mobile/src/paths/media/{key}.ts new file mode 100644 index 000000000..a8181dd3a --- /dev/null +++ b/api-mobile/src/paths/media/{key}.ts @@ -0,0 +1,66 @@ +'use strict'; + +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { ALL_ROLES } from './../../constants/misc'; +import { getS3SignedURL } from './../../utils/file-utils'; + +export const GET: Operation = [getSignedURL()]; + +export const parameters = [ + { + in: 'path', + name: 'key', + required: true + } +]; + +GET.apiDoc = { + description: 'Fetches a signed url for a single media item based on its key.', + tags: ['media'], + security: [ + { + Bearer: ALL_ROLES + } + ], + responses: { + 200: { + description: 'Activity get response object array.', + content: { + 'text/plain': { + schema: { + type: 'string', + description: 'A signed url' + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +function getSignedURL(): RequestHandler { + return async (req, res, next) => { + if (!req.params.key) { + throw { + status: 400, + message: 'Missing required path param `key`' + }; + } + + const result = await getS3SignedURL(req.params.key); + console.log('================'); + console.log(result); + console.log('================'); + + return res.status(200).json(result); + }; +} diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts index f3364605c..5a88a333e 100644 --- a/api-mobile/src/utils/file-utils.ts +++ b/api-mobile/src/utils/file-utils.ts @@ -1,7 +1,7 @@ 'use strict'; import AWS from 'aws-sdk'; -import { Metadata, ManagedUpload } from 'aws-sdk/clients/s3'; +import { GetObjectOutput, ManagedUpload, Metadata } from 'aws-sdk/clients/s3'; import { v4 as uuidv4 } from 'uuid'; import { S3ACLRole } from '../constants/misc'; import { MediaBase64 } from '../models/activity'; @@ -14,7 +14,8 @@ const S3 = new AWS.S3({ accessKeyId: process.env.OBJECT_STORE_ACCESS_KEY_ID, secretAccessKey: process.env.OBJECT_STORE_SECRET_KEY_ID, signatureVersion: 'v4', - s3ForcePathStyle: true + s3ForcePathStyle: true, + region: 'ca-central-1' }); /** @@ -22,9 +23,9 @@ const S3 = new AWS.S3({ * * @export * @param {string} key the unique key assigned to the file in S3 when it was originally uploaded - * @returns the response from S3 or null if required parameters are null + * @returns {Promise} the response from S3 or null if required parameters are null */ -export async function getFileFromS3(key: string) { +export async function getFileFromS3(key: string): Promise { if (!key) { return null; } @@ -59,6 +60,24 @@ export async function uploadFileToS3(media: MediaBase64, metadata: Metadata = {} }).promise(); } +/** + * Get an s3 signed url. + * + * @param {string} key S3 object key + * @returns {Promise} the response from S3 or null if required parameters are null + */ +export async function getS3SignedURL(key: string): Promise { + if (!key) { + return null; + } + + return S3.getSignedUrl('getObject', { + Bucket: OBJECT_STORE_BUCKET_NAME, + Key: key, + Expires: 300000 // 5 minutes + }); +} + // Regex matches a Data URL base64 encoded string, and has matching groups for the content type and raw encoded string const base64DataURLRegex = new RegExp(/^data:(\w+\/\w+);base64,(.*)/); From 93680072fe07cae93e4f75b020510931851da83e Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 8 Sep 2020 15:26:33 -0700 Subject: [PATCH 062/194] 629: Remove console.log --- api-mobile/src/paths/media/{key}.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/api-mobile/src/paths/media/{key}.ts b/api-mobile/src/paths/media/{key}.ts index a8181dd3a..40910b8e7 100644 --- a/api-mobile/src/paths/media/{key}.ts +++ b/api-mobile/src/paths/media/{key}.ts @@ -57,9 +57,6 @@ function getSignedURL(): RequestHandler { } const result = await getS3SignedURL(req.params.key); - console.log('================'); - console.log(result); - console.log('================'); return res.status(200).json(result); }; From 1219ccb1492bf68bb7535d14cfa3d22fc3e99571 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 12 Sep 2020 08:04:49 +0000 Subject: [PATCH 063/194] Bump node-fetch from 2.6.0 to 2.6.1 in /app/lucy Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. - [Release notes](https://github.com/bitinn/node-fetch/releases) - [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1) Signed-off-by: dependabot[bot] --- app/lucy/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/lucy/package-lock.json b/app/lucy/package-lock.json index 8d1f1f55f..1da1c6db1 100644 --- a/app/lucy/package-lock.json +++ b/app/lucy/package-lock.json @@ -12058,9 +12058,9 @@ } }, "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, "node-fetch-npm": { From 04174b5b82f81138c87d8ea3c6f4aeb6ebd645d0 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Wed, 16 Sep 2020 09:35:26 -0700 Subject: [PATCH 064/194] Misc updates: - Include rolands latest yaml - Update activities sql to have geometry be optional --- ...L_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh | 4 +- api-mobile/package-lock.json | 578 +++++++++--------- api-mobile/src/models/activity.ts | 24 +- api-mobile/src/openapi/api-doc.yaml | 261 ++++++++ api-mobile/src/paths/activity.ts | 20 +- api-mobile/src/paths/activity/{activityId}.ts | 4 +- api-mobile/src/queries/activity-queries.ts | 46 +- api-mobile/test/activity-with-files.json | 4 +- api-mobile/test/observation-point.json | 4 +- api-mobile/test/observation-polygon.json | 4 +- api-mobile/tsconfig.json | 4 +- .../lucy-api-mobile.postman_collection.json | 8 +- 12 files changed, 618 insertions(+), 343 deletions(-) diff --git a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh index 9105540b5..8288ff181 100644 --- a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh +++ b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh @@ -4,8 +4,8 @@ curl --location --request POST 'localhost:3002/api/activity' \ --header 'Content-Type: application/json' \ --data-raw ' { - "activityType": "Observation", - "activitySubType": "Terrestrial Invasive Plant", + "activity_type": "Observation", + "activity_sub_type": "Terrestrial Invasive Plant", "date": "2019-04-12", "deviceRequestUID": "string", "locationAndGeometry": { diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 533f82b8f..31a408f68 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -7,7 +7,7 @@ "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -16,13 +16,13 @@ "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=", "dev": true }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -33,7 +33,7 @@ "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "integrity": "sha1-KQ0I97OBuPlGB9yPRxoSxnX52zE=", "requires": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -89,7 +89,7 @@ "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", "requires": { "@types/connect": "*", "@types/node": "*" @@ -98,18 +98,18 @@ "@types/chai": { "version": "4.2.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", - "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", + "integrity": "sha1-YWCuRUzYna4FrcO7l5l/SItgggE=", "dev": true }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=" }, "@types/connect": { "version": "3.4.33", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "integrity": "sha1-MWEMkB7KVzuHE8MzCrxua59YhUY=", "requires": { "@types/node": "*" } @@ -117,7 +117,7 @@ "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=", "dev": true }, "@types/expect": { @@ -129,7 +129,7 @@ "@types/express": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "integrity": "sha1-QgRb5kdWNtmAE2nNRBjvZc2w3Vk=", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -140,7 +140,7 @@ "@types/express-jwt": { "version": "0.0.42", "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", + "integrity": "sha1-TwTh+t+dGHJZUNwEGAikpK339a4=", "requires": { "@types/express": "*", "@types/express-unless": "*" @@ -158,7 +158,7 @@ "@types/express-serve-static-core": { "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", + "integrity": "sha1-LXs03P0l7GY8JchddmCPiySWZ/E=", "requires": { "@types/node": "*", "@types/qs": "*", @@ -168,7 +168,7 @@ "@types/express-unless": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", + "integrity": "sha1-T0QLkF5Cu/Uzgrgge8M33F/5/R8=", "requires": { "@types/express": "*" } @@ -364,7 +364,7 @@ "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "integrity": "sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=", "dev": true }, "@types/json5": { @@ -377,7 +377,7 @@ "@types/jsonwebtoken": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", - "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", + "integrity": "sha1-JTHV4wCAOqYyebIywBSs94DJgcU=", "dev": true, "requires": { "@types/node": "*" @@ -386,13 +386,13 @@ "@types/memory-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", + "integrity": "sha1-AMr11zfkrMEA9bmBUsY17avbANc=", "dev": true }, "@types/mime": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=" }, "@types/minimatch": { "version": "3.0.3", @@ -403,7 +403,7 @@ "@types/mocha": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", + "integrity": "sha1-gTtP+N2ZINZS4ea0Uf8eNxpFYdI=", "dev": true }, "@types/node": { @@ -414,7 +414,7 @@ "@types/pg": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", - "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", + "integrity": "sha1-Fc/P2TAPlP1E5hkaGwuhjS3iCfY=", "dev": true, "requires": { "@types/node": "*", @@ -424,23 +424,23 @@ "@types/pg-types": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", - "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", + "integrity": "sha1-Huu+YrZ3L8x1wYlXqQ+TPRVeAFs=", "dev": true }, "@types/qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" + "integrity": "sha1-pZ6FHBuhbAUT6hI4MN1jmgoVy2o=" }, "@types/range-parser": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=" }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "integrity": "sha1-PSXZQaGEFdOrCS3vhG4TWgi7z1M=", "requires": { "@types/express-serve-static-core": "*", "@types/mime": "*" @@ -454,7 +454,7 @@ "@types/swagger-tools": { "version": "0.10.6", "resolved": "https://registry.npmjs.org/@types/swagger-tools/-/swagger-tools-0.10.6.tgz", - "integrity": "sha512-6d44Amrtm0vOgv6OtGCN6U4gRxJ9WRvwP1yMADUh8q6Cess3fyONaA2nh86i+ojAQvq5Ht8OYdN+AeXDhu3qIw==", + "integrity": "sha1-IWiii7Dh19kKtz8SbqP9IjMDhBE=", "dev": true, "requires": { "@types/connect": "*" @@ -516,13 +516,13 @@ "@types/yamljs": { "version": "0.2.31", "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", - "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", + "integrity": "sha1-saYgsRXJbbezv98M9UruDFcTkkU=", "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", + "integrity": "sha1-0UTEmpoP/o3XBLsXnCQ992wRG8k=", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "3.7.1", @@ -536,7 +536,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -545,13 +545,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true } } @@ -559,7 +559,7 @@ "@typescript-eslint/experimental-utils": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", + "integrity": "sha1-qwNsqu1Mhw0iUx1B+TUvMUc2TWE=", "dev": true, "requires": { "@types/json-schema": "^7.0.3", @@ -572,7 +572,7 @@ "@typescript-eslint/parser": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", + "integrity": "sha1-XZzOyxFtEtnGBz6YYcV8mxqogSg=", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", @@ -585,13 +585,13 @@ "@typescript-eslint/types": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", + "integrity": "sha1-kDdWBrL9c8EiT+njl+4VHij6Hgw=", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", + "integrity": "sha1-zh/70PpT801M6FGno2TjkkMvbrM=", "dev": true, "requires": { "@typescript-eslint/types": "3.7.1", @@ -607,7 +607,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -616,13 +616,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true } } @@ -630,7 +630,7 @@ "@typescript-eslint/visitor-keys": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", + "integrity": "sha1-uQGR50797mVr6MWjD0KO0W3aRtE=", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -645,7 +645,7 @@ "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -660,7 +660,7 @@ "acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", "dev": true }, "aggregate-error": { @@ -676,7 +676,7 @@ "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -736,7 +736,7 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", "dev": true }, "ansi-gray": { @@ -751,7 +751,7 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=" }, "ansi-styles": { "version": "3.2.1", @@ -771,7 +771,7 @@ "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -801,13 +801,13 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "integrity": "sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=", "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "requires": { "sprintf-js": "~1.0.2" } @@ -934,7 +934,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", "requires": { "safer-buffer": "~2.1.0" } @@ -942,7 +942,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", "dev": true }, "assign-symbols": { @@ -953,7 +953,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", "dev": true }, "async": { @@ -1032,7 +1032,7 @@ "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", "requires": { "follow-redirects": "1.5.10" } @@ -1127,7 +1127,7 @@ "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", "dev": true }, "bindings": { @@ -1143,12 +1143,12 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=" }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -1165,7 +1165,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -1173,7 +1173,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" } } }, @@ -1248,7 +1248,7 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1257,7 +1257,7 @@ "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -1293,7 +1293,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" }, "buffer-shims": { "version": "1.0.0", @@ -1303,7 +1303,7 @@ "buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + "integrity": "sha1-zn64Gjj3gp2wnIc/L7t5LAyY7AQ=" }, "busboy": { "version": "0.2.14", @@ -1340,7 +1340,7 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" }, "cache-base": { "version": "1.0.1", @@ -1403,18 +1403,18 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "integrity": "sha1-dgqnLPION5XoSxKHfODoNzeqKeU=", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -1439,7 +1439,7 @@ "chance": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", - "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", + "integrity": "sha1-lnoKEp4PNC98Zc1dIPWuhwomuK8=", "dev": true }, "check-error": { @@ -1451,7 +1451,7 @@ "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "integrity": "sha1-yE5bPRjZpNd1WP70ZrG/FrvrNFA=", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -1659,7 +1659,7 @@ "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -1681,7 +1681,7 @@ "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -1701,12 +1701,12 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "integrity": "sha1-xQSRR51MG9rtLJztMs98fcI2D3g=" }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "integrity": "sha1-4BKJUNCCuGohaFgHlqCqXWxo2MU=", "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -1715,7 +1715,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", "requires": { "delayed-stream": "~1.0.0" } @@ -1723,12 +1723,12 @@ "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=" }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" }, "concat-map": { "version": "0.0.1", @@ -1764,7 +1764,7 @@ "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", "requires": { "safe-buffer": "5.1.2" } @@ -1772,7 +1772,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, "convert-source-map": { "version": "1.7.0", @@ -1786,7 +1786,7 @@ "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" }, "cookie-signature": { "version": "1.0.6", @@ -1796,7 +1796,7 @@ "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=" }, "copy-descriptor": { "version": "0.1.1", @@ -1816,7 +1816,7 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" }, "core-util-is": { "version": "1.0.2", @@ -1860,13 +1860,13 @@ "database-cleaner": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", - "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", + "integrity": "sha1-MGwAFb0uuWjQimvmok/lLdkf1lY=", "dev": true }, "db-migrate": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", - "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", + "integrity": "sha1-ZWdkrYyIiPai6TeGafppGyiVjqI=", "requires": { "balanced-match": "^1.0.0", "bluebird": "^3.1.1", @@ -2002,7 +2002,7 @@ "db-migrate-pg": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", - "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", + "integrity": "sha1-ZkNtutC6OYwFhR0gD3aNtrLlvBo=", "requires": { "bluebird": "^3.1.1", "db-migrate-base": "^2.3.0", @@ -2023,12 +2023,12 @@ "db-migrate-shared": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", - "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" + "integrity": "sha1-YSW+GzpeZhIp/HXVDIX2w/+tvt4=" }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "requires": { "ms": "2.0.0" } @@ -2055,7 +2055,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -2069,7 +2069,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" }, "deep-is": { "version": "0.1.3", @@ -2109,7 +2109,7 @@ "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -2257,7 +2257,7 @@ "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", "dev": true, "requires": { "esutils": "^2.0.2" @@ -2309,7 +2309,7 @@ "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", "requires": { "safe-buffer": "^5.0.1" } @@ -2322,12 +2322,12 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" }, "enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + "integrity": "sha1-+d2S7C1vS7wNXR5k4h1hzUZl58I=" }, "encodeurl": { "version": "1.0.2", @@ -2346,7 +2346,7 @@ "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "integrity": "sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -2355,7 +2355,7 @@ "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -2364,7 +2364,7 @@ "es-abstract": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "integrity": "sha1-kUIHFweFeyysx7iey2cDFsPi1So=", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -2383,7 +2383,7 @@ "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -2455,7 +2455,7 @@ "eslint": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", + "integrity": "sha1-nsv61iIW0iO4Ksn/6n7zREZx0TU=", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2545,7 +2545,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -2569,7 +2569,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "path-key": { @@ -2581,7 +2581,7 @@ "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true }, "shebang-command": { @@ -2602,7 +2602,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", "dev": true }, "supports-color": { @@ -2628,7 +2628,7 @@ "eslint-config-prettier": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", + "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -2637,7 +2637,7 @@ "eslint-plugin-prettier": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "integrity": "sha1-Foq0MVTi6lfbmSos0JfIKBcfdcI=", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -2646,7 +2646,7 @@ "eslint-scope": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2656,7 +2656,7 @@ "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -2665,7 +2665,7 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", "dev": true }, "esm": { @@ -2676,7 +2676,7 @@ "espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", + "integrity": "sha1-HCY9W1E9utCsMMSZG5OsNU6UjWk=", "dev": true, "requires": { "acorn": "^7.3.1", @@ -2687,12 +2687,12 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2709,7 +2709,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -2718,13 +2718,13 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", "dev": true }, "etag": { @@ -2788,7 +2788,7 @@ "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -2825,7 +2825,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -2833,7 +2833,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" } } }, @@ -2872,7 +2872,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" }, "extend-shallow": { "version": "3.0.2", @@ -2960,7 +2960,7 @@ "factory-girl": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", - "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", + "integrity": "sha1-N4yqvgOqx7Mn1H2eKLTwLO0MPAs=", "dev": true, "requires": { "babel-runtime": "^6.11.6", @@ -2982,12 +2982,12 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=" }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", "dev": true }, "fast-glob": { @@ -3019,7 +3019,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" }, "fast-levenshtein": { "version": "2.0.6", @@ -3030,7 +3030,7 @@ "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + "integrity": "sha1-EkqohYmSYfaK7bQqfAgN6dpgh0M=" }, "fastq": { "version": "1.8.0", @@ -3044,12 +3044,12 @@ "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" + "integrity": "sha1-P/tjlUU+Pz7/+FBATwpZtnR/X0E=" }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", "dev": true, "requires": { "flat-cache": "^2.0.1" @@ -3065,7 +3065,7 @@ "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -3083,7 +3083,7 @@ "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -3097,7 +3097,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -3161,7 +3161,7 @@ "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", "dev": true, "requires": { "flatted": "^2.0.0", @@ -3172,7 +3172,7 @@ "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", "dev": true, "requires": { "glob": "^7.1.3" @@ -3183,7 +3183,7 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", "dev": true }, "flush-write-stream": { @@ -3231,12 +3231,12 @@ "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + "integrity": "sha1-JsrYAXlnrqhzG8QpYdBKPVmIrMw=" }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", "requires": { "debug": "=3.1.0" } @@ -3267,7 +3267,7 @@ "formidable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" + "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=" }, "forwarded": { "version": "0.1.2", @@ -3363,7 +3363,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", "dev": true }, "functional-red-black-tree": { @@ -3375,7 +3375,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=" }, "get-func-name": { "version": "2.0.0", @@ -3386,7 +3386,7 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", "dev": true }, "get-stream": { @@ -3423,7 +3423,7 @@ "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3436,7 +3436,7 @@ "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -3739,13 +3739,13 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", "dev": true }, "graphlib": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "integrity": "sha1-V2HUFHN4cAhMkux7XbywWSydNdo=", "requires": { "lodash": "^4.17.15" } @@ -3851,7 +3851,7 @@ "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -3866,7 +3866,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", "dev": true }, "has-value": { @@ -3939,7 +3939,7 @@ "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", "dev": true }, "http-cache-semantics": { @@ -3951,7 +3951,7 @@ "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -3968,7 +3968,7 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -3981,7 +3981,7 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", "dev": true }, "ignore-by-default": { @@ -3993,7 +3993,7 @@ "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -4040,7 +4040,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" }, "interpret": { "version": "2.2.0", @@ -4056,7 +4056,7 @@ "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" }, "is-absolute": { "version": "1.0.0", @@ -4094,7 +4094,7 @@ "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -4108,7 +4108,7 @@ "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", "dev": true }, "is-ci": { @@ -4141,7 +4141,7 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", "dev": true }, "is-descriptor": { @@ -4179,12 +4179,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=" }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", "requires": { "is-extglob": "^2.1.1" } @@ -4214,7 +4214,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", "dev": true }, "is-obj": { @@ -4263,7 +4263,7 @@ "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -4339,13 +4339,13 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", "dev": true }, "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4366,7 +4366,7 @@ "json-refs": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", - "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", + "integrity": "sha1-EIn0rPJjoxUseQR5SFGVzWRJ6FU=", "requires": { "commander": "~4.1.1", "graphlib": "^2.1.8", @@ -4381,14 +4381,14 @@ "commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + "integrity": "sha1-n9YCvZNilOnp70aj9NaWQESxgGg=" } } }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -4405,7 +4405,7 @@ "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "integrity": "sha1-AOceC431TCEhofJhN98igGc7zA0=", "requires": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -4422,7 +4422,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" } } }, @@ -4435,7 +4435,7 @@ "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -4474,7 +4474,7 @@ "jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", "requires": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -4554,7 +4554,7 @@ "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + "integrity": "sha1-4sVwo4ADiPtEQH6FFTHB1nCwYbM=" }, "last-run": { "version": "1.1.1", @@ -4605,7 +4605,7 @@ "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -4630,7 +4630,7 @@ "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" }, "load-json-file": { "version": "4.0.0", @@ -4665,7 +4665,7 @@ "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=" }, "lodash._arraypool": { "version": "2.4.1", @@ -4964,7 +4964,7 @@ "logform": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "integrity": "sha1-QPA20ZFh/Ha2irUP3H/klVREkvI=", "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -4976,7 +4976,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" } } }, @@ -4998,7 +4998,7 @@ "lru-memoizer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", + "integrity": "sha1-XGtDZZx4rQ6eZb+BqeXvHuEJot0=", "requires": { "lodash.clonedeep": "^4.5.0", "lru-cache": "~4.0.0" @@ -5031,7 +5031,7 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=", "dev": true }, "make-iterator": { @@ -5222,17 +5222,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", "requires": { "mime-db": "1.44.0" } @@ -5246,7 +5246,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } @@ -5254,7 +5254,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" }, "mixin-deep": { "version": "1.3.2", @@ -5278,7 +5278,7 @@ "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", "requires": { "minimist": "^1.2.5" } @@ -5500,7 +5500,7 @@ "moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + "integrity": "sha1-i/9OPiaiNiIN/j423nVrbrqgEF0=" }, "mongodb-uri": { "version": "0.9.7", @@ -5515,7 +5515,7 @@ "multer": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "integrity": "sha1-Lx9NEtuu66dMs35iPyNL9NPSBXo=", "requires": { "append-field": "^1.0.0", "busboy": "^0.2.11", @@ -5549,7 +5549,7 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" }, "nan": { "version": "2.14.1", @@ -5595,7 +5595,7 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" }, "next-tick": { "version": "1.0.0", @@ -5612,7 +5612,7 @@ "nock": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", - "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", + "integrity": "sha1-n4HwRJmvaof5xBmgI5ILYj1xURA=", "dev": true, "requires": { "debug": "^4.1.0", @@ -5624,7 +5624,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -5633,7 +5633,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true } } @@ -5700,7 +5700,7 @@ "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -5712,7 +5712,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", "dev": true }, "normalize-url": { @@ -5789,13 +5789,13 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "integrity": "sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA=", "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", "dev": true }, "object-visit": { @@ -5809,7 +5809,7 @@ "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", "dev": true, "requires": { "define-properties": "^1.1.2", @@ -5885,7 +5885,7 @@ "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "integrity": "sha1-4GvBdK7SFO1Y7e3lc7Qzu/gny0U=", "requires": { "fn.name": "1.x.x" } @@ -5983,7 +5983,7 @@ "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -6021,7 +6021,7 @@ "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", "requires": { "p-try": "^2.0.0" } @@ -6047,7 +6047,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" }, "package-json": { "version": "6.5.0", @@ -6072,12 +6072,12 @@ "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + "integrity": "sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ=" }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", "dev": true, "requires": { "callsites": "^3.0.0" @@ -6125,7 +6125,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" }, "pascalcase": { "version": "0.1.1", @@ -6158,7 +6158,7 @@ "path-loader": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", - "integrity": "sha512-CMP0v6S6z8PHeJ6NFVyVJm6WyJjIwFvyz2b0n2/4bKdS/0uZa/9sKUlYZzubrn3zuDRU0zIuEDX9DZYQ2ZI8TA==", + "integrity": "sha1-3T0b1Uy28uZCOvKtM0pBzAvOTPY=", "requires": { "native-promise-only": "^0.8.1", "superagent": "^3.8.3" @@ -6167,7 +6167,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" }, "path-root": { "version": "0.1.1", @@ -6202,7 +6202,7 @@ "pg": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", - "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", + "integrity": "sha1-lBODMA047vUey4igGIzsRBq2TYE=", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -6224,27 +6224,27 @@ "pg-connection-string": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", - "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" + "integrity": "sha1-wT/LhMKY0L+puhK0DdbCPZRvVdY=" }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + "integrity": "sha1-lDvUY79bcbQXARX4D478mgwOt4w=" }, "pg-pool": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", - "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" + "integrity": "sha1-X0r8D1gGNlmu76lS02r0n6KLMOA=" }, "pg-protocol": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", - "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" + "integrity": "sha1-KKFJLN4RZG/y0tBr3uQqO6BfEmw=" }, "pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "integrity": "sha1-LQJQ1jZFT3z6O2rgOC/fqAYyVKM=", "requires": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -6264,7 +6264,7 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", "dev": true }, "pidtree": { @@ -6330,7 +6330,7 @@ "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + "integrity": "sha1-SPj84FT7xpZxmZMpuINLdyZS2C4=" }, "postgres-bytea": { "version": "1.0.0", @@ -6345,7 +6345,7 @@ "postgres-interval": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "integrity": "sha1-tGDILLFYdQd4iBmgaqD//bNURpU=", "requires": { "xtend": "^4.0.0" } @@ -6353,7 +6353,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", "dev": true }, "prepend-http": { @@ -6365,13 +6365,13 @@ "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "integrity": "sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -6391,7 +6391,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", "dev": true }, "prompt": { @@ -6443,13 +6443,13 @@ "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "integrity": "sha1-QM3tqxgIXHkjNOZPCsFyVtOPmkU=", "dev": true }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" @@ -6504,7 +6504,7 @@ "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + "integrity": "sha1-kJCykNH5FyjTwi5UhDykSupatoc=" }, "querystring": { "version": "0.2.0", @@ -6514,12 +6514,12 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -6530,7 +6530,7 @@ "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6666,7 +6666,7 @@ "readdirp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "integrity": "sha1-mERY0ToeQuLp9YQbEp4WLzaa/xc=", "dev": true, "requires": { "picomatch": "^2.0.7" @@ -6683,7 +6683,7 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", "dev": true }, "regex-not": { @@ -6698,7 +6698,7 @@ "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", "dev": true }, "registry-auth-token": { @@ -6823,12 +6823,12 @@ "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=" }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", "requires": { "path-parse": "^1.0.6" } @@ -6845,7 +6845,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", "dev": true }, "resolve-options": { @@ -6890,7 +6890,7 @@ "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", "requires": { "glob": "^7.1.3" } @@ -6904,7 +6904,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "safe-regex": { "version": "1.1.0", @@ -6917,7 +6917,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" }, "sax": { "version": "1.2.1", @@ -6927,7 +6927,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" }, "semver-diff": { "version": "3.1.1", @@ -6958,7 +6958,7 @@ "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -6978,7 +6978,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" }, @@ -6993,14 +6993,14 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" } } }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -7037,7 +7037,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" }, "shebang-command": { "version": "1.2.0", @@ -7084,12 +7084,12 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=" }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -7230,7 +7230,7 @@ "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -7253,7 +7253,7 @@ "spark-md5": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", - "integrity": "sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig==" + "integrity": "sha1-g6DiVXNPKrTlxGblos/JuiqiEk0=" }, "sparkles": { "version": "1.0.1", @@ -7264,7 +7264,7 @@ "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -7274,13 +7274,13 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -7290,13 +7290,13 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", "dev": true }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "integrity": "sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=", "requires": { "through": "2" } @@ -7386,7 +7386,7 @@ "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7416,7 +7416,7 @@ "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7426,7 +7426,7 @@ "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7444,7 +7444,7 @@ "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -7467,7 +7467,7 @@ "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "integrity": "sha1-Rg6g29t9WxG8T3jeulZfhqF44Sg=", "requires": { "component-emitter": "^1.2.0", "cookiejar": "^2.1.0", @@ -7513,7 +7513,7 @@ "supertest": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", - "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", + "integrity": "sha1-wiNNvdbcebbxW5nI1ld7kOTOPzY=", "dev": true, "requires": { "methods": "^1.1.2", @@ -7523,7 +7523,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7577,7 +7577,7 @@ "swagger-tools": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/swagger-tools/-/swagger-tools-0.10.4.tgz", - "integrity": "sha512-VQpijIi8cpB/frUZOZlVpS7U3CrdSAZBfiHu448R1njiNXUnE7heF3Svz3qFBr5SYtaPvaqWpHMbvboirCXVzA==", + "integrity": "sha1-KUmwDKF9oNT5GtdMRAJ94lDE2Ek=", "requires": { "async": "^2.5.0", "body-parser": "1.18.2", @@ -7601,7 +7601,7 @@ "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", "requires": { "lodash": "^4.17.14" } @@ -7626,7 +7626,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -7634,7 +7634,7 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" } } }, @@ -7657,12 +7657,12 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" }, "path-to-regexp": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", - "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" + "integrity": "sha1-Nc5/Mz1WFvHB4b/iZsOrouWy5wQ=" }, "raw-body": { "version": "2.3.2", @@ -7701,7 +7701,7 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" } } }, @@ -7721,7 +7721,7 @@ "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", "dev": true, "requires": { "ajv": "^6.10.2", @@ -7733,13 +7733,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", "dev": true }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", "dev": true }, "is-fullwidth-code-point": { @@ -7751,7 +7751,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -7762,7 +7762,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -7784,7 +7784,7 @@ "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" }, "text-table": { "version": "0.2.0", @@ -7926,7 +7926,7 @@ "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", "dev": true, "requires": { "is-number": "^7.0.0" @@ -7986,7 +7986,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" }, "touch": { "version": "3.1.0", @@ -8005,7 +8005,7 @@ "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk=" }, "ts-log": { "version": "2.1.4", @@ -8015,7 +8015,7 @@ "ts-mocha": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", - "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", + "integrity": "sha1-8VSbSLRvU9euHcy7JjE8eHmssZA=", "dev": true, "requires": { "ts-node": "7.0.1", @@ -8031,7 +8031,7 @@ "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", "dev": true, "requires": { "arrify": "^1.0.0", @@ -8055,7 +8055,7 @@ "ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "integrity": "sha1-7uA3ZGM7EjTd03+NuewQt17H+40=", "dev": true, "requires": { "arg": "^4.1.0", @@ -8068,7 +8068,7 @@ "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "integrity": "sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=", "dev": true, "optional": true, "requires": { @@ -8100,13 +8100,13 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=", "dev": true }, "tsutils": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", "dev": true, "requires": { "tslib": "^1.8.1" @@ -8115,7 +8115,7 @@ "tunnel-ssh": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", - "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", + "integrity": "sha1-swH3czxz3OoWFkZrnIe2B/SVi0U=", "requires": { "debug": "2.6.9", "lodash.defaults": "^4.1.0", @@ -8125,7 +8125,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -8141,7 +8141,7 @@ "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -8150,19 +8150,19 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", "dev": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", "dev": true }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -8185,7 +8185,7 @@ "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + "integrity": "sha1-mNYApevcOPQMsndSLxLcgA6eJfo=" }, "unc-path-regex": { "version": "0.1.2", @@ -8397,7 +8397,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", "requires": { "punycode": "^2.1.0" }, @@ -8468,7 +8468,7 @@ "v8-compile-cache": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", "dev": true }, "v8flags": { @@ -8482,7 +8482,7 @@ "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -8492,7 +8492,7 @@ "validator": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", - "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" + "integrity": "sha1-+IETaEc9IXOp2GEVcrWMV4PyI78=" }, "value-or-function": { "version": "3.0.0", @@ -8684,7 +8684,7 @@ "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "integrity": "sha1-rmFyBCyvspeGr6PQnI/4M6t8kXA=", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.1.0", @@ -8700,7 +8700,7 @@ "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + "integrity": "sha1-s6JoXF67ZB094C0WEALGD8n4VyA=" }, "is-stream": { "version": "2.0.0", @@ -8710,7 +8710,7 @@ "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8735,7 +8735,7 @@ "winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "integrity": "sha1-F69RjappDVsuzMqnrPeyDKeSXlk=", "requires": { "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" @@ -8773,7 +8773,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", "dev": true }, "wrap-ansi": { @@ -8831,7 +8831,7 @@ "write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -8872,12 +8872,12 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" }, "yallist": { "version": "2.1.2", @@ -8887,7 +8887,7 @@ "yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "integrity": "sha1-3AYL8mdEezn3ME6bK/votafdsDs=", "requires": { "argparse": "^1.0.7", "glob": "^7.0.5" @@ -9109,7 +9109,7 @@ "z-schema": { "version": "3.25.1", "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.25.1.tgz", - "integrity": "sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==", + "integrity": "sha1-fhRmO+K5YAPZOKVvZE+4VhZD+34=", "requires": { "commander": "^2.7.1", "core-js": "^2.5.7", @@ -9121,7 +9121,7 @@ "validator": { "version": "10.11.0", "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + "integrity": "sha1-ADEI6m6amHTTHMyeUAaFbM12sig=" } } } diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index ac5c117e5..5e8fac9f4 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -53,10 +53,10 @@ export class ActivityPostRequestBody { activityPostBody: object; activityResponseBody: object; - activityType: string; + activity_type: string; activityTypeData: object; - activitySubType: string; + activity_sub_type: string; activitySubTypeData: object; date: string; @@ -79,10 +79,10 @@ export class ActivityPostRequestBody { media: (obj.media && obj.media.map((item: MediaBase64) => item.fileName)) || [] }; - this.activityType = (obj && obj.activityType) || null; + this.activity_type = (obj && obj.activity_type) || null; this.activityTypeData = (obj && obj.activityTypeData) || null; - this.activitySubType = (obj && obj.activitySubType) || null; + this.activity_sub_type = (obj && obj.activity_sub_type) || null; this.activitySubTypeData = (obj && obj.activitySubTypeData) || null; this.date = (obj && obj.date) || null; @@ -100,14 +100,14 @@ export class ActivityPostRequestBody { * @class ActivitySearchCriteria */ export class ActivitySearchCriteria { - activityType: string; - activitySubType: string; + activity_type: string; + activity_sub_type: string; page: number; limit: number; - dateRangeStart: Date; - dateRangeEnd: Date; + date_range_start: Date; + date_range_end: Date; includeMedia: boolean; @@ -118,14 +118,14 @@ export class ActivitySearchCriteria { * @memberof ActivitySearchCriteria */ constructor(obj?: any) { - this.activityType = (obj && obj.activityType) || null; - this.activitySubType = (obj && obj.activitySubType) || null; + this.activity_type = (obj && obj.activity_type) || null; + this.activity_sub_type = (obj && obj.activity_sub_type) || null; this.page = (obj && obj.page) || 0; this.limit = (obj && obj.limit) || 50; - this.dateRangeStart = (obj && obj.dateRangeStart) || null; - this.dateRangeEnd = (obj && obj.dateRangeEnd) || null; + this.date_range_start = (obj && obj.date_range_start) || null; + this.date_range_end = (obj && obj.date_range_end) || null; this.includeMedia = (obj && obj.includeMedia) || false; } diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index a64e036f7..fa4530518 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -94,6 +94,267 @@ components: items: type: string + Observation: + description: | + Observation main object. + type: object + required: + - observation_id + - workflow_id + - observation_date + - observation time + - observer_first_name + - observer_last_name + - species_id + - observation_type + - species_agency_code + - jurisdiction_code + properties: + observation_id: + type: number + title: "ID" + workflow_id: + type: number + title: "Workflow ID" + observation_date: + type: string + title: "Date" + observation_time: + type: string + title: "Time" + observer_first_name: + type: string + title: "First Name" + observer_last_name: + type: string + title: "Last Name" + species_id: + type: string + title: "Species" + observation_type: + type: string + title: "Type" + species_agency_code: + type: string + title: "Agency" + jurisdiction_code: + type: string + title: "Jurisdiction" + negative_obs_ind: + type: boolean + title: "Negative Observation" + subType: + oneOf: + - $ref: "#/components/schemas/Observation_PlantTerrestial" + - $ref: "#/components/schemas/Observation_AnimalTerrestrial" + - $ref: "#/components/schemas/Observation_AnimalAquatic" + + Observation_PlantTerrestial: + description: | + Plant Observation Terrestrial + type: object + properties: + species_density_code: + type: string + title: "Density" + species_distribution_code: + type: string + title: "Distribution" + soil_texture_code: + type: string + title: "Soil Texture" + specific_use_code: + type: string + title: "Specific Use" + slope_code: + type: string + title: "Slope" + aspect_code: + type: string + title: "Aspect" + proposed_action_code: + type: string + title: "Proposed Action" + flowering: + type: boolean + title: "Flowering" + plant_life_stage: + type: string + title: "Life Stage" + plant_health: + type: string + title: "Health" + plant_seed_stage: + type: string + title: "Seed Stage" + sample_identifier: + type: string + title: "Sample ID" + range_unit_number: + type: string + title: "Range Unit" + general_comment: + type: string + title: "Comment" + maximum: 300 + access_description: + type: string + title: "Access Description" + primary_file_id: + type: string + title: "Primary File" + secondary_file_id: + type: string + title: "Secondary File" + sample_taken: + type: boolean + title: "Sample Taken" + sample_number: + type: string + title: "Sample Number" + aquatic_obs_ind: + type: boolean + title: "Aquatic Observation" + legacy_site_ind: + type: boolean + early_detection_rapid_resp_ind: + type: boolean + title: "Early Detection" + research_detection_ind: + type: boolean + title: "Research Detection" + well_ind: + type: boolean + title: "Well" + special_care_ind: + type: boolean + title: "Special Care" + biological_ind: + type: boolean + title: "Biological" + Photo_Indicator: + type: boolean + title: "Photo" + Bec_Zone: + type: string + title: "Bec Zone" + RISO: + type: string + title: "RISO" + IPMA: + type: string + title: "IPMA" + Ownership: + type: string + title: "Owned by" + Regional_District: + type: string + title: "Regional District" + FLNRO_District: + type: string + title: "FLNRO District" + MOTI_District: + type: string + title: "MOTI District" + MOE_Region: + type: string + title: "MOE Region" + photo: + type: array + title: "Photos" + items: + $ref: "#/components/schemas/Photo" + + Photo: + description: | + List of Photos + type: object + required: + - photo_id + properties: + photo_id: + type: number + title: "ID" + observation_id: + type: number + title: "Observation ID" + photo_date: + type: string + title: "Date" + photo_time: + type: string + title: "Time" + description: + type: string + title: "description" + photo_store: + type: string + title: "Photo" + + Observation_AnimalTerrestrial: + description: | + Animal Observation Terrestrial. + type: object + properties: + Number_of_Individuals_observed: + type: number + title: "Number of Individuals" + Life_Stage: + type: string + title: "Life Stage" + Behaviour: + type: string + title: "Behaviour" + sample_taken: + type: boolean + title: "Sample Taken" + sample_number: + type: string + title: "Sample Number" + general_comment: + type: string + title: "Comment" + access_description: + type: string + title: "Access Description" + photo: + type: array + title: "Photos" + items: + $ref: "#/components/schemas/Photo" + + Observation_AnimalAquatic: + description: | + Animal Observation Aquatic. + type: object + properties: + Number_of_Individuals_observed: + type: number + title: "Number of Individuals" + Life_Stage: + type: string + title: "Life Stage" + Behaviour: + type: string + title: "Behaviour" + sample_taken: + type: boolean + title: "Sample Taken" + sample_number: + type: string + title: "Sample Number" + general_comment: + type: string + title: "Comment" + access_description: + type: string + title: "Access Description" + photo: + type: array + title: "Photos" + items: + $ref: "#/components/schemas/Photo" + ObservationPlantResponse: description: | Observation plant response object. diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 6206fc5c6..ebb19e7cb 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -29,10 +29,10 @@ GET.apiDoc = { 'application/json': { schema: { properties: { - activityType: { + activity_type: { type: 'string' }, - activitySubType: { + activity_sub_type: { type: 'string' }, page: { @@ -46,11 +46,11 @@ GET.apiDoc = { minimum: 0, maximum: 100 }, - dateRangeStart: { + date_range_start: { type: 'string', description: 'Date range start, in YYYY-MM-DD format' }, - dateRangeEnd: { + date_range_end: { type: 'string', description: 'Date range end, in YYYY-MM-DD format' } @@ -69,13 +69,13 @@ GET.apiDoc = { items: { type: 'object', properties: { - activityType: { + activity_type: { type: 'string' }, activityTypeData: { type: 'object' }, - activitySubType: { + activity_sub_type: { type: 'string' }, activitySubTypeData: { @@ -177,21 +177,21 @@ POST.apiDoc = { 'application/json': { schema: { required: [ - 'activityType', + 'activity_type', 'activityTypeData', - 'activitySubType', + 'activity_sub_type', 'activitySubTypeData', 'date', 'locationAndGeometry' ], properties: { - activityType: { + activity_type: { type: 'string' }, activityTypeData: { type: 'object' }, - activitySubType: { + activity_sub_type: { type: 'string' }, activitySubTypeData: { diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index d8562fac2..54fbfb943 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -38,13 +38,13 @@ GET.apiDoc = { 'application/json': { schema: { properties: { - activityType: { + activity_type: { type: 'string' }, activityTypeData: { type: 'object' }, - activitySubType: { + activity_sub_type: { type: 'string' }, activitySubTypeData: { diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index f18c0f649..8feb6f052 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -12,7 +12,7 @@ export const postActivitySQL = (activityData: ActivityPostRequestBody): SQLState return null; } - return SQL` + const sqlStatement: SQLStatement = SQL` INSERT INTO activity_incoming_data ( activity_type, activity_sub_type, @@ -21,21 +21,35 @@ export const postActivitySQL = (activityData: ActivityPostRequestBody): SQLState geog, media_keys ) VALUES ( - ${activityData.activityType}, - ${activityData.activitySubType}, + ${activityData.activity_type}, + ${activityData.activity_sub_type}, ${activityData.date}, - ${activityData.activityPostBody}, - public.ST_Force2D( + ${activityData.activityPostBody} + `; + + if (activityData.locationAndGeometry && activityData.locationAndGeometry['geometry']) { + sqlStatement.append(` + ,public.ST_Force2D( public.ST_SetSRID( public.ST_GeomFromGeoJSON(${JSON.stringify(activityData.locationAndGeometry['geometry'])}) ,4326 ) - )::geography, - ${activityData.mediaKeys} + )::geography + `); + } else { + sqlStatement.append(` + ,null + `); + } + + sqlStatement.append(` + ,${activityData.mediaKeys} ) RETURNING activity_incoming_data_id; - `; + `); + + return sqlStatement; }; /** @@ -47,20 +61,20 @@ export const postActivitySQL = (activityData: ActivityPostRequestBody): SQLState export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLStatement => { const sqlStatement: SQLStatement = SQL`SELECT * FROM activity_incoming_data`; - if (searchCriteria.activityType) { - sqlStatement.append(SQL` WHERE activity_type = ${searchCriteria.activityType}`); + if (searchCriteria.activity_type) { + sqlStatement.append(SQL` WHERE activity_type = ${searchCriteria.activity_type}`); } - if (searchCriteria.activitySubType) { - sqlStatement.append(SQL` WHERE activity_sub_type = ${searchCriteria.activitySubType}`); + if (searchCriteria.activity_sub_type) { + sqlStatement.append(SQL` WHERE activity_sub_type = ${searchCriteria.activity_sub_type}`); } - if (searchCriteria.dateRangeStart) { - sqlStatement.append(SQL` WHERE received_timestamp >= ${searchCriteria.dateRangeStart}::date`); + if (searchCriteria.date_range_start) { + sqlStatement.append(SQL` WHERE received_timestamp >= ${searchCriteria.date_range_start}::date`); } - if (searchCriteria.dateRangeEnd) { - sqlStatement.append(SQL` WHERE received_timestamp <= ${searchCriteria.dateRangeEnd}::date`); + if (searchCriteria.date_range_end) { + sqlStatement.append(SQL` WHERE received_timestamp <= ${searchCriteria.date_range_end}::date`); } if (searchCriteria.limit) { diff --git a/api-mobile/test/activity-with-files.json b/api-mobile/test/activity-with-files.json index 893ff7c7f..d69a10b51 100644 --- a/api-mobile/test/activity-with-files.json +++ b/api-mobile/test/activity-with-files.json @@ -1,6 +1,6 @@ { - "activityType": "observation", - "activitySubType": "plant", + "activity_type": "observation", + "activity_sub_type": "plant", "date": "2020-08-30", "locationAndGeometry": { "anchorPointY": 48.3, diff --git a/api-mobile/test/observation-point.json b/api-mobile/test/observation-point.json index f24b685f2..c917c6cf1 100644 --- a/api-mobile/test/observation-point.json +++ b/api-mobile/test/observation-point.json @@ -1,6 +1,6 @@ { - "activityType": "Observation", - "activitySubType": "Terrestrial Invasive Plant", + "activity_type": "Observation", + "activity_sub_type": "Terrestrial Invasive Plant", "date": "2019-04-12", "deviceRequestUID": "string", "locationAndGeometry": { diff --git a/api-mobile/test/observation-polygon.json b/api-mobile/test/observation-polygon.json index f2d0cf211..82b561c89 100644 --- a/api-mobile/test/observation-polygon.json +++ b/api-mobile/test/observation-polygon.json @@ -1,6 +1,6 @@ { - "activityType": "Observation", - "activitySubType": "Terrestrial Invasive Plant", + "activity_type": "Observation", + "activity_sub_type": "Terrestrial Invasive Plant", "date": "2019-04-12", "deviceRequestUID": "string", "locationAndGeometry": { diff --git a/api-mobile/tsconfig.json b/api-mobile/tsconfig.json index a6f121be5..098a0a3ed 100644 --- a/api-mobile/tsconfig.json +++ b/api-mobile/tsconfig.json @@ -10,9 +10,9 @@ "forceConsistentCasingInFileNames": true, "noImplicitReturns": true, "noImplicitThis": true, - "noImplicitAny": true, + "noImplicitAny": false, "suppressImplicitAnyIndexErrors": true, - "noUnusedLocals": true, + "noUnusedLocals": false, "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index 728c60721..3fe75babc 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -283,7 +283,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"activityType\": \"\",\n \"activityTypeData\": \"\",\n \"activitySubType\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + "raw": "{\n \"activity_type\": \"\",\n \"activityTypeData\": \"\",\n \"activity_sub_type\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" }, "url": { "raw": "{{baseUrlMobile}}/activity", @@ -304,7 +304,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"activityType\": \"\",\n \"activityTypeData\": \"\",\n \"activitySubType\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + "raw": "{\n \"activity_type\": \"\",\n \"activityTypeData\": \"\",\n \"activity_sub_type\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" }, "url": { "raw": "{{baseUrl}}/activity", @@ -326,7 +326,7 @@ } ], "cookie": [], - "body": "{\n \"activityType\": \"irure in est dolor\",\n \"activitySubType\": \"dolore adipisicing\",\n \"date\": \"ipsum aute\",\n \"locationAndGeometry\": \"dolor amet\"\n}" + "body": "{\n \"activity_type\": \"irure in est dolor\",\n \"activity_sub_type\": \"dolore adipisicing\",\n \"date\": \"ipsum aute\",\n \"locationAndGeometry\": \"dolor amet\"\n}" }, { "name": "Unauthorized user", @@ -335,7 +335,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"activityType\": \"\",\n \"activityTypeData\": \"\",\n \"activitySubType\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + "raw": "{\n \"activity_type\": \"\",\n \"activityTypeData\": \"\",\n \"activity_sub_type\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" }, "url": { "raw": "{{baseUrl}}/activity", From 3f9782d24bed9322bb17210e4952d3ed03d1d447 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Thu, 17 Sep 2020 11:29:05 -0700 Subject: [PATCH 065/194] Update geometry query --- api-mobile/app.ts | 1 + api-mobile/src/queries/activity-queries.ts | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/api-mobile/app.ts b/api-mobile/app.ts index d0d766375..d026abe77 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -42,6 +42,7 @@ const openAPIFramework = initialize({ }, securityHandlers: { Bearer: function (req, scopes) { + // return true // bypass authentication return authenticate(req, scopes); } }, diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 8feb6f052..4f6e6212b 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -29,12 +29,14 @@ export const postActivitySQL = (activityData: ActivityPostRequestBody): SQLState if (activityData.locationAndGeometry && activityData.locationAndGeometry['geometry']) { sqlStatement.append(` - ,public.ST_Force2D( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${JSON.stringify(activityData.locationAndGeometry['geometry'])}) - ,4326 + ,public.geography( + public.ST_Force2D( + public.ST_SetSRID( + public.ST_GeomFromGeoJSON('${JSON.stringify(activityData.locationAndGeometry['geometry'])}') + ,4326 + ) ) - )::geography + ) `); } else { sqlStatement.append(` From 82d9d5e5b571d22610e2990eda3a7791a3811839 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Wed, 23 Sep 2020 11:48:39 -0700 Subject: [PATCH 066/194] yaml specs ready for activityData, activityTypeData, activitySubTypeData --- api-mobile/src/openapi/api-doc-original.yaml | 902 ++++++++++++++++ api-mobile/src/openapi/api-doc.yaml | 1007 ++++++++---------- 2 files changed, 1332 insertions(+), 577 deletions(-) create mode 100644 api-mobile/src/openapi/api-doc-original.yaml diff --git a/api-mobile/src/openapi/api-doc-original.yaml b/api-mobile/src/openapi/api-doc-original.yaml new file mode 100644 index 000000000..f727942b2 --- /dev/null +++ b/api-mobile/src/openapi/api-doc-original.yaml @@ -0,0 +1,902 @@ +openapi: 3.0.0 + +info: + version: 0.0.0 + title: invasivesbc-api-mobile + description: API for InvasivesBC mobile. + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + +servers: + - url: http://localhost:3002/api + description: local api + - url: http://localhost:7080/api + description: local api via docker + - url: https://api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca + description: deployed api in dev environment + - url: https://api-mobile-test-invasivesbc.pathfinder.gov.bc.ca + description: deployed api in test environment + - url: https://api-mobile-invasivesbc.pathfinder.gov.bc.ca + description: deployed api in prod environmen + +tags: + - name: misc + description: Miscellaneous endpoints + - name: activity + description: | + Activity endpoints + An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' + - name: observation + description: Observation activity endpoints + - name: plant + description: Plant endpoints + - name: code + description: Code endpoints + - name: media + description: Media endpoints + +externalDocs: + description: Visit GitHub to find out more about this API + url: https://github.com/bcgov/lucy-web.git + +# paths are generated via express-openapi based on the ./src/paths/* structure +paths: {} + +# See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#componentsObject for supported component types +components: + securitySchemes: + Bearer: # arbitrary name for the security scheme + type: http + scheme: bearer + bearerFormat: JWT # optional, arbitrary value for documentation purposes + description: | + To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. + The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` + responses: + "401": + description: Unauthorized user + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + "400": + description: Bad request + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + "503": + description: Service unavailable + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + default: + description: Unexpected error + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + schemas: + Error: + description: Error response object. + properties: + status: + type: number + message: + type: string + errors: + type: array + items: + type: string + + Observation: + description: | + Observation main object. + type: object + required: + - observation_id + - workflow_id + - observation_date + - observation time + - observer_first_name + - observer_last_name + - species_id + - observation_type + - species_agency_code + - jurisdiction_code + properties: + observation_id: + type: number + title: "ID" + workflow_id: + type: number + title: "Workflow ID" + observation_date: + type: string + title: "Date" + observation_time: + type: string + title: "Time" + observer_first_name: + type: string + title: "First Name" + observer_last_name: + type: string + title: "Last Name" + species_id: + type: string + title: "Species" + observation_type: + type: string + title: "Type" + species_agency_code: + type: string + title: "Agency" + jurisdiction_code: + type: string + title: "Jurisdiction" + negative_obs_ind: + type: boolean + title: "Negative Observation" + subType: + oneOf: + - $ref: "#/components/schemas/Observation_PlantTerrestial" + - $ref: "#/components/schemas/Observation_AnimalTerrestrial" + - $ref: "#/components/schemas/Observation_AnimalAquatic" + + Observation_PlantTerrestial: + description: | + Plant Observation Terrestrial + type: object + properties: + species_density_code: + type: string + title: "Density" + species_distribution_code: + type: string + title: "Distribution" + soil_texture_code: + type: string + title: "Soil Texture" + specific_use_code: + type: string + title: "Specific Use" + slope_code: + type: string + title: "Slope" + aspect_code: + type: string + title: "Aspect" + proposed_action_code: + type: string + title: "Proposed Action" + flowering: + type: boolean + title: "Flowering" + plant_life_stage: + type: string + title: "Life Stage" + plant_health: + type: string + title: "Health" + plant_seed_stage: + type: string + title: "Seed Stage" + sample_identifier: + type: string + title: "Sample ID" + range_unit_number: + type: string + title: "Range Unit" + general_comment: + type: string + title: "Comment" + maximum: 300 + access_description: + type: string + title: "Access Description" + primary_file_id: + type: string + title: "Primary File" + secondary_file_id: + type: string + title: "Secondary File" + sample_taken: + type: boolean + title: "Sample Taken" + sample_number: + type: string + title: "Sample Number" + aquatic_obs_ind: + type: boolean + title: "Aquatic Observation" + legacy_site_ind: + type: boolean + early_detection_rapid_resp_ind: + type: boolean + title: "Early Detection" + research_detection_ind: + type: boolean + title: "Research Detection" + well_ind: + type: boolean + title: "Well" + special_care_ind: + type: boolean + title: "Special Care" + biological_ind: + type: boolean + title: "Biological" + Photo_Indicator: + type: boolean + title: "Photo" + Bec_Zone: + type: string + title: "Bec Zone" + RISO: + type: string + title: "RISO" + IPMA: + type: string + title: "IPMA" + Ownership: + type: string + title: "Owned by" + Regional_District: + type: string + title: "Regional District" + FLNRO_District: + type: string + title: "FLNRO District" + MOTI_District: + type: string + title: "MOTI District" + MOE_Region: + type: string + title: "MOE Region" + photo: + type: array + title: "Photos" + items: + $ref: "#/components/schemas/Photo" + + Photo: + description: | + List of Photos + type: object + required: + - photo_id + properties: + photo_id: + type: number + title: "ID" + observation_id: + type: number + title: "Observation ID" + photo_date: + type: string + title: "Date" + photo_time: + type: string + title: "Time" + description: + type: string + title: "description" + photo_store: + type: string + title: "Photo" + + Observation_AnimalTerrestrial: + description: | + Animal Observation Terrestrial. + type: object + properties: + Number_of_Individuals_observed: + type: number + title: "Number of Individuals" + Life_Stage: + type: string + title: "Life Stage" + Behaviour: + type: string + title: "Behaviour" + sample_taken: + type: boolean + title: "Sample Taken" + sample_number: + type: string + title: "Sample Number" + general_comment: + type: string + title: "Comment" + access_description: + type: string + title: "Access Description" + photo: + type: array + title: "Photos" + items: + $ref: "#/components/schemas/Photo" + + Observation_AnimalAquatic: + description: | + Animal Observation Aquatic. + type: object + properties: + Number_of_Individuals_observed: + type: number + title: "Number of Individuals" + Life_Stage: + type: string + title: "Life Stage" + Behaviour: + type: string + title: "Behaviour" + sample_taken: + type: boolean + title: "Sample Taken" + sample_number: + type: string + title: "Sample Number" + general_comment: + type: string + title: "Comment" + access_description: + type: string + title: "Access Description" + photo: + type: array + title: "Photos" + items: + $ref: "#/components/schemas/Photo" + + ObservationPlantResponse: + description: | + Observation plant response object. + Returned in the 200 responses for all `/observation/plant/*` routes. + type: object + required: + - observation_id + - observation_date + - access_description + - observer_first_name + - observer_last_name + - sample_identifier + - range_unit_number + - general_comment + - legacy_site_ind + - early_detection_rapid_resp_ind + - research_detection_ind + - sample_taken_ind + - well_ind + - special_care_ind + - biological_ind + - aquatic_ind + - species_id + - jurisdiction_code_id + - species_density_code_id + - species_distribution_code_id + - observation_type_code_id + - species_agency_code_id + - soil_texture_code_id + - specific_use_code_id + - observation_slope_code_id + - observation_aspect_code_id + - observation_proposed_action_code_id + - created_at + - updated_at + - updated_by_user_id + - created_by_user_id + - space_geom_id + - hex_id + - hex_sub_id + - total_area + - negative_occurance_ind + - paper_id_primary + - paper_id_secondary + - elevation_meters + - well_proximity + - well_tag + - observation_geometry_code_id + - photo_indicator + - flowering + - bec_zone + - riso + - ipma + - ownership + - regional_district + - flnro_district + - moti_district + - raw_longitude + - raw_latitude + - raw_utm_zone + - raw_utm_easting + - raw_utm_northing + - raw_albers_x + - raw_albers_y + properties: + observation_id: + type: number + observation_date: + type: string + access_description: + type: string + observer_first_name: + type: string + observer_last_name: + type: string + sample_identifier: + type: string + range_unit_number: + type: string + general_comment: + type: string + legacy_site_ind: + type: boolean + early_detection_rapid_resp_ind: + type: boolean + research_detection_ind: + type: boolean + sample_taken_ind: + type: boolean + well_ind: + type: boolean + special_care_ind: + type: boolean + biological_ind: + type: boolean + aquatic_ind: + type: boolean + species_id: + type: object + jurisdiction_code_id: + type: object + species_density_code_id: + type: object + species_distribution_code_id: + type: object + observation_type_code_id: + type: object + species_agency_code_id: + type: object + soil_texture_code_id: + type: object + specific_use_code_id: + type: object + observation_slope_code_id: + type: object + observation_aspect_code_id: + type: object + observation_proposed_action_code_id: + type: object + created_at: + type: string + updated_at: + type: string + updated_by_user_id: + type: number + created_by_user_id: + type: number + space_geom_id: + type: number + hex_id: + type: number + hex_sub_id: + type: number + total_area: + type: number + negative_occurance_ind: + type: boolean + paper_id_primary: + type: string + paper_id_secondary: + type: string + elevation_meters: + type: number + well_proximity: + type: number + well_tag: + type: number + observation_geometry_code_id: + type: object + photo_indicator: + type: boolean + flowering: + type: boolean + bec_zone: + type: string + riso: + type: string + ipma: + type: string + ownership: + type: string + regional_district: + type: string + flnro_district: + type: string + moti_district: + type: string + raw_longitude: + type: number + raw_latitude: + type: number + raw_utm_zone: + type: number + raw_utm_easting: + type: number + raw_utm_northing: + type: number + raw_albers_x: + type: number + raw_albers_y: + type: number + + ObservationCodeResponse: + required: + - message + - data + properties: + message: + type: string + data: + $ref: "#/components/schemas/ObservationCode" + + ObservationCode: + description: Observation code tables. + required: + - observation_aspect_code + - jurisdiction_code + - observation_geometry_code + - observation_type_code + - observation_proposed_action_code + - observation_slope_code + - soil_texture_code + - species_agency_code + - species_density_code + - species_distribution_code + - species + - specific_use_code + properties: + observation_aspect_code: + type: array + items: + $ref: "#/components/schemas/AspectCode" + jurisdiction_code: + type: array + items: + $ref: "#/components/schemas/JurisdictionCode" + observation_geometry_code: + type: array + items: + $ref: "#/components/schemas/ObservationGeometryCode" + observation_type_code: + type: array + items: + $ref: "#/components/schemas/ObservationTypeCode" + observation_proposed_action_code: + type: array + items: + $ref: "#/components/schemas/ProposedActionCode" + observation_slope_code: + type: array + items: + $ref: "#/components/schemas/SlopeCode" + soil_texture_code: + type: array + items: + $ref: "#/components/schemas/SoilTextureCode" + species: + type: array + items: + $ref: "#/components/schemas/Species" + species_density_code: + type: array + items: + $ref: "#/components/schemas/SpeciesDensityCode" + species_distribution_code: + type: array + items: + $ref: "#/components/schemas/SpeciesDistributionCode" + species_agency_code: + type: array + items: + $ref: "#/components/schemas/SpeciesAgencyCode" + specific_use_code: + type: array + items: + $ref: "#/components/schemas/SpecificUseCode" + + AspectCode: + type: object + required: + - observation_aspect_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_aspect_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + JurisdictionCode: + type: object + required: + - jurisdiction_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + jurisdiction_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationGeometryCode: + type: object + required: + - observation_geometry_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_geometry_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ObservationTypeCode: + type: object + required: + - observation_type_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_type_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + ProposedActionCode: + type: object + required: + - observation_proposed_action_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_proposed_action_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SlopeCode: + type: object + required: + - observation_slope_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + observation_slope_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SoilTextureCode: + type: object + required: + - soil_texture_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + soil_texture_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + Species: + type: object + required: + - species_id + - mapCode + - earlyDetection + - containmentSpecies + - containmentSpacialRef + - species + - genus + - commonName + - latinName + - updateAt + - createdAt + properties: + species_id: + type: number + mapCode: + type: string + earlyDetection: + type: boolean + containmentSpecies: + type: number + containmentSpacialRef: + type: number + species: + type: string + genus: + type: string + commonName: + type: string + latinName: + type: string + updateAt: + type: string + createdAt: + type: string + + SpeciesDensityCode: + type: object + required: + - species_density_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_density_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesDistributionCode: + type: object + required: + - species_distribution_code_id + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_distribution_code_id: + type: number + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpeciesAgencyCode: + type: object + required: + - species_agency_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + species_agency_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string + + SpecificUseCode: + type: object + required: + - specific_use_code_id + - code + - description + - activeIndicator + - updateAt + - createdAt + properties: + specific_use_code_id: + type: number + code: + type: string + description: + type: string + activeIndicator: + type: boolean + updateAt: + type: string + createdAt: + type: string \ No newline at end of file diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index bcbd7abe2..ddd12a660 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -40,7 +40,7 @@ externalDocs: description: Visit GitHub to find out more about this API url: https://github.com/bcgov/lucy-web.git -# paths are generated via express-openapi based on the ./src/paths/* structure +## paths are generated via express-openapi based on the ./src/paths/* structure paths: {} # See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#componentsObject for supported component types @@ -96,60 +96,106 @@ components: items: type: string + Activity: + description: + Activity main object. + type: object + required: + - species_agency_code + - activity_status + properties: + species_agency_code: + type: string + title: "Agency" + jurisdiction_code: + type: string + title: "Jurisdiction" + activity_status: + type: string + title: "Activity status" + species_id: + type: string + title: "Species" + general_comment: + type: string + title: "Comment" + maximum: 300 + access_description: + type: string + title: "Access Description" + primary_paper_file_id: + type: string + title: "Primary File" + secondary_paper_file_id: + type: string + title: "Secondary File" + media_indicator: + type: boolean + title: "Photo" + created_date_on_device: + type: string + title: "created on device" + updated_date_on_device: + type: string + title: "created on device" + media: + type: array + title: "Photos" + items: + $ref: "#/components/schemas/Media" + subType: + oneOf: + - $ref: "#/components/schemas/Observation" + - $ref: "#/components/schemas/Treatment" + - $ref: "#/components/schemas/Monitoring" + Observation: description: | Observation main object. type: object required: - observation_id - - workflow_id - observation_date - observation time - - observer_first_name - - observer_last_name - - species_id - observation_type - - species_agency_code - - jurisdiction_code properties: observation_id: type: number title: "ID" - workflow_id: - type: number - title: "Workflow ID" observation_date: type: string title: "Date" observation_time: type: string title: "Time" + observation_type: + type: string + title: "Type" observer_first_name: type: string title: "First Name" observer_last_name: type: string title: "Last Name" - species_id: - type: string - title: "Species" - observation_type: - type: string - title: "Type" - species_agency_code: - type: string - title: "Agency" - jurisdiction_code: + reported_area: + type: integer + title: "Area" + sample_taken: + type: boolean + title: "Sample Taken" + sample_number: type: string - title: "Jurisdiction" + title: "Sample Number" negative_obs_ind: type: boolean title: "Negative Observation" subType: oneOf: - $ref: "#/components/schemas/Observation_PlantTerrestial" + - $ref: "#/components/schemas/Observation_PlantAquatic" - $ref: "#/components/schemas/Observation_AnimalTerrestrial" - $ref: "#/components/schemas/Observation_AnimalAquatic" + Observation_PlantTerrestial: description: | @@ -195,28 +241,6 @@ components: range_unit_number: type: string title: "Range Unit" - general_comment: - type: string - title: "Comment" - maximum: 300 - access_description: - type: string - title: "Access Description" - primary_file_id: - type: string - title: "Primary File" - secondary_file_id: - type: string - title: "Secondary File" - sample_taken: - type: boolean - title: "Sample Taken" - sample_number: - type: string - title: "Sample Number" - aquatic_obs_ind: - type: boolean - title: "Aquatic Observation" legacy_site_ind: type: boolean early_detection_rapid_resp_ind: @@ -234,64 +258,71 @@ components: biological_ind: type: boolean title: "Biological" - Photo_Indicator: - type: boolean - title: "Photo" - Bec_Zone: + + Observation_PlantAquatic: + description: + Plant Observation Terrestrial + type: object + properties: + specific_use_code: type: string - title: "Bec Zone" - RISO: + title: "Specific Use" + proposed_action_code: type: string - title: "RISO" - IPMA: + title: "Proposed Action" + flowering: + type: boolean + title: "Flowering" + plant_life_stage: type: string - title: "IPMA" - Ownership: + title: "Life Stage" + plant_health: type: string - title: "Owned by" - Regional_District: + title: "Health" + plant_seed_stage: type: string - title: "Regional District" - FLNRO_District: + title: "Seed Stage" + sample_identifier: type: string - title: "FLNRO District" - MOTI_District: + title: "Sample ID" + range_unit_number: type: string - title: "MOTI District" - MOE_Region: + title: "Range Unit" + legacy_site_ind: + type: boolean + early_detection_rapid_resp_ind: + type: boolean + title: "Early Detection" + research_detection_ind: + type: boolean + title: "Research Detection" + sample_taken: + type: boolean + title: "Sample Taken" + sample_point_number: type: string - title: "MOE Region" - photo: - type: array - title: "Photos" - items: - $ref: "#/components/schemas/Photo" - - Photo: - description: | - List of Photos - type: object - required: - - photo_id - properties: - photo_id: + title: "Sample Number" + special_care_ind: + type: boolean + title: "Special Care" + biological_ind: + type: boolean + title: "Biological" + secchi_depth: type: number - title: "ID" - observation_id: + format: float + title: "secchi depth" + water_depth: type: number - title: "Observation ID" - photo_date: - type: string - title: "Date" - photo_time: - type: string - title: "Time" - description: - type: string - title: "description" - photo_store: + format: float + title: "water depth" + voucher_submitted_ind: + type: boolean + title: "Voucher submitted" + voucher_submission_detail: type: string - title: "Photo" + title: "Voucher submission details" + Observation_AnimalTerrestrial: description: | @@ -307,597 +338,419 @@ components: Behaviour: type: string title: "Behaviour" - sample_taken: - type: boolean - title: "Sample Taken" - sample_number: - type: string - title: "Sample Number" - general_comment: - type: string - title: "Comment" - access_description: - type: string - title: "Access Description" - photo: - type: array - title: "Photos" - items: - $ref: "#/components/schemas/Photo" - + + Observation_AnimalAquatic: description: | Animal Observation Aquatic. type: object properties: - Number_of_Individuals_observed: - type: number - title: "Number of Individuals" - Life_Stage: + observation_details: type: string - title: "Life Stage" - Behaviour: - type: string - title: "Behaviour" - sample_taken: - type: boolean - title: "Sample Taken" - sample_number: + title: "Aquatic animal observations" + + + Treatment: + description: | + Treament main object. + type: object + required: + - treatment_method + - treatment_date + - treatment_time + properties: + treatment_method: type: string - title: "Sample Number" - general_comment: + title: "Treatment method" + treatment_date: type: string - title: "Comment" - access_description: + title: "Treatment date" + treatment_time: type: string - title: "Access Description" - photo: - type: array - title: "Photos" - items: - $ref: "#/components/schemas/Photo" - - ObservationPlantResponse: + title: "Treatment time" + subType: + oneOf: + - $ref: "#/components/schemas/Treatment_ChemicalPlant:" + - $ref: "#/components/schemas/Treatment_MechanicalPlant" + - $ref: "#/components/schemas/Treatment_BiologicalPlant" + - $ref: "#/components/schemas/Treatment_BiologicalDispersalPlant" + - $ref: "#/components/schemas/Treatment_MechanicalTerrestrialAnimal" + - $ref: "#/components/schemas/Treatment_ChemicalTerrestrialAnimal" + - $ref: "#/components/schemas/Treatment_BiologicalTerrestrialAnimal" + + Treatment_ChemicalPlant: description: | - Observation plant response object. - Returned in the 200 responses for all `/observation/plant/*` routes. + Chemical treament for plants - main object. type: object required: - - observation_id - - observation_date - - access_description - - observer_first_name - - observer_last_name - - sample_identifier - - range_unit_number - - general_comment - - legacy_site_ind - - early_detection_rapid_resp_ind - - research_detection_ind - - sample_taken_ind - - well_ind - - special_care_ind - - biological_ind - - aquatic_ind - - species_id - - jurisdiction_code_id - - species_density_code_id - - species_distribution_code_id - - observation_type_code_id - - species_agency_code_id - - soil_texture_code_id - - specific_use_code_id - - observation_slope_code_id - - observation_aspect_code_id - - observation_proposed_action_code_id - - created_at - - updated_at - - updated_by_user_id - - created_by_user_id - - space_geom_id - - hex_id - - hex_sub_id - - total_area - - negative_occurance_ind - - paper_id_primary - - paper_id_secondary - - elevation_meters - - well_proximity - - well_tag - - observation_geometry_code_id - - photo_indicator - - flowering - - bec_zone - - riso - - ipma - - ownership - - regional_district - - flnro_district - - moti_district - - raw_longitude - - raw_latitude - - raw_utm_zone - - raw_utm_easting - - raw_utm_northing - - raw_albers_x - - raw_albers_y + - primary_applicator_employee_code + - secondary_applicator_employee_code + - pesticide_employer_code properties: - observation_id: - type: number - observation_date: + primary_applicator_employee_code: type: string - access_description: + title: "Primary Applicator employee code" + secondary_applicator_employee_code: type: string - observer_first_name: + title: "Secondary Applicator employee code" + pesticide_employer_code: type: string - observer_last_name: + title: "Pesticide employer code" + project_management_plan_PMP: type: string - sample_identifier: + title: "Projecty Management Plan" + pesticide_use_permit_PUP: type: string - range_unit_number: + title: "Pesticide use permit" + chemical_treatment_method: type: string - general_comment: + title: "Chemical treatment method" + temperature: + type: integer + title: "Temperature" + wind_speed: type: string - legacy_site_ind: - type: boolean - early_detection_rapid_resp_ind: - type: boolean - research_detection_ind: - type: boolean - sample_taken_ind: - type: boolean - well_ind: - type: boolean - special_care_ind: - type: boolean - biological_ind: - type: boolean - aquatic_ind: - type: boolean - species_id: - type: object - jurisdiction_code_id: - type: object - species_density_code_id: - type: object - species_distribution_code_id: - type: object - observation_type_code_id: - type: object - species_agency_code_id: - type: object - soil_texture_code_id: - type: object - specific_use_code_id: - type: object - observation_slope_code_id: - type: object - observation_aspect_code_id: - type: object - observation_proposed_action_code_id: - type: object - created_at: - type: string - updated_at: - type: string - updated_by_user_id: + title: "Wind" + humidity: + type: integer + title: "Humidity" + mix_delivery_rate: type: number - created_by_user_id: + format: float + title: "Mix delivery rate" + application_rate: type: number - space_geom_id: + format: float + title: "Application rate" + area_treated: type: number - hex_id: + format: float + title: "Area treated" + amount_of_herbicide_1: type: number - hex_sub_id: + format: float + title: "Herbicide 1 amount" + amount_of_herbicide_2: type: number - total_area: + format: float + title: "Herbicide 2 amount" + amount_of_herbicide_3: type: number - negative_occurance_ind: - type: boolean - paper_id_primary: + format: float + title: "Herbicide 3 amount" + herbicide_1: type: string - paper_id_secondary: + title: "Herbicide 1" + herbicide_2: type: string - elevation_meters: - type: number - well_proximity: - type: number - well_tag: - type: number - observation_geometry_code_id: - type: object - photo_indicator: - type: boolean - flowering: - type: boolean - bec_zone: + title: "Herbicide 2" + herbicide_3: type: string - riso: + title: "Herbicide 3" + + Treatment_MechanicalPlant: + description: + Mechanical treament for plants - main object. + type: object + required: + - mechanical_method + properties: + applicator1_first_name: type: string - ipma: + title: "Applicator 1 first name" + applicator1_last_name: type: string - ownership: + title: "Applicator 1 last name" + applicator2_first_name: type: string - regional_district: + title: "Applicator 1 first name" + applicator2_last_name: type: string - flnro_district: + title: "Applicator 1 last name" + treatment_contractor: type: string - moti_district: + title: "Treatment contractor" + mechanical_method: type: string - raw_longitude: - type: number - raw_latitude: - type: number - raw_utm_zone: - type: number - raw_utm_easting: - type: number - raw_utm_northing: - type: number - raw_albers_x: - type: number - raw_albers_y: - type: number - - ObservationCodeResponse: - required: - - message - - data - properties: - message: + title: "Mechanical method" + mechanical_disposal_method: + type: string + title: "Mechanical disposal method" + mechanical_root_removal_code: type: string - data: - $ref: "#/components/schemas/ObservationCode" + title: "Mechanical root removal code" + mechanical_soil_disturbance_code: + type: string + title: "Mechanical soil disturbance code" + signage_on_site: + type: boolean + title: "Signage on site" - ObservationCode: - description: Observation code tables. - required: - - observation_aspect_code - - jurisdiction_code - - observation_geometry_code - - observation_type_code - - observation_proposed_action_code - - observation_slope_code - - soil_texture_code - - species_agency_code - - species_density_code - - species_distribution_code - - species - - specific_use_code - properties: - observation_aspect_code: - type: array - items: - $ref: "#/components/schemas/AspectCode" - jurisdiction_code: - type: array - items: - $ref: "#/components/schemas/JurisdictionCode" - observation_geometry_code: - type: array - items: - $ref: "#/components/schemas/ObservationGeometryCode" - observation_type_code: - type: array - items: - $ref: "#/components/schemas/ObservationTypeCode" - observation_proposed_action_code: - type: array - items: - $ref: "#/components/schemas/ProposedActionCode" - observation_slope_code: - type: array - items: - $ref: "#/components/schemas/SlopeCode" - soil_texture_code: - type: array - items: - $ref: "#/components/schemas/SoilTextureCode" - species: - type: array - items: - $ref: "#/components/schemas/Species" - species_density_code: - type: array - items: - $ref: "#/components/schemas/SpeciesDensityCode" - species_distribution_code: - type: array - items: - $ref: "#/components/schemas/SpeciesDistributionCode" - species_agency_code: - type: array - items: - $ref: "#/components/schemas/SpeciesAgencyCode" - specific_use_code: - type: array - items: - $ref: "#/components/schemas/SpecificUseCode" - AspectCode: + + Treatment_BiologicalPlant: + description: + Mechanical treament for plants - main object. type: object required: - - observation_aspect_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt + - treatment_contractor properties: - observation_aspect_code_id: - type: number - code: + applicator1_first_name: type: string - description: + title: "Applicator 1 first name" + applicator1_last_name: type: string - activeIndicator: - type: boolean - updateAt: + title: "Applicator 1 last name" + applicator2_first_name: type: string - createdAt: + title: "Applicator 1 first name" + applicator2_last_name: type: string - - JurisdictionCode: - type: object - required: - - jurisdiction_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - jurisdiction_code_id: - type: number - code: + title: "Applicator 1 last name" + treatment_contractor: type: string - description: + title: "Treatment contractor" + classified_area: type: string - activeIndicator: - type: boolean - updateAt: + title: "Classified area" + release_quantity: + type: integer + title: "Release quantity" + agent_source: + type: string + title: "Agent source" + biological_agent: + type: string + title: "Biological agent" + biological_agent_stage: type: string - createdAt: + title: "Biological agent stage" + biological_maturity_status: type: string + title: "Biological maturity status" - ObservationGeometryCode: + Treatment_BiologicalDispersalPlant: + description: + Mechanical treament for plants - main object. type: object required: - - observation_geometry_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt + - treatment_contractor properties: - observation_geometry_code_id: - type: number - code: + applicator1_first_name: type: string - description: + title: "Applicator 1 first name" + applicator1_last_name: type: string - activeIndicator: - type: boolean - updateAt: + title: "Applicator 1 last name" + applicator2_first_name: type: string - createdAt: + title: "Applicator 1 first name" + applicator2_last_name: type: string - - ObservationTypeCode: - type: object - required: - - observation_type_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_type_code_id: - type: number - code: - type: string - description: + title: "Applicator 1 last name" + treatment_contractor: type: string - activeIndicator: - type: boolean - updateAt: + title: "Treatment contractor" + duration_of_count: + type: integer + title: "Duration of count" + biological_agent: type: string - createdAt: + title: "Biological agent" + plant_count: + type: integer + title: "Plant count" + biological_agent_count: + type: integer + title: "Biological agent count" + biological_agent_presence: type: string + title: "Biological agent presence" - ProposedActionCode: + Treatment_MechanicalTerrestrialAnimal: + description: + Mechanical treament for terrestrial animals - main object. type: object required: - - observation_proposed_action_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt + - treatment_details properties: - observation_proposed_action_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: + treatment_details: type: string + title: "Treatment details" - SlopeCode: + Treatment_ChemicalTerrestrialAnimal: + description: + Chemical treament for animals - main object. type: object required: - - observation_slope_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt + - treatment_details properties: - observation_slope_code_id: - type: number - code: - type: string - description: + treatment_details: type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: + title: "Treatment details" + + Treatment_BiologicalTerrestrialAnimal: + description: + Biological treament for animals - main object. + type: object + required: + - treatment_details + properties: + treatment_details: type: string + title: "Treatment details" - SoilTextureCode: + Monitoring: + description: | + Monitoring main object. type: object required: - - soil_texture_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt + - activity_id properties: - soil_texture_code_id: - type: number - code: + activity_id: + type: integer + title: "Treatment id" + monitoring_date: type: string - description: + title: "Treatment date" + observer_first_name: type: string - activeIndicator: - type: boolean - updateAt: + title: "First Name" + observer_last_name: type: string - createdAt: + title: "Last Name" + efficacy_rating_code: + type: integer + title: "Efficacy rating" + subType: + oneOf: + - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" + - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAquaticPlant" + - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialPlant" + - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAnimal" + - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAnimal" + - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialAnimal" + + Monitoring_ChemicalTerrestrialAquaticPlant: + description: + Chemical monitoring for terrestrial plants - main object. + type: object + required: + - monitoring_details + properties: + monitoring_details: type: string + title: "Monitoring details" - Species: + Monitoring_MechanicalTerrestrialAquaticPlant: + description: + Mechanical monitoring for terrestrial plants - main object. type: object required: - - species_id - - mapCode - - earlyDetection - - containmentSpecies - - containmentSpacialRef - - species - - genus - - commonName - - latinName - - updateAt - - createdAt + - monitoring_details properties: - species_id: - type: number - mapCode: + monitoring_details: type: string - earlyDetection: + title: "Monitoring details" + + Monitoring_BiologicalTerrestrialPlant: + description: + Biological monitoring for terrestrial plants - main object. + type: object + properties: + plant_count: + type: integer + title: "Plant count" + agent_count: + type: integer + title: "Agent count" + count_duration: + type: integer + title: "Count duration" + agent_destroyed_ind: type: boolean - containmentSpecies: - type: number - containmentSpacialRef: - type: number - species: - type: string - genus: - type: string - commonName: - type: string - latinName: - type: string - updateAt: - type: string - createdAt: + title: "Agent destroyed" + legacy_presence_ind: + type: boolean + title: "Legacy presence" + foliar_feeding_damage_ind: + type: boolean + title: "Foliar feeding damage" + root_feeding_damage_ind: + type: boolean + title: "Root feeding damage" + oviposition_marks_ind: + type: boolean + title: "Oviposition marks" + eggs_present_ind: + type: boolean + title: "Eggs present" + larvae_present_ind: + type: boolean + title: "Larvae present" + pupae_present_ind: + type: boolean + title: "Pupae present" + adults_present_ind: + type: boolean + title: "Adults present" + tunnels_present_ind: + type: boolean + title: "Tunnels present" + biological_agent_spread: type: string + title: "Biological agent spread" - SpeciesDensityCode: + Monitoring_MechanicalTerrestrialAnimal: + description: + Mechanical monitoring for terrestrial plants - main object. type: object required: - - species_density_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt + - monitoring_details properties: - species_density_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: + monitoring_details: type: string + title: "Monitoring details" - SpeciesDistributionCode: + Monitoring_ChemicalTerrestrialAnimal: + description: + Chemical monitoring for terrestrial plants - main object. type: object required: - - species_distribution_code_id - - description - - activeIndicator - - updateAt - - createdAt + - monitoring_details properties: - species_distribution_code_id: - type: number - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: + monitoring_details: type: string + title: "Monitoring details" - SpeciesAgencyCode: + Monitoring_BiologicalTerrestrialAnimal: + description: + Mechanical monitoring for terrestrial plants - main object. type: object required: - - species_agency_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt + - monitoring_details properties: - species_agency_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: + monitoring_details: type: string + title: "Monitoring details" - SpecificUseCode: + Media: + description: | + List of Media type: object - required: - - specific_use_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt properties: - specific_use_code_id: - type: number - code: + media_date: type: string + title: "Date" description: type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string + title: "Description" + file_name: + type: 'string' + title: 'File Name' + encoded_file: + type: 'string' + format: 'base64' + description: 'A Data URL base64 encoded image' + example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' + \ No newline at end of file From 01df3fb1afd34516f0f225adbb4f1cacd5ae79e9 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Wed, 23 Sep 2020 17:06:10 -0700 Subject: [PATCH 067/194] field validations in progress --- api-mobile/src/openapi/api-doc.yaml | 201 ++++++++++++++++++++++------ 1 file changed, 157 insertions(+), 44 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index ddd12a660..9ac812f84 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -102,7 +102,14 @@ components: type: object required: - species_agency_code + - jurisdiction_code - activity_status + - species_id + - access_description + - media_indicator + - created_date_on_device + - updated_date_on_device + - subType properties: species_agency_code: type: string @@ -113,6 +120,11 @@ components: activity_status: type: string title: "Activity status" + enum: + - sync + - done + - pending + - errors species_id: type: string title: "Species" @@ -123,26 +135,26 @@ components: access_description: type: string title: "Access Description" - primary_paper_file_id: - type: string - title: "Primary File" - secondary_paper_file_id: - type: string - title: "Secondary File" + maximum: 300 media_indicator: type: boolean title: "Photo" created_date_on_device: type: string - title: "created on device" + title: "Created date on device" updated_date_on_device: type: string - title: "created on device" + title: "Updated date on device" media: type: array title: "Photos" items: $ref: "#/components/schemas/Media" + paper_file: + type: array + title: "Paper file" + items: + $ref: "#/components/schemas/PaperFile" subType: oneOf: - $ref: "#/components/schemas/Observation" @@ -154,14 +166,16 @@ components: Observation main object. type: object required: - - observation_id - observation_date - observation time - observation_type + - observer_first_name + - observer_last_name + - reported_area + - sample_taken + - negative_obs_ind + - subType properties: - observation_id: - type: number - title: "ID" observation_date: type: string title: "Date" @@ -174,18 +188,23 @@ components: observer_first_name: type: string title: "First Name" + maximum: 50 observer_last_name: type: string title: "Last Name" + maximum: 50 reported_area: type: integer title: "Area" + minimum: 1 + maximum: 100 sample_taken: type: boolean title: "Sample Taken" sample_number: type: string title: "Sample Number" + maximum: 50 negative_obs_ind: type: boolean title: "Negative Observation" @@ -201,6 +220,24 @@ components: description: | Plant Observation Terrestrial type: object + required: + - species_density_code + - species_distribution_code + - soil_texture_code + - specific_use_code + - slope_code + - aspect_code + - proposed_action_code + - flowering + - plant_life_stage + - plant_health + - plant_seed_stage + - legacy_site_ind + - early_detection_rapid_resp_ind + - research_detection_ind + - well_ind + - special_care_ind + - biological_ind properties: species_density_code: type: string @@ -263,6 +300,23 @@ components: description: Plant Observation Terrestrial type: object + required: + - specific_use_code + - proposed_action_code + - flowering + - plant_life_stage + - plant_health + - plant_seed_stage + - legacy_site_ind + - early_detection_rapid_resp_ind + - research_detection_ind + - sample_taken + - sample_point_number + - special_care_ind + - biological_ind + - secchi_depth + - water_depth + - voucher_submitted_ind properties: specific_use_code: type: string @@ -328,22 +382,38 @@ components: description: | Animal Observation Terrestrial. type: object + required: + - number_of_individuals_observed + - life_stage + - behaviour properties: - Number_of_Individuals_observed: + number_of_individuals_observed: type: number - title: "Number of Individuals" - Life_Stage: + title: "Number of individuals" + life_stage: type: string title: "Life Stage" - Behaviour: + enum: + - unknown + - egg + - neonate + - juvenile + - adult + behaviour: type: string title: "Behaviour" - - + enum: + - unknown + - moving + - resting + - deceased + Observation_AnimalAquatic: description: | Animal Observation Aquatic. type: object + required: + - observation_details properties: observation_details: type: string @@ -359,9 +429,6 @@ components: - treatment_date - treatment_time properties: - treatment_method: - type: string - title: "Treatment method" treatment_date: type: string title: "Treatment date" @@ -369,6 +436,7 @@ components: type: string title: "Treatment time" subType: + title: "Treatment method" oneOf: - $ref: "#/components/schemas/Treatment_ChemicalPlant:" - $ref: "#/components/schemas/Treatment_MechanicalPlant" @@ -383,9 +451,17 @@ components: Chemical treament for plants - main object. type: object required: - - primary_applicator_employee_code - - secondary_applicator_employee_code - pesticide_employer_code + - project_management_plan_PMP + - pesticide_use_permit_PUP + - chemical_treatment_method + - temperature + - wind_speed + - humidity + - mix_delivery_rate + - application_rate + - area_treated + - herbicide properties: primary_applicator_employee_code: type: string @@ -408,12 +484,35 @@ components: temperature: type: integer title: "Temperature" + minimum: 10 + maximum: 30 wind_speed: type: string title: "Wind" + enum: + - N + - NE + - E + - SE + - S + - SW + - W + - NW humidity: type: integer title: "Humidity" + enum: + - 0 + - 10 + - 20 + - 30 + - 40 + - 50 + - 60 + - 70 + - 80 + - 90 + - 100 mix_delivery_rate: type: number format: float @@ -426,27 +525,11 @@ components: type: number format: float title: "Area treated" - amount_of_herbicide_1: - type: number - format: float - title: "Herbicide 1 amount" - amount_of_herbicide_2: - type: number - format: float - title: "Herbicide 2 amount" - amount_of_herbicide_3: - type: number - format: float - title: "Herbicide 3 amount" - herbicide_1: - type: string - title: "Herbicide 1" - herbicide_2: - type: string - title: "Herbicide 2" - herbicide_3: - type: string - title: "Herbicide 3" + herbicide: + type: array + title: "Herbicide" + items: + $ref: "#/components/schemas/Herbicide" Treatment_MechanicalPlant: description: @@ -753,4 +836,34 @@ components: format: 'base64' description: 'A Data URL base64 encoded image' example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' + + PaperFile: + description: | + Paper files + type: object + properties: + paper_date: + type: string + title: "Date" + description: + type: string + title: "Description" + maximum: 50 + + Herbicide: + description: + herbicide + type: object + required: + - herbicide_name + - herbicide_amount + properties: + herbicide_name: + type: string + title: "herbicide name" + herbicide_amount: + type: number + title: "herbicide amount" + format: float + \ No newline at end of file From bc7f6165c0a3fb5bf0e80bc5c01f638cc44faace Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 24 Sep 2020 11:30:10 -0700 Subject: [PATCH 068/194] validations done for activity yamly specs --- api-mobile/src/openapi/api-doc.yaml | 61 +++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index 9ac812f84..ad36bf881 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -438,7 +438,7 @@ components: subType: title: "Treatment method" oneOf: - - $ref: "#/components/schemas/Treatment_ChemicalPlant:" + - $ref: "#/components/schemas/Treatment_ChemicalPlant" - $ref: "#/components/schemas/Treatment_MechanicalPlant" - $ref: "#/components/schemas/Treatment_BiologicalPlant" - $ref: "#/components/schemas/Treatment_BiologicalDispersalPlant" @@ -537,6 +537,10 @@ components: type: object required: - mechanical_method + - mechanical_disposal_method + - mechanical_root_removal_code + - mechanical_soil_disturbance_code + - signage_on_site properties: applicator1_first_name: type: string @@ -573,10 +577,13 @@ components: Treatment_BiologicalPlant: description: - Mechanical treament for plants - main object. + Biological treament for plants - main object. type: object required: - treatment_contractor + - biological_agent + - biological_agent_stage + - bioagent_maturity_status properties: applicator1_first_name: type: string @@ -608,9 +615,9 @@ components: biological_agent_stage: type: string title: "Biological agent stage" - biological_maturity_status: + bioagent_maturity_status: type: string - title: "Biological maturity status" + title: "Bioagent maturity status" Treatment_BiologicalDispersalPlant: description: @@ -618,6 +625,7 @@ components: type: object required: - treatment_contractor + - biological_agent properties: applicator1_first_name: type: string @@ -663,7 +671,7 @@ components: Treatment_ChemicalTerrestrialAnimal: description: - Chemical treament for animals - main object. + Chemical treament for terrestrial animals - main object. type: object required: - treatment_details @@ -674,7 +682,7 @@ components: Treatment_BiologicalTerrestrialAnimal: description: - Biological treament for animals - main object. + Biological treament for terrestrial animals - main object. type: object required: - treatment_details @@ -689,6 +697,9 @@ components: type: object required: - activity_id + - observer_first_name + - observer_last_name + - efficacy_rating_code properties: activity_id: type: integer @@ -705,6 +716,28 @@ components: efficacy_rating_code: type: integer title: "Efficacy rating" + enum: + - 0 + - 5 + - 10 + - 15 + - 20 + - 25 + - 30 + - 35 + - 40 + - 45 + - 50 + - 55 + - 60 + - 65 + - 70 + - 75 + - 80 + - 85 + - 90 + - 95 + - 100 subType: oneOf: - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" @@ -740,6 +773,20 @@ components: description: Biological monitoring for terrestrial plants - main object. type: object + required: + - plant_count + - agent_count + - count_duration + - agent_destroyed_ind + - legacy_presence_ind + - foliar_feeding_damage_ind + - root_feeding_damage_ind + - oviposition_marks_ind + - eggs_present_ind + - larvae_present_ind + - pupae_present_ind + - adults_present_ind + - tunnels_present_ind properties: plant_count: type: integer @@ -808,7 +855,7 @@ components: Monitoring_BiologicalTerrestrialAnimal: description: - Mechanical monitoring for terrestrial plants - main object. + Biological monitoring for terrestrial plants - main object. type: object required: - monitoring_details From f5802627c462de22af40ffcb7a9f13d85feb399f Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 24 Sep 2020 11:59:33 -0700 Subject: [PATCH 069/194] geometry specs added --- api-mobile/src/openapi/api-doc.yaml | 62 +++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index ad36bf881..dabd83e67 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -913,4 +913,66 @@ components: title: "herbicide amount" format: float + Geometry: + type: object + description: GeoJSon geometry + discriminator: + propertyName: type + required: + - type + externalDocs: + url: http://geojson.org/geojson-spec.html#geometry-objects + properties: + type: + type: string + enum: + - Point + - LineString + - Polygon + description: the geometry type + Point3D: + type: array + description: Point in 3D space + externalDocs: + url: http://geojson.org/geojson-spec.html#id2 + minItems: 2 + maxItems: 3 + items: + type: number + Point: + type: object + description: GeoJSon geometry + externalDocs: + url: http://geojson.org/geojson-spec.html#id2 + allOf: + - $ref: "#/components/schemas/Geometry" + - properties: + coordinates: + $ref: "#/components/schemas/Point3D" + LineString: + type: object + description: GeoJSon geometry + externalDocs: + url: http://geojson.org/geojson-spec.html#id3 + allOf: + - $ref: "#/components/schemas/Geometry" + - properties: + coordinates: + type: array + items: + $ref: "#/components/schemas/Point3D" + Polygon: + type: object + description: GeoJSon geometry + externalDocs: + url: http://geojson.org/geojson-spec.html#id4 + allOf: + - $ref: "#/components/schemas/Geometry" + - properties: + coordinates: + type: array + items: + type: array + items: + $ref: "#/components/schemas/Point3D" \ No newline at end of file From 53d18f27f0ff79cc932da517842a968367ac714e Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 24 Sep 2020 17:04:03 -0700 Subject: [PATCH 070/194] minor edits --- api-mobile/src/openapi/api-doc.yaml | 89 +++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 25 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index dabd83e67..3217edbd4 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -109,6 +109,7 @@ components: - media_indicator - created_date_on_device - updated_date_on_device + - geometry - subType properties: species_agency_code: @@ -155,11 +156,20 @@ components: title: "Paper file" items: $ref: "#/components/schemas/PaperFile" + geometry: + type: array + title: "Geometry" + items: + $ref: "#/components/schemas/Geometry" subType: + title: "Activity subtype" oneOf: - $ref: "#/components/schemas/Observation" + title: "Observation" - $ref: "#/components/schemas/Treatment" + title: "Treatment" - $ref: "#/components/schemas/Monitoring" + title: "Monitoring" Observation: description: | @@ -209,11 +219,16 @@ components: type: boolean title: "Negative Observation" subType: + title: "Observation subtype" oneOf: - $ref: "#/components/schemas/Observation_PlantTerrestial" + title: "Terrestrial Plant Observation" - $ref: "#/components/schemas/Observation_PlantAquatic" + title: "Aquatic Plant Observation" - $ref: "#/components/schemas/Observation_AnimalTerrestrial" + title: "Terrestrial Animal Observation" - $ref: "#/components/schemas/Observation_AnimalAquatic" + title: "Aquatic Animal Observation" Observation_PlantTerrestial: @@ -280,6 +295,7 @@ components: title: "Range Unit" legacy_site_ind: type: boolean + title: "Legacy site" early_detection_rapid_resp_ind: type: boolean title: "Early Detection" @@ -288,14 +304,13 @@ components: title: "Research Detection" well_ind: type: boolean - title: "Well" + title: "Visible well nearby" special_care_ind: type: boolean title: "Special Care" biological_ind: type: boolean title: "Biological" - Observation_PlantAquatic: description: Plant Observation Terrestrial @@ -311,7 +326,6 @@ components: - early_detection_rapid_resp_ind - research_detection_ind - sample_taken - - sample_point_number - special_care_ind - biological_ind - secchi_depth @@ -425,38 +439,37 @@ components: Treament main object. type: object required: - - treatment_method - - treatment_date - - treatment_time + -subType properties: - treatment_date: - type: string - title: "Treatment date" - treatment_time: - type: string - title: "Treatment time" subType: - title: "Treatment method" + title: "Treatment type" oneOf: - $ref: "#/components/schemas/Treatment_ChemicalPlant" + title: "Chemical treatment for plants" - $ref: "#/components/schemas/Treatment_MechanicalPlant" + title: "Mechanical treatment for plants" - $ref: "#/components/schemas/Treatment_BiologicalPlant" + title: "Biological treament for plants" - $ref: "#/components/schemas/Treatment_BiologicalDispersalPlant" + title: "Biological dispersal treament for plants" - $ref: "#/components/schemas/Treatment_MechanicalTerrestrialAnimal" + title: "Mechanical treatment for terrestrial animals" - $ref: "#/components/schemas/Treatment_ChemicalTerrestrialAnimal" + title: "Chemical treatment for terrestrial animals" - $ref: "#/components/schemas/Treatment_BiologicalTerrestrialAnimal" + title: "Biological treatment for terrestrial animals" Treatment_ChemicalPlant: description: | Chemical treament for plants - main object. type: object required: + - primary_applicator_employee_code + - secondary_applicator_employee_code - pesticide_employer_code - project_management_plan_PMP - - pesticide_use_permit_PUP - chemical_treatment_method - temperature - - wind_speed - humidity - mix_delivery_rate - application_rate @@ -474,7 +487,7 @@ components: title: "Pesticide employer code" project_management_plan_PMP: type: string - title: "Projecty Management Plan" + title: "Project Management Plan" pesticide_use_permit_PUP: type: string title: "Pesticide use permit" @@ -487,8 +500,11 @@ components: minimum: 10 maximum: 30 wind_speed: + type: integer + title: " Wind speed" + wind_direction: type: string - title: "Wind" + title: "Wind direction" enum: - N - NE @@ -536,6 +552,9 @@ components: Mechanical treament for plants - main object. type: object required: + - applicator1_first_name + - applicator1_last_name + - treatment_contractor - mechanical_method - mechanical_disposal_method - mechanical_root_removal_code @@ -580,7 +599,12 @@ components: Biological treament for plants - main object. type: object required: + - applicator1_first_name + - applicator1_last_name - treatment_contractor + - classified_area + - release_quantity + - agent_source - biological_agent - biological_agent_stage - bioagent_maturity_status @@ -624,8 +648,14 @@ components: Mechanical treament for plants - main object. type: object required: + - applicator1_first_name + - applicator1_last_name - treatment_contractor + - duration_of_count - biological_agent + - plant_count + - biological_agent_count + - biological_agent_presence properties: applicator1_first_name: type: string @@ -635,10 +665,10 @@ components: title: "Applicator 1 last name" applicator2_first_name: type: string - title: "Applicator 1 first name" + title: "Applicator 2 first name" applicator2_last_name: type: string - title: "Applicator 1 last name" + title: "Applicator 2 last name" treatment_contractor: type: string title: "Treatment contractor" @@ -704,9 +734,6 @@ components: activity_id: type: integer title: "Treatment id" - monitoring_date: - type: string - title: "Treatment date" observer_first_name: type: string title: "First Name" @@ -741,11 +768,17 @@ components: subType: oneOf: - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" + title: " Monitoring a chemical treament for terrestrial and aquatic plants" - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAquaticPlant" + title: "Monotoring a mechanical treatment for terrestrial and aquatic plants" - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialPlant" + title: "Monitoring a biological treatment for terrestrial plants" - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAnimal" + title: "Monotoring a mechanical treatment for a terrestrial animal" - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAnimal" + title: "Monitoring a chemical treatment for a terrestrial animal" - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialAnimal" + title: "Monitoring a biological treatment for a terrestrial animal" Monitoring_ChemicalTerrestrialAquaticPlant: description: @@ -888,10 +921,9 @@ components: description: | Paper files type: object + required: + - description properties: - paper_date: - type: string - title: "Date" description: type: string title: "Description" @@ -939,6 +971,7 @@ components: maxItems: 3 items: type: number + ## point needs a radius Point: type: object description: GeoJSon geometry @@ -975,4 +1008,10 @@ components: type: array items: $ref: "#/components/schemas/Point3D" + +## Questions: +## - If area treated comes for the geometry, does the user need that information at the time of the activity? otherwise can we do the calculation in the back-end? +## - we need the full spec for the point 3D +## - how do we treat the waypoint offset? and boc polygon? + \ No newline at end of file From b79f37846c26341fbba44f08219a865db70386f0 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 24 Sep 2020 17:04:28 -0700 Subject: [PATCH 071/194] edits --- api-mobile/src/openapi/api-doc.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index 3217edbd4..48ac9a51e 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -962,6 +962,17 @@ components: - LineString - Polygon description: the geometry type + elevation_metres: + type: integer + title: "Elevation (m)" + well_proximity: + type: number + format: float + title: "Well proximity" + well_tag: + type: integer + title: "Well tag" + Point3D: type: array description: Point in 3D space @@ -1013,5 +1024,7 @@ components: ## - If area treated comes for the geometry, does the user need that information at the time of the activity? otherwise can we do the calculation in the back-end? ## - we need the full spec for the point 3D ## - how do we treat the waypoint offset? and boc polygon? +## - do we still need hex_id, hex_sub_id? +## \ No newline at end of file From 750fa07bdef0010aa19da35750ae17523e0b2bdd Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Fri, 25 Sep 2020 13:32:38 -0700 Subject: [PATCH 072/194] minor edit --- api-mobile/src/openapi/api-doc-original.yaml | 902 ------------------- api-mobile/src/openapi/api-doc.yaml | 10 +- 2 files changed, 4 insertions(+), 908 deletions(-) delete mode 100644 api-mobile/src/openapi/api-doc-original.yaml diff --git a/api-mobile/src/openapi/api-doc-original.yaml b/api-mobile/src/openapi/api-doc-original.yaml deleted file mode 100644 index f727942b2..000000000 --- a/api-mobile/src/openapi/api-doc-original.yaml +++ /dev/null @@ -1,902 +0,0 @@ -openapi: 3.0.0 - -info: - version: 0.0.0 - title: invasivesbc-api-mobile - description: API for InvasivesBC mobile. - license: - name: Apache 2.0 - url: http://www.apache.org/licenses/LICENSE-2.0.html - -servers: - - url: http://localhost:3002/api - description: local api - - url: http://localhost:7080/api - description: local api via docker - - url: https://api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca - description: deployed api in dev environment - - url: https://api-mobile-test-invasivesbc.pathfinder.gov.bc.ca - description: deployed api in test environment - - url: https://api-mobile-invasivesbc.pathfinder.gov.bc.ca - description: deployed api in prod environmen - -tags: - - name: misc - description: Miscellaneous endpoints - - name: activity - description: | - Activity endpoints - An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' - - name: observation - description: Observation activity endpoints - - name: plant - description: Plant endpoints - - name: code - description: Code endpoints - - name: media - description: Media endpoints - -externalDocs: - description: Visit GitHub to find out more about this API - url: https://github.com/bcgov/lucy-web.git - -# paths are generated via express-openapi based on the ./src/paths/* structure -paths: {} - -# See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#componentsObject for supported component types -components: - securitySchemes: - Bearer: # arbitrary name for the security scheme - type: http - scheme: bearer - bearerFormat: JWT # optional, arbitrary value for documentation purposes - description: | - To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. - The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` - responses: - "401": - description: Unauthorized user - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - "400": - description: Bad request - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - "503": - description: Service unavailable - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - default: - description: Unexpected error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - schemas: - Error: - description: Error response object. - properties: - status: - type: number - message: - type: string - errors: - type: array - items: - type: string - - Observation: - description: | - Observation main object. - type: object - required: - - observation_id - - workflow_id - - observation_date - - observation time - - observer_first_name - - observer_last_name - - species_id - - observation_type - - species_agency_code - - jurisdiction_code - properties: - observation_id: - type: number - title: "ID" - workflow_id: - type: number - title: "Workflow ID" - observation_date: - type: string - title: "Date" - observation_time: - type: string - title: "Time" - observer_first_name: - type: string - title: "First Name" - observer_last_name: - type: string - title: "Last Name" - species_id: - type: string - title: "Species" - observation_type: - type: string - title: "Type" - species_agency_code: - type: string - title: "Agency" - jurisdiction_code: - type: string - title: "Jurisdiction" - negative_obs_ind: - type: boolean - title: "Negative Observation" - subType: - oneOf: - - $ref: "#/components/schemas/Observation_PlantTerrestial" - - $ref: "#/components/schemas/Observation_AnimalTerrestrial" - - $ref: "#/components/schemas/Observation_AnimalAquatic" - - Observation_PlantTerrestial: - description: | - Plant Observation Terrestrial - type: object - properties: - species_density_code: - type: string - title: "Density" - species_distribution_code: - type: string - title: "Distribution" - soil_texture_code: - type: string - title: "Soil Texture" - specific_use_code: - type: string - title: "Specific Use" - slope_code: - type: string - title: "Slope" - aspect_code: - type: string - title: "Aspect" - proposed_action_code: - type: string - title: "Proposed Action" - flowering: - type: boolean - title: "Flowering" - plant_life_stage: - type: string - title: "Life Stage" - plant_health: - type: string - title: "Health" - plant_seed_stage: - type: string - title: "Seed Stage" - sample_identifier: - type: string - title: "Sample ID" - range_unit_number: - type: string - title: "Range Unit" - general_comment: - type: string - title: "Comment" - maximum: 300 - access_description: - type: string - title: "Access Description" - primary_file_id: - type: string - title: "Primary File" - secondary_file_id: - type: string - title: "Secondary File" - sample_taken: - type: boolean - title: "Sample Taken" - sample_number: - type: string - title: "Sample Number" - aquatic_obs_ind: - type: boolean - title: "Aquatic Observation" - legacy_site_ind: - type: boolean - early_detection_rapid_resp_ind: - type: boolean - title: "Early Detection" - research_detection_ind: - type: boolean - title: "Research Detection" - well_ind: - type: boolean - title: "Well" - special_care_ind: - type: boolean - title: "Special Care" - biological_ind: - type: boolean - title: "Biological" - Photo_Indicator: - type: boolean - title: "Photo" - Bec_Zone: - type: string - title: "Bec Zone" - RISO: - type: string - title: "RISO" - IPMA: - type: string - title: "IPMA" - Ownership: - type: string - title: "Owned by" - Regional_District: - type: string - title: "Regional District" - FLNRO_District: - type: string - title: "FLNRO District" - MOTI_District: - type: string - title: "MOTI District" - MOE_Region: - type: string - title: "MOE Region" - photo: - type: array - title: "Photos" - items: - $ref: "#/components/schemas/Photo" - - Photo: - description: | - List of Photos - type: object - required: - - photo_id - properties: - photo_id: - type: number - title: "ID" - observation_id: - type: number - title: "Observation ID" - photo_date: - type: string - title: "Date" - photo_time: - type: string - title: "Time" - description: - type: string - title: "description" - photo_store: - type: string - title: "Photo" - - Observation_AnimalTerrestrial: - description: | - Animal Observation Terrestrial. - type: object - properties: - Number_of_Individuals_observed: - type: number - title: "Number of Individuals" - Life_Stage: - type: string - title: "Life Stage" - Behaviour: - type: string - title: "Behaviour" - sample_taken: - type: boolean - title: "Sample Taken" - sample_number: - type: string - title: "Sample Number" - general_comment: - type: string - title: "Comment" - access_description: - type: string - title: "Access Description" - photo: - type: array - title: "Photos" - items: - $ref: "#/components/schemas/Photo" - - Observation_AnimalAquatic: - description: | - Animal Observation Aquatic. - type: object - properties: - Number_of_Individuals_observed: - type: number - title: "Number of Individuals" - Life_Stage: - type: string - title: "Life Stage" - Behaviour: - type: string - title: "Behaviour" - sample_taken: - type: boolean - title: "Sample Taken" - sample_number: - type: string - title: "Sample Number" - general_comment: - type: string - title: "Comment" - access_description: - type: string - title: "Access Description" - photo: - type: array - title: "Photos" - items: - $ref: "#/components/schemas/Photo" - - ObservationPlantResponse: - description: | - Observation plant response object. - Returned in the 200 responses for all `/observation/plant/*` routes. - type: object - required: - - observation_id - - observation_date - - access_description - - observer_first_name - - observer_last_name - - sample_identifier - - range_unit_number - - general_comment - - legacy_site_ind - - early_detection_rapid_resp_ind - - research_detection_ind - - sample_taken_ind - - well_ind - - special_care_ind - - biological_ind - - aquatic_ind - - species_id - - jurisdiction_code_id - - species_density_code_id - - species_distribution_code_id - - observation_type_code_id - - species_agency_code_id - - soil_texture_code_id - - specific_use_code_id - - observation_slope_code_id - - observation_aspect_code_id - - observation_proposed_action_code_id - - created_at - - updated_at - - updated_by_user_id - - created_by_user_id - - space_geom_id - - hex_id - - hex_sub_id - - total_area - - negative_occurance_ind - - paper_id_primary - - paper_id_secondary - - elevation_meters - - well_proximity - - well_tag - - observation_geometry_code_id - - photo_indicator - - flowering - - bec_zone - - riso - - ipma - - ownership - - regional_district - - flnro_district - - moti_district - - raw_longitude - - raw_latitude - - raw_utm_zone - - raw_utm_easting - - raw_utm_northing - - raw_albers_x - - raw_albers_y - properties: - observation_id: - type: number - observation_date: - type: string - access_description: - type: string - observer_first_name: - type: string - observer_last_name: - type: string - sample_identifier: - type: string - range_unit_number: - type: string - general_comment: - type: string - legacy_site_ind: - type: boolean - early_detection_rapid_resp_ind: - type: boolean - research_detection_ind: - type: boolean - sample_taken_ind: - type: boolean - well_ind: - type: boolean - special_care_ind: - type: boolean - biological_ind: - type: boolean - aquatic_ind: - type: boolean - species_id: - type: object - jurisdiction_code_id: - type: object - species_density_code_id: - type: object - species_distribution_code_id: - type: object - observation_type_code_id: - type: object - species_agency_code_id: - type: object - soil_texture_code_id: - type: object - specific_use_code_id: - type: object - observation_slope_code_id: - type: object - observation_aspect_code_id: - type: object - observation_proposed_action_code_id: - type: object - created_at: - type: string - updated_at: - type: string - updated_by_user_id: - type: number - created_by_user_id: - type: number - space_geom_id: - type: number - hex_id: - type: number - hex_sub_id: - type: number - total_area: - type: number - negative_occurance_ind: - type: boolean - paper_id_primary: - type: string - paper_id_secondary: - type: string - elevation_meters: - type: number - well_proximity: - type: number - well_tag: - type: number - observation_geometry_code_id: - type: object - photo_indicator: - type: boolean - flowering: - type: boolean - bec_zone: - type: string - riso: - type: string - ipma: - type: string - ownership: - type: string - regional_district: - type: string - flnro_district: - type: string - moti_district: - type: string - raw_longitude: - type: number - raw_latitude: - type: number - raw_utm_zone: - type: number - raw_utm_easting: - type: number - raw_utm_northing: - type: number - raw_albers_x: - type: number - raw_albers_y: - type: number - - ObservationCodeResponse: - required: - - message - - data - properties: - message: - type: string - data: - $ref: "#/components/schemas/ObservationCode" - - ObservationCode: - description: Observation code tables. - required: - - observation_aspect_code - - jurisdiction_code - - observation_geometry_code - - observation_type_code - - observation_proposed_action_code - - observation_slope_code - - soil_texture_code - - species_agency_code - - species_density_code - - species_distribution_code - - species - - specific_use_code - properties: - observation_aspect_code: - type: array - items: - $ref: "#/components/schemas/AspectCode" - jurisdiction_code: - type: array - items: - $ref: "#/components/schemas/JurisdictionCode" - observation_geometry_code: - type: array - items: - $ref: "#/components/schemas/ObservationGeometryCode" - observation_type_code: - type: array - items: - $ref: "#/components/schemas/ObservationTypeCode" - observation_proposed_action_code: - type: array - items: - $ref: "#/components/schemas/ProposedActionCode" - observation_slope_code: - type: array - items: - $ref: "#/components/schemas/SlopeCode" - soil_texture_code: - type: array - items: - $ref: "#/components/schemas/SoilTextureCode" - species: - type: array - items: - $ref: "#/components/schemas/Species" - species_density_code: - type: array - items: - $ref: "#/components/schemas/SpeciesDensityCode" - species_distribution_code: - type: array - items: - $ref: "#/components/schemas/SpeciesDistributionCode" - species_agency_code: - type: array - items: - $ref: "#/components/schemas/SpeciesAgencyCode" - specific_use_code: - type: array - items: - $ref: "#/components/schemas/SpecificUseCode" - - AspectCode: - type: object - required: - - observation_aspect_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_aspect_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - JurisdictionCode: - type: object - required: - - jurisdiction_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - jurisdiction_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ObservationGeometryCode: - type: object - required: - - observation_geometry_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_geometry_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ObservationTypeCode: - type: object - required: - - observation_type_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_type_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - ProposedActionCode: - type: object - required: - - observation_proposed_action_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_proposed_action_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SlopeCode: - type: object - required: - - observation_slope_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - observation_slope_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SoilTextureCode: - type: object - required: - - soil_texture_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - soil_texture_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - Species: - type: object - required: - - species_id - - mapCode - - earlyDetection - - containmentSpecies - - containmentSpacialRef - - species - - genus - - commonName - - latinName - - updateAt - - createdAt - properties: - species_id: - type: number - mapCode: - type: string - earlyDetection: - type: boolean - containmentSpecies: - type: number - containmentSpacialRef: - type: number - species: - type: string - genus: - type: string - commonName: - type: string - latinName: - type: string - updateAt: - type: string - createdAt: - type: string - - SpeciesDensityCode: - type: object - required: - - species_density_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_density_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpeciesDistributionCode: - type: object - required: - - species_distribution_code_id - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_distribution_code_id: - type: number - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpeciesAgencyCode: - type: object - required: - - species_agency_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - species_agency_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string - - SpecificUseCode: - type: object - required: - - specific_use_code_id - - code - - description - - activeIndicator - - updateAt - - createdAt - properties: - specific_use_code_id: - type: number - code: - type: string - description: - type: string - activeIndicator: - type: boolean - updateAt: - type: string - createdAt: - type: string \ No newline at end of file diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index 48ac9a51e..f043ea233 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -432,8 +432,6 @@ components: observation_details: type: string title: "Aquatic animal observations" - - Treatment: description: | Treament main object. @@ -591,9 +589,6 @@ components: signage_on_site: type: boolean title: "Signage on site" - - - Treatment_BiologicalPlant: description: Biological treament for plants - main object. @@ -766,6 +761,7 @@ components: - 95 - 100 subType: + title: "Monitoring type" oneOf: - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" title: " Monitoring a chemical treament for terrestrial and aquatic plants" @@ -1019,11 +1015,13 @@ components: type: array items: $ref: "#/components/schemas/Point3D" + + ## Questions: ## - If area treated comes for the geometry, does the user need that information at the time of the activity? otherwise can we do the calculation in the back-end? ## - we need the full spec for the point 3D -## - how do we treat the waypoint offset? and boc polygon? +## - how do we treat the waypoint offset? and box polygon? ## - do we still need hex_id, hex_sub_id? ## From c03baba66a0e3f72f29def7fe5f8a98e5fc36736 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Mon, 28 Sep 2020 15:07:32 -0700 Subject: [PATCH 073/194] geometry specs finalized --- api-mobile/src/openapi/api-doc.yaml | 77 ++++++++++------------------- 1 file changed, 27 insertions(+), 50 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index f043ea233..9ac99c739 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -958,71 +958,48 @@ components: - LineString - Polygon description: the geometry type - elevation_metres: - type: integer - title: "Elevation (m)" well_proximity: type: number format: float title: "Well proximity" + readOnly: true well_tag: type: integer title: "Well tag" + readOnly: true - Point3D: - type: array - description: Point in 3D space - externalDocs: - url: http://geojson.org/geojson-spec.html#id2 - minItems: 2 - maxItems: 3 - items: - type: number - ## point needs a radius Point: type: object description: GeoJSon geometry - externalDocs: - url: http://geojson.org/geojson-spec.html#id2 - allOf: - - $ref: "#/components/schemas/Geometry" - - properties: - coordinates: - $ref: "#/components/schemas/Point3D" + properties: + radius: + type: number + format: float + title: "Radius" + writeOnly: true + coordinates: + type: array + items: {} + LineString: type: object description: GeoJSon geometry - externalDocs: - url: http://geojson.org/geojson-spec.html#id3 - allOf: - - $ref: "#/components/schemas/Geometry" - - properties: - coordinates: - type: array - items: - $ref: "#/components/schemas/Point3D" + properties: + offset: + type: number + format: float + title: "Offset" + writeOnly: true + coordinates: + type: array + items: {} + Polygon: type: object description: GeoJSon geometry - externalDocs: - url: http://geojson.org/geojson-spec.html#id4 - allOf: - - $ref: "#/components/schemas/Geometry" - - properties: - coordinates: - type: array - items: - type: array - items: - $ref: "#/components/schemas/Point3D" - - - -## Questions: -## - If area treated comes for the geometry, does the user need that information at the time of the activity? otherwise can we do the calculation in the back-end? -## - we need the full spec for the point 3D -## - how do we treat the waypoint offset? and box polygon? -## - do we still need hex_id, hex_sub_id? -## - + properties: + coordinates: + type: array + items: {} + \ No newline at end of file From 30a747dcc849750dc61fad6f59dfdc9e8c67bd02 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Mon, 28 Sep 2020 16:02:39 -0700 Subject: [PATCH 074/194] corrections to correct broken build --- api-mobile/src/openapi/api-doc.yaml | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index 9ac99c739..6a3ed0b03 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -437,7 +437,7 @@ components: Treament main object. type: object required: - -subType + - subType properties: subType: title: "Treatment type" @@ -947,17 +947,8 @@ components: discriminator: propertyName: type required: - - type - externalDocs: - url: http://geojson.org/geojson-spec.html#geometry-objects + - subtype properties: - type: - type: string - enum: - - Point - - LineString - - Polygon - description: the geometry type well_proximity: type: number format: float @@ -967,10 +958,19 @@ components: type: integer title: "Well tag" readOnly: true + subType: + title: "Geometry type" + oneOf: + - $ref: "#/components/schemas/Point" + title: "Point" + - $ref: "#/components/schemas/LineString" + title: "Line String" + - $ref: "#/components/schemas/Polygon" + title: "Polygon" Point: type: object - description: GeoJSon geometry + description: Point geometry properties: radius: type: number @@ -983,7 +983,7 @@ components: LineString: type: object - description: GeoJSon geometry + description: LineString Geometry properties: offset: type: number @@ -996,10 +996,9 @@ components: Polygon: type: object - description: GeoJSon geometry + description: Polygon Geometry properties: coordinates: type: array items: {} - \ No newline at end of file From d482136b17848f710d21ebc47ab886a428bd4e7a Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Mon, 28 Sep 2020 18:13:35 -0700 Subject: [PATCH 075/194] moved titles to the object root --- api-mobile/src/openapi/api-doc.yaml | 54 +++++++++++++++++------------ 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index 6a3ed0b03..25e403a0b 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -97,6 +97,7 @@ components: type: string Activity: + title: "Activity" description: Activity main object. type: object @@ -165,13 +166,11 @@ components: title: "Activity subtype" oneOf: - $ref: "#/components/schemas/Observation" - title: "Observation" - $ref: "#/components/schemas/Treatment" - title: "Treatment" - $ref: "#/components/schemas/Monitoring" - title: "Monitoring" Observation: + title: "Observation" description: | Observation main object. type: object @@ -222,16 +221,13 @@ components: title: "Observation subtype" oneOf: - $ref: "#/components/schemas/Observation_PlantTerrestial" - title: "Terrestrial Plant Observation" - $ref: "#/components/schemas/Observation_PlantAquatic" - title: "Aquatic Plant Observation" - $ref: "#/components/schemas/Observation_AnimalTerrestrial" - title: "Terrestrial Animal Observation" - $ref: "#/components/schemas/Observation_AnimalAquatic" - title: "Aquatic Animal Observation" - + Observation_PlantTerrestial: + title: "Terrestrial Plant Observation" description: | Plant Observation Terrestrial type: object @@ -312,6 +308,7 @@ components: type: boolean title: "Biological" Observation_PlantAquatic: + title: "Aquatic Plant Observation" description: Plant Observation Terrestrial type: object @@ -393,6 +390,7 @@ components: Observation_AnimalTerrestrial: + title: "Terrestrial Animal Observation" description: | Animal Observation Terrestrial. type: object @@ -423,6 +421,7 @@ components: - deceased Observation_AnimalAquatic: + title: "Aquatic Animal Observation" description: | Animal Observation Aquatic. type: object @@ -432,7 +431,9 @@ components: observation_details: type: string title: "Aquatic animal observations" + Treatment: + title: "Treatment" description: | Treament main object. type: object @@ -442,22 +443,16 @@ components: subType: title: "Treatment type" oneOf: - - $ref: "#/components/schemas/Treatment_ChemicalPlant" - title: "Chemical treatment for plants" + - $ref: "#/components/schemas/Treatment_ChemicalPlant" - $ref: "#/components/schemas/Treatment_MechanicalPlant" - title: "Mechanical treatment for plants" - $ref: "#/components/schemas/Treatment_BiologicalPlant" - title: "Biological treament for plants" - $ref: "#/components/schemas/Treatment_BiologicalDispersalPlant" - title: "Biological dispersal treament for plants" - $ref: "#/components/schemas/Treatment_MechanicalTerrestrialAnimal" - title: "Mechanical treatment for terrestrial animals" - $ref: "#/components/schemas/Treatment_ChemicalTerrestrialAnimal" - title: "Chemical treatment for terrestrial animals" - $ref: "#/components/schemas/Treatment_BiologicalTerrestrialAnimal" - title: "Biological treatment for terrestrial animals" Treatment_ChemicalPlant: + title: "Chemical treatment for plants" description: | Chemical treament for plants - main object. type: object @@ -546,6 +541,7 @@ components: $ref: "#/components/schemas/Herbicide" Treatment_MechanicalPlant: + title: "Mechanical treatment for plants" description: Mechanical treament for plants - main object. type: object @@ -590,6 +586,7 @@ components: type: boolean title: "Signage on site" Treatment_BiologicalPlant: + title: "Biological treament for plants" description: Biological treament for plants - main object. type: object @@ -639,6 +636,7 @@ components: title: "Bioagent maturity status" Treatment_BiologicalDispersalPlant: + title: "Biological dispersal treament for plants" description: Mechanical treament for plants - main object. type: object @@ -684,6 +682,7 @@ components: title: "Biological agent presence" Treatment_MechanicalTerrestrialAnimal: + title: "Mechanical treatment for terrestrial animals" description: Mechanical treament for terrestrial animals - main object. type: object @@ -695,6 +694,7 @@ components: title: "Treatment details" Treatment_ChemicalTerrestrialAnimal: + title: "Chemical treatment for terrestrial animals" description: Chemical treament for terrestrial animals - main object. type: object @@ -706,6 +706,7 @@ components: title: "Treatment details" Treatment_BiologicalTerrestrialAnimal: + title: "Biological treatment for terrestrial animals" description: Biological treament for terrestrial animals - main object. type: object @@ -717,6 +718,7 @@ components: title: "Treatment details" Monitoring: + title: "Monitoring" description: | Monitoring main object. type: object @@ -764,19 +766,15 @@ components: title: "Monitoring type" oneOf: - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" - title: " Monitoring a chemical treament for terrestrial and aquatic plants" - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAquaticPlant" - title: "Monotoring a mechanical treatment for terrestrial and aquatic plants" - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialPlant" - title: "Monitoring a biological treatment for terrestrial plants" - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAnimal" - title: "Monotoring a mechanical treatment for a terrestrial animal" - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAnimal" - title: "Monitoring a chemical treatment for a terrestrial animal" - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialAnimal" - title: "Monitoring a biological treatment for a terrestrial animal" + Monitoring_ChemicalTerrestrialAquaticPlant: + title: " Monitoring a chemical treament for terrestrial and aquatic plants" description: Chemical monitoring for terrestrial plants - main object. type: object @@ -788,6 +786,7 @@ components: title: "Monitoring details" Monitoring_MechanicalTerrestrialAquaticPlant: + title: "Montoring a mechanical treatment for terrestrial and aquatic plants" description: Mechanical monitoring for terrestrial plants - main object. type: object @@ -799,6 +798,7 @@ components: title: "Monitoring details" Monitoring_BiologicalTerrestrialPlant: + title: "Monitoring a biological treatment for terrestrial plants" description: Biological monitoring for terrestrial plants - main object. type: object @@ -861,6 +861,7 @@ components: title: "Biological agent spread" Monitoring_MechanicalTerrestrialAnimal: + title: "Monitoring a mechanical treatment for a terrestrial animal" description: Mechanical monitoring for terrestrial plants - main object. type: object @@ -872,6 +873,7 @@ components: title: "Monitoring details" Monitoring_ChemicalTerrestrialAnimal: + title: "Monitoring a chemical treatment for a terrestrial animal" description: Chemical monitoring for terrestrial plants - main object. type: object @@ -883,6 +885,7 @@ components: title: "Monitoring details" Monitoring_BiologicalTerrestrialAnimal: + title: "Monitoring a biological treatment for a terrestrial animal" description: Biological monitoring for terrestrial plants - main object. type: object @@ -894,6 +897,7 @@ components: title: "Monitoring details" Media: + title: "Media" description: | List of Media type: object @@ -914,6 +918,7 @@ components: example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' PaperFile: + title: "Paper file" description: | Paper files type: object @@ -926,6 +931,7 @@ components: maximum: 50 Herbicide: + title: "Herbicide" description: herbicide type: object @@ -942,6 +948,7 @@ components: format: float Geometry: + title: " Geometry" type: object description: GeoJSon geometry discriminator: @@ -969,6 +976,7 @@ components: title: "Polygon" Point: + title: "Point" type: object description: Point geometry properties: @@ -982,6 +990,7 @@ components: items: {} LineString: + title: "LineString" type: object description: LineString Geometry properties: @@ -995,6 +1004,7 @@ components: items: {} Polygon: + title: "Polygon123" type: object description: Polygon Geometry properties: From 39ac35263ef423f128dcf1644f70f4f766fb6fce Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Mon, 28 Sep 2020 18:27:38 -0700 Subject: [PATCH 076/194] Geometry spec updated --- api-mobile/src/openapi/api-doc.yaml | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml index 25e403a0b..5cf0427ee 100644 --- a/api-mobile/src/openapi/api-doc.yaml +++ b/api-mobile/src/openapi/api-doc.yaml @@ -307,6 +307,7 @@ components: biological_ind: type: boolean title: "Biological" + Observation_PlantAquatic: title: "Aquatic Plant Observation" description: @@ -585,6 +586,7 @@ components: signage_on_site: type: boolean title: "Signage on site" + Treatment_BiologicalPlant: title: "Biological treament for plants" description: @@ -638,7 +640,7 @@ components: Treatment_BiologicalDispersalPlant: title: "Biological dispersal treament for plants" description: - Mechanical treament for plants - main object. + Biological dispersal treament for plants - main object. type: object required: - applicator1_first_name @@ -786,7 +788,7 @@ components: title: "Monitoring details" Monitoring_MechanicalTerrestrialAquaticPlant: - title: "Montoring a mechanical treatment for terrestrial and aquatic plants" + title: "Monitoring a mechanical treatment for terrestrial and aquatic plants" description: Mechanical monitoring for terrestrial plants - main object. type: object @@ -951,8 +953,6 @@ components: title: " Geometry" type: object description: GeoJSon geometry - discriminator: - propertyName: type required: - subtype properties: @@ -966,17 +966,14 @@ components: title: "Well tag" readOnly: true subType: - title: "Geometry type" + title: "Geometry subtype" oneOf: - $ref: "#/components/schemas/Point" - title: "Point" - $ref: "#/components/schemas/LineString" - title: "Line String" - $ref: "#/components/schemas/Polygon" - title: "Polygon" Point: - title: "Point" + title: "Point with radius" type: object description: Point geometry properties: @@ -990,7 +987,7 @@ components: items: {} LineString: - title: "LineString" + title: "Line with offset (box)" type: object description: LineString Geometry properties: @@ -1004,11 +1001,10 @@ components: items: {} Polygon: - title: "Polygon123" + title: "Polygon" type: object description: Polygon Geometry properties: coordinates: type: array - items: {} - \ No newline at end of file + items: {} \ No newline at end of file From 4fd0f25efeb68b62161493fd037411120da087c1 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 29 Sep 2020 10:46:17 -0700 Subject: [PATCH 077/194] 899: Update api to use new api spec - Flatten api-spec and convert to json-schema --- ...L_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh | 19 +- api-mobile/app.ts | 2 +- ...invasive_terrestrial_plant_observation.sql | 4 +- .../observation_common_data_view.sql | 4 +- .../20200811120312_activity_incoming_data.ts | 6 +- .../20200819074819_activity_view.ts | 2 +- .../20200819083337_observation_view.ts | 2 +- api-mobile/src/models/activity.ts | 26 +- api-mobile/src/openapi/api-doc.json | 1424 +++++++++++++++++ api-mobile/src/openapi/api-doc.yaml | 1010 ------------ api-mobile/src/paths/activity.ts | 186 +-- api-mobile/src/paths/activity/{activityId}.ts | 2 +- api-mobile/src/queries/activity-queries.ts | 26 +- api-mobile/test/activity-with-files.json | 18 +- api-mobile/test/observation-point.json | 22 +- api-mobile/test/observation-polygon.json | 40 +- .../lucy-api-mobile.postman_collection.json | 8 +- 17 files changed, 1572 insertions(+), 1229 deletions(-) create mode 100644 api-mobile/src/openapi/api-doc.json delete mode 100644 api-mobile/src/openapi/api-doc.yaml diff --git a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh index 8288ff181..ee19b219d 100644 --- a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh +++ b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh @@ -5,9 +5,19 @@ curl --location --request POST 'localhost:3002/api/activity' \ --data-raw ' { "activity_type": "Observation", - "activity_sub_type": "Terrestrial Invasive Plant", + "activity_subtype": "Terrestrial Invasive Plant", "date": "2019-04-12", "deviceRequestUID": "string", + "media": [ + { + + } + ], + "geometry": [ + { + + } + ], "locationAndGeometry": { "anchorPointY": 0, "anchorPointX": 0, @@ -21,7 +31,10 @@ curl --location --request POST 'localhost:3002/api/activity' \ "generalComment": "string", "photoTaken": true }, - "activityTypeData": { + "activity_data": { + + }, + "activity_type_data": { "negative_observation_ind": false, "aquatic_observation_ind": false, "primary_user_last_name": "mike", @@ -35,7 +48,7 @@ curl --location --request POST 'localhost:3002/api/activity' \ "sample_taken_ind": true, "sample_label_number": "string" }, - "activitySubTypeData": { + "activity_subtype_data": { "species": "banana", "distribution": 123, "density": 123, diff --git a/api-mobile/app.ts b/api-mobile/app.ts index d026abe77..4fc80966d 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -30,7 +30,7 @@ app.use(function (req: any, res: any, next: any) { // Initialize express-openapi framework const openAPIFramework = initialize({ - apiDoc: './src/openapi/api-doc.yaml', // base open api spec + apiDoc: './src/openapi/api-doc.json', // base open api spec app: app, // express app to initialize paths: './src/paths', // base folder for endpoint routes routesGlob: '**/*.{ts,js}', // updated default to allow .ts diff --git a/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql b/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql index 4fb314d61..3df542d77 100644 --- a/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql +++ b/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql @@ -1,5 +1,5 @@ CREATE OR REPLACE VIEW invasive_terrestrial_plant_observation_specific_fields_view as ( -select +select 'banana' as activity_id, 'banana' as species, 'banana' as distribution, @@ -22,6 +22,6 @@ select 'banana' as range_unit from activity_incoming_data -where activity_incoming_data.activity_type = 'Observation' and activity_incoming_data.activity_sub_type = 'Terrestrial Plant Observation' +where activity_incoming_data.activity_type = 'Observation' and activity_incoming_data.activity_subtype = 'Terrestrial Plant Observation' ) COMMENT ON VIEW invasive_terrestrial_plant_observation_specific_fields_view IS 'View on fields specific to invasive terrestrial plant of observations, with table activity_incoming_data as source.'; diff --git a/api-mobile/src/database/db_source/observation_common_data_view.sql b/api-mobile/src/database/db_source/observation_common_data_view.sql index ca7ef3d57..97a6667e9 100644 --- a/api-mobile/src/database/db_source/observation_common_data_view.sql +++ b/api-mobile/src/database/db_source/observation_common_data_view.sql @@ -1,7 +1,7 @@ CREATE OR REPLACE VIEW observation_common_fields_view as ( -select +select id as activity_id, -activity_sub_type as observation_type, +activity_subtype as observation_type, activity_payload::json->'negative_observation_ind' as negative_observation_ind, activity_payload::json->'negative_observation_ind' as negative_observation_ind, activity_payload::json->'aquatic_observation_ind' as aquatic_observation_ind, diff --git a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts index c44e8a3a5..ffee47ce4 100644 --- a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts +++ b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts @@ -27,9 +27,9 @@ export async function up(knex: Knex): Promise { COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_type IS 'Type of record'; CREATE index type_idx on ${DB_SCHEMA}.activity_incoming_data (activity_type); - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_sub_type VARCHAR(200) NULL; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_sub_type IS 'Sub Type of record'; - CREATE index sub_type_idx on ${DB_SCHEMA}.activity_incoming_data (activity_sub_type); + ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_subtype VARCHAR(200) NULL; + COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_subtype IS 'Sub Type of record'; + CREATE index sub_type_idx on ${DB_SCHEMA}.activity_incoming_data (activity_subtype); ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; diff --git a/api-mobile/src/database/migrations/20200819074819_activity_view.ts b/api-mobile/src/database/migrations/20200819074819_activity_view.ts index 85638aaab..f7e52be6d 100644 --- a/api-mobile/src/database/migrations/20200819074819_activity_view.ts +++ b/api-mobile/src/database/migrations/20200819074819_activity_view.ts @@ -13,7 +13,7 @@ export async function up(knex: Knex): Promise { select activity_id, activity_type, - activity_sub_type, + activity_subtype, cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointX' as decimal) as anchor_point_x, cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointY' as decimal) as anchor_point_y, received_timestamp diff --git a/api-mobile/src/database/migrations/20200819083337_observation_view.ts b/api-mobile/src/database/migrations/20200819083337_observation_view.ts index aa0d4bc62..2219bce41 100644 --- a/api-mobile/src/database/migrations/20200819083337_observation_view.ts +++ b/api-mobile/src/database/migrations/20200819083337_observation_view.ts @@ -11,7 +11,7 @@ export async function up(knex: Knex): Promise { CREATE OR REPLACE VIEW ${DB_SCHEMA}.observation_common_fields_view as ( select activity_id, - activity_sub_type as observation_type, + activity_subtype as observation_type, cast(activity_payload -> 'activityTypeData' ->> 'negative_observation_ind' as bool) as negative_observation_ind, cast(activity_payload -> 'activityTypeData' ->> 'aquatic_observation_ind' as bool) as aquatic_observation_ind, cast(activity_payload -> 'activityTypeData' ->> 'primary_user_first_name' as text) as primary_user_first_name, diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 5e8fac9f4..964c0c74d 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -54,14 +54,15 @@ export class ActivityPostRequestBody { activityResponseBody: object; activity_type: string; - activityTypeData: object; + activity_subtype: string; - activity_sub_type: string; - activitySubTypeData: object; + activity_data: object; + activity_type_data: object; + activity_subtype_data: object; - date: string; + received_timestamp: string; - locationAndGeometry: object; + geometry: object[]; mediaKeys: string[]; @@ -80,14 +81,15 @@ export class ActivityPostRequestBody { }; this.activity_type = (obj && obj.activity_type) || null; - this.activityTypeData = (obj && obj.activityTypeData) || null; + this.activity_subtype = (obj && obj.activity_subtype) || null; - this.activity_sub_type = (obj && obj.activity_sub_type) || null; - this.activitySubTypeData = (obj && obj.activitySubTypeData) || null; + this.activity_data = (obj && obj.form_data && obj.form_data.activity_data) || null; + this.activity_type_data = (obj && obj.form_data && obj.form_data.activity_type_data) || null; + this.activity_subtype_data = (obj && obj.form_data && obj.form_data.activity_subtype_data) || null; - this.date = (obj && obj.date) || null; + this.received_timestamp = new Date().toISOString(); - this.locationAndGeometry = (obj && obj.locationAndGeometry) || null; + this.geometry = (obj && obj.geometry && obj.geometry.length) || []; this.mediaKeys = (obj && obj.mediaKeys) || null; } @@ -101,7 +103,7 @@ export class ActivityPostRequestBody { */ export class ActivitySearchCriteria { activity_type: string; - activity_sub_type: string; + activity_subtype: string; page: number; limit: number; @@ -119,7 +121,7 @@ export class ActivitySearchCriteria { */ constructor(obj?: any) { this.activity_type = (obj && obj.activity_type) || null; - this.activity_sub_type = (obj && obj.activity_sub_type) || null; + this.activity_subtype = (obj && obj.activity_subtype) || null; this.page = (obj && obj.page) || 0; this.limit = (obj && obj.limit) || 50; diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json new file mode 100644 index 000000000..03dfc6a6a --- /dev/null +++ b/api-mobile/src/openapi/api-doc.json @@ -0,0 +1,1424 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "0.0.0", + "title": "invasivesbc-api-mobile", + "description": "API for InvasivesBC mobile", + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "servers": [ + { + "url": "http://localhost:3002/api", + "description": "local api" + }, + { + "url": "http://localhost:7080/api", + "description": "local api via docker" + }, + { + "url": "https://api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca", + "description": "deployed api in dev environment" + }, + { + "url": "https://api-mobile-test-invasivesbc.pathfinder.gov.bc.ca", + "description": "deployed api in test environment" + }, + { + "url": "https://api-mobile-invasivesbc.pathfinder.gov.bc.ca", + "description": "deployed api in prod environmen" + } + ], + "tags": [ + { + "name": "misc", + "description": "Miscellaneous endpoints" + }, + { + "name": "activity", + "description": "Activity endpointsAn activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities'" + }, + { + "name": "observation", + "description": "Observation activity endpoints" + }, + { + "name": "plant", + "description": "Plant endpoints" + }, + { + "name": "code", + "description": "Code endpoints" + }, + { + "name": "media", + "description": "Media endpoints" + } + ], + "externalDocs": { + "description": "Visit GitHub to find out more about this API", + "url": "https://github.com/bcgov/lucy-web.git" + }, + "paths": {}, + "components": { + "securitySchemes": { + "Bearer": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT", + "description": "To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header.The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz`" + } + }, + "responses": { + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Unauthorized user", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "503": { + "description": "Service unavailable", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "Unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "schemas": { + "Error": { + "description": "Error response object", + "properties": { + "status": { + "type": "number" + }, + "message": { + "type": "string" + }, + "errors": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "Activity_Observation_PlantTerrestial": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Observation" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Observation_PlantTerrestial" + } + } + }, + "Activity_Observation_PlantAquatic": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Observation" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Observation_PlantAquatic" + } + } + }, + "Activity_Observation_AnimalTerrestrial": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Observation" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Observation_AnimalTerrestrial" + } + } + }, + "Activity_Observation_AnimalAquatic": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Observation" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Observation_AnimalAquatic" + } + } + }, + "Activity_Treatment_ChemicalPlant": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Treatment" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Treatment_ChemicalPlant" + } + } + }, + "Activity_Treatment_MechanicalPlant": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Treatment" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Treatment_MechanicalPlant" + } + } + }, + "Activity_Treatment_BiologicalPlant": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Treatment" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Treatment_BiologicalPlant" + } + } + }, + "Activity_Treatment_BiologicalDispersalPlant": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Treatment" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Treatment_BiologicalDispersalPlant" + } + } + }, + "Activity_Treatment_MechanicalTerrestrialAnimal": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Treatment" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Treatment_MechanicalTerrestrialAnimal" + } + } + }, + "Activity_Treatment_ChemicalTerrestrialAnimal": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Treatment" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Treatment_ChemicalTerrestrialAnimal" + } + } + }, + "Activity_Treatment_BiologicalTerrestrialAnimal": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Treatment" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Treatment_BiologicalTerrestrialAnimal" + } + } + }, + "Activity_Monitoring_ChemicalTerrestrialAquaticPlant": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Monitoring" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" + } + } + }, + "Activity_Monitoring_MechanicalTerrestrialAquaticPlant": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Monitoring" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Monitoring_MechanicalTerrestrialAquaticPlant" + } + } + }, + "Activity_Monitoring_BiologicalTerrestrialPlant": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Monitoring" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Monitoring_BiologicalTerrestrialPlant" + } + } + }, + "Activity_Monitoring_MechanicalTerrestrialAnimal": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Monitoring" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Monitoring_MechanicalTerrestrialAnimal" + } + } + }, + "Activity_Monitoring_ChemicalTerrestrialAnimal": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Monitoring" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Monitoring_ChemicalTerrestrialAnimal" + } + } + }, + "Activity_Monitoring_BiologicalTerrestrialAnimal": { + "type": "object", + "properties": { + "activity_data": { + "$ref": "#/components/schemas/Activity" + }, + "activity_type_data": { + "$ref": "#/components/schemas/Monitoring" + }, + "activity_subtype_data": { + "$ref": "#/components/schemas/Monitoring_BiologicalTerrestrialAnimal" + } + } + }, + "Activity": { + "title": "Basic Information", + "description": "Basic information captured for all activities", + "type": "object", + "required": [ + "species_agency_code", + "jurisdiction_code", + "activity_status", + "species_id", + "access_description", + "media_indicator", + "created_date_on_device", + "updated_date_on_device" + ], + "properties": { + "species_agency_code": { + "type": "string", + "title": "Agency" + }, + "jurisdiction_code": { + "type": "string", + "title": "Jurisdiction" + }, + "activity_status": { + "type": "string", + "title": "Activity status", + "enum": [ + "sync", + "done", + "pending", + "errors" + ] + }, + "species_id": { + "type": "string", + "title": "Species" + }, + "general_comment": { + "type": "string", + "title": "Comment", + "maximum": 300 + }, + "access_description": { + "type": "string", + "title": "Access Description", + "maximum": 300 + }, + "media_indicator": { + "type": "boolean", + "title": "Photo" + }, + "created_date_on_device": { + "type": "string", + "title": "Created date on device" + }, + "updated_date_on_device": { + "type": "string", + "title": "Updated date on device" + }, + "paper_file": { + "type": "array", + "title": "Paper file", + "items": { + "$ref": "#/components/schemas/PaperFile" + } + } + } + }, + "Observation": { + "title": "Observation Information", + "description": "Basic information captured for all observations", + "type": "object", + "required": [ + "observation_date", + "observation_time", + "observation_type", + "observer_first_name", + "observer_last_name", + "reported_area", + "sample_taken", + "negative_obs_ind" + ], + "properties": { + "observation_date": { + "type": "string", + "title": "Date" + }, + "observation_time": { + "type": "string", + "title": "Time" + }, + "observation_type": { + "type": "string", + "title": "Type" + }, + "observer_first_name": { + "type": "string", + "title": "First Name", + "maximum": 50 + }, + "observer_last_name": { + "type": "string", + "title": "Last Name", + "maximum": 50 + }, + "reported_area": { + "type": "integer", + "title": "Area", + "minimum": 1, + "maximum": 100 + }, + "sample_taken": { + "type": "boolean", + "title": "Sample Taken" + }, + "sample_number": { + "type": "string", + "title": "Sample Number", + "maximum": 50 + }, + "negative_obs_ind": { + "type": "boolean", + "title": "Negative Observation" + } + } + }, + "Observation_PlantTerrestial": { + "title": "Terrestrial Plant Information", + "description": "Plant Observation Terrestrial", + "type": "object", + "required": [ + "species_density_code", + "species_distribution_code", + "soil_texture_code", + "specific_use_code", + "slope_code", + "aspect_code", + "proposed_action_code", + "flowering", + "plant_life_stage", + "plant_health", + "plant_seed_stage", + "legacy_site_ind", + "early_detection_rapid_resp_ind", + "research_detection_ind", + "well_ind", + "special_care_ind", + "biological_ind" + ], + "properties": { + "species_density_code": { + "type": "string", + "title": "Density" + }, + "species_distribution_code": { + "type": "string", + "title": "Distribution" + }, + "soil_texture_code": { + "type": "string", + "title": "Soil Texture" + }, + "specific_use_code": { + "type": "string", + "title": "Specific Use" + }, + "slope_code": { + "type": "string", + "title": "Slope" + }, + "aspect_code": { + "type": "string", + "title": "Aspect" + }, + "proposed_action_code": { + "type": "string", + "title": "Proposed Action" + }, + "flowering": { + "type": "boolean", + "title": "Flowering" + }, + "plant_life_stage": { + "type": "string", + "title": "Life Stage" + }, + "plant_health": { + "type": "string", + "title": "Health" + }, + "plant_seed_stage": { + "type": "string", + "title": "Seed Stage" + }, + "sample_identifier": { + "type": "string", + "title": "Sample ID" + }, + "range_unit_number": { + "type": "string", + "title": "Range Unit" + }, + "legacy_site_ind": { + "type": "boolean", + "title": "Legacy site" + }, + "early_detection_rapid_resp_ind": { + "type": "boolean", + "title": "Early Detection" + }, + "research_detection_ind": { + "type": "boolean", + "title": "Research Detection" + }, + "well_ind": { + "type": "boolean", + "title": "Visible well nearby" + }, + "special_care_ind": { + "type": "boolean", + "title": "Special Care" + }, + "biological_ind": { + "type": "boolean", + "title": "Biological" + } + } + }, + "Observation_PlantAquatic": { + "title": "Aquatic Plant Information", + "description": "Plant Observation Terrestrial", + "type": "object", + "required": [ + "specific_use_code", + "proposed_action_code", + "flowering", + "plant_life_stage", + "plant_health", + "plant_seed_stage", + "legacy_site_ind", + "early_detection_rapid_resp_ind", + "research_detection_ind", + "sample_taken", + "special_care_ind", + "biological_ind", + "secchi_depth", + "water_depth", + "voucher_submitted_ind" + ], + "properties": { + "specific_use_code": { + "type": "string", + "title": "Specific Use" + }, + "proposed_action_code": { + "type": "string", + "title": "Proposed Action" + }, + "flowering": { + "type": "boolean", + "title": "Flowering" + }, + "plant_life_stage": { + "type": "string", + "title": "Life Stage" + }, + "plant_health": { + "type": "string", + "title": "Health" + }, + "plant_seed_stage": { + "type": "string", + "title": "Seed Stage" + }, + "sample_identifier": { + "type": "string", + "title": "Sample ID" + }, + "range_unit_number": { + "type": "string", + "title": "Range Unit" + }, + "legacy_site_ind": { + "type": "boolean" + }, + "early_detection_rapid_resp_ind": { + "type": "boolean", + "title": "Early Detection" + }, + "research_detection_ind": { + "type": "boolean", + "title": "Research Detection" + }, + "sample_taken": { + "type": "boolean", + "title": "Sample Taken" + }, + "sample_point_number": { + "type": "string", + "title": "Sample Number" + }, + "special_care_ind": { + "type": "boolean", + "title": "Special Care" + }, + "biological_ind": { + "type": "boolean", + "title": "Biological" + }, + "secchi_depth": { + "type": "number", + "format": "float", + "title": "secchi depth" + }, + "water_depth": { + "type": "number", + "format": "float", + "title": "water depth" + }, + "voucher_submitted_ind": { + "type": "boolean", + "title": "Voucher submitted" + }, + "voucher_submission_detail": { + "type": "string", + "title": "Voucher submission details" + } + } + }, + "Observation_AnimalTerrestrial": { + "title": "Terrestrial Animal Information", + "description": "Animal Observation Terrestrial", + "type": "object", + "required": [ + "number_of_individuals_observed", + "life_stage", + "behaviour" + ], + "properties": { + "number_of_individuals_observed": { + "type": "number", + "title": "Number of individuals" + }, + "life_stage": { + "type": "string", + "title": "Life Stage", + "enum": [ + "unknown", + "egg", + "neonate", + "juvenile", + "adult" + ] + }, + "behaviour": { + "type": "string", + "title": "Behaviour", + "enum": [ + "unknown", + "moving", + "resting", + "deceased" + ] + } + } + }, + "Observation_AnimalAquatic": { + "title": "Aquatic Animal Information", + "description": "Animal Observation Aquatic", + "type": "object", + "required": [ + "observation_details" + ], + "properties": { + "observation_details": { + "type": "string", + "title": "Aquatic animal observations" + } + } + }, + "Treatment": { + "title": "Treatment Information", + "description": "Basic information captured for all treatments", + "type": "object" + }, + "Treatment_ChemicalPlant": { + "title": "Chemical treatment for plants", + "description": "Chemical treament for plants", + "type": "object", + "required": [ + "primary_applicator_employee_code", + "secondary_applicator_employee_code", + "pesticide_employer_code", + "project_management_plan_PMP", + "chemical_treatment_method", + "temperature", + "humidity", + "mix_delivery_rate", + "application_rate", + "area_treated", + "herbicide" + ], + "properties": { + "primary_applicator_employee_code": { + "type": "string", + "title": "Primary Applicator employee code" + }, + "secondary_applicator_employee_code": { + "type": "string", + "title": "Secondary Applicator employee code" + }, + "pesticide_employer_code": { + "type": "string", + "title": "Pesticide employer code" + }, + "project_management_plan_PMP": { + "type": "string", + "title": "Project Management Plan" + }, + "pesticide_use_permit_PUP": { + "type": "string", + "title": "Pesticide use permit" + }, + "chemical_treatment_method": { + "type": "string", + "title": "Chemical treatment method" + }, + "temperature": { + "type": "integer", + "title": "Temperature", + "minimum": 10, + "maximum": 30 + }, + "wind_speed": { + "type": "integer", + "title": " Wind speed" + }, + "wind_direction": { + "type": "string", + "title": "Wind direction", + "enum": [ + "N", + "NE", + "E", + "SE", + "S", + "SW", + "W", + "NW" + ] + }, + "humidity": { + "type": "integer", + "title": "Humidity", + "enum": [ + 0, + 10, + 20, + 30, + 40, + 50, + 60, + 70, + 80, + 90, + 100 + ] + }, + "mix_delivery_rate": { + "type": "number", + "format": "float", + "title": "Mix delivery rate" + }, + "application_rate": { + "type": "number", + "format": "float", + "title": "Application rate" + }, + "area_treated": { + "type": "number", + "format": "float", + "title": "Area treated" + }, + "herbicide": { + "type": "array", + "title": "Herbicide", + "items": { + "$ref": "#/components/schemas/Herbicide" + } + } + } + }, + "Treatment_MechanicalPlant": { + "title": "Mechanical treatment for plants", + "description": "Mechanical treament for plants", + "type": "object", + "required": [ + "applicator1_first_name", + "applicator1_last_name", + "treatment_contractor", + "mechanical_method", + "mechanical_disposal_method", + "mechanical_root_removal_code", + "mechanical_soil_disturbance_code", + "signage_on_site" + ], + "properties": { + "applicator1_first_name": { + "type": "string", + "title": "Applicator 1 first name" + }, + "applicator1_last_name": { + "type": "string", + "title": "Applicator 1 last name" + }, + "applicator2_first_name": { + "type": "string", + "title": "Applicator 1 first name" + }, + "applicator2_last_name": { + "type": "string", + "title": "Applicator 1 last name" + }, + "treatment_contractor": { + "type": "string", + "title": "Treatment contractor" + }, + "mechanical_method": { + "type": "string", + "title": "Mechanical method" + }, + "mechanical_disposal_method": { + "type": "string", + "title": "Mechanical disposal method" + }, + "mechanical_root_removal_code": { + "type": "string", + "title": "Mechanical root removal code" + }, + "mechanical_soil_disturbance_code": { + "type": "string", + "title": "Mechanical soil disturbance code" + }, + "signage_on_site": { + "type": "boolean", + "title": "Signage on site" + } + } + }, + "Treatment_BiologicalPlant": { + "title": "Biological treament for plants", + "description": "Biological treament for plants", + "type": "object", + "required": [ + "applicator1_first_name", + "applicator1_last_name", + "treatment_contractor", + "classified_area", + "release_quantity", + "agent_source", + "biological_agent", + "biological_agent_stage", + "bioagent_maturity_status" + ], + "properties": { + "applicator1_first_name": { + "type": "string", + "title": "Applicator 1 first name" + }, + "applicator1_last_name": { + "type": "string", + "title": "Applicator 1 last name" + }, + "applicator2_first_name": { + "type": "string", + "title": "Applicator 1 first name" + }, + "applicator2_last_name": { + "type": "string", + "title": "Applicator 1 last name" + }, + "treatment_contractor": { + "type": "string", + "title": "Treatment contractor" + }, + "classified_area": { + "type": "string", + "title": "Classified area" + }, + "release_quantity": { + "type": "integer", + "title": "Release quantity" + }, + "agent_source": { + "type": "string", + "title": "Agent source" + }, + "biological_agent": { + "type": "string", + "title": "Biological agent" + }, + "biological_agent_stage": { + "type": "string", + "title": "Biological agent stage" + }, + "bioagent_maturity_status": { + "type": "string", + "title": "Bioagent maturity status" + } + } + }, + "Treatment_BiologicalDispersalPlant": { + "title": "Biological dispersal treament for plants", + "description": "Biological dispersal treament for plants", + "type": "object", + "required": [ + "applicator1_first_name", + "applicator1_last_name", + "treatment_contractor", + "duration_of_count", + "biological_agent", + "plant_count", + "biological_agent_count", + "biological_agent_presence" + ], + "properties": { + "applicator1_first_name": { + "type": "string", + "title": "Applicator 1 first name" + }, + "applicator1_last_name": { + "type": "string", + "title": "Applicator 1 last name" + }, + "applicator2_first_name": { + "type": "string", + "title": "Applicator 2 first name" + }, + "applicator2_last_name": { + "type": "string", + "title": "Applicator 2 last name" + }, + "treatment_contractor": { + "type": "string", + "title": "Treatment contractor" + }, + "duration_of_count": { + "type": "integer", + "title": "Duration of count" + }, + "biological_agent": { + "type": "string", + "title": "Biological agent" + }, + "plant_count": { + "type": "integer", + "title": "Plant count" + }, + "biological_agent_count": { + "type": "integer", + "title": "Biological agent count" + }, + "biological_agent_presence": { + "type": "string", + "title": "Biological agent presence" + } + } + }, + "Treatment_MechanicalTerrestrialAnimal": { + "title": "Mechanical treatment for terrestrial animals", + "description": "Mechanical treament for terrestrial animals", + "type": "object", + "required": [ + "treatment_details" + ], + "properties": { + "treatment_details": { + "type": "string", + "title": "Treatment details" + } + } + }, + "Treatment_ChemicalTerrestrialAnimal": { + "title": "Chemical treatment for terrestrial animals", + "description": "Chemical treament for terrestrial animals", + "type": "object", + "required": [ + "treatment_details" + ], + "properties": { + "treatment_details": { + "type": "string", + "title": "Treatment details" + } + } + }, + "Treatment_BiologicalTerrestrialAnimal": { + "title": "Biological treatment for terrestrial animals", + "description": "Biological treament for terrestrial animals", + "type": "object", + "required": [ + "treatment_details" + ], + "properties": { + "treatment_details": { + "type": "string", + "title": "Treatment details" + } + } + }, + "Monitoring": { + "title": "Monitoring Information", + "description": "Basic information captured for all monitorings", + "type": "object", + "required": [ + "activity_id", + "observer_first_name", + "observer_last_name", + "efficacy_rating_code" + ], + "properties": { + "activity_id": { + "type": "integer", + "title": "Treatment id" + }, + "observer_first_name": { + "type": "string", + "title": "First Name" + }, + "observer_last_name": { + "type": "string", + "title": "Last Name" + }, + "efficacy_rating_code": { + "type": "integer", + "title": "Efficacy rating", + "enum": [ + 0, + 5, + 10, + 15, + 20, + 25, + 30, + 35, + 40, + 45, + 50, + 55, + 60, + 65, + 70, + 75, + 80, + 85, + 90, + 95, + 100 + ] + } + } + }, + "Monitoring_ChemicalTerrestrialAquaticPlant": { + "title": " Monitoring a chemical treament for terrestrial and aquatic plants", + "description": "Chemical monitoring for terrestrial plants", + "type": "object", + "required": [ + "monitoring_details" + ], + "properties": { + "monitoring_details": { + "type": "string", + "title": "Monitoring details" + } + } + }, + "Monitoring_MechanicalTerrestrialAquaticPlant": { + "title": "Monitoring a mechanical treatment for terrestrial and aquatic plants", + "description": "Mechanical monitoring for terrestrial plants", + "type": "object", + "required": [ + "monitoring_details" + ], + "properties": { + "monitoring_details": { + "type": "string", + "title": "Monitoring details" + } + } + }, + "Monitoring_BiologicalTerrestrialPlant": { + "title": "Monitoring a biological treatment for terrestrial plants", + "description": "Biological monitoring for terrestrial plants", + "type": "object", + "required": [ + "plant_count", + "agent_count", + "count_duration", + "agent_destroyed_ind", + "legacy_presence_ind", + "foliar_feeding_damage_ind", + "root_feeding_damage_ind", + "oviposition_marks_ind", + "eggs_present_ind", + "larvae_present_ind", + "pupae_present_ind", + "adults_present_ind", + "tunnels_present_ind" + ], + "properties": { + "plant_count": { + "type": "integer", + "title": "Plant count" + }, + "agent_count": { + "type": "integer", + "title": "Agent count" + }, + "count_duration": { + "type": "integer", + "title": "Count duration" + }, + "agent_destroyed_ind": { + "type": "boolean", + "title": "Agent destroyed" + }, + "legacy_presence_ind": { + "type": "boolean", + "title": "Legacy presence" + }, + "foliar_feeding_damage_ind": { + "type": "boolean", + "title": "Foliar feeding damage" + }, + "root_feeding_damage_ind": { + "type": "boolean", + "title": "Root feeding damage" + }, + "oviposition_marks_ind": { + "type": "boolean", + "title": "Oviposition marks" + }, + "eggs_present_ind": { + "type": "boolean", + "title": "Eggs present" + }, + "larvae_present_ind": { + "type": "boolean", + "title": "Larvae present" + }, + "pupae_present_ind": { + "type": "boolean", + "title": "Pupae present" + }, + "adults_present_ind": { + "type": "boolean", + "title": "Adults present" + }, + "tunnels_present_ind": { + "type": "boolean", + "title": "Tunnels present" + }, + "biological_agent_spread": { + "type": "string", + "title": "Biological agent spread" + } + } + }, + "Monitoring_MechanicalTerrestrialAnimal": { + "title": "Monitoring a mechanical treatment for a terrestrial animal", + "description": "Mechanical monitoring for terrestrial plants", + "type": "object", + "required": [ + "monitoring_details" + ], + "properties": { + "monitoring_details": { + "type": "string", + "title": "Monitoring details" + } + } + }, + "Monitoring_ChemicalTerrestrialAnimal": { + "title": "Monitoring a chemical treatment for a terrestrial animal", + "description": "Chemical monitoring for terrestrial plants", + "type": "object", + "required": [ + "monitoring_details" + ], + "properties": { + "monitoring_details": { + "type": "string", + "title": "Monitoring details" + } + } + }, + "Monitoring_BiologicalTerrestrialAnimal": { + "title": "Monitoring a biological treatment for a terrestrial animal", + "description": "Biological monitoring for terrestrial plants", + "type": "object", + "required": [ + "monitoring_details" + ], + "properties": { + "monitoring_details": { + "type": "string", + "title": "Monitoring details" + } + } + }, + "Media": { + "title": "Media", + "description": "List of Media", + "type": "object", + "properties": { + "media_date": { + "type": "string", + "title": "Date" + }, + "description": { + "type": "string", + "title": "Description" + }, + "file_name": { + "type": "string", + "title": "File Name" + }, + "encoded_file": { + "type": "string", + "format": "base64", + "description": "A Data URL base64 encoded image", + "example": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy..." + } + } + }, + "PaperFile": { + "title": "Paper file", + "description": "Paper files", + "type": "object", + "required": [ + "description" + ], + "properties": { + "description": { + "type": "string", + "title": "Description", + "maximum": 50 + } + } + }, + "Herbicide": { + "title": "Herbicide", + "description": "herbicide", + "type": "object", + "required": [ + "herbicide_name", + "herbicide_amount" + ], + "properties": { + "herbicide_name": { + "type": "string", + "title": "herbicide name" + }, + "herbicide_amount": { + "type": "number", + "title": "herbicide amount", + "format": "float" + } + } + }, + "Geometry": { + "title": " Geometry", + "type": "object", + "description": "GeoJSon geometry", + "required": [ + "subtype" + ], + "properties": { + "well_proximity": { + "type": "number", + "format": "float", + "title": "Well proximity", + "readOnly": true + }, + "well_tag": { + "type": "integer", + "title": "Well tag", + "readOnly": true + }, + "subType": { + "title": "Geometry subtype", + "oneOf": [ + { + "$ref": "#/components/schemas/Point" + }, + { + "$ref": "#/components/schemas/LineString" + }, + { + "$ref": "#/components/schemas/Polygon" + } + ] + } + } + }, + "Point": { + "title": "Point with radius", + "type": "object", + "description": "Point geometry", + "properties": { + "radius": { + "type": "number", + "format": "float", + "title": "Radius", + "writeOnly": true + }, + "coordinates": { + "type": "array", + "items": {} + } + } + }, + "LineString": { + "title": "Line with offset (box)", + "type": "object", + "description": "LineString Geometry", + "properties": { + "offset": { + "type": "number", + "format": "float", + "title": "Offset", + "writeOnly": true + }, + "coordinates": { + "type": "array", + "items": {} + } + } + }, + "Polygon": { + "title": "Polygon", + "type": "object", + "description": "Polygon Geometry", + "properties": { + "coordinates": { + "type": "array", + "items": {} + } + } + } + } + } +} diff --git a/api-mobile/src/openapi/api-doc.yaml b/api-mobile/src/openapi/api-doc.yaml deleted file mode 100644 index 5cf0427ee..000000000 --- a/api-mobile/src/openapi/api-doc.yaml +++ /dev/null @@ -1,1010 +0,0 @@ -openapi: 3.0.0 - -info: - version: 0.0.0 - title: invasivesbc-api-mobile - description: API for InvasivesBC mobile. - license: - name: Apache 2.0 - url: http://www.apache.org/licenses/LICENSE-2.0.html - -servers: - - url: http://localhost:3002/api - description: local api - - url: http://localhost:7080/api - description: local api via docker - - url: https://api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca - description: deployed api in dev environment - - url: https://api-mobile-test-invasivesbc.pathfinder.gov.bc.ca - description: deployed api in test environment - - url: https://api-mobile-invasivesbc.pathfinder.gov.bc.ca - description: deployed api in prod environmen - -tags: - - name: misc - description: Miscellaneous endpoints - - name: activity - description: | - Activity endpoints - An activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities' - - name: observation - description: Observation activity endpoints - - name: plant - description: Plant endpoints - - name: code - description: Code endpoints - - name: media - description: Media endpoints - -externalDocs: - description: Visit GitHub to find out more about this API - url: https://github.com/bcgov/lucy-web.git - -## paths are generated via express-openapi based on the ./src/paths/* structure -paths: {} - -# See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#componentsObject for supported component types -components: - securitySchemes: - Bearer: # arbitrary name for the security scheme - type: http - scheme: bearer - bearerFormat: JWT # optional, arbitrary value for documentation purposes - description: | - To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header. - The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz` - - responses: - "401": - description: Unauthorized user - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - "400": - description: Bad request - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - "503": - description: Service unavailable - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - default: - description: Unexpected error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - - schemas: - Error: - description: Error response object. - properties: - status: - type: number - message: - type: string - errors: - type: array - items: - type: string - - Activity: - title: "Activity" - description: - Activity main object. - type: object - required: - - species_agency_code - - jurisdiction_code - - activity_status - - species_id - - access_description - - media_indicator - - created_date_on_device - - updated_date_on_device - - geometry - - subType - properties: - species_agency_code: - type: string - title: "Agency" - jurisdiction_code: - type: string - title: "Jurisdiction" - activity_status: - type: string - title: "Activity status" - enum: - - sync - - done - - pending - - errors - species_id: - type: string - title: "Species" - general_comment: - type: string - title: "Comment" - maximum: 300 - access_description: - type: string - title: "Access Description" - maximum: 300 - media_indicator: - type: boolean - title: "Photo" - created_date_on_device: - type: string - title: "Created date on device" - updated_date_on_device: - type: string - title: "Updated date on device" - media: - type: array - title: "Photos" - items: - $ref: "#/components/schemas/Media" - paper_file: - type: array - title: "Paper file" - items: - $ref: "#/components/schemas/PaperFile" - geometry: - type: array - title: "Geometry" - items: - $ref: "#/components/schemas/Geometry" - subType: - title: "Activity subtype" - oneOf: - - $ref: "#/components/schemas/Observation" - - $ref: "#/components/schemas/Treatment" - - $ref: "#/components/schemas/Monitoring" - - Observation: - title: "Observation" - description: | - Observation main object. - type: object - required: - - observation_date - - observation time - - observation_type - - observer_first_name - - observer_last_name - - reported_area - - sample_taken - - negative_obs_ind - - subType - properties: - observation_date: - type: string - title: "Date" - observation_time: - type: string - title: "Time" - observation_type: - type: string - title: "Type" - observer_first_name: - type: string - title: "First Name" - maximum: 50 - observer_last_name: - type: string - title: "Last Name" - maximum: 50 - reported_area: - type: integer - title: "Area" - minimum: 1 - maximum: 100 - sample_taken: - type: boolean - title: "Sample Taken" - sample_number: - type: string - title: "Sample Number" - maximum: 50 - negative_obs_ind: - type: boolean - title: "Negative Observation" - subType: - title: "Observation subtype" - oneOf: - - $ref: "#/components/schemas/Observation_PlantTerrestial" - - $ref: "#/components/schemas/Observation_PlantAquatic" - - $ref: "#/components/schemas/Observation_AnimalTerrestrial" - - $ref: "#/components/schemas/Observation_AnimalAquatic" - - - Observation_PlantTerrestial: - title: "Terrestrial Plant Observation" - description: | - Plant Observation Terrestrial - type: object - required: - - species_density_code - - species_distribution_code - - soil_texture_code - - specific_use_code - - slope_code - - aspect_code - - proposed_action_code - - flowering - - plant_life_stage - - plant_health - - plant_seed_stage - - legacy_site_ind - - early_detection_rapid_resp_ind - - research_detection_ind - - well_ind - - special_care_ind - - biological_ind - properties: - species_density_code: - type: string - title: "Density" - species_distribution_code: - type: string - title: "Distribution" - soil_texture_code: - type: string - title: "Soil Texture" - specific_use_code: - type: string - title: "Specific Use" - slope_code: - type: string - title: "Slope" - aspect_code: - type: string - title: "Aspect" - proposed_action_code: - type: string - title: "Proposed Action" - flowering: - type: boolean - title: "Flowering" - plant_life_stage: - type: string - title: "Life Stage" - plant_health: - type: string - title: "Health" - plant_seed_stage: - type: string - title: "Seed Stage" - sample_identifier: - type: string - title: "Sample ID" - range_unit_number: - type: string - title: "Range Unit" - legacy_site_ind: - type: boolean - title: "Legacy site" - early_detection_rapid_resp_ind: - type: boolean - title: "Early Detection" - research_detection_ind: - type: boolean - title: "Research Detection" - well_ind: - type: boolean - title: "Visible well nearby" - special_care_ind: - type: boolean - title: "Special Care" - biological_ind: - type: boolean - title: "Biological" - - Observation_PlantAquatic: - title: "Aquatic Plant Observation" - description: - Plant Observation Terrestrial - type: object - required: - - specific_use_code - - proposed_action_code - - flowering - - plant_life_stage - - plant_health - - plant_seed_stage - - legacy_site_ind - - early_detection_rapid_resp_ind - - research_detection_ind - - sample_taken - - special_care_ind - - biological_ind - - secchi_depth - - water_depth - - voucher_submitted_ind - properties: - specific_use_code: - type: string - title: "Specific Use" - proposed_action_code: - type: string - title: "Proposed Action" - flowering: - type: boolean - title: "Flowering" - plant_life_stage: - type: string - title: "Life Stage" - plant_health: - type: string - title: "Health" - plant_seed_stage: - type: string - title: "Seed Stage" - sample_identifier: - type: string - title: "Sample ID" - range_unit_number: - type: string - title: "Range Unit" - legacy_site_ind: - type: boolean - early_detection_rapid_resp_ind: - type: boolean - title: "Early Detection" - research_detection_ind: - type: boolean - title: "Research Detection" - sample_taken: - type: boolean - title: "Sample Taken" - sample_point_number: - type: string - title: "Sample Number" - special_care_ind: - type: boolean - title: "Special Care" - biological_ind: - type: boolean - title: "Biological" - secchi_depth: - type: number - format: float - title: "secchi depth" - water_depth: - type: number - format: float - title: "water depth" - voucher_submitted_ind: - type: boolean - title: "Voucher submitted" - voucher_submission_detail: - type: string - title: "Voucher submission details" - - - Observation_AnimalTerrestrial: - title: "Terrestrial Animal Observation" - description: | - Animal Observation Terrestrial. - type: object - required: - - number_of_individuals_observed - - life_stage - - behaviour - properties: - number_of_individuals_observed: - type: number - title: "Number of individuals" - life_stage: - type: string - title: "Life Stage" - enum: - - unknown - - egg - - neonate - - juvenile - - adult - behaviour: - type: string - title: "Behaviour" - enum: - - unknown - - moving - - resting - - deceased - - Observation_AnimalAquatic: - title: "Aquatic Animal Observation" - description: | - Animal Observation Aquatic. - type: object - required: - - observation_details - properties: - observation_details: - type: string - title: "Aquatic animal observations" - - Treatment: - title: "Treatment" - description: | - Treament main object. - type: object - required: - - subType - properties: - subType: - title: "Treatment type" - oneOf: - - $ref: "#/components/schemas/Treatment_ChemicalPlant" - - $ref: "#/components/schemas/Treatment_MechanicalPlant" - - $ref: "#/components/schemas/Treatment_BiologicalPlant" - - $ref: "#/components/schemas/Treatment_BiologicalDispersalPlant" - - $ref: "#/components/schemas/Treatment_MechanicalTerrestrialAnimal" - - $ref: "#/components/schemas/Treatment_ChemicalTerrestrialAnimal" - - $ref: "#/components/schemas/Treatment_BiologicalTerrestrialAnimal" - - Treatment_ChemicalPlant: - title: "Chemical treatment for plants" - description: | - Chemical treament for plants - main object. - type: object - required: - - primary_applicator_employee_code - - secondary_applicator_employee_code - - pesticide_employer_code - - project_management_plan_PMP - - chemical_treatment_method - - temperature - - humidity - - mix_delivery_rate - - application_rate - - area_treated - - herbicide - properties: - primary_applicator_employee_code: - type: string - title: "Primary Applicator employee code" - secondary_applicator_employee_code: - type: string - title: "Secondary Applicator employee code" - pesticide_employer_code: - type: string - title: "Pesticide employer code" - project_management_plan_PMP: - type: string - title: "Project Management Plan" - pesticide_use_permit_PUP: - type: string - title: "Pesticide use permit" - chemical_treatment_method: - type: string - title: "Chemical treatment method" - temperature: - type: integer - title: "Temperature" - minimum: 10 - maximum: 30 - wind_speed: - type: integer - title: " Wind speed" - wind_direction: - type: string - title: "Wind direction" - enum: - - N - - NE - - E - - SE - - S - - SW - - W - - NW - humidity: - type: integer - title: "Humidity" - enum: - - 0 - - 10 - - 20 - - 30 - - 40 - - 50 - - 60 - - 70 - - 80 - - 90 - - 100 - mix_delivery_rate: - type: number - format: float - title: "Mix delivery rate" - application_rate: - type: number - format: float - title: "Application rate" - area_treated: - type: number - format: float - title: "Area treated" - herbicide: - type: array - title: "Herbicide" - items: - $ref: "#/components/schemas/Herbicide" - - Treatment_MechanicalPlant: - title: "Mechanical treatment for plants" - description: - Mechanical treament for plants - main object. - type: object - required: - - applicator1_first_name - - applicator1_last_name - - treatment_contractor - - mechanical_method - - mechanical_disposal_method - - mechanical_root_removal_code - - mechanical_soil_disturbance_code - - signage_on_site - properties: - applicator1_first_name: - type: string - title: "Applicator 1 first name" - applicator1_last_name: - type: string - title: "Applicator 1 last name" - applicator2_first_name: - type: string - title: "Applicator 1 first name" - applicator2_last_name: - type: string - title: "Applicator 1 last name" - treatment_contractor: - type: string - title: "Treatment contractor" - mechanical_method: - type: string - title: "Mechanical method" - mechanical_disposal_method: - type: string - title: "Mechanical disposal method" - mechanical_root_removal_code: - type: string - title: "Mechanical root removal code" - mechanical_soil_disturbance_code: - type: string - title: "Mechanical soil disturbance code" - signage_on_site: - type: boolean - title: "Signage on site" - - Treatment_BiologicalPlant: - title: "Biological treament for plants" - description: - Biological treament for plants - main object. - type: object - required: - - applicator1_first_name - - applicator1_last_name - - treatment_contractor - - classified_area - - release_quantity - - agent_source - - biological_agent - - biological_agent_stage - - bioagent_maturity_status - properties: - applicator1_first_name: - type: string - title: "Applicator 1 first name" - applicator1_last_name: - type: string - title: "Applicator 1 last name" - applicator2_first_name: - type: string - title: "Applicator 1 first name" - applicator2_last_name: - type: string - title: "Applicator 1 last name" - treatment_contractor: - type: string - title: "Treatment contractor" - classified_area: - type: string - title: "Classified area" - release_quantity: - type: integer - title: "Release quantity" - agent_source: - type: string - title: "Agent source" - biological_agent: - type: string - title: "Biological agent" - biological_agent_stage: - type: string - title: "Biological agent stage" - bioagent_maturity_status: - type: string - title: "Bioagent maturity status" - - Treatment_BiologicalDispersalPlant: - title: "Biological dispersal treament for plants" - description: - Biological dispersal treament for plants - main object. - type: object - required: - - applicator1_first_name - - applicator1_last_name - - treatment_contractor - - duration_of_count - - biological_agent - - plant_count - - biological_agent_count - - biological_agent_presence - properties: - applicator1_first_name: - type: string - title: "Applicator 1 first name" - applicator1_last_name: - type: string - title: "Applicator 1 last name" - applicator2_first_name: - type: string - title: "Applicator 2 first name" - applicator2_last_name: - type: string - title: "Applicator 2 last name" - treatment_contractor: - type: string - title: "Treatment contractor" - duration_of_count: - type: integer - title: "Duration of count" - biological_agent: - type: string - title: "Biological agent" - plant_count: - type: integer - title: "Plant count" - biological_agent_count: - type: integer - title: "Biological agent count" - biological_agent_presence: - type: string - title: "Biological agent presence" - - Treatment_MechanicalTerrestrialAnimal: - title: "Mechanical treatment for terrestrial animals" - description: - Mechanical treament for terrestrial animals - main object. - type: object - required: - - treatment_details - properties: - treatment_details: - type: string - title: "Treatment details" - - Treatment_ChemicalTerrestrialAnimal: - title: "Chemical treatment for terrestrial animals" - description: - Chemical treament for terrestrial animals - main object. - type: object - required: - - treatment_details - properties: - treatment_details: - type: string - title: "Treatment details" - - Treatment_BiologicalTerrestrialAnimal: - title: "Biological treatment for terrestrial animals" - description: - Biological treament for terrestrial animals - main object. - type: object - required: - - treatment_details - properties: - treatment_details: - type: string - title: "Treatment details" - - Monitoring: - title: "Monitoring" - description: | - Monitoring main object. - type: object - required: - - activity_id - - observer_first_name - - observer_last_name - - efficacy_rating_code - properties: - activity_id: - type: integer - title: "Treatment id" - observer_first_name: - type: string - title: "First Name" - observer_last_name: - type: string - title: "Last Name" - efficacy_rating_code: - type: integer - title: "Efficacy rating" - enum: - - 0 - - 5 - - 10 - - 15 - - 20 - - 25 - - 30 - - 35 - - 40 - - 45 - - 50 - - 55 - - 60 - - 65 - - 70 - - 75 - - 80 - - 85 - - 90 - - 95 - - 100 - subType: - title: "Monitoring type" - oneOf: - - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" - - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAquaticPlant" - - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialPlant" - - $ref: "#/components/schemas/Monitoring_MechanicalTerrestrialAnimal" - - $ref: "#/components/schemas/Monitoring_ChemicalTerrestrialAnimal" - - $ref: "#/components/schemas/Monitoring_BiologicalTerrestrialAnimal" - - - Monitoring_ChemicalTerrestrialAquaticPlant: - title: " Monitoring a chemical treament for terrestrial and aquatic plants" - description: - Chemical monitoring for terrestrial plants - main object. - type: object - required: - - monitoring_details - properties: - monitoring_details: - type: string - title: "Monitoring details" - - Monitoring_MechanicalTerrestrialAquaticPlant: - title: "Monitoring a mechanical treatment for terrestrial and aquatic plants" - description: - Mechanical monitoring for terrestrial plants - main object. - type: object - required: - - monitoring_details - properties: - monitoring_details: - type: string - title: "Monitoring details" - - Monitoring_BiologicalTerrestrialPlant: - title: "Monitoring a biological treatment for terrestrial plants" - description: - Biological monitoring for terrestrial plants - main object. - type: object - required: - - plant_count - - agent_count - - count_duration - - agent_destroyed_ind - - legacy_presence_ind - - foliar_feeding_damage_ind - - root_feeding_damage_ind - - oviposition_marks_ind - - eggs_present_ind - - larvae_present_ind - - pupae_present_ind - - adults_present_ind - - tunnels_present_ind - properties: - plant_count: - type: integer - title: "Plant count" - agent_count: - type: integer - title: "Agent count" - count_duration: - type: integer - title: "Count duration" - agent_destroyed_ind: - type: boolean - title: "Agent destroyed" - legacy_presence_ind: - type: boolean - title: "Legacy presence" - foliar_feeding_damage_ind: - type: boolean - title: "Foliar feeding damage" - root_feeding_damage_ind: - type: boolean - title: "Root feeding damage" - oviposition_marks_ind: - type: boolean - title: "Oviposition marks" - eggs_present_ind: - type: boolean - title: "Eggs present" - larvae_present_ind: - type: boolean - title: "Larvae present" - pupae_present_ind: - type: boolean - title: "Pupae present" - adults_present_ind: - type: boolean - title: "Adults present" - tunnels_present_ind: - type: boolean - title: "Tunnels present" - biological_agent_spread: - type: string - title: "Biological agent spread" - - Monitoring_MechanicalTerrestrialAnimal: - title: "Monitoring a mechanical treatment for a terrestrial animal" - description: - Mechanical monitoring for terrestrial plants - main object. - type: object - required: - - monitoring_details - properties: - monitoring_details: - type: string - title: "Monitoring details" - - Monitoring_ChemicalTerrestrialAnimal: - title: "Monitoring a chemical treatment for a terrestrial animal" - description: - Chemical monitoring for terrestrial plants - main object. - type: object - required: - - monitoring_details - properties: - monitoring_details: - type: string - title: "Monitoring details" - - Monitoring_BiologicalTerrestrialAnimal: - title: "Monitoring a biological treatment for a terrestrial animal" - description: - Biological monitoring for terrestrial plants - main object. - type: object - required: - - monitoring_details - properties: - monitoring_details: - type: string - title: "Monitoring details" - - Media: - title: "Media" - description: | - List of Media - type: object - properties: - media_date: - type: string - title: "Date" - description: - type: string - title: "Description" - file_name: - type: 'string' - title: 'File Name' - encoded_file: - type: 'string' - format: 'base64' - description: 'A Data URL base64 encoded image' - example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' - - PaperFile: - title: "Paper file" - description: | - Paper files - type: object - required: - - description - properties: - description: - type: string - title: "Description" - maximum: 50 - - Herbicide: - title: "Herbicide" - description: - herbicide - type: object - required: - - herbicide_name - - herbicide_amount - properties: - herbicide_name: - type: string - title: "herbicide name" - herbicide_amount: - type: number - title: "herbicide amount" - format: float - - Geometry: - title: " Geometry" - type: object - description: GeoJSon geometry - required: - - subtype - properties: - well_proximity: - type: number - format: float - title: "Well proximity" - readOnly: true - well_tag: - type: integer - title: "Well tag" - readOnly: true - subType: - title: "Geometry subtype" - oneOf: - - $ref: "#/components/schemas/Point" - - $ref: "#/components/schemas/LineString" - - $ref: "#/components/schemas/Polygon" - - Point: - title: "Point with radius" - type: object - description: Point geometry - properties: - radius: - type: number - format: float - title: "Radius" - writeOnly: true - coordinates: - type: array - items: {} - - LineString: - title: "Line with offset (box)" - type: object - description: LineString Geometry - properties: - offset: - type: number - format: float - title: "Offset" - writeOnly: true - coordinates: - type: array - items: {} - - Polygon: - title: "Polygon" - type: object - description: Polygon Geometry - properties: - coordinates: - type: array - items: {} \ No newline at end of file diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index ebb19e7cb..302608104 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -32,7 +32,7 @@ GET.apiDoc = { activity_type: { type: 'string' }, - activity_sub_type: { + activity_subtype: { type: 'string' }, page: { @@ -69,80 +69,7 @@ GET.apiDoc = { items: { type: 'object', properties: { - activity_type: { - type: 'string' - }, - activityTypeData: { - type: 'object' - }, - activity_sub_type: { - type: 'string' - }, - activitySubTypeData: { - type: 'object' - }, - date: { - type: 'string', - description: 'Date in YYYY-MM-DD format' - }, - locationAndGeometry: { - type: 'object', - description: 'Location and geometry information', - properties: { - anchorPointY: { - type: 'number' - }, - anchorPointX: { - type: 'number' - }, - area: { - type: 'number' - }, - geometry: { - type: 'object', - description: 'A geoJSON object' - }, - jurisdiction: { - type: 'string' - }, - agency: { - type: 'string' - }, - observer1FirstName: { - type: 'string' - }, - observer1LastName: { - type: 'string' - }, - locationComment: { - type: 'string' - }, - generalComment: { - type: 'string' - }, - photoTaken: { - type: 'boolean' - } - } - }, - media: { - type: 'array', - description: 'An array of media objects associated to the activity record', - items: { - type: 'object', - properties: { - fileName: { - type: 'string' - }, - encodedFile: { - type: 'string', - format: 'base64', - description: 'A Data URL base64 encoded image', - example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' - } - } - } - } + // don't specify exact response, as it is not currently enforced anyways } } } @@ -172,95 +99,52 @@ POST.apiDoc = { } ], requestBody: { - description: 'Activity post response object.', + description: 'Activity post request object.', content: { 'application/json': { schema: { - required: [ - 'activity_type', - 'activityTypeData', - 'activity_sub_type', - 'activitySubTypeData', - 'date', - 'locationAndGeometry' - ], + required: ['activity_type', 'activity_subtype'], properties: { activity_type: { type: 'string' }, - activityTypeData: { - type: 'object' - }, - activity_sub_type: { + activity_subtype: { type: 'string' }, - activitySubTypeData: { - type: 'object' - }, - date: { - type: 'string', - description: 'Date in YYYY-MM-DD format' - }, - locationAndGeometry: { - type: 'object', - additionalProperties: false, - description: 'Location and geometry information', - properties: { - anchorPointY: { - type: 'number' - }, - anchorPointX: { - type: 'number' - }, - area: { - type: 'number' - }, - geometry: { - type: 'object', - description: 'A geoJSON object' - }, - jurisdiction: { - type: 'string' - }, - agency: { - type: 'string' - }, - observer1FirstName: { - type: 'string' - }, - observer1LastName: { - type: 'string' - }, - locationComment: { - type: 'string' - }, - generalComment: { - type: 'string' - }, - photoTaken: { - type: 'boolean' - } + media: { + type: 'array', + title: 'Media', + items: { + $ref: '#/components/schemas/Media' } }, - media: { + geometry: { type: 'array', - description: 'An array of media objects to upload and associate to the activity record', + title: 'Geometry', items: { - type: 'object', - additionalProperties: false, - required: ['fileName', 'encodedFile'], - properties: { - fileName: { - type: 'string' - }, - encodedFile: { - type: 'string', - format: 'base64', - description: 'A Data URL base64 encoded image', - example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' - } - } + $ref: '#/components/schemas/Geometry' } + }, + form_data: { + oneOf: [ + { $ref: '#/components/schemas/Activity_Observation_PlantTerrestial' }, + { $ref: '#/components/schemas/Activity_Observation_PlantAquatic' }, + { $ref: '#/components/schemas/Activity_Observation_AnimalTerrestrial' }, + { $ref: '#/components/schemas/Activity_Observation_AnimalAquatic' }, + { $ref: '#/components/schemas/Activity_Treatment_ChemicalPlant' }, + { $ref: '#/components/schemas/Activity_Treatment_MechanicalPlant' }, + { $ref: '#/components/schemas/Activity_Treatment_BiologicalPlant' }, + { $ref: '#/components/schemas/Activity_Treatment_BiologicalDispersalPlant' }, + { $ref: '#/components/schemas/Activity_Treatment_MechanicalTerrestrialAnimal' }, + { $ref: '#/components/schemas/Activity_Treatment_ChemicalTerrestrialAnimal' }, + { $ref: '#/components/schemas/Activity_Treatment_BiologicalTerrestrialAnimal' }, + { $ref: '#/components/schemas/Activity_Monitoring_ChemicalTerrestrialAquaticPlant' }, + { $ref: '#/components/schemas/Activity_Monitoring_MechanicalTerrestrialAquaticPlant' }, + { $ref: '#/components/schemas/Activity_Monitoring_BiologicalTerrestrialPlant' }, + { $ref: '#/components/schemas/Activity_Monitoring_MechanicalTerrestrialAnimal' }, + { $ref: '#/components/schemas/Activity_Monitoring_ChemicalTerrestrialAnimal' }, + { $ref: '#/components/schemas/Activity_Monitoring_BiologicalTerrestrialAnimal' } + ] } } } @@ -355,7 +239,7 @@ function createActivity(): RequestHandler { return async (req, res, next) => { defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); - const data: ActivityPostRequestBody = { ...req.body, mediaKeys: req['mediaKeys'] }; + const data = { ...req.body, mediaKeys: req['mediaKeys'] }; const sanitizedActivityData = new ActivityPostRequestBody(data); diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 54fbfb943..f99e42c9b 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -44,7 +44,7 @@ GET.apiDoc = { activityTypeData: { type: 'object' }, - activity_sub_type: { + activity_subtype: { type: 'string' }, activitySubTypeData: { diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 4f6e6212b..233a96004 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -4,35 +4,35 @@ import { ActivityPostRequestBody, ActivitySearchCriteria } from './../models/act /** * SQL query to insert a new activity, and return the inserted record. * - * @param {ActivityPostRequestBody} activityData + * @param {ActivityPostRequestBody} activity * @returns {SQLStatement} sql query object */ -export const postActivitySQL = (activityData: ActivityPostRequestBody): SQLStatement => { - if (!activityData) { +export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement => { + if (!activity) { return null; } const sqlStatement: SQLStatement = SQL` INSERT INTO activity_incoming_data ( activity_type, - activity_sub_type, + activity_subtype, received_timestamp, activity_payload, geog, media_keys ) VALUES ( - ${activityData.activity_type}, - ${activityData.activity_sub_type}, - ${activityData.date}, - ${activityData.activityPostBody} + ${activity.activity_type}, + ${activity.activity_subtype}, + ${activity.received_timestamp}, + ${activity.activityPostBody} `; - if (activityData.locationAndGeometry && activityData.locationAndGeometry['geometry']) { + if (activity.geometry && activity.geometry.length) { sqlStatement.append(` ,public.geography( public.ST_Force2D( public.ST_SetSRID( - public.ST_GeomFromGeoJSON('${JSON.stringify(activityData.locationAndGeometry['geometry'])}') + public.ST_GeomFromGeoJSON('${JSON.stringify(activity.geometry[0])}') ,4326 ) ) @@ -45,7 +45,7 @@ export const postActivitySQL = (activityData: ActivityPostRequestBody): SQLState } sqlStatement.append(` - ,${activityData.mediaKeys} + ,${activity.mediaKeys} ) RETURNING activity_incoming_data_id; @@ -67,8 +67,8 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta sqlStatement.append(SQL` WHERE activity_type = ${searchCriteria.activity_type}`); } - if (searchCriteria.activity_sub_type) { - sqlStatement.append(SQL` WHERE activity_sub_type = ${searchCriteria.activity_sub_type}`); + if (searchCriteria.activity_subtype) { + sqlStatement.append(SQL` WHERE activity_subtype = ${searchCriteria.activity_subtype}`); } if (searchCriteria.date_range_start) { diff --git a/api-mobile/test/activity-with-files.json b/api-mobile/test/activity-with-files.json index d69a10b51..f3dda4ae4 100644 --- a/api-mobile/test/activity-with-files.json +++ b/api-mobile/test/activity-with-files.json @@ -1,12 +1,9 @@ { "activity_type": "observation", - "activity_sub_type": "plant", + "activity_subtype": "plant", "date": "2020-08-30", - "locationAndGeometry": { - "anchorPointY": 48.3, - "anchorPointX": -125.6, - "area": 0, - "geometry": { + "geometry": [ + { "type": "Feature", "geometry": { "type": "Polygon", @@ -33,11 +30,16 @@ }, "properties": {} } + ], + "locationAndGeometry": { + "anchorPointY": 48.3, + "anchorPointX": -125.6, + "area": 0, }, - "activityTypeData": { + "activity_type_data": { "pokiness": 17 }, - "activitySubTypeData": { + "activity_subtype_data": { "density": "hard", "colour": "green" }, diff --git a/api-mobile/test/observation-point.json b/api-mobile/test/observation-point.json index c917c6cf1..4a490b7db 100644 --- a/api-mobile/test/observation-point.json +++ b/api-mobile/test/observation-point.json @@ -1,16 +1,21 @@ { "activity_type": "Observation", - "activity_sub_type": "Terrestrial Invasive Plant", + "activity_subtype": "Terrestrial Invasive Plant", "date": "2019-04-12", "deviceRequestUID": "string", + "geometry": [ + { + "type": "Point", + "coordinates": [ + -125.6, + 48.3 + ] + } + ], "locationAndGeometry": { "anchorPointY": 48.3, "anchorPointX": -125.6, "area": 0, - "geometry": { - "type": "Point", - "coordinates": [-125.6, 48.3] - }, "jurisdiction": "string", "agency": "string", "observer1FirstName": "string", @@ -19,7 +24,10 @@ "generalComment": "string", "photoTaken": true }, - "activityTypeData": { + "activity_data": { + "species_id": 123 + }, + "activity_type_data": { "negative_observation_ind": false, "aquatic_observation_ind": false, "primary_user_last_name": "mike", @@ -33,7 +41,7 @@ "sample_taken_ind": true, "sample_label_number": "string" }, - "activitySubTypeData": { + "activity_subtype_data": { "species": "banana", "distribution": 123, "density": 123, diff --git a/api-mobile/test/observation-polygon.json b/api-mobile/test/observation-polygon.json index 82b561c89..dd0c7d046 100644 --- a/api-mobile/test/observation-polygon.json +++ b/api-mobile/test/observation-polygon.json @@ -1,20 +1,37 @@ { "activity_type": "Observation", - "activity_sub_type": "Terrestrial Invasive Plant", + "activity_subtype": "Terrestrial Invasive Plant", "date": "2019-04-12", "deviceRequestUID": "string", - "locationAndGeometry": { - "anchorPointY": 48.3, - "anchorPointX": -125.6, - "area": 0, - "geometry": { + "geometry": [ + { "type": "Polygon", "coordinates": [ [ - [-125.6, 48.3],[-126.6, 48.3],[-126.6, 49.3],[-125.6, 48.3] + [ + -125.6, + 48.3 + ], + [ + -126.6, + 48.3 + ], + [ + -126.6, + 49.3 + ], + [ + -125.6, + 48.3 + ] ] ] - }, + } + ], + "locationAndGeometry": { + "anchorPointY": 48.3, + "anchorPointX": -125.6, + "area": 0, "jurisdiction": "string", "agency": "string", "observer1FirstName": "string", @@ -23,7 +40,10 @@ "generalComment": "string", "photoTaken": true }, - "activityTypeData": { + "activity_data": { + "species_id": 123 + }, + "activity_type_data": { "negative_observation_ind": false, "aquatic_observation_ind": false, "primary_user_last_name": "mike", @@ -37,7 +57,7 @@ "sample_taken_ind": true, "sample_label_number": "string" }, - "activitySubTypeData": { + "activity_subtype_data": { "species": "banana", "distribution": 123, "density": 123, diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index 3fe75babc..7a6038c16 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -283,7 +283,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"activity_type\": \"\",\n \"activityTypeData\": \"\",\n \"activity_sub_type\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + "raw": "{\n \"activity_type\": \"\",\n \"activity_data\": \"\",\n \"activity_type_data\": \"\",\n \"activity_subtype\": \"\",\n \"activity_subtype_data\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" }, "url": { "raw": "{{baseUrlMobile}}/activity", @@ -304,7 +304,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"activity_type\": \"\",\n \"activityTypeData\": \"\",\n \"activity_sub_type\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + "raw": "{\n \"activity_type\": \"\",\n \"activity_data\": \"\",\n \"activity_type_data\": \"\",\n \"activity_subtype\": \"\",\n \"activity_subtype_data\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" }, "url": { "raw": "{{baseUrl}}/activity", @@ -326,7 +326,7 @@ } ], "cookie": [], - "body": "{\n \"activity_type\": \"irure in est dolor\",\n \"activity_sub_type\": \"dolore adipisicing\",\n \"date\": \"ipsum aute\",\n \"locationAndGeometry\": \"dolor amet\"\n}" + "body": "{\n \"activity_type\": \"irure in est dolor\",\n \"activity_subtype\": \"dolore adipisicing\",\n \"date\": \"ipsum aute\",\n \"locationAndGeometry\": \"dolor amet\"\n}" }, { "name": "Unauthorized user", @@ -335,7 +335,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"activity_type\": \"\",\n \"activityTypeData\": \"\",\n \"activity_sub_type\": \"\",\n \"activitySubTypeData\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" + "raw": "{\n \"activity_type\": \"\",\n \"activity_data\": \"\",\n \"activity_type_data\": \"\",\n \"activity_subtype\": \"\",\n \"activity_subtype_data\": \"\",\n \"date\": \"\",\n \"locationAndGeometry\": {\n \"anchorPointY\": \"\",\n \"anchorPointX\": \"\",\n \"area\": \"\",\n \"geometry\": \"\",\n \"jurisdiction\": \"\",\n \"agency\": \"\",\n \"observer1FirstName\": \"\",\n \"observer1LastName\": \"\",\n \"locationComment\": \"\",\n \"generalComment\": \"\",\n \"photoTaken\": \"\"\n },\n \"deviceRequestUID\": \"\"\n}" }, "url": { "raw": "{{baseUrl}}/activity", From 6550129cd8699e32826b03649e9240c874aaf111 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 29 Sep 2020 21:20:42 -0700 Subject: [PATCH 078/194] 10: Add security filter to dynamically populate api spec enums --- api-mobile/app.ts | 5 + api-mobile/package-lock.json | 18 +++- api-mobile/package.json | 2 + api-mobile/src/constants/misc.ts | 1 + api-mobile/src/openapi/api-doc.json | 30 ++++-- .../src/paths/code/observation/plant.ts | 97 +------------------ .../src/utils/api-doc-security-filter.ts | 82 ++++++++++++++++ api-mobile/src/utils/code-utils.ts | 88 +++++++++++++++++ 8 files changed, 215 insertions(+), 108 deletions(-) create mode 100644 api-mobile/src/utils/api-doc-security-filter.ts create mode 100644 api-mobile/src/utils/code-utils.ts diff --git a/api-mobile/app.ts b/api-mobile/app.ts index 4fc80966d..06836c446 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -6,6 +6,7 @@ import { initialize } from 'express-openapi'; import swaggerUi from 'swagger-ui-express'; import { authenticate } from './src/utils/auth-utils'; import { getLogger } from './src/utils/logger'; +import { applyApiDocSecurityFilters } from './src/utils/api-doc-security-filter'; const defaultLog = getLogger('app'); @@ -46,6 +47,10 @@ const openAPIFramework = initialize({ return authenticate(req, scopes); } }, + securityFilter: async (req, res) => { + const updatedReq = await applyApiDocSecurityFilters(req); + res.status(200).json(updatedReq['apiDoc']); + }, errorTransformer: function (openapiError: object, ajvError: object): object { // Transform openapi-request-validator and openapi-response-validator errors return ajvError; diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 31a408f68..c42267526 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -682,6 +682,13 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "dependencies": { + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + } } }, "ansi-align": { @@ -3016,6 +3023,11 @@ } } }, + "fast-json-patch": { + "version": "3.0.0-1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz", + "integrity": "sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw==" + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -4386,9 +4398,9 @@ } }, "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.5.0.tgz", + "integrity": "sha512-x+TRJIQFskrNnFKE2Viz9FCSjK1vIh+H/uaBiOYszh/IcZmAFneQ35H4osWDJp1NPXccuV2I0RMXmi2ZS6Kqcg==" }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", diff --git a/api-mobile/package.json b/api-mobile/package.json index 9379b2a50..040dfb3c1 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -32,7 +32,9 @@ "db-migrate": "~0.11.11", "express-openapi": "~7.0.1", "express": "~4.17.1", + "fast-json-patch": "~3.0.0-1", "js-base64": "~3.4.5", + "json-schema-traverse": "~0.5.0", "jsonwebtoken": "~8.5.1", "jwks-rsa": "~1.9.0", "knex": "^0.21.4", diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts index 3b869d938..f4b9c60a4 100644 --- a/api-mobile/src/constants/misc.ts +++ b/api-mobile/src/constants/misc.ts @@ -20,6 +20,7 @@ export const WRITE_ROLES = [ROLE_SUPER_USER, ROLE_ADMIN, ROLE_DATA_EDITOR]; * @enum {number} */ export enum CacheKeys { + AllCodeSets = 'allCodeSets', ObservationCodePlant = 'observationCodePlant' } diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index 03dfc6a6a..bfeadff58 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -386,11 +386,13 @@ "properties": { "species_agency_code": { "type": "string", - "title": "Agency" + "title": "Agency", + "x-code-enum": "species_agency_code" }, "jurisdiction_code": { "type": "string", - "title": "Jurisdiction" + "title": "Jurisdiction", + "x-code-enum": "jurisdiction_code" }, "activity_status": { "type": "string", @@ -521,31 +523,38 @@ "properties": { "species_density_code": { "type": "string", - "title": "Density" + "title": "Density", + "x-code-enum": "species_density_code" }, "species_distribution_code": { "type": "string", - "title": "Distribution" + "title": "Distribution", + "x-code-enum": "species_distribution_code" }, "soil_texture_code": { "type": "string", - "title": "Soil Texture" + "title": "Soil Texture", + "x-code-enum": "soil_texture_code" }, "specific_use_code": { "type": "string", - "title": "Specific Use" + "title": "Specific Use", + "x-code-enum": "specific_use_code" }, "slope_code": { "type": "string", - "title": "Slope" + "title": "Slope", + "x-code-enum": "observation_slope_code", }, "aspect_code": { "type": "string", - "title": "Aspect" + "title": "Aspect", + "x-code-enum": "observation_aspect_code" }, "proposed_action_code": { "type": "string", - "title": "Proposed Action" + "title": "Proposed Action", + "x-code-enum": "observation_proposed_action_code" }, "flowering": { "type": "boolean", @@ -621,7 +630,8 @@ "properties": { "specific_use_code": { "type": "string", - "title": "Specific Use" + "title": "Specific Use", + "x-code-enum": "specific_use_code" }, "proposed_action_code": { "type": "string", diff --git a/api-mobile/src/paths/code/observation/plant.ts b/api-mobile/src/paths/code/observation/plant.ts index c92342429..ebc2982e8 100644 --- a/api-mobile/src/paths/code/observation/plant.ts +++ b/api-mobile/src/paths/code/observation/plant.ts @@ -1,21 +1,7 @@ import { Operation } from 'express-openapi'; -import { PoolClient } from 'pg'; import { ALL_ROLES, CacheKeys } from '../../../constants/misc'; import { getDBConnection } from '../../../database/db'; -import { - getJurisdictionCodesSQL, - getObservationAspectCodesSQL, - getObservationGeometryCodesSQL, - getObservationProposedActionCodesSQL, - getObservationSlopeCodesSQL, - getObservationTypeCodesSQL, - getSoilTextureCodesSQL, - getSpeciesAgencyCodesSQL, - getSpeciesCodesSQL, - getSpeciesDensityCodesSQL, - getSpeciesDistributionCodesSQL, - getSpecificUseCodesSQL -} from '../../../queries/code-queries'; +import { getAllCodeSets } from '../../../utils/code-utils'; import { getLogger } from '../../../utils/logger'; import { cached } from '../../../utils/utils'; @@ -34,9 +20,7 @@ export const GET: Operation = [ }; } - const result = await cached(CacheKeys.ObservationCodePlant, 3600000, () => - getCodesForPlantObservations(connection) - )(); + const result = await cached(CacheKeys.ObservationCodePlant, 3600000, () => getAllCodeSets(connection))(); connection.release(); @@ -74,80 +58,3 @@ GET.apiDoc = { } } }; - -/** - * Fetch all code values for plant observations. - * - * @param {PoolClient} connection - * @returns {Promise} - */ -export const getCodesForPlantObservations = async function (connection: PoolClient): Promise { - if (!connection) { - return null; - } - - const result: { - message: string; - data: { - observation_aspect_code: object; - jurisdiction_code: object; - observation_geometry_code: object; - observation_type_code: object; - observation_proposed_action_code: object; - observation_slope_code: object; - soil_texture_code: object; - species_agency_code: object; - species_density_code: object; - species_distribution_code: object; - species: object; - specific_use_code: object; - }; - } = { - message: 'observation codes', - data: { - observation_aspect_code: [], - jurisdiction_code: [], - observation_geometry_code: [], - observation_type_code: [], - observation_proposed_action_code: [], - observation_slope_code: [], - soil_texture_code: [], - species_agency_code: [], - species_density_code: [], - species_distribution_code: [], - species: [], - specific_use_code: [] - } - }; - - // Fetch all observation codes - const observation_aspect_code = await connection.query(getObservationAspectCodesSQL().text); - const jurisdiction_code = await connection.query(getJurisdictionCodesSQL().text); - const observation_geometry_code = await connection.query(getObservationGeometryCodesSQL().text); - const observation_type_code = await connection.query(getObservationTypeCodesSQL().text); - const observation_proposed_action_code = await connection.query(getObservationProposedActionCodesSQL().text); - const observation_slope_code = await connection.query(getObservationSlopeCodesSQL().text); - const soil_texture_code = await connection.query(getSoilTextureCodesSQL().text); - const species_agency_code = await connection.query(getSpeciesAgencyCodesSQL().text); - const species_density_code = await connection.query(getSpeciesDensityCodesSQL().text); - const species_distribution_code = await connection.query(getSpeciesDistributionCodesSQL().text); - const species = await connection.query(getSpeciesCodesSQL().text); - const specific_use_code = await connection.query(getSpecificUseCodesSQL().text); - - // Add code responses to results object - result.data.observation_aspect_code = (observation_aspect_code && observation_aspect_code.rows) || []; - result.data.jurisdiction_code = (jurisdiction_code && jurisdiction_code.rows) || []; - result.data.observation_geometry_code = (observation_geometry_code && observation_geometry_code.rows) || []; - result.data.observation_type_code = (observation_type_code && observation_type_code.rows) || []; - result.data.observation_proposed_action_code = - (observation_proposed_action_code && observation_proposed_action_code.rows) || []; - result.data.observation_slope_code = (observation_slope_code && observation_slope_code.rows) || []; - result.data.soil_texture_code = (soil_texture_code && soil_texture_code.rows) || []; - result.data.species_agency_code = (species_agency_code && species_agency_code.rows) || []; - result.data.species_density_code = (species_density_code && species_density_code.rows) || []; - result.data.species_distribution_code = (species_distribution_code && species_distribution_code.rows) || []; - result.data.species = (species && species.rows) || []; - result.data.specific_use_code = (specific_use_code && specific_use_code.rows) || []; - - return result; -}; diff --git a/api-mobile/src/utils/api-doc-security-filter.ts b/api-mobile/src/utils/api-doc-security-filter.ts new file mode 100644 index 000000000..d65ee2cba --- /dev/null +++ b/api-mobile/src/utils/api-doc-security-filter.ts @@ -0,0 +1,82 @@ +import jsonpatch from 'fast-json-patch'; +import traverse from 'json-schema-traverse'; +import { CacheKeys } from '../constants/misc'; +import { getDBConnection } from '../database/db'; +import { getAllCodeSets, IAllCodeSets } from './code-utils'; +import { cached } from './utils'; + +/** + * Apply updates/filters to req.apiDoc. + * + * @export + * @param {*} req + * @return {*} req + */ +export async function applyApiDocSecurityFilters(req: any) { + const connection = await getDBConnection(); + + const allCodeSets: IAllCodeSets = await cached(CacheKeys.AllCodeSets, 3600000, () => getAllCodeSets(connection))(); + + const apiDoc = req['apiDoc']; + + let initialPass = true; + + traverse(apiDoc, { + allKeys: true, + cb: (schema, jsonPtr) => { + if (initialPass) { + // first pass is always the entire (root) schema, which we can skip (for a minor efficiency improvement) + initialPass = false; + return; + } + + // apply code enum filters + if (Object.keys(schema).includes('x-code-enum')) { + const updatedSchema = applyCodeEnumFilter(schema, allCodeSets); + + // replace the old schema with the filtered schema + jsonpatch.applyPatch(apiDoc, [{ op: 'replace', path: jsonPtr, value: updatedSchema }]); + } + } + }); + + // re-assign updated apiDoc on req + req['apiDoc'] = apiDoc; + + return req; +} + +/** + * Updates an object to include code enum json spec. + * + * @export + * @param {object} obj + * @param {IAllCodeSets} allCodeSets + * @return {*} {object} + */ +export function applyCodeEnumFilter(obj: object, allCodeSets: IAllCodeSets): object { + const codeSetName = obj['x-code-enum']; + + if (!codeSetName) { + return obj; + } + + const codes: any[] = allCodeSets[codeSetName]; + + if (!codes || !codes.length) { + return obj; + } + + obj = { + ...obj, + anyOf: codes.map(code => { + return { + type: 'string', + enum: [code[codeSetName]], // assuming the code id column has the same name as the table + title: code.description // assuming human readable name is in the description column + }; + }) + }; + + return obj; +} diff --git a/api-mobile/src/utils/code-utils.ts b/api-mobile/src/utils/code-utils.ts new file mode 100644 index 000000000..bee890c93 --- /dev/null +++ b/api-mobile/src/utils/code-utils.ts @@ -0,0 +1,88 @@ +import { PoolClient } from 'pg'; +import { + getJurisdictionCodesSQL, + getObservationAspectCodesSQL, + getObservationGeometryCodesSQL, + getObservationProposedActionCodesSQL, + getObservationSlopeCodesSQL, + getObservationTypeCodesSQL, + getSoilTextureCodesSQL, + getSpeciesAgencyCodesSQL, + getSpeciesCodesSQL, + getSpeciesDensityCodesSQL, + getSpeciesDistributionCodesSQL, + getSpecificUseCodesSQL +} from '../queries/code-queries'; + +export interface IAllCodeSets { + observation_aspect_code: object; + jurisdiction_code: object; + observation_geometry_code: object; + observation_type_code: object; + observation_proposed_action_code: object; + observation_slope_code: object; + soil_texture_code: object; + species_agency_code: object; + species_density_code: object; + species_distribution_code: object; + species: object; + specific_use_code: object; +} + +/** + * Function that fetches all code sets. + * + * @param {PoolClient} connection + * @returns {IAllCodeSets} an object containing all code sets + */ +export async function getAllCodeSets(connection: PoolClient): Promise { + if (!connection) { + return null; + } + + const result: IAllCodeSets = { + observation_aspect_code: [], + jurisdiction_code: [], + observation_geometry_code: [], + observation_type_code: [], + observation_proposed_action_code: [], + observation_slope_code: [], + soil_texture_code: [], + species_agency_code: [], + species_density_code: [], + species_distribution_code: [], + species: [], + specific_use_code: [] + }; + + // Fetch all observation codes + const observation_aspect_code = await connection.query(getObservationAspectCodesSQL().text); + const jurisdiction_code = await connection.query(getJurisdictionCodesSQL().text); + const observation_geometry_code = await connection.query(getObservationGeometryCodesSQL().text); + const observation_type_code = await connection.query(getObservationTypeCodesSQL().text); + const observation_proposed_action_code = await connection.query(getObservationProposedActionCodesSQL().text); + const observation_slope_code = await connection.query(getObservationSlopeCodesSQL().text); + const soil_texture_code = await connection.query(getSoilTextureCodesSQL().text); + const species_agency_code = await connection.query(getSpeciesAgencyCodesSQL().text); + const species_density_code = await connection.query(getSpeciesDensityCodesSQL().text); + const species_distribution_code = await connection.query(getSpeciesDistributionCodesSQL().text); + const species = await connection.query(getSpeciesCodesSQL().text); + const specific_use_code = await connection.query(getSpecificUseCodesSQL().text); + + // Add code responses to results object + result.observation_aspect_code = (observation_aspect_code && observation_aspect_code.rows) || []; + result.jurisdiction_code = (jurisdiction_code && jurisdiction_code.rows) || []; + result.observation_geometry_code = (observation_geometry_code && observation_geometry_code.rows) || []; + result.observation_type_code = (observation_type_code && observation_type_code.rows) || []; + result.observation_proposed_action_code = + (observation_proposed_action_code && observation_proposed_action_code.rows) || []; + result.observation_slope_code = (observation_slope_code && observation_slope_code.rows) || []; + result.soil_texture_code = (soil_texture_code && soil_texture_code.rows) || []; + result.species_agency_code = (species_agency_code && species_agency_code.rows) || []; + result.species_density_code = (species_density_code && species_density_code.rows) || []; + result.species_distribution_code = (species_distribution_code && species_distribution_code.rows) || []; + result.species = (species && species.rows) || []; + result.specific_use_code = (specific_use_code && specific_use_code.rows) || []; + + return result; +} From ed7395c8eb5073349dae41dbdc6e0a6ec825e030 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Wed, 30 Sep 2020 16:45:29 -0700 Subject: [PATCH 079/194] 30: adhoc populate api spec enums --- api-mobile/src/constants/misc.ts | 34 ++++++++ api-mobile/src/openapi/api-doc.json | 80 ++++++++++++++----- .../src/utils/api-doc-security-filter.ts | 38 ++++++--- 3 files changed, 120 insertions(+), 32 deletions(-) diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts index f4b9c60a4..b5e119d58 100644 --- a/api-mobile/src/constants/misc.ts +++ b/api-mobile/src/constants/misc.ts @@ -62,3 +62,37 @@ export enum ActivitySubType { export enum S3ACLRole { AUTH_READ = 'authenticated-read' } + +/** + * Root custom api-doc.json keys for any `x-...` fields. + * + * @export + * @enum {number} + */ +export enum XApiDocKeys { + /** + * specifies a field whose value is an object containing `x-enum-code...` fields (see `XEnumCode`) + */ + XEnumCode = 'x-enum-code' +} + +/** + * Nested keys in a `x-enum-code` field (see `XApiDocKeys.XEnumCode`) + * + * @export + * @enum {number} + */ +export enum XEnumCode { + /** + * the name of the table/collection for the code set + */ + XEnumCodeSetName = 'x-enum-code-set-name', + /** + * the name of the column/field that holds the unique code value + */ + XEnumCodeValue = 'x-enum-code-value', + /** + * the name of the column/fild that holds the human readable name for the code value + */ + XEnumCodeName = 'x-enum-code-name' +} diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index bfeadff58..8e1060c26 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -385,14 +385,22 @@ ], "properties": { "species_agency_code": { - "type": "string", + "type": "number", "title": "Agency", - "x-code-enum": "species_agency_code" + "x-enum-code": { + "x-enum-code-set-name": "species_agency_code", + "x-enum-code-value": "species_agency_code_id", + "x-enum-code-name": "description" + } }, "jurisdiction_code": { - "type": "string", + "type": "number", "title": "Jurisdiction", - "x-code-enum": "jurisdiction_code" + "x-enum-code": { + "x-enum-code-set-name": "jurisdiction_code", + "x-enum-code-value": "jurisdiction_code_id", + "x-enum-code-name": "description" + } }, "activity_status": { "type": "string", @@ -522,39 +530,67 @@ ], "properties": { "species_density_code": { - "type": "string", + "type": "number", "title": "Density", - "x-code-enum": "species_density_code" + "x-enum-code": { + "x-enum-code-set-name": "species_density_code", + "x-enum-code-value": "species_density_code_id", + "x-enum-code-name": "description" + } }, "species_distribution_code": { - "type": "string", + "type": "number", "title": "Distribution", - "x-code-enum": "species_distribution_code" + "x-enum-code": { + "x-enum-code-set-name": "species_distribution_code", + "x-enum-code-value": "species_distribution_code_id", + "x-enum-code-name": "description" + } }, "soil_texture_code": { - "type": "string", + "type": "number", "title": "Soil Texture", - "x-code-enum": "soil_texture_code" + "x-enum-code": { + "x-enum-code-set-name": "soil_texture_code", + "x-enum-code-value": "soil_texture_code_id", + "x-enum-code-name": "description" + } }, "specific_use_code": { - "type": "string", + "type": "number", "title": "Specific Use", - "x-code-enum": "specific_use_code" + "x-enum-code": { + "x-enum-code-set-name": "specific_use_code", + "x-enum-code-value": "specific_use_code_id", + "x-enum-code-name": "description" + } }, "slope_code": { - "type": "string", + "type": "number", "title": "Slope", - "x-code-enum": "observation_slope_code", + "x-enum-code": { + "x-enum-code-set-name": "observation_slope_code", + "x-enum-code-value": "observation_slope_code_id", + "x-enum-code-name": "description" + } }, "aspect_code": { - "type": "string", + "type": "number", "title": "Aspect", - "x-code-enum": "observation_aspect_code" + "x-enum-code": { + "x-enum-code-set-name": "observation_aspect_code", + "x-enum-code-value": "observation_aspect_code_id", + "x-enum-code-name": "description" + } }, "proposed_action_code": { - "type": "string", + "type": "number", "title": "Proposed Action", - "x-code-enum": "observation_proposed_action_code" + "x-enum-code": { + "x-enum-code-set-name": "observation_proposed_action_code", + "x-enum-code-value": "observation_proposed_action_code_id", + "x-enum-code-name": "description" + } }, "flowering": { "type": "boolean", @@ -629,9 +665,13 @@ ], "properties": { "specific_use_code": { - "type": "string", + "type": "number", "title": "Specific Use", - "x-code-enum": "specific_use_code" + "x-enum-code": { + "x-enum-code-set-name": "specific_use_code", + "x-enum-code-value": "specific_use_code_id", + "x-enum-code-name": "description" + } }, "proposed_action_code": { "type": "string", diff --git a/api-mobile/src/utils/api-doc-security-filter.ts b/api-mobile/src/utils/api-doc-security-filter.ts index d65ee2cba..54d429b28 100644 --- a/api-mobile/src/utils/api-doc-security-filter.ts +++ b/api-mobile/src/utils/api-doc-security-filter.ts @@ -1,6 +1,6 @@ import jsonpatch from 'fast-json-patch'; import traverse from 'json-schema-traverse'; -import { CacheKeys } from '../constants/misc'; +import { CacheKeys, XApiDocKeys, XEnumCode } from '../constants/misc'; import { getDBConnection } from '../database/db'; import { getAllCodeSets, IAllCodeSets } from './code-utils'; import { cached } from './utils'; @@ -15,12 +15,16 @@ import { cached } from './utils'; export async function applyApiDocSecurityFilters(req: any) { const connection = await getDBConnection(); + // fetch all code sets const allCodeSets: IAllCodeSets = await cached(CacheKeys.AllCodeSets, 3600000, () => getAllCodeSets(connection))(); + // the apiDoc that updates will be applied to const apiDoc = req['apiDoc']; let initialPass = true; + // traverses the apiDoc object, calling the `cb` function for each level of the schema, the first being the entire + // (root) schema. traverse(apiDoc, { allKeys: true, cb: (schema, jsonPtr) => { @@ -30,17 +34,18 @@ export async function applyApiDocSecurityFilters(req: any) { return; } - // apply code enum filters - if (Object.keys(schema).includes('x-code-enum')) { + // apply code enum filters, if a matching `x-...` field exists + if (Object.keys(schema).includes(XApiDocKeys.XEnumCode)) { + // apply code enum filtering to this piece of schema const updatedSchema = applyCodeEnumFilter(schema, allCodeSets); - // replace the old schema with the filtered schema + // update apiDoc, replacing the old schema part with the updated schema part jsonpatch.applyPatch(apiDoc, [{ op: 'replace', path: jsonPtr, value: updatedSchema }]); } } }); - // re-assign updated apiDoc on req + // re-assign the updated apiDoc to the req req['apiDoc'] = apiDoc; return req; @@ -50,30 +55,39 @@ export async function applyApiDocSecurityFilters(req: any) { * Updates an object to include code enum json spec. * * @export - * @param {object} obj - * @param {IAllCodeSets} allCodeSets - * @return {*} {object} + * @param {object} obj the schema object to apply updates to + * @param {IAllCodeSets} allCodeSets an object containing all of the code sets and their values + * @return {*} {object} the updated object */ export function applyCodeEnumFilter(obj: object, allCodeSets: IAllCodeSets): object { - const codeSetName = obj['x-code-enum']; + // get the XEnumCode object + const xEnumCodeObj = obj[XApiDocKeys.XEnumCode]; + + // get the name of the code set + const codeSetName = xEnumCodeObj[XEnumCode.XEnumCodeSetName]; if (!codeSetName) { return obj; } + // get the list of codes for this code set name const codes: any[] = allCodeSets[codeSetName]; if (!codes || !codes.length) { return obj; } + // update the object, adding an `anyOf` field whose value is an array of enum objects obj = { ...obj, anyOf: codes.map(code => { return { - type: 'string', - enum: [code[codeSetName]], // assuming the code id column has the same name as the table - title: code.description // assuming human readable name is in the description column + // the `type` specified by the field that contains the enum (the enum `type` must match the field `type`) + type: obj['type'], + // the column that contains the unique value for this code + enum: [code[xEnumCodeObj[XEnumCode.XEnumCodeValue]]], + // the column that contains the human readable name of this code + title: code[xEnumCodeObj[XEnumCode.XEnumCodeName]] }; }) }; From c0bf9ed5e9e9a6bb1c44bb97ec64b311aa6f6d6c Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Mon, 5 Oct 2020 16:19:17 -0700 Subject: [PATCH 080/194] 30: Add more dropdown support to api-doc.json - sort api dropdowns --- api-mobile/src/database/db.ts | 4 +- api-mobile/src/openapi/api-doc.json | 193 +++++++++--------- api-mobile/src/paths/activity.ts | 52 ++--- api-mobile/src/paths/activity/{activityId}.ts | 28 +-- .../src/utils/api-doc-security-filter.ts | 111 ++++++---- 5 files changed, 214 insertions(+), 174 deletions(-) diff --git a/api-mobile/src/database/db.ts b/api-mobile/src/database/db.ts index d6edf032a..075abe195 100644 --- a/api-mobile/src/database/db.ts +++ b/api-mobile/src/database/db.ts @@ -19,8 +19,8 @@ const poolConfig: PoolConfig = { port: DB_PORT, host: DB_HOST, max: 20, - connectionTimeoutMillis: 10000, - idleTimeoutMillis: 45000 + connectionTimeoutMillis: 0, // default + idleTimeoutMillis: 10000 // default }; defaultLog.debug({ label: 'create db pool', message: 'pool config', poolConfig }); diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index 8e1060c26..e066872b6 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -385,20 +385,20 @@ ], "properties": { "species_agency_code": { - "type": "number", + "type": "string", "title": "Agency", "x-enum-code": { "x-enum-code-set-name": "species_agency_code", - "x-enum-code-value": "species_agency_code_id", + "x-enum-code-value": "species_agency_code", "x-enum-code-name": "description" } }, "jurisdiction_code": { - "type": "number", + "type": "string", "title": "Jurisdiction", "x-enum-code": { "x-enum-code-set-name": "jurisdiction_code", - "x-enum-code-value": "jurisdiction_code_id", + "x-enum-code-value": "jurisdiction_code", "x-enum-code-name": "description" } }, @@ -485,7 +485,7 @@ "maximum": 50 }, "reported_area": { - "type": "integer", + "type": "number", "title": "Area", "minimum": 1, "maximum": 100 @@ -530,65 +530,65 @@ ], "properties": { "species_density_code": { - "type": "number", + "type": "string", "title": "Density", "x-enum-code": { "x-enum-code-set-name": "species_density_code", - "x-enum-code-value": "species_density_code_id", + "x-enum-code-value": "species_density_code", "x-enum-code-name": "description" } }, "species_distribution_code": { - "type": "number", + "type": "string", "title": "Distribution", "x-enum-code": { "x-enum-code-set-name": "species_distribution_code", - "x-enum-code-value": "species_distribution_code_id", + "x-enum-code-value": "species_distribution_code", "x-enum-code-name": "description" } }, "soil_texture_code": { - "type": "number", + "type": "string", "title": "Soil Texture", "x-enum-code": { "x-enum-code-set-name": "soil_texture_code", - "x-enum-code-value": "soil_texture_code_id", + "x-enum-code-value": "soil_texture_code", "x-enum-code-name": "description" } }, "specific_use_code": { - "type": "number", + "type": "string", "title": "Specific Use", "x-enum-code": { "x-enum-code-set-name": "specific_use_code", - "x-enum-code-value": "specific_use_code_id", + "x-enum-code-value": "specific_use_code", "x-enum-code-name": "description" } }, "slope_code": { - "type": "number", + "type": "string", "title": "Slope", "x-enum-code": { "x-enum-code-set-name": "observation_slope_code", - "x-enum-code-value": "observation_slope_code_id", + "x-enum-code-value": "observation_slope_code", "x-enum-code-name": "description" } }, "aspect_code": { - "type": "number", + "type": "string", "title": "Aspect", "x-enum-code": { "x-enum-code-set-name": "observation_aspect_code", - "x-enum-code-value": "observation_aspect_code_id", + "x-enum-code-value": "observation_aspect_code", "x-enum-code-name": "description" } }, "proposed_action_code": { - "type": "number", + "type": "string", "title": "Proposed Action", "x-enum-code": { "x-enum-code-set-name": "observation_proposed_action_code", - "x-enum-code-value": "observation_proposed_action_code_id", + "x-enum-code-value": "observation_proposed_action_code", "x-enum-code-name": "description" } }, @@ -665,11 +665,11 @@ ], "properties": { "specific_use_code": { - "type": "number", + "type": "string", "title": "Specific Use", "x-enum-code": { "x-enum-code-set-name": "specific_use_code", - "x-enum-code-value": "specific_use_code_id", + "x-enum-code-value": "specific_use_code", "x-enum-code-name": "description" } }, @@ -754,34 +754,31 @@ "type": "object", "required": [ "number_of_individuals_observed", - "life_stage", - "behaviour" + "life_stage_code", + "behaviour_code" ], "properties": { "number_of_individuals_observed": { "type": "number", "title": "Number of individuals" }, - "life_stage": { + "life_stage_code": { "type": "string", "title": "Life Stage", - "enum": [ - "unknown", - "egg", - "neonate", - "juvenile", - "adult" - ] + "x-enum-code": { + "x-enum-code-set-name": "specieslife_stage_code_agency_code", + "x-enum-code-value": "life_stage_code", + "x-enum-code-name": "description" + } }, - "behaviour": { + "behaviour_code": { "type": "string", "title": "Behaviour", - "enum": [ - "unknown", - "moving", - "resting", - "deceased" - ] + "x-enum-code": { + "x-enum-code-set-name": "behaviour_code", + "x-enum-code-value": "behaviour_code", + "x-enum-code-name": "description" + } } } }, @@ -832,7 +829,12 @@ }, "pesticide_employer_code": { "type": "string", - "title": "Pesticide employer code" + "title": "Pesticide employer code", + "x-enum-code": { + "x-enum-code-set-name": "pesticide_employer_code", + "x-enum-code-value": "pesticide_employer_code", + "x-enum-code-name": "business_name" + } }, "project_management_plan_PMP": { "type": "string", @@ -847,31 +849,26 @@ "title": "Chemical treatment method" }, "temperature": { - "type": "integer", + "type": "number", "title": "Temperature", "minimum": 10, "maximum": 30 }, "wind_speed": { - "type": "integer", - "title": " Wind speed" + "type": "number", + "title": "Wind speed" }, - "wind_direction": { + "wind_direction_code": { "type": "string", "title": "Wind direction", - "enum": [ - "N", - "NE", - "E", - "SE", - "S", - "SW", - "W", - "NW" - ] + "x-enum-code": { + "x-enum-code-set-name": "wind_direction_code", + "x-enum-code-value": "wind_direction_code", + "x-enum-code-name": "description" + } }, "humidity": { - "type": "integer", + "type": "number", "title": "Humidity", "enum": [ 0, @@ -919,8 +916,8 @@ "applicator1_first_name", "applicator1_last_name", "treatment_contractor", - "mechanical_method", - "mechanical_disposal_method", + "mechanical_method_code", + "mechanical_disposal_method_code", "mechanical_root_removal_code", "mechanical_soil_disturbance_code", "signage_on_site" @@ -946,21 +943,41 @@ "type": "string", "title": "Treatment contractor" }, - "mechanical_method": { + "mechanical_method_code": { "type": "string", - "title": "Mechanical method" + "title": "Mechanical method", + "x-enum-code": { + "x-enum-code-set-name": "mechanical_method_code", + "x-enum-code-value": "mechanical_method_code", + "x-enum-code-name": "description" + } }, - "mechanical_disposal_method": { + "mechanical_disposal_method_code": { "type": "string", - "title": "Mechanical disposal method" + "title": "Mechanical disposal method", + "x-enum-code": { + "x-enum-code-set-name": "mechanical_disposal_method_code", + "x-enum-code-value": "mechanical_disposal_method_code", + "x-enum-code-name": "description" + } }, "mechanical_root_removal_code": { "type": "string", - "title": "Mechanical root removal code" + "title": "Mechanical root removal code", + "x-enum-code": { + "x-enum-code-set-name": "mechanical_root_removal_code", + "x-enum-code-value": "mechanical_root_removal_code", + "x-enum-code-name": "description" + } }, "mechanical_soil_disturbance_code": { "type": "string", - "title": "Mechanical soil disturbance code" + "title": "Mechanical soil disturbance code", + "x-enum-code": { + "x-enum-code-set-name": "mechanical_soil_disturbance_code", + "x-enum-code-value": "mechanical_soil_disturbance_code", + "x-enum-code-name": "description" + } }, "signage_on_site": { "type": "boolean", @@ -1009,7 +1026,7 @@ "title": "Classified area" }, "release_quantity": { - "type": "integer", + "type": "number", "title": "Release quantity" }, "agent_source": { @@ -1066,7 +1083,7 @@ "title": "Treatment contractor" }, "duration_of_count": { - "type": "integer", + "type": "number", "title": "Duration of count" }, "biological_agent": { @@ -1074,11 +1091,11 @@ "title": "Biological agent" }, "plant_count": { - "type": "integer", + "type": "number", "title": "Plant count" }, "biological_agent_count": { - "type": "integer", + "type": "number", "title": "Biological agent count" }, "biological_agent_presence": { @@ -1141,7 +1158,7 @@ ], "properties": { "activity_id": { - "type": "integer", + "type": "number", "title": "Treatment id" }, "observer_first_name": { @@ -1153,36 +1170,18 @@ "title": "Last Name" }, "efficacy_rating_code": { - "type": "integer", + "type": "string", "title": "Efficacy rating", - "enum": [ - 0, - 5, - 10, - 15, - 20, - 25, - 30, - 35, - 40, - 45, - 50, - 55, - 60, - 65, - 70, - 75, - 80, - 85, - 90, - 95, - 100 - ] + "x-enum-code": { + "x-enum-code-set-name": "efficacy_code", + "x-enum-code-value": "efficacy_code", + "x-enum-code-name": "description" + } } } }, "Monitoring_ChemicalTerrestrialAquaticPlant": { - "title": " Monitoring a chemical treament for terrestrial and aquatic plants", + "title": "Monitoring a chemical treament for terrestrial and aquatic plants", "description": "Chemical monitoring for terrestrial plants", "type": "object", "required": [ @@ -1230,15 +1229,15 @@ ], "properties": { "plant_count": { - "type": "integer", + "type": "number", "title": "Plant count" }, "agent_count": { - "type": "integer", + "type": "number", "title": "Agent count" }, "count_duration": { - "type": "integer", + "type": "number", "title": "Count duration" }, "agent_destroyed_ind": { @@ -1390,7 +1389,7 @@ } }, "Geometry": { - "title": " Geometry", + "title": "Geometry", "type": "object", "description": "GeoJSon geometry", "required": [ @@ -1404,7 +1403,7 @@ "readOnly": true }, "well_tag": { - "type": "integer", + "type": "number", "title": "Well tag", "readOnly": true }, diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 302608104..d15e660b5 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -252,22 +252,24 @@ function createActivity(): RequestHandler { }; } - const sqlStatement: SQLStatement = postActivitySQL(sanitizedActivityData); + try { + const sqlStatement: SQLStatement = postActivitySQL(sanitizedActivityData); - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } - connection.release(); + const response = await connection.query(sqlStatement.text, sqlStatement.values); - const result = (response && response.rows && response.rows[0]) || null; + const result = (response && response.rows && response.rows[0]) || null; - return res.status(200).json(result); + return res.status(200).json(result); + } finally { + connection.release(); + } }; } @@ -291,21 +293,23 @@ function getAllActivities(): RequestHandler { }; } - const sqlStatement: SQLStatement = getActivitiesSQL(sanitizedSearchCriteria); + try { + const sqlStatement: SQLStatement = getActivitiesSQL(sanitizedSearchCriteria); - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } - connection.release(); + const response = await connection.query(sqlStatement.text, sqlStatement.values); - const result = (response && response.rows) || null; + const result = (response && response.rows) || null; - return res.status(200).json(result); + return res.status(200).json(result); + } finally { + connection.release(); + } }; } diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index f99e42c9b..6a6d873d3 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -149,22 +149,26 @@ function getActivity(): RequestHandler { }; } - const sqlStatement: SQLStatement = getActivitySQL(activityId); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } + try { + const sqlStatement: SQLStatement = getActivitySQL(activityId); + + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } - const response = await connection.query(sqlStatement.text, sqlStatement.values); + const response = await connection.query(sqlStatement.text, sqlStatement.values); - connection.release(); + connection.release(); - const result = (response && response.rows && response.rows[0]) || null; + const result = (response && response.rows && response.rows[0]) || null; - req['activity'] = result; + req['activity'] = result; + } finally { + connection.release(); + } return next(); }; diff --git a/api-mobile/src/utils/api-doc-security-filter.ts b/api-mobile/src/utils/api-doc-security-filter.ts index 54d429b28..97e1c3dcf 100644 --- a/api-mobile/src/utils/api-doc-security-filter.ts +++ b/api-mobile/src/utils/api-doc-security-filter.ts @@ -15,38 +15,49 @@ import { cached } from './utils'; export async function applyApiDocSecurityFilters(req: any) { const connection = await getDBConnection(); - // fetch all code sets - const allCodeSets: IAllCodeSets = await cached(CacheKeys.AllCodeSets, 3600000, () => getAllCodeSets(connection))(); - - // the apiDoc that updates will be applied to - const apiDoc = req['apiDoc']; - - let initialPass = true; - - // traverses the apiDoc object, calling the `cb` function for each level of the schema, the first being the entire - // (root) schema. - traverse(apiDoc, { - allKeys: true, - cb: (schema, jsonPtr) => { - if (initialPass) { - // first pass is always the entire (root) schema, which we can skip (for a minor efficiency improvement) - initialPass = false; - return; - } - - // apply code enum filters, if a matching `x-...` field exists - if (Object.keys(schema).includes(XApiDocKeys.XEnumCode)) { - // apply code enum filtering to this piece of schema - const updatedSchema = applyCodeEnumFilter(schema, allCodeSets); + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } - // update apiDoc, replacing the old schema part with the updated schema part - jsonpatch.applyPatch(apiDoc, [{ op: 'replace', path: jsonPtr, value: updatedSchema }]); + try { + // fetch all code sets + const allCodeSets: IAllCodeSets = await cached(CacheKeys.AllCodeSets, 3600000, () => getAllCodeSets(connection))(); + + // the apiDoc that updates will be applied to + const apiDoc = req['apiDoc']; + + let initialPass = true; + + // traverses the apiDoc object, calling the `cb` function for each level of the schema, the first being the entire + // (root) schema. + traverse(apiDoc, { + allKeys: true, + cb: (schema, jsonPtr) => { + if (initialPass) { + // first pass is always the entire (root) schema, which we can skip (for a minor efficiency improvement) + initialPass = false; + return; + } + + // apply code enum filters, if a matching `x-...` field exists + if (Object.keys(schema).includes(XApiDocKeys.XEnumCode)) { + // apply code enum filtering to this piece of schema + const updatedSchema = applyCodeEnumFilter(schema, allCodeSets); + + // update apiDoc, replacing the old schema part with the updated schema part + jsonpatch.applyPatch(apiDoc, [{ op: 'replace', path: jsonPtr, value: updatedSchema }]); + } } - } - }); + }); - // re-assign the updated apiDoc to the req - req['apiDoc'] = apiDoc; + // re-assign the updated apiDoc to the req + req['apiDoc'] = apiDoc; + } finally { + connection.release(); + } return req; } @@ -80,17 +91,39 @@ export function applyCodeEnumFilter(obj: object, allCodeSets: IAllCodeSets): obj // update the object, adding an `anyOf` field whose value is an array of enum objects obj = { ...obj, - anyOf: codes.map(code => { - return { - // the `type` specified by the field that contains the enum (the enum `type` must match the field `type`) - type: obj['type'], - // the column that contains the unique value for this code - enum: [code[xEnumCodeObj[XEnumCode.XEnumCodeValue]]], - // the column that contains the human readable name of this code - title: code[xEnumCodeObj[XEnumCode.XEnumCodeName]] - }; - }) + anyOf: codes + .map(code => { + return { + // the `type` specified by the field that contains the enum (the enum `type` must match the field `type`) + type: obj['type'], + // the column that contains the unique value for this code + enum: [code[xEnumCodeObj[XEnumCode.XEnumCodeValue]]], + // the column that contains the human readable name of this code + title: code[xEnumCodeObj[XEnumCode.XEnumCodeName]] + }; + }) + .sort(getAscObjectSorter('title')) }; return obj; } + +/** + * Returns a comparator function that sorts objects in ascending order based on a specified `field`. + * + * @param {string} field the object field to sort based on + * @return {number} + */ +function getAscObjectSorter(field: string) { + return (a: object, b: object) => { + if (a[field] < b[field]) { + return -1; + } + + if (a[field] > b[field]) { + return 1; + } + + return 0; + }; +} From 6f0f5149eb51c3f1ca495870e1285c754398c90f Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Mon, 5 Oct 2020 17:56:54 -0700 Subject: [PATCH 081/194] Remove duplicate connection.release() call. --- api-mobile/src/paths/activity/{activityId}.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 6a6d873d3..7e257e2ee 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -161,8 +161,6 @@ function getActivity(): RequestHandler { const response = await connection.query(sqlStatement.text, sqlStatement.values); - connection.release(); - const result = (response && response.rows && response.rows[0]) || null; req['activity'] = result; From f0997e98cd17ef5a380cb7dda084f30c2bad62d7 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 6 Oct 2020 14:31:34 -0700 Subject: [PATCH 082/194] Trivial fixes --- api-mobile/src/openapi/api-doc.json | 4 ++-- api-mobile/src/paths/activity/{activityId}.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index e066872b6..0509211ce 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -534,7 +534,7 @@ "title": "Density", "x-enum-code": { "x-enum-code-set-name": "species_density_code", - "x-enum-code-value": "species_density_code", + "x-enum-code-value": "density_code", "x-enum-code-name": "description" } }, @@ -543,7 +543,7 @@ "title": "Distribution", "x-enum-code": { "x-enum-code-set-name": "species_distribution_code", - "x-enum-code-value": "species_distribution_code", + "x-enum-code-value": "distribution_code", "x-enum-code-name": "description" } }, diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 7e257e2ee..1ed8c2312 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -176,7 +176,7 @@ function getMedia(): RequestHandler { return async (req, res, next) => { const activity = req['activity']; - if (!activity || !req['activity'].media_keys || !req['activity'].media_keys.length) { + if (!activity || !activity.media_keys || !activity.media_keys.length) { // No media keys found, skipping get media step return next(); } From 7156760b14f224f507496450ffaa2aa30bd2fa84 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 6 Oct 2020 14:38:09 -0700 Subject: [PATCH 083/194] Minor readme update --- api-mobile/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api-mobile/README.md b/api-mobile/README.md index f21e83376..715e245c5 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -62,9 +62,9 @@ npm start # API Specification -The API is defined in `api-doc.yaml`. +The base API is defined in `api-doc.json`. -If this project is running locally, you can view the api docs at: `http://localhost:3002/api/docs/` or `http://localhost:7080/api/docs/` if running in Docker. +If this project is running locally, you can view the api docs at: `http://localhost:3002/api/api-docs/` or `http://localhost:7080/api/api-docs/` if running in Docker. This project uses npm package `express-openapi` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `api-doc.yaml` and the `./src/path/` content. From 724b03f68bf86035d02e84648c199ead016594d3 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 6 Oct 2020 15:21:26 -0700 Subject: [PATCH 084/194] Fix distribution dropdown --- api-mobile/src/openapi/api-doc.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index 0509211ce..7e2a2452d 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -539,11 +539,11 @@ } }, "species_distribution_code": { - "type": "string", + "type": "number", "title": "Distribution", "x-enum-code": { "x-enum-code-set-name": "species_distribution_code", - "x-enum-code-value": "distribution_code", + "x-enum-code-value": "species_distribution_code_id", "x-enum-code-name": "description" } }, From 21e685244b56cb69f03a54766f24d51b55304b80 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Fri, 9 Oct 2020 15:29:15 -0700 Subject: [PATCH 085/194] 47: Update the Geometry schema - Remove unused swagger dependencies --- api-mobile/app.ts | 4 - api-mobile/package.json | 4 - api-mobile/src/openapi/README.md | 11 + api-mobile/src/openapi/api-doc.json | 80 --- .../src/openapi/geojson-feature-doc.json | 493 ++++++++++++++++++ api-mobile/src/paths/activity.ts | 11 +- 6 files changed, 511 insertions(+), 92 deletions(-) create mode 100644 api-mobile/src/openapi/README.md create mode 100644 api-mobile/src/openapi/geojson-feature-doc.json diff --git a/api-mobile/app.ts b/api-mobile/app.ts index 06836c446..86dd55cfe 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -3,7 +3,6 @@ import bodyParser from 'body-parser'; import express from 'express'; import { initialize } from 'express-openapi'; -import swaggerUi from 'swagger-ui-express'; import { authenticate } from './src/utils/auth-utils'; import { getLogger } from './src/utils/logger'; import { applyApiDocSecurityFilters } from './src/utils/api-doc-security-filter'; @@ -66,9 +65,6 @@ const openAPIFramework = initialize({ } }); -// Serve pretty api docs -app.use('/api/docs/', swaggerUi.serve, swaggerUi.setup(openAPIFramework.apiDoc)); - // Start api try { app.listen(PORT, () => { diff --git a/api-mobile/package.json b/api-mobile/package.json index 040dfb3c1..d3dd32283 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -44,8 +44,6 @@ "qs": "~6.9.4", "sql-template-strings": "~2.2.2", "swagger-object-validator": "^1.2.2", - "swagger-tools": "~0.10.4", - "swagger-ui-express": "~4.1.4", "typescript": "~3.9.7", "uuid": "~8.3.0", "validator": "~13.1.1", @@ -62,8 +60,6 @@ "@types/memory-cache": "~0.2.1", "@types/mocha": "~8.0.1", "@types/pg": "~7.14.4", - "@types/swagger-tools": "~0.10.6", - "@types/swagger-ui-express": "~4.1.2", "@types/uuid": "~8.3.0", "@types/yamljs": "~0.2.31", "@typescript-eslint/eslint-plugin": "~3.7.1", diff --git a/api-mobile/src/openapi/README.md b/api-mobile/src/openapi/README.md new file mode 100644 index 000000000..0b9923635 --- /dev/null +++ b/api-mobile/src/openapi/README.md @@ -0,0 +1,11 @@ +# JSON-Schema + +https://json-schema.org/ + +## geojson-feature-doc.json + +Spec copied from: + +- https://github.com/geojson/schema) + +_Note: It was very slightly modified to remove the top level `$schema` and `$id` fields, which are only valid at the root level of the api spec._ diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index 7e2a2452d..b8e96387d 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -1387,86 +1387,6 @@ "format": "float" } } - }, - "Geometry": { - "title": "Geometry", - "type": "object", - "description": "GeoJSon geometry", - "required": [ - "subtype" - ], - "properties": { - "well_proximity": { - "type": "number", - "format": "float", - "title": "Well proximity", - "readOnly": true - }, - "well_tag": { - "type": "number", - "title": "Well tag", - "readOnly": true - }, - "subType": { - "title": "Geometry subtype", - "oneOf": [ - { - "$ref": "#/components/schemas/Point" - }, - { - "$ref": "#/components/schemas/LineString" - }, - { - "$ref": "#/components/schemas/Polygon" - } - ] - } - } - }, - "Point": { - "title": "Point with radius", - "type": "object", - "description": "Point geometry", - "properties": { - "radius": { - "type": "number", - "format": "float", - "title": "Radius", - "writeOnly": true - }, - "coordinates": { - "type": "array", - "items": {} - } - } - }, - "LineString": { - "title": "Line with offset (box)", - "type": "object", - "description": "LineString Geometry", - "properties": { - "offset": { - "type": "number", - "format": "float", - "title": "Offset", - "writeOnly": true - }, - "coordinates": { - "type": "array", - "items": {} - } - } - }, - "Polygon": { - "title": "Polygon", - "type": "object", - "description": "Polygon Geometry", - "properties": { - "coordinates": { - "type": "array", - "items": {} - } - } } } } diff --git a/api-mobile/src/openapi/geojson-feature-doc.json b/api-mobile/src/openapi/geojson-feature-doc.json new file mode 100644 index 000000000..db48c4962 --- /dev/null +++ b/api-mobile/src/openapi/geojson-feature-doc.json @@ -0,0 +1,493 @@ +{ + "title": "GeoJSON Feature", + "type": "object", + "required": [ + "type", + "properties", + "geometry" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feature" + ] + }, + "properties": { + "oneOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "geometry": { + "oneOf": [ + { + "type": "null" + }, + { + "title": "GeoJSON Point", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Point" + ] + }, + "coordinates": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON LineString", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LineString" + ] + }, + "coordinates": { + "type": "array", + "minItems": 2, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON Polygon", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Polygon" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON MultiPoint", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MultiPoint" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON MultiLineString", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MultiLineString" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON MultiPolygon", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON GeometryCollection", + "type": "object", + "required": [ + "type", + "geometries" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "GeometryCollection" + ] + }, + "geometries": { + "type": "array", + "items": { + "oneOf": [ + { + "title": "GeoJSON Point", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Point" + ] + }, + "coordinates": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON LineString", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "LineString" + ] + }, + "coordinates": { + "type": "array", + "minItems": 2, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON Polygon", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Polygon" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON MultiPoint", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MultiPoint" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON MultiLineString", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MultiLineString" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + }, + { + "title": "GeoJSON MultiPolygon", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + } + ] + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } + } + ] + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } +} diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index d15e660b5..1b0ffef04 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -10,6 +10,7 @@ import { ActivityPostRequestBody, ActivitySearchCriteria, IMediaItem, MediaBase6 import { getActivitiesSQL, postActivitySQL } from './../queries/activity-queries'; import { uploadFileToS3 } from './../utils/file-utils'; import { getLogger } from './../utils/logger'; +import * as geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; const defaultLog = getLogger('activity-controller'); @@ -106,10 +107,12 @@ POST.apiDoc = { required: ['activity_type', 'activity_subtype'], properties: { activity_type: { - type: 'string' + type: 'string', + title: 'Activity type' }, activity_subtype: { - type: 'string' + type: 'string', + title: 'Activity subtype' }, media: { type: 'array', @@ -120,9 +123,9 @@ POST.apiDoc = { }, geometry: { type: 'array', - title: 'Geometry', + title: 'Geometries', items: { - $ref: '#/components/schemas/Geometry' + ...geoJSON_Feature_Schema } }, form_data: { From 8df8231c8b0699ca037e6f3d2c068777f95acab2 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 13 Oct 2020 11:31:29 -0700 Subject: [PATCH 086/194] 61: Initial activity search endpoint --- Makefile | 2 +- api-mobile/Makefile | 4 +- api-mobile/package-lock.json | 631 ++------------------- api-mobile/package.json | 1 + api-mobile/src/constants/misc.ts | 7 + api-mobile/src/models/activity.ts | 43 +- api-mobile/src/openapi/README.md | 2 +- api-mobile/src/paths/activity.ts | 44 +- api-mobile/src/queries/activity-queries.ts | 5 + 9 files changed, 117 insertions(+), 622 deletions(-) diff --git a/Makefile b/Makefile index 603604b48..82136665a 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ setup-docker: ## Prepares the environment variables for local development using @echo "===============================================" @echo "Make: setup-local - copying env.docker to .env" @echo "===============================================" - @cp -n env_config/env.docker .env + @cp -i env_config/env.docker .env build-local: ## Builds the local development containers @echo "===============================================" diff --git a/api-mobile/Makefile b/api-mobile/Makefile index 4fc8e971e..015ea9e74 100644 --- a/api-mobile/Makefile +++ b/api-mobile/Makefile @@ -33,13 +33,13 @@ setup-local: ## Prepares the environment variables for local development (will n @echo "===============================================" @echo "Make: setup-local - copying env.local to .env" @echo "===============================================" - @cp -n env_config/env.local .env + @cp -i env_config/env.local .env setup-docker: ## Prepares the environment variables for local development using docker (will not overwrite an existing .env file) @echo "===============================================" @echo "Make: setup-local - copying env.docker to .env" @echo "===============================================" - @cp -n env_config/env.docker .env + @cp -i env_config/env.docker .env build-local: ## Builds the local development containers @echo "===============================================" diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index c42267526..71879eb66 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -173,6 +173,12 @@ "@types/express": "*" } }, + "@types/geojson": { + "version": "7946.0.7", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", + "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==", + "dev": true + }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -451,25 +457,6 @@ "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.1.tgz", "integrity": "sha1-xU9998/nBHdKbLI6zjOTd3o0rPA=" }, - "@types/swagger-tools": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/@types/swagger-tools/-/swagger-tools-0.10.6.tgz", - "integrity": "sha1-IWiii7Dh19kKtz8SbqP9IjMDhBE=", - "dev": true, - "requires": { - "@types/connect": "*" - } - }, - "@types/swagger-ui-express": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@types/swagger-ui-express/-/swagger-ui-express-4.1.2.tgz", - "integrity": "sha512-t9teFTU8dKe69rX9EwL6OM2hbVquYdFM+sQ0REny4RalPlxAm+zyP04B12j4c7qEuDS6CnlwICywqWStPA3v4g==", - "dev": true, - "requires": { - "@types/express": "*", - "@types/serve-static": "*" - } - }, "@types/undertaker": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.3.tgz", @@ -794,11 +781,6 @@ "buffer-equal": "^1.0.0" } }, - "append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" - }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -1006,7 +988,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.2", @@ -1300,50 +1283,20 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true }, "buffer-shims": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true }, "buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", "integrity": "sha1-zn64Gjj3gp2wnIc/L7t5LAyY7AQ=" }, - "busboy": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", - "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", - "requires": { - "dicer": "0.2.5", - "readable-stream": "1.1.x" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", @@ -1723,15 +1676,11 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=" - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -1803,7 +1752,8 @@ "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=" + "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=", + "dev": true }, "copy-descriptor": { "version": "0.1.1", @@ -1823,7 +1773,8 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2189,7 +2140,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "depd": { "version": "1.1.2", @@ -2206,38 +2158,6 @@ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, - "dicer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", - "requires": { - "readable-stream": "1.1.x", - "streamsearch": "0.1.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -3270,6 +3190,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -3279,7 +3200,8 @@ "formidable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=" + "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=", + "dev": true }, "forwarded": { "version": "0.1.2", @@ -3754,14 +3676,6 @@ "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", "dev": true }, - "graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha1-V2HUFHN4cAhMkux7XbywWSydNdo=", - "requires": { - "lodash": "^4.17.15" - } - }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -4375,28 +4289,6 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-refs": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", - "integrity": "sha1-EIn0rPJjoxUseQR5SFGVzWRJ6FU=", - "requires": { - "commander": "~4.1.1", - "graphlib": "^2.1.8", - "js-yaml": "^3.13.1", - "lodash": "^4.17.15", - "native-promise-only": "^0.8.1", - "path-loader": "^1.0.10", - "slash": "^3.0.0", - "uri-js": "^4.2.2" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha1-n9YCvZNilOnp70aj9NaWQESxgGg=" - } - } - }, "json-schema-traverse": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.5.0.tgz", @@ -4679,224 +4571,21 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=" }, - "lodash._arraypool": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._arraypool/-/lodash._arraypool-2.4.1.tgz", - "integrity": "sha1-6I7suS4ruEyQZWEv2VigcZzUf5Q=" - }, - "lodash._basebind": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._basebind/-/lodash._basebind-2.4.1.tgz", - "integrity": "sha1-6UC5690nwyfgqNqxtVkWxTQelXU=", - "requires": { - "lodash._basecreate": "~2.4.1", - "lodash._setbinddata": "~2.4.1", - "lodash._slice": "~2.4.1", - "lodash.isobject": "~2.4.1" - } - }, - "lodash._baseclone": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-2.4.1.tgz", - "integrity": "sha1-MPgj5X4X43NdODvWK2Czh1Q7QYY=", - "requires": { - "lodash._getarray": "~2.4.1", - "lodash._releasearray": "~2.4.1", - "lodash._slice": "~2.4.1", - "lodash.assign": "~2.4.1", - "lodash.foreach": "~2.4.1", - "lodash.forown": "~2.4.1", - "lodash.isarray": "~2.4.1", - "lodash.isobject": "~2.4.1" - } - }, - "lodash._basecreate": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-2.4.1.tgz", - "integrity": "sha1-+Ob1tXip405UEXm1a47uv0oofgg=", - "requires": { - "lodash._isnative": "~2.4.1", - "lodash.isobject": "~2.4.1", - "lodash.noop": "~2.4.1" - } - }, - "lodash._basecreatecallback": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._basecreatecallback/-/lodash._basecreatecallback-2.4.1.tgz", - "integrity": "sha1-fQsmdknLKeehOdAQO3wR+uhOSFE=", - "requires": { - "lodash._setbinddata": "~2.4.1", - "lodash.bind": "~2.4.1", - "lodash.identity": "~2.4.1", - "lodash.support": "~2.4.1" - } - }, - "lodash._basecreatewrapper": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._basecreatewrapper/-/lodash._basecreatewrapper-2.4.1.tgz", - "integrity": "sha1-TTHy595+E0+/KAN2K4FQsyUZZm8=", - "requires": { - "lodash._basecreate": "~2.4.1", - "lodash._setbinddata": "~2.4.1", - "lodash._slice": "~2.4.1", - "lodash.isobject": "~2.4.1" - } - }, - "lodash._createwrapper": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._createwrapper/-/lodash._createwrapper-2.4.1.tgz", - "integrity": "sha1-UdaVeXPaTtVW43KQ2MGhjFPeFgc=", - "requires": { - "lodash._basebind": "~2.4.1", - "lodash._basecreatewrapper": "~2.4.1", - "lodash._slice": "~2.4.1", - "lodash.isfunction": "~2.4.1" - } - }, - "lodash._getarray": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._getarray/-/lodash._getarray-2.4.1.tgz", - "integrity": "sha1-+vH3+BD6mFolHCGHQESBCUg55e4=", - "requires": { - "lodash._arraypool": "~2.4.1" - } - }, - "lodash._isnative": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", - "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=" - }, - "lodash._maxpoolsize": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._maxpoolsize/-/lodash._maxpoolsize-2.4.1.tgz", - "integrity": "sha1-nUgvRjuOZq++WcLBTtsRcGAXIzQ=" - }, - "lodash._objecttypes": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", - "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=" - }, - "lodash._releasearray": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._releasearray/-/lodash._releasearray-2.4.1.tgz", - "integrity": "sha1-phOWMNdtFTawfdyAliiJsIL2pkE=", - "requires": { - "lodash._arraypool": "~2.4.1", - "lodash._maxpoolsize": "~2.4.1" - } - }, - "lodash._setbinddata": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._setbinddata/-/lodash._setbinddata-2.4.1.tgz", - "integrity": "sha1-98IAzRuS7yNrOZ7s9zxkjReqlNI=", - "requires": { - "lodash._isnative": "~2.4.1", - "lodash.noop": "~2.4.1" - } - }, - "lodash._shimkeys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", - "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", - "requires": { - "lodash._objecttypes": "~2.4.1" - } - }, - "lodash._slice": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._slice/-/lodash._slice-2.4.1.tgz", - "integrity": "sha1-dFz0GlNZexj2iImFREBe+isG2Q8=" - }, - "lodash.assign": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-2.4.1.tgz", - "integrity": "sha1-hMOVlt1xGBqXsGUpE6fJZ15Jsao=", - "requires": { - "lodash._basecreatecallback": "~2.4.1", - "lodash._objecttypes": "~2.4.1", - "lodash.keys": "~2.4.1" - } - }, - "lodash.bind": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-2.4.1.tgz", - "integrity": "sha1-XRn6AFyMTSNvr0dCx7eh/Kvikmc=", - "requires": { - "lodash._createwrapper": "~2.4.1", - "lodash._slice": "~2.4.1" - } - }, - "lodash.clonedeep": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-2.4.1.tgz", - "integrity": "sha1-8pIDtAsS/uCkXTYxZIJZvrq8eGg=", - "requires": { - "lodash._baseclone": "~2.4.1", - "lodash._basecreatecallback": "~2.4.1" - } - }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, - "lodash.foreach": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-2.4.1.tgz", - "integrity": "sha1-/j/Do0yGyUyrb5UiVgKCdB4BYwk=", - "requires": { - "lodash._basecreatecallback": "~2.4.1", - "lodash.forown": "~2.4.1" - } - }, - "lodash.forown": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.forown/-/lodash.forown-2.4.1.tgz", - "integrity": "sha1-eLQer+FAX6lmRZ6kGT/VAtCEUks=", - "requires": { - "lodash._basecreatecallback": "~2.4.1", - "lodash._objecttypes": "~2.4.1", - "lodash.keys": "~2.4.1" - } - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.identity": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-2.4.1.tgz", - "integrity": "sha1-ZpTP+mX++TH3wxzobHRZfPVg9PE=" - }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" }, - "lodash.isarray": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-2.4.1.tgz", - "integrity": "sha1-tSoybB9i9tfac6MdVAHfbvRPD6E=", - "requires": { - "lodash._isnative": "~2.4.1" - } - }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "lodash.isfunction": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-2.4.1.tgz", - "integrity": "sha1-LP1XXHPkmKtX4xm3f6Aq3vE6lNE=" - }, "lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", @@ -4907,14 +4596,6 @@ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" }, - "lodash.isobject": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", - "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", - "requires": { - "lodash._objecttypes": "~2.4.1" - } - }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -4925,26 +4606,11 @@ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", - "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" - } - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "lodash.noop": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-2.4.1.tgz", - "integrity": "sha1-T7VPgWZS5a4Q6PcvcXo4jHMmU4o=" - }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -4956,14 +4622,6 @@ "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", "dev": true }, - "lodash.support": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.support/-/lodash.support-2.4.1.tgz", - "integrity": "sha1-Mg4LZwMWc8KNeiu12eAzGkUkBRU=", - "requires": { - "lodash._isnative": "~2.4.1" - } - }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -5524,34 +5182,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "multer": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha1-Lx9NEtuu66dMs35iPyNL9NPSBXo=", - "requires": { - "append-field": "^1.0.0", - "busboy": "^0.2.11", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.1", - "on-finished": "^2.3.0", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "dependencies": { - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - } - } - }, "mute-stdout": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", @@ -5588,11 +5218,6 @@ "to-regex": "^3.0.1" } }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=" - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5765,11 +5390,6 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -6167,15 +5787,6 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, - "path-loader": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", - "integrity": "sha1-3T0b1Uy28uZCOvKtM0pBzAvOTPY=", - "requires": { - "native-promise-only": "^0.8.1", - "superagent": "^3.8.3" - } - }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -6398,7 +6009,8 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true }, "progress": { "version": "2.0.3", @@ -6665,6 +6277,7 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "dev": true, "requires": { "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", @@ -7096,7 +6709,8 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=" + "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=", + "dev": true }, "slice-ansi": { "version": "2.1.0", @@ -7262,11 +6876,6 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, - "spark-md5": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", - "integrity": "sha1-g6DiVXNPKrTlxGblos/JuiqiEk0=" - }, "sparkles": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", @@ -7449,6 +7058,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -7480,6 +7090,7 @@ "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", "integrity": "sha1-Rg6g29t9WxG8T3jeulZfhqF44Sg=", + "dev": true, "requires": { "component-emitter": "^1.2.0", "cookiejar": "^2.1.0", @@ -7496,12 +7107,14 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7516,6 +7129,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -7551,14 +7165,6 @@ "es6-symbol": "^3.1.1" } }, - "swagger-converter": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/swagger-converter/-/swagger-converter-0.1.7.tgz", - "integrity": "sha1-oJdRnG8e5N1n4wjZtT3cnCslf5c=", - "requires": { - "lodash.clonedeep": "^2.4.1" - } - }, "swagger-object-validator": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/swagger-object-validator/-/swagger-object-validator-1.2.2.tgz", @@ -7586,150 +7192,6 @@ "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=" }, - "swagger-tools": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/swagger-tools/-/swagger-tools-0.10.4.tgz", - "integrity": "sha1-KUmwDKF9oNT5GtdMRAJ94lDE2Ek=", - "requires": { - "async": "^2.5.0", - "body-parser": "1.18.2", - "commander": "~2.11.0", - "debug": "^3.1.0", - "js-yaml": "^3.3.1", - "json-refs": "^3.0.2", - "lodash": "^4.17.4", - "multer": "^1.1.0", - "parseurl": "^1.3.0", - "path-to-regexp": "^2.0.0", - "qs": "^6.0.3", - "serve-static": "^1.10.0", - "spark-md5": "^3.0.0", - "superagent": "^3.5.2", - "swagger-converter": "^0.1.7", - "traverse": "^0.6.6", - "z-schema": "^3.15.4" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", - "requires": { - "lodash": "^4.17.14" - } - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" - } - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" - }, - "path-to-regexp": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", - "integrity": "sha1-Nc5/Mz1WFvHB4b/iZsOrouWy5wQ=" - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - } - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - } - } - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" - } - } - }, - "swagger-ui-dist": { - "version": "3.32.5", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.32.5.tgz", - "integrity": "sha512-3SKHv8UVqsKKknivtACHbFDGcn297jkoZN2h6zAZ7b2yoaJNMaRadQpC3qFw3GobZTGzqHCgHph4ZH9NkaCjrQ==" - }, - "swagger-ui-express": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.1.4.tgz", - "integrity": "sha512-Ea96ecpC+Iq9GUqkeD/LFR32xSs8gYqmTW1gXCuKg81c26WV6ZC2FsBSPVExQP6WkyUuz5HEiR0sEv/HCC343g==", - "requires": { - "swagger-ui-dist": "^3.18.1" - } - }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -8009,11 +7471,6 @@ "nopt": "~1.0.10" } }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", @@ -8183,7 +7640,8 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", @@ -9117,25 +8575,6 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true - }, - "z-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.25.1.tgz", - "integrity": "sha1-fhRmO+K5YAPZOKVvZE+4VhZD+34=", - "requires": { - "commander": "^2.7.1", - "core-js": "^2.5.7", - "lodash.get": "^4.0.0", - "lodash.isequal": "^4.0.0", - "validator": "^10.0.0" - }, - "dependencies": { - "validator": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha1-ADEI6m6amHTTHMyeUAaFbM12sig=" - } - } } } } diff --git a/api-mobile/package.json b/api-mobile/package.json index d3dd32283..46d446b52 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -55,6 +55,7 @@ "@types/chai": "~4.2.12", "@types/express-openapi": "~1.9.0", "@types/express": "~4.17.0", + "@types/geojson": "^7946.0.3", "@types/gulp": "~4.0.6", "@types/jsonwebtoken": "~8.5.0", "@types/memory-cache": "~0.2.1", diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts index b5e119d58..94c10867a 100644 --- a/api-mobile/src/constants/misc.ts +++ b/api-mobile/src/constants/misc.ts @@ -96,3 +96,10 @@ export enum XEnumCode { */ XEnumCodeName = 'x-enum-code-name' } + +/** + * The maximum number of records the search endpoint can return. + * + * @type {number} + */ +export const SEARCH_LIMIT_MAX = 100; diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 964c0c74d..03ff58347 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -1,3 +1,4 @@ +import { SEARCH_LIMIT_MAX } from '../constants/misc'; import { parseBase64DataURLString } from './../utils/file-utils'; /** @@ -96,22 +97,24 @@ export class ActivityPostRequestBody { } /** - * Activity get search criteria object. + * Activity search filter criteria object. * * @export * @class ActivitySearchCriteria */ export class ActivitySearchCriteria { - activity_type: string; - activity_subtype: string; - page: number; limit: number; + activity_type: string; + activity_subtype: string; + date_range_start: Date; date_range_end: Date; - includeMedia: boolean; + include_media: boolean; + + bbox: GeoJSON.BBox; /** * Creates an instance of ActivitySearchCriteria. @@ -120,15 +123,37 @@ export class ActivitySearchCriteria { * @memberof ActivitySearchCriteria */ constructor(obj?: any) { + this.page = (obj && obj.page && this.setPage(obj.page)) || 0; + this.limit = (obj && obj.limit && this.setLimit(obj.limit)) || SEARCH_LIMIT_MAX; + this.activity_type = (obj && obj.activity_type) || null; this.activity_subtype = (obj && obj.activity_subtype) || null; - this.page = (obj && obj.page) || 0; - this.limit = (obj && obj.limit) || 50; - this.date_range_start = (obj && obj.date_range_start) || null; this.date_range_end = (obj && obj.date_range_end) || null; - this.includeMedia = (obj && obj.includeMedia) || false; + this.include_media = (obj && obj.include_media) || false; + + this.bbox = (obj && obj.bbox) || null; + } + + setPage(page: number): number { + if (!page || page < 0) { + return 0; + } + + return page; + } + + setLimit(limit: number): number { + if (!limit || limit < 0) { + return 25; + } + + if (limit > SEARCH_LIMIT_MAX) { + return SEARCH_LIMIT_MAX; + } + + return limit; } } diff --git a/api-mobile/src/openapi/README.md b/api-mobile/src/openapi/README.md index 0b9923635..878d6aae7 100644 --- a/api-mobile/src/openapi/README.md +++ b/api-mobile/src/openapi/README.md @@ -6,6 +6,6 @@ https://json-schema.org/ Spec copied from: -- https://github.com/geojson/schema) +- https://github.com/geojson/schema _Note: It was very slightly modified to remove the top level `$schema` and `$id` fields, which are only valid at the root level of the api spec._ diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 1b0ffef04..780e6896e 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -14,7 +14,7 @@ import * as geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; const defaultLog = getLogger('activity-controller'); -export const GET: Operation = [getAllActivities()]; +export const GET: Operation = [getActivitiesBySearchFilterCriteria()]; GET.apiDoc = { description: 'Fetches all activities based on search criteria.', @@ -25,17 +25,11 @@ GET.apiDoc = { } ], requestBody: { - description: 'Activities search criteria object.', + description: 'Activities search filter criteria object.', content: { 'application/json': { schema: { properties: { - activity_type: { - type: 'string' - }, - activity_subtype: { - type: 'string' - }, page: { type: 'number', default: 0, @@ -47,13 +41,36 @@ GET.apiDoc = { minimum: 0, maximum: 100 }, + activity_type: { + type: 'string' + }, + activity_subtype: { + type: 'string' + }, date_range_start: { type: 'string', - description: 'Date range start, in YYYY-MM-DD format' + description: 'Date range start, in YYYY-MM-DD format. Defaults time to start of day.', + example: '2020-07-30' }, date_range_end: { type: 'string', - description: 'Date range end, in YYYY-MM-DD format' + description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', + example: '2020-08-30' + }, + // TODO does this risk making the response too large? Do we need to limit the number of results? + // TODO Or possibly remove this option and only allow media requests on single activity requests? + include_media: { + type: 'boolean', + default: 'false', + description: 'True if the response should include associated media, false otherwise.' + }, + // GeoJson Bounding Box + bbox: { + type: 'array', + minItems: 4, + items: { + type: 'number' + } } } } @@ -70,7 +87,8 @@ GET.apiDoc = { items: { type: 'object', properties: { - // don't specify exact response, as it is not currently enforced anyways + // Don't specify exact response, as it will vary, and is not currently enforced anyways + // Eventually this could be updated to be a oneOf list, similar to the Post request below. } } } @@ -277,11 +295,11 @@ function createActivity(): RequestHandler { } /** - * Fetches all activity records based on request search criteria. + * Fetches all activity records based on request search filter criteria. * * @return {RequestHandler} */ -function getAllActivities(): RequestHandler { +function getActivitiesBySearchFilterCriteria(): RequestHandler { return async (req, res, next) => { defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 233a96004..dff1cadec 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -79,6 +79,11 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta sqlStatement.append(SQL` WHERE received_timestamp <= ${searchCriteria.date_range_end}::date`); } + if (searchCriteria.bbox) { + // TODO Add Spatial query support using `searchCriteria.bbox` + sqlStatement.append(SQL` `); + } + if (searchCriteria.limit) { sqlStatement.append(SQL` LIMIT ${searchCriteria.limit}`); } From 4d2b3071f9b6fa88773221a56cae743d468da3b7 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 13 Oct 2020 17:48:57 -0700 Subject: [PATCH 087/194] Update api-mobile read --- api-mobile/README.md | 49 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/api-mobile/README.md b/api-mobile/README.md index 715e245c5..3c202ddcc 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -44,19 +44,50 @@ Access the api via the nginx reverse proxy: `localhost:80/api/` ## Commands -1. Download dependencies +1. CD into `api-mobile` folder -``` -npm install -``` + ``` + cd api-mobile + ``` -2. Run the app +2. Download dependencies -``` -npm start -``` + ``` + npm install + ``` + +3. Create and configure the `.env` file + + - Create an empty `.env` file in `./api-mobile` + - Populate the `.env` with some initial basic values + ``` + make setup-local + ``` + - Manually edit the `.env` to update values as needed, and to set any sensitive values (passwords, etc) + +4. Apply the `.env` variables to the terminal + + ``` + source dotenv.sh + ``` + + - This is a convenience script that iterates over the `.env` file and runs the `export` command on all of them. This sets these environment variables in your local terminal. + + _Note: these environment variables only apply to the terminal that this command was run in, and do not persist if the terminal is closed._ + +5. Run the app, using either: + + ``` + npm start + ``` + + or + + ``` + npm run start:reload + ``` -3. Go to http://localhost:3002/api/docs/ to verify that the application is running. +6. Go to http://localhost:3002/api/api-docs/ to verify that the application is running.
From 3db4ea98894c45f1c9ba7d535c06f4bf887ae64f Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 13 Oct 2020 20:33:19 -0700 Subject: [PATCH 088/194] 61: Update activity search and media endpoints --- api-mobile/README.md | 2 +- api-mobile/env_config/env.docker | 2 + api-mobile/env_config/env.local | 2 + api-mobile/package-lock.json | 542 +++++++++--------- api-mobile/src/models/activity.ts | 28 +- api-mobile/src/paths/activity.ts | 17 +- api-mobile/src/paths/activity/{activityId}.ts | 104 +--- .../src/paths/code/observation/plant.ts | 60 -- api-mobile/src/paths/media.ts | 96 ++++ api-mobile/src/paths/media/{key}.ts | 19 +- api-mobile/src/paths/misc/version.ts | 2 +- .../observation/plant/{observationId}.ts | 89 --- api-mobile/src/queries/activity-queries.ts | 10 +- .../src/utils/api-doc-security-filter.ts | 6 + api-mobile/src/utils/auth-utils.ts | 36 +- api-mobile/src/utils/file-utils.ts | 4 +- api-mobile/src/utils/logger.ts | 11 +- api-mobile/test/activity-with-files.json | 8 +- 18 files changed, 478 insertions(+), 560 deletions(-) delete mode 100644 api-mobile/src/paths/code/observation/plant.ts create mode 100644 api-mobile/src/paths/media.ts delete mode 100644 api-mobile/src/paths/observation/plant/{observationId}.ts diff --git a/api-mobile/README.md b/api-mobile/README.md index 3c202ddcc..876e21fb7 100644 --- a/api-mobile/README.md +++ b/api-mobile/README.md @@ -71,7 +71,7 @@ Access the api via the nginx reverse proxy: `localhost:80/api/` source dotenv.sh ``` - - This is a convenience script that iterates over the `.env` file and runs the `export` command on all of them. This sets these environment variables in your local terminal. + - This is a convenience script that iterates over the `.env` file and runs the `export` command on all of key/value pairs. This applies these environment variables to your local terminal. _Note: these environment variables only apply to the terminal that this command was run in, and do not persist if the terminal is closed._ diff --git a/api-mobile/env_config/env.docker b/api-mobile/env_config/env.docker index 02bfc8556..ff3c60115 100644 --- a/api-mobile/env_config/env.docker +++ b/api-mobile/env_config/env.docker @@ -17,6 +17,8 @@ ENVIRONMENT=local # ------------------------------------------------------------------------------ API_HOST=localhost API_PORT=7080 +# See `logger.ts` for details on LOG_LEVEL +LOG_LEVEL=debug # ------------------------------------------------------------------------------ # Postgrest Database diff --git a/api-mobile/env_config/env.local b/api-mobile/env_config/env.local index a55e0aef1..7c053e1f2 100644 --- a/api-mobile/env_config/env.local +++ b/api-mobile/env_config/env.local @@ -16,6 +16,8 @@ ENVIRONMENT=local # ------------------------------------------------------------------------------ API_HOST=localhost API_PORT=3002 +# See `logger.ts` for details on LOG_LEVEL +LOG_LEVEL=debug # ------------------------------------------------------------------------------ # Postgrest Database diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 71879eb66..bc56d4634 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -7,7 +7,7 @@ "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -16,13 +16,13 @@ "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -33,7 +33,7 @@ "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha1-KQ0I97OBuPlGB9yPRxoSxnX52zE=", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", "requires": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -89,7 +89,7 @@ "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", "requires": { "@types/connect": "*", "@types/node": "*" @@ -98,18 +98,18 @@ "@types/chai": { "version": "4.2.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", - "integrity": "sha1-YWCuRUzYna4FrcO7l5l/SItgggE=", + "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", "dev": true }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=" + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/connect": { "version": "3.4.33", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha1-MWEMkB7KVzuHE8MzCrxua59YhUY=", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", "requires": { "@types/node": "*" } @@ -117,7 +117,7 @@ "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, "@types/expect": { @@ -129,7 +129,7 @@ "@types/express": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha1-QgRb5kdWNtmAE2nNRBjvZc2w3Vk=", + "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -140,7 +140,7 @@ "@types/express-jwt": { "version": "0.0.42", "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha1-TwTh+t+dGHJZUNwEGAikpK339a4=", + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", "requires": { "@types/express": "*", "@types/express-unless": "*" @@ -158,7 +158,7 @@ "@types/express-serve-static-core": { "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha1-LXs03P0l7GY8JchddmCPiySWZ/E=", + "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -168,7 +168,7 @@ "@types/express-unless": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha1-T0QLkF5Cu/Uzgrgge8M33F/5/R8=", + "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", "requires": { "@types/express": "*" } @@ -370,7 +370,7 @@ "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, "@types/json5": { @@ -383,7 +383,7 @@ "@types/jsonwebtoken": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", - "integrity": "sha1-JTHV4wCAOqYyebIywBSs94DJgcU=", + "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", "dev": true, "requires": { "@types/node": "*" @@ -392,13 +392,13 @@ "@types/memory-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha1-AMr11zfkrMEA9bmBUsY17avbANc=", + "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", "dev": true }, "@types/mime": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=" + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" }, "@types/minimatch": { "version": "3.0.3", @@ -409,7 +409,7 @@ "@types/mocha": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha1-gTtP+N2ZINZS4ea0Uf8eNxpFYdI=", + "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", "dev": true }, "@types/node": { @@ -420,7 +420,7 @@ "@types/pg": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", - "integrity": "sha1-Fc/P2TAPlP1E5hkaGwuhjS3iCfY=", + "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", "dev": true, "requires": { "@types/node": "*", @@ -430,23 +430,23 @@ "@types/pg-types": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", - "integrity": "sha1-Huu+YrZ3L8x1wYlXqQ+TPRVeAFs=", + "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", "dev": true }, "@types/qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha1-pZ6FHBuhbAUT6hI4MN1jmgoVy2o=" + "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" }, "@types/range-parser": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=" + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha1-PSXZQaGEFdOrCS3vhG4TWgi7z1M=", + "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", "requires": { "@types/express-serve-static-core": "*", "@types/mime": "*" @@ -503,13 +503,13 @@ "@types/yamljs": { "version": "0.2.31", "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", - "integrity": "sha1-saYgsRXJbbezv98M9UruDFcTkkU=", + "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha1-0UTEmpoP/o3XBLsXnCQ992wRG8k=", + "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "3.7.1", @@ -523,7 +523,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -532,13 +532,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -546,7 +546,7 @@ "@typescript-eslint/experimental-utils": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha1-qwNsqu1Mhw0iUx1B+TUvMUc2TWE=", + "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", @@ -559,7 +559,7 @@ "@typescript-eslint/parser": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha1-XZzOyxFtEtnGBz6YYcV8mxqogSg=", + "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", @@ -572,13 +572,13 @@ "@typescript-eslint/types": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha1-kDdWBrL9c8EiT+njl+4VHij6Hgw=", + "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha1-zh/70PpT801M6FGno2TjkkMvbrM=", + "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", "dev": true, "requires": { "@typescript-eslint/types": "3.7.1", @@ -594,7 +594,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -603,13 +603,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -617,7 +617,7 @@ "@typescript-eslint/visitor-keys": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha1-uQGR50797mVr6MWjD0KO0W3aRtE=", + "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -632,7 +632,7 @@ "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -647,7 +647,7 @@ "acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "aggregate-error": { @@ -663,7 +663,7 @@ "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -730,7 +730,7 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-gray": { @@ -745,7 +745,7 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=" + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "3.2.1", @@ -765,7 +765,7 @@ "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -790,13 +790,13 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } @@ -923,7 +923,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { "safer-buffer": "~2.1.0" } @@ -931,7 +931,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, "assign-symbols": { @@ -942,7 +942,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, "async": { @@ -1022,7 +1022,7 @@ "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { "follow-redirects": "1.5.10" } @@ -1117,7 +1117,7 @@ "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, "bindings": { @@ -1133,12 +1133,12 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -1155,7 +1155,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -1163,7 +1163,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -1238,7 +1238,7 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1247,7 +1247,7 @@ "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -1283,7 +1283,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "buffer-shims": { @@ -1295,12 +1295,12 @@ "buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha1-zn64Gjj3gp2wnIc/L7t5LAyY7AQ=" + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cache-base": { "version": "1.0.1", @@ -1363,18 +1363,18 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha1-dgqnLPION5XoSxKHfODoNzeqKeU=", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -1399,7 +1399,7 @@ "chance": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", - "integrity": "sha1-lnoKEp4PNC98Zc1dIPWuhwomuK8=", + "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", "dev": true }, "check-error": { @@ -1411,7 +1411,7 @@ "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha1-yE5bPRjZpNd1WP70ZrG/FrvrNFA=", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -1619,7 +1619,7 @@ "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -1641,7 +1641,7 @@ "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -1661,12 +1661,12 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha1-xQSRR51MG9rtLJztMs98fcI2D3g=" + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha1-4BKJUNCCuGohaFgHlqCqXWxo2MU=", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -1675,7 +1675,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -1684,7 +1684,7 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { "version": "0.0.1", @@ -1720,7 +1720,7 @@ "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { "safe-buffer": "5.1.2" } @@ -1728,7 +1728,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { "version": "1.7.0", @@ -1742,7 +1742,7 @@ "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, "cookie-signature": { "version": "1.0.6", @@ -1752,7 +1752,7 @@ "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, "copy-descriptor": { @@ -1773,7 +1773,7 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, "core-util-is": { @@ -1818,13 +1818,13 @@ "database-cleaner": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", - "integrity": "sha1-MGwAFb0uuWjQimvmok/lLdkf1lY=", + "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", "dev": true }, "db-migrate": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", - "integrity": "sha1-ZWdkrYyIiPai6TeGafppGyiVjqI=", + "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", "requires": { "balanced-match": "^1.0.0", "bluebird": "^3.1.1", @@ -1960,7 +1960,7 @@ "db-migrate-pg": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", - "integrity": "sha1-ZkNtutC6OYwFhR0gD3aNtrLlvBo=", + "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", "requires": { "bluebird": "^3.1.1", "db-migrate-base": "^2.3.0", @@ -1981,12 +1981,12 @@ "db-migrate-shared": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", - "integrity": "sha1-YSW+GzpeZhIp/HXVDIX2w/+tvt4=" + "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -2013,7 +2013,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -2027,7 +2027,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.3", @@ -2067,7 +2067,7 @@ "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -2184,7 +2184,7 @@ "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -2236,7 +2236,7 @@ "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { "safe-buffer": "^5.0.1" } @@ -2249,12 +2249,12 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha1-+d2S7C1vS7wNXR5k4h1hzUZl58I=" + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "encodeurl": { "version": "1.0.2", @@ -2273,7 +2273,7 @@ "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -2282,7 +2282,7 @@ "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -2291,7 +2291,7 @@ "es-abstract": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha1-kUIHFweFeyysx7iey2cDFsPi1So=", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -2310,7 +2310,7 @@ "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -2382,7 +2382,7 @@ "eslint": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha1-nsv61iIW0iO4Ksn/6n7zREZx0TU=", + "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2472,7 +2472,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -2496,7 +2496,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "path-key": { @@ -2508,7 +2508,7 @@ "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "shebang-command": { @@ -2529,7 +2529,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { @@ -2555,7 +2555,7 @@ "eslint-config-prettier": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=", + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -2564,7 +2564,7 @@ "eslint-plugin-prettier": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha1-Foq0MVTi6lfbmSos0JfIKBcfdcI=", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -2573,7 +2573,7 @@ "eslint-scope": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2583,7 +2583,7 @@ "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -2592,7 +2592,7 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "esm": { @@ -2603,7 +2603,7 @@ "espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha1-HCY9W1E9utCsMMSZG5OsNU6UjWk=", + "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", "dev": true, "requires": { "acorn": "^7.3.1", @@ -2614,12 +2614,12 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2636,7 +2636,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -2645,13 +2645,13 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -2715,7 +2715,7 @@ "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -2752,7 +2752,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -2760,7 +2760,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -2799,7 +2799,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -2887,7 +2887,7 @@ "factory-girl": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", - "integrity": "sha1-N4yqvgOqx7Mn1H2eKLTwLO0MPAs=", + "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", "dev": true, "requires": { "babel-runtime": "^6.11.6", @@ -2909,12 +2909,12 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "fast-glob": { @@ -2951,7 +2951,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -2962,7 +2962,7 @@ "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha1-EkqohYmSYfaK7bQqfAgN6dpgh0M=" + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, "fastq": { "version": "1.8.0", @@ -2976,12 +2976,12 @@ "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha1-P/tjlUU+Pz7/+FBATwpZtnR/X0E=" + "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { "flat-cache": "^2.0.1" @@ -2997,7 +2997,7 @@ "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -3015,7 +3015,7 @@ "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -3029,7 +3029,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -3093,7 +3093,7 @@ "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { "flatted": "^2.0.0", @@ -3104,7 +3104,7 @@ "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -3115,7 +3115,7 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "flush-write-stream": { @@ -3163,12 +3163,12 @@ "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha1-JsrYAXlnrqhzG8QpYdBKPVmIrMw=" + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" } @@ -3200,7 +3200,7 @@ "formidable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=", + "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", "dev": true }, "forwarded": { @@ -3297,7 +3297,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "functional-red-black-tree": { @@ -3309,7 +3309,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=" + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { "version": "2.0.0", @@ -3320,7 +3320,7 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, "get-stream": { @@ -3357,7 +3357,7 @@ "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3370,7 +3370,7 @@ "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -3673,7 +3673,7 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "growl": { @@ -3777,7 +3777,7 @@ "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -3792,7 +3792,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -3865,7 +3865,7 @@ "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "http-cache-semantics": { @@ -3877,7 +3877,7 @@ "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -3894,7 +3894,7 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -3907,7 +3907,7 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "ignore-by-default": { @@ -3919,7 +3919,7 @@ "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3966,7 +3966,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "interpret": { "version": "2.2.0", @@ -3982,7 +3982,7 @@ "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-absolute": { "version": "1.0.0", @@ -4020,7 +4020,7 @@ "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -4034,7 +4034,7 @@ "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-ci": { @@ -4067,7 +4067,7 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-descriptor": { @@ -4105,12 +4105,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } @@ -4140,7 +4140,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-obj": { @@ -4189,7 +4189,7 @@ "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -4265,13 +4265,13 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4309,7 +4309,7 @@ "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha1-AOceC431TCEhofJhN98igGc7zA0=", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "requires": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -4326,7 +4326,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4339,7 +4339,7 @@ "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -4378,7 +4378,7 @@ "jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -4458,7 +4458,7 @@ "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha1-4sVwo4ADiPtEQH6FFTHB1nCwYbM=" + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "last-run": { "version": "1.1.1", @@ -4509,7 +4509,7 @@ "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -4534,7 +4534,7 @@ "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" }, "load-json-file": { "version": "4.0.0", @@ -4569,7 +4569,7 @@ "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=" + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.defaults": { "version": "4.2.0", @@ -4634,7 +4634,7 @@ "logform": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha1-QPA20ZFh/Ha2irUP3H/klVREkvI=", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -4646,7 +4646,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4668,7 +4668,7 @@ "lru-memoizer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha1-XGtDZZx4rQ6eZb+BqeXvHuEJot0=", + "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", "requires": { "lodash.clonedeep": "^4.5.0", "lru-cache": "~4.0.0" @@ -4701,7 +4701,7 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, "make-iterator": { @@ -4892,17 +4892,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "requires": { "mime-db": "1.44.0" } @@ -4916,7 +4916,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } @@ -4924,7 +4924,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mixin-deep": { "version": "1.3.2", @@ -4948,7 +4948,7 @@ "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { "minimist": "^1.2.5" } @@ -5170,7 +5170,7 @@ "moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha1-i/9OPiaiNiIN/j423nVrbrqgEF0=" + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" }, "mongodb-uri": { "version": "0.9.7", @@ -5191,7 +5191,7 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nan": { "version": "2.14.1", @@ -5232,7 +5232,7 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "next-tick": { "version": "1.0.0", @@ -5249,7 +5249,7 @@ "nock": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", - "integrity": "sha1-n4HwRJmvaof5xBmgI5ILYj1xURA=", + "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", "dev": true, "requires": { "debug": "^4.1.0", @@ -5261,7 +5261,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -5270,7 +5270,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -5337,7 +5337,7 @@ "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -5349,7 +5349,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "normalize-url": { @@ -5421,13 +5421,13 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA=", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { @@ -5441,7 +5441,7 @@ "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { "define-properties": "^1.1.2", @@ -5517,7 +5517,7 @@ "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha1-4GvBdK7SFO1Y7e3lc7Qzu/gny0U=", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "requires": { "fn.name": "1.x.x" } @@ -5615,7 +5615,7 @@ "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -5653,7 +5653,7 @@ "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { "p-try": "^2.0.0" } @@ -5679,7 +5679,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "package-json": { "version": "6.5.0", @@ -5704,12 +5704,12 @@ "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ=" + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" @@ -5757,7 +5757,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -5790,7 +5790,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-root": { "version": "0.1.1", @@ -5825,7 +5825,7 @@ "pg": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", - "integrity": "sha1-lBODMA047vUey4igGIzsRBq2TYE=", + "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -5847,27 +5847,27 @@ "pg-connection-string": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", - "integrity": "sha1-wT/LhMKY0L+puhK0DdbCPZRvVdY=" + "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha1-lDvUY79bcbQXARX4D478mgwOt4w=" + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, "pg-pool": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", - "integrity": "sha1-X0r8D1gGNlmu76lS02r0n6KLMOA=" + "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" }, "pg-protocol": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", - "integrity": "sha1-KKFJLN4RZG/y0tBr3uQqO6BfEmw=" + "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" }, "pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha1-LQJQ1jZFT3z6O2rgOC/fqAYyVKM=", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "requires": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -5887,7 +5887,7 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "pidtree": { @@ -5953,7 +5953,7 @@ "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha1-SPj84FT7xpZxmZMpuINLdyZS2C4=" + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" }, "postgres-bytea": { "version": "1.0.0", @@ -5968,7 +5968,7 @@ "postgres-interval": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha1-tGDILLFYdQd4iBmgaqD//bNURpU=", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "requires": { "xtend": "^4.0.0" } @@ -5976,7 +5976,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prepend-http": { @@ -5988,13 +5988,13 @@ "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -6015,7 +6015,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "prompt": { @@ -6067,13 +6067,13 @@ "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha1-QM3tqxgIXHkjNOZPCsFyVtOPmkU=", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" @@ -6128,7 +6128,7 @@ "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha1-kJCykNH5FyjTwi5UhDykSupatoc=" + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" }, "querystring": { "version": "0.2.0", @@ -6138,12 +6138,12 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -6154,7 +6154,7 @@ "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6291,7 +6291,7 @@ "readdirp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha1-mERY0ToeQuLp9YQbEp4WLzaa/xc=", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "dev": true, "requires": { "picomatch": "^2.0.7" @@ -6308,7 +6308,7 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-not": { @@ -6323,7 +6323,7 @@ "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "registry-auth-token": { @@ -6448,12 +6448,12 @@ "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=" + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } @@ -6470,7 +6470,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-options": { @@ -6515,7 +6515,7 @@ "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -6529,7 +6529,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -6542,7 +6542,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.1", @@ -6552,7 +6552,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { "version": "3.1.1", @@ -6583,7 +6583,7 @@ "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -6603,7 +6603,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" }, @@ -6618,14 +6618,14 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -6662,7 +6662,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "shebang-command": { "version": "1.2.0", @@ -6709,13 +6709,13 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -6856,7 +6856,7 @@ "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -6885,7 +6885,7 @@ "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -6895,13 +6895,13 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -6911,13 +6911,13 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "requires": { "through": "2" } @@ -7007,7 +7007,7 @@ "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7037,7 +7037,7 @@ "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7047,7 +7047,7 @@ "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7066,7 +7066,7 @@ "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -7089,7 +7089,7 @@ "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha1-Rg6g29t9WxG8T3jeulZfhqF44Sg=", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { "component-emitter": "^1.2.0", @@ -7139,7 +7139,7 @@ "supertest": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", - "integrity": "sha1-wiNNvdbcebbxW5nI1ld7kOTOPzY=", + "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", "dev": true, "requires": { "methods": "^1.1.2", @@ -7149,7 +7149,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7195,7 +7195,7 @@ "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -7207,13 +7207,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "is-fullwidth-code-point": { @@ -7225,7 +7225,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -7236,7 +7236,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -7258,7 +7258,7 @@ "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, "text-table": { "version": "0.2.0", @@ -7400,7 +7400,7 @@ "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -7460,7 +7460,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "touch": { "version": "3.1.0", @@ -7474,7 +7474,7 @@ "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk=" + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "ts-log": { "version": "2.1.4", @@ -7484,7 +7484,7 @@ "ts-mocha": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", - "integrity": "sha1-8VSbSLRvU9euHcy7JjE8eHmssZA=", + "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", "dev": true, "requires": { "ts-node": "7.0.1", @@ -7500,7 +7500,7 @@ "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", "dev": true, "requires": { "arrify": "^1.0.0", @@ -7524,7 +7524,7 @@ "ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha1-7uA3ZGM7EjTd03+NuewQt17H+40=", + "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", "dev": true, "requires": { "arg": "^4.1.0", @@ -7537,7 +7537,7 @@ "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, "optional": true, "requires": { @@ -7569,13 +7569,13 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tsutils": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -7584,7 +7584,7 @@ "tunnel-ssh": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", - "integrity": "sha1-swH3czxz3OoWFkZrnIe2B/SVi0U=", + "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", "requires": { "debug": "2.6.9", "lodash.defaults": "^4.1.0", @@ -7594,7 +7594,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -7610,7 +7610,7 @@ "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -7619,19 +7619,19 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -7655,7 +7655,7 @@ "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha1-mNYApevcOPQMsndSLxLcgA6eJfo=" + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" }, "unc-path-regex": { "version": "0.1.2", @@ -7867,7 +7867,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { "punycode": "^2.1.0" }, @@ -7938,7 +7938,7 @@ "v8-compile-cache": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, "v8flags": { @@ -7952,7 +7952,7 @@ "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -7962,7 +7962,7 @@ "validator": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", - "integrity": "sha1-+IETaEc9IXOp2GEVcrWMV4PyI78=" + "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" }, "value-or-function": { "version": "3.0.0", @@ -8154,7 +8154,7 @@ "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha1-rmFyBCyvspeGr6PQnI/4M6t8kXA=", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.1.0", @@ -8170,7 +8170,7 @@ "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha1-s6JoXF67ZB094C0WEALGD8n4VyA=" + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, "is-stream": { "version": "2.0.0", @@ -8180,7 +8180,7 @@ "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8205,7 +8205,7 @@ "winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha1-F69RjappDVsuzMqnrPeyDKeSXlk=", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", "requires": { "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" @@ -8243,7 +8243,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrap-ansi": { @@ -8301,7 +8301,7 @@ "write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -8342,12 +8342,12 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "2.1.2", @@ -8357,7 +8357,7 @@ "yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha1-3AYL8mdEezn3ME6bK/votafdsDs=", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", "requires": { "argparse": "^1.0.7", "glob": "^7.0.5" diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 03ff58347..bd760b9b2 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -8,8 +8,10 @@ import { parseBase64DataURLString } from './../utils/file-utils'; * @interface IMediaItem */ export interface IMediaItem { - fileName: string; - encodedFile: string; + media_date?: string; + description?: string; + file_name: string; + encoded_file: string; } /** @@ -19,10 +21,12 @@ export interface IMediaItem { * @class MediaBase64 */ export class MediaBase64 { - fileName: string; + mediaName: string; contentType: string; contentString: string; - fileBuffer: Buffer; + mediaBuffer: Buffer; + mediaDescription: string; + mediaDate: string; /** * Creates an instance of MediaBase64. @@ -31,16 +35,22 @@ export class MediaBase64 { * @memberof MediaBase64 */ constructor(obj: IMediaItem) { - const base64StringParts = parseBase64DataURLString(obj.encodedFile); + if (!obj) { + throw new Error('media was null'); + } + + const base64StringParts = parseBase64DataURLString(obj.encoded_file); if (!base64StringParts) { - throw new Error('encodedFile could not be parsed'); + throw new Error('media encoded_file could not be parsed'); } this.contentType = base64StringParts.contentType; this.contentString = base64StringParts.contentType; - this.fileName = obj.fileName; - this.fileBuffer = Buffer.from(base64StringParts.contentString, 'base64'); + this.mediaName = obj.file_name; + this.mediaBuffer = Buffer.from(base64StringParts.contentString, 'base64'); + this.mediaDescription = obj.description || null; + this.mediaDate = obj.media_date || null; } } @@ -78,7 +88,7 @@ export class ActivityPostRequestBody { this.activityPostBody = { ...obj, // Strip out any media base64 strings which would convolute the record - media: (obj.media && obj.media.map((item: MediaBase64) => item.fileName)) || [] + media: (obj.media && obj.media.map((item: MediaBase64) => item.mediaName)) || [] }; this.activity_type = (obj && obj.activity_type) || null; diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 780e6896e..7a7a6e84f 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -12,7 +12,7 @@ import { uploadFileToS3 } from './../utils/file-utils'; import { getLogger } from './../utils/logger'; import * as geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; -const defaultLog = getLogger('activity-controller'); +const defaultLog = getLogger('activity'); export const GET: Operation = [getActivitiesBySearchFilterCriteria()]; @@ -57,13 +57,6 @@ GET.apiDoc = { description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', example: '2020-08-30' }, - // TODO does this risk making the response too large? Do we need to limit the number of results? - // TODO Or possibly remove this option and only allow media requests on single activity requests? - include_media: { - type: 'boolean', - default: 'false', - description: 'True if the response should include associated media, false otherwise.' - }, // GeoJson Bounding Box bbox: { type: 'array', @@ -235,7 +228,7 @@ function uploadMedia(): RequestHandler { } const metadata = { - filename: media.fileName, + filename: media.mediaName, username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', email: (req['auth_payload'] && req['auth_payload'].email) || '' }; @@ -288,6 +281,9 @@ function createActivity(): RequestHandler { const result = (response && response.rows && response.rows[0]) || null; return res.status(200).json(result); + } catch (error) { + defaultLog.debug({ label: 'createActivity', message: 'error', error }); + throw error; } finally { connection.release(); } @@ -329,6 +325,9 @@ function getActivitiesBySearchFilterCriteria(): RequestHandler { const result = (response && response.rows) || null; return res.status(200).json(result); + } catch (error) { + defaultLog.debug({ label: 'getActivitiesBySearchFilterCriteria', message: 'error', error }); + throw error; } finally { connection.release(); } diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 1ed8c2312..085cf5333 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -11,18 +11,10 @@ import { getActivitySQL } from './../../queries/activity-queries'; import { getFileFromS3 } from './../../utils/file-utils'; import { getLogger } from './../../utils/logger'; -const defaultLog = getLogger('activity-controller'); +const defaultLog = getLogger('activity/{activityId}'); export const GET: Operation = [getActivity(), getMedia(), returnActivity()]; -export const parameters = [ - { - in: 'path', - name: 'activityId', - required: true - } -]; - GET.apiDoc = { description: 'Fetches a single activity based on its primary key.', tags: ['activity'], @@ -31,87 +23,23 @@ GET.apiDoc = { Bearer: ALL_ROLES } ], + parameters: [ + { + in: 'path', + name: 'activityId', + required: true + } + ], responses: { 200: { description: 'Activity get response object array.', content: { 'application/json': { schema: { + type: 'object', properties: { - activity_type: { - type: 'string' - }, - activityTypeData: { - type: 'object' - }, - activity_subtype: { - type: 'string' - }, - activitySubTypeData: { - type: 'object' - }, - date: { - type: 'string', - description: 'Date in YYYY-MM-DD format' - }, - locationAndGeometry: { - type: 'object', - description: 'Location and geometry information', - properties: { - anchorPointY: { - type: 'number' - }, - anchorPointX: { - type: 'number' - }, - area: { - type: 'number' - }, - geometry: { - type: 'object', - description: 'A geoJSON object' - }, - jurisdiction: { - type: 'string' - }, - agency: { - type: 'string' - }, - observer1FirstName: { - type: 'string' - }, - observer1LastName: { - type: 'string' - }, - locationComment: { - type: 'string' - }, - generalComment: { - type: 'string' - }, - photoTaken: { - type: 'boolean' - } - } - }, - media: { - type: 'array', - description: 'An array of media objects associated to the activity record', - items: { - type: 'object', - properties: { - fileName: { - type: 'string' - }, - encodedFile: { - type: 'string', - format: 'base64', - description: 'A Data URL base64 encoded image', - example: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy...' - } - } - } - } + // Don't specify exact response, as it will vary, and is not currently enforced anyways + // Eventually this could be updated to be a oneOf list, similar to the Post request below. } } } @@ -164,6 +92,9 @@ function getActivity(): RequestHandler { const result = (response && response.rows && response.rows[0]) || null; req['activity'] = result; + } catch (error) { + defaultLog.debug({ label: 'getActivity', message: 'error', error }); + throw error; } finally { connection.release(); } @@ -196,7 +127,12 @@ function getMedia(): RequestHandler { // Append DATA Url string const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; - const mediaItem: IMediaItem = { fileName: s3Object.Metadata.filename, encodedFile: encodedFile }; + const mediaItem: IMediaItem = { + file_name: (s3Object && s3Object.Metadata && s3Object.Metadata.filename) || null, + encoded_file: encodedFile, + description: (s3Object && s3Object.Metadata && s3Object.Metadata.description) || null, + media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.media_date) || null + }; return mediaItem; }); diff --git a/api-mobile/src/paths/code/observation/plant.ts b/api-mobile/src/paths/code/observation/plant.ts deleted file mode 100644 index ebc2982e8..000000000 --- a/api-mobile/src/paths/code/observation/plant.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Operation } from 'express-openapi'; -import { ALL_ROLES, CacheKeys } from '../../../constants/misc'; -import { getDBConnection } from '../../../database/db'; -import { getAllCodeSets } from '../../../utils/code-utils'; -import { getLogger } from '../../../utils/logger'; -import { cached } from '../../../utils/utils'; - -const defaultLog = getLogger('observation-controller'); - -export const GET: Operation = [ - async (req, res, next) => { - defaultLog.debug({ label: 'code-observation-plant' }); - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - const result = await cached(CacheKeys.ObservationCodePlant, 3600000, () => getAllCodeSets(connection))(); - - connection.release(); - - res.status(200).json(result); - } -]; - -GET.apiDoc = { - description: 'Get all observation plant code values.', - tags: ['code'], - security: [ - { - Bearer: ALL_ROLES - } - ], - responses: { - 200: { - description: 'Code values for a plant observation', - content: { - 'application/json': { - schema: { - $ref: '#/components/schemas/ObservationCodeResponse' - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; diff --git a/api-mobile/src/paths/media.ts b/api-mobile/src/paths/media.ts new file mode 100644 index 000000000..6e27ae342 --- /dev/null +++ b/api-mobile/src/paths/media.ts @@ -0,0 +1,96 @@ +'use strict'; + +import { GetObjectOutput } from 'aws-sdk/clients/s3'; +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { IMediaItem } from '../models/activity'; +import { ALL_ROLES } from '../constants/misc'; +import { getFileFromS3 } from '../utils/file-utils'; + +/** + * GET api/media?key=123;key=456;key=789 + */ +export const GET: Operation = [getMedia()]; + +GET.apiDoc = { + description: 'Fetches a signed url for a single media item based on its key.', + tags: ['media'], + security: [ + { + Bearer: ALL_ROLES + } + ], + parameters: [ + { + in: 'query', + name: 'key', + required: true + } + ], + responses: { + 200: { + description: 'Activity get response object array.', + content: { + 'application/json': { + schema: { + type: 'array', + items: { + type: 'object', + properties: { + // Don't specify exact response, as it will vary, and is not currently enforced anyways + // Eventually this could be updated to be a oneOf list, similar to the Post request below. + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +function getMedia(): RequestHandler { + return async (req, res, next) => { + const keys = req.query.key as string[]; + + if (!keys || !keys.length) { + // No media keys found, skipping get media step + return next(); + } + + const s3GetPromises: Promise[] = []; + + keys.forEach((key: string) => { + s3GetPromises.push(getFileFromS3(key)); + }); + + const response = await Promise.all(s3GetPromises); + + const mediaItems: IMediaItem[] = response.map((s3Object: GetObjectOutput) => { + // Encode image buffer as base64 + const contentString = Buffer.from(s3Object.Body).toString('base64'); + + // Append DATA Url string + const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; + + const mediaItem: IMediaItem = { + file_name: (s3Object && s3Object.Metadata && s3Object.Metadata.filename) || null, + encoded_file: encodedFile, + description: (s3Object && s3Object.Metadata && s3Object.Metadata.description) || null, + media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.media_date) || null + }; + + return mediaItem; + }); + + return res.status(200).json(mediaItems); + }; +} diff --git a/api-mobile/src/paths/media/{key}.ts b/api-mobile/src/paths/media/{key}.ts index 40910b8e7..d77a9fab9 100644 --- a/api-mobile/src/paths/media/{key}.ts +++ b/api-mobile/src/paths/media/{key}.ts @@ -2,19 +2,11 @@ import { RequestHandler } from 'express'; import { Operation } from 'express-openapi'; -import { ALL_ROLES } from './../../constants/misc'; -import { getS3SignedURL } from './../../utils/file-utils'; +import { ALL_ROLES } from '../../constants/misc'; +import { getS3SignedURL } from '../../utils/file-utils'; export const GET: Operation = [getSignedURL()]; -export const parameters = [ - { - in: 'path', - name: 'key', - required: true - } -]; - GET.apiDoc = { description: 'Fetches a signed url for a single media item based on its key.', tags: ['media'], @@ -23,6 +15,13 @@ GET.apiDoc = { Bearer: ALL_ROLES } ], + parameters: [ + { + in: 'path', + name: 'key', + required: true + } + ], responses: { 200: { description: 'Activity get response object array.', diff --git a/api-mobile/src/paths/misc/version.ts b/api-mobile/src/paths/misc/version.ts index 8b651db26..52692bade 100644 --- a/api-mobile/src/paths/misc/version.ts +++ b/api-mobile/src/paths/misc/version.ts @@ -1,7 +1,7 @@ import { Operation } from 'express-openapi'; import { getLogger } from '../../utils/logger'; -const defaultLog = getLogger('observation-controller'); +const defaultLog = getLogger('misc/version'); export const GET: Operation = [ (req, res, next) => { diff --git a/api-mobile/src/paths/observation/plant/{observationId}.ts b/api-mobile/src/paths/observation/plant/{observationId}.ts deleted file mode 100644 index a5815da2d..000000000 --- a/api-mobile/src/paths/observation/plant/{observationId}.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Operation } from 'express-openapi'; -import { SQLStatement } from 'sql-template-strings'; -import { ALL_ROLES } from '../../../constants/misc'; -import { getDBConnection } from '../../../database/db'; -import { getSingleObservationPlantSQL } from '../../../queries/observation-queries'; -import { getLogger } from '../../../utils/logger'; - -const defaultLog = getLogger('observation-controller'); - -export const parameters = [ - { - in: 'path', - name: 'observationId', - required: true - } -]; - -export const GET: Operation = [ - async (req, res, next) => { - defaultLog.info({ label: 'observation-plant-{observationId}', message: 'params', params: req.params }); - - if (!req.params || !req.params.observationId) { - defaultLog.warn({ label: 'observation-plant-{observationId}', message: 'observationId was null' }); - throw { - status: 400, - message: 'Required param observationId was missing or invalid' - }; - } - - const observationId = req.params.observationId; - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - const sqlStatement: SQLStatement = getSingleObservationPlantSQL(observationId); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - const result = (response && response.rowCount && response.rows[0]) || null; - - connection.release(); - - return res.status(200).json(result); - } -]; - -GET.apiDoc = { - description: 'Get a plant observation for the specific observationId.', - tags: ['observation', 'plant'], - security: [ - { - Bearer: ALL_ROLES - } - ], - responses: { - 200: { - description: 'Plant observation', - content: { - 'application/json': { - schema: { - $ref: '#/components/schemas/ObservationPlantResponse' - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index dff1cadec..d41059a55 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -61,22 +61,22 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement * @returns {SQLStatement} sql query object */ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLStatement => { - const sqlStatement: SQLStatement = SQL`SELECT * FROM activity_incoming_data`; + const sqlStatement: SQLStatement = SQL`SELECT * FROM activity_incoming_data WHERE 1 = 1`; if (searchCriteria.activity_type) { - sqlStatement.append(SQL` WHERE activity_type = ${searchCriteria.activity_type}`); + sqlStatement.append(SQL` AND activity_type = ${searchCriteria.activity_type}`); } if (searchCriteria.activity_subtype) { - sqlStatement.append(SQL` WHERE activity_subtype = ${searchCriteria.activity_subtype}`); + sqlStatement.append(SQL` AND activity_subtype = ${searchCriteria.activity_subtype}`); } if (searchCriteria.date_range_start) { - sqlStatement.append(SQL` WHERE received_timestamp >= ${searchCriteria.date_range_start}::date`); + sqlStatement.append(SQL` AND received_timestamp >= ${searchCriteria.date_range_start}::DATE`); } if (searchCriteria.date_range_end) { - sqlStatement.append(SQL` WHERE received_timestamp <= ${searchCriteria.date_range_end}::date`); + sqlStatement.append(SQL` AND received_timestamp <= ${searchCriteria.date_range_end}::DATE`); } if (searchCriteria.bbox) { diff --git a/api-mobile/src/utils/api-doc-security-filter.ts b/api-mobile/src/utils/api-doc-security-filter.ts index 97e1c3dcf..06c0f23c3 100644 --- a/api-mobile/src/utils/api-doc-security-filter.ts +++ b/api-mobile/src/utils/api-doc-security-filter.ts @@ -4,6 +4,9 @@ import { CacheKeys, XApiDocKeys, XEnumCode } from '../constants/misc'; import { getDBConnection } from '../database/db'; import { getAllCodeSets, IAllCodeSets } from './code-utils'; import { cached } from './utils'; +import { getLogger } from './logger'; + +const defaultLog = getLogger('api-doc-security-filter'); /** * Apply updates/filters to req.apiDoc. @@ -55,6 +58,9 @@ export async function applyApiDocSecurityFilters(req: any) { // re-assign the updated apiDoc to the req req['apiDoc'] = apiDoc; + } catch (error) { + defaultLog.debug({ label: 'applyApiDocSecurityFilters', message: 'error', error }); + throw error; } finally { connection.release(); } diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts index 0596f2c64..47ce47562 100644 --- a/api-mobile/src/utils/auth-utils.ts +++ b/api-mobile/src/utils/auth-utils.ts @@ -256,26 +256,40 @@ export const getUserWithRoles = async function (email: string) { defaultLog.debug({ label: 'getUserWithRoles', message: 'email', email }); if (!email) { - return null; + throw { + status: 503, + message: 'Missing required email' + }; } const connection = await getDBConnection(); if (!connection) { - return null; + throw { + status: 503, + message: 'Failed to establish database connection' + }; } - const sqlStatement: SQLStatement = getUserWithRolesSQL(email); - - if (!sqlStatement) { - return null; - } + try { + const sqlStatement: SQLStatement = getUserWithRolesSQL(email); - const response = await connection.query(sqlStatement.text, sqlStatement.values); + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } - const result = (response && response.rowCount && response.rows[0]) || null; + const response = await connection.query(sqlStatement.text, sqlStatement.values); - connection.release(); + const result = (response && response.rowCount && response.rows[0]) || null; - return result; + return result; + } catch (error) { + defaultLog.debug({ label: 'getUserWithRoles', message: 'error', error }); + throw error; + } finally { + connection.release(); + } }; diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts index 5a88a333e..315960c04 100644 --- a/api-mobile/src/utils/file-utils.ts +++ b/api-mobile/src/utils/file-utils.ts @@ -48,11 +48,11 @@ export async function uploadFileToS3(media: MediaBase64, metadata: Metadata = {} return null; } - const key = `${uuidv4()}-${media.fileName}`; + const key = `${uuidv4()}-${media.mediaName}`; return S3.upload({ Bucket: OBJECT_STORE_BUCKET_NAME, - Body: media.fileBuffer, + Body: media.mediaBuffer, ContentType: media.contentType, Key: key, ACL: S3ACLRole.AUTH_READ, diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts index f7fd971ea..9dea7c9e6 100644 --- a/api-mobile/src/utils/logger.ts +++ b/api-mobile/src/utils/logger.ts @@ -12,6 +12,7 @@ import winston from 'winston'; export interface ILoggerMessage extends winston.Logform.TransformableInfo { timestamp?: string; // Optionally overwrite the default timestamp label: string; // Add a label to this message (generally the name of the parent function) + error?: Error; // An optional error to display } /** @@ -68,10 +69,12 @@ export const getLogger = function (logLabel: string) { winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.errors({ stack: true }), winston.format.colorize(), - winston.format.printf(({ timestamp, level, label, message, ...other }: ILoggerMessage) => { - const namespace = label ? ` ${label} -` : ''; - const otherMeta = other && Object.keys(other).length ? `\n${JSON.stringify(other, undefined, 2)}` : ''; - return `[${timestamp}] (${level}) (${logLabel}):${namespace} ${message} ${otherMeta}`; + winston.format.printf(({ timestamp, level, label, message, error, ...other }: ILoggerMessage) => { + const optionalLabel = (label && ` ${label} -`) || ''; + const optionalError = (error && `\n${error}`) || ''; + const optionalOther = + (other && Object.keys(other).length && `\n${JSON.stringify(other, undefined, 2)}`) || ''; + return `[${timestamp}] (${level}) (${logLabel}):${optionalLabel} ${message} ${optionalError} ${optionalOther}`; }) ) }) diff --git a/api-mobile/test/activity-with-files.json b/api-mobile/test/activity-with-files.json index f3dda4ae4..75ef7281c 100644 --- a/api-mobile/test/activity-with-files.json +++ b/api-mobile/test/activity-with-files.json @@ -45,12 +45,12 @@ }, "media": [ { - "fileName": "BunnyPNG.png", - "encodedFile": "data:image/png;base64,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" + "file_name": "BunnyPNG.png", + "encoded_file": "data:image/png;base64,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" }, { - "fileName": "BunnyJPEG.jpg", - "encodedFile": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX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" + "file_name": "BunnyJPEG.jpg", + "encoded_file": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX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" } ] } From 17eaaa714f961fd942204f944508b6c914ceb877 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Thu, 15 Oct 2020 09:48:18 -0700 Subject: [PATCH 089/194] Add missing error logging --- api-mobile/app.ts | 2 +- api-mobile/src/paths/activity.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api-mobile/app.ts b/api-mobile/app.ts index 86dd55cfe..d29474ccf 100644 --- a/api-mobile/app.ts +++ b/api-mobile/app.ts @@ -29,7 +29,7 @@ app.use(function (req: any, res: any, next: any) { }); // Initialize express-openapi framework -const openAPIFramework = initialize({ +initialize({ apiDoc: './src/openapi/api-doc.json', // base open api spec app: app, // express app to initialize paths: './src/paths', // base folder for endpoint routes diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 7a7a6e84f..13d34972e 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -220,10 +220,10 @@ function uploadMedia(): RequestHandler { try { media = new MediaBase64(rawMedia); } catch (error) { + defaultLog.debug({ label: 'uploadMedia', message: 'error', error }); throw { status: 400, - message: 'Included media was invalid/encoded incorrectly', - errors: [error] + message: 'Included media was invalid/encoded incorrectly' }; } From 6cbf0701b2f79a9507ee9dec37f3d0a98e473936 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 15 Oct 2020 13:37:30 -0700 Subject: [PATCH 090/194] photos storing to DB and S3 --- api-mobile/.env-anissa | 43 +++++++++++++++++++ api-mobile/package-lock.json | 6 +-- api-mobile/src/models/activity.ts | 39 +++++++++++------ api-mobile/src/paths/activity.ts | 26 +++++------ api-mobile/src/paths/activity/{activityId}.ts | 10 ++--- api-mobile/src/queries/activity-queries.ts | 6 +-- api-mobile/src/utils/file-utils.ts | 16 +++---- api-mobile/src/utils/logger.ts | 2 +- 8 files changed, 103 insertions(+), 45 deletions(-) create mode 100644 api-mobile/.env-anissa diff --git a/api-mobile/.env-anissa b/api-mobile/.env-anissa new file mode 100644 index 000000000..a34a82ef6 --- /dev/null +++ b/api-mobile/.env-anissa @@ -0,0 +1,43 @@ +# This env config should be used when running api-mobile via docker-compose (see Makefile commands). + +# ------------------------------------------------------------------------------ +# Project Details +# ------------------------------------------------------------------------------ +PROJECT_NAME=invasivesbc +TAG=mobile + +# ------------------------------------------------------------------------------ +# Environment Details +# ------------------------------------------------------------------------------ +NODE_ENV=local +ENVIRONMENT=local + +# ------------------------------------------------------------------------------ +# Api +# ------------------------------------------------------------------------------ +API_HOST=localhost +API_PORT=3002 + +# ------------------------------------------------------------------------------ +# Postgrest Database +# ------------------------------------------------------------------------------ +DB_HOST=localhost +DB_USER=invasivebc +DB_PASS=invasive@BC#2 +DB_PORT=5556 +DB_DATABASE=InvasivesBC +DB_SCHEMA=invasivesbc + +# ------------------------------------------------------------------------------ +# KeyClock URLS +# ------------------------------------------------------------------------------ +APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs + +# ------------------------------------------------------------------------------ +# Object Store (S3) +# ------------------------------------------------------------------------------ +OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca +OBJECT_STORE_ACCESS_KEY_ID=AKIATWHOVEAS3UK4ZXOF +OBJECT_STORE_SECRET_KEY_ID=vRZPxep4CUTwJeFRtyNuWmSS6b2vlDGEnYlZDYQA +OBJECT_STORE_BUCKET_NAME=invasivesbc-temp diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index 71879eb66..fafadb406 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -413,9 +413,9 @@ "dev": true }, "@types/node": { - "version": "14.0.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.26.tgz", - "integrity": "sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA==" + "version": "14.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", + "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==" }, "@types/pg": { "version": "7.14.4", diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 03ff58347..f70c32603 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -1,5 +1,8 @@ import { SEARCH_LIMIT_MAX } from '../constants/misc'; import { parseBase64DataURLString } from './../utils/file-utils'; +import { getLogger } from '../utils/logger'; + +const defaultLog = getLogger('activity-models'); /** * A single media item. @@ -8,8 +11,10 @@ import { parseBase64DataURLString } from './../utils/file-utils'; * @interface IMediaItem */ export interface IMediaItem { - fileName: string; - encodedFile: string; + //media_date: string; + //description: string; + file_name: string; + encoded_file: string; } /** @@ -19,10 +24,10 @@ export interface IMediaItem { * @class MediaBase64 */ export class MediaBase64 { - fileName: string; - contentType: string; - contentString: string; - fileBuffer: Buffer; + file_name: string; + content_type: string; + content_string: string; + file_buffer: Buffer; /** * Creates an instance of MediaBase64. @@ -31,16 +36,24 @@ export class MediaBase64 { * @memberof MediaBase64 */ constructor(obj: IMediaItem) { - const base64StringParts = parseBase64DataURLString(obj.encodedFile); + const base64StringParts = parseBase64DataURLString(obj.encoded_file); + + //defaultLog.debug({ label: 'uploadActivity', message: 'obj.encoded_file', body: obj.encoded_file}); + //defaultLog.debug({ label: 'uploadActivity', message: 'base64 String parts', body: base64StringParts}); + + // throw { + // status: 503, + // message: 'Just for fun in upload 2' + // }; if (!base64StringParts) { - throw new Error('encodedFile could not be parsed'); + throw new Error('encoded_file could not be parsed'); } - this.contentType = base64StringParts.contentType; - this.contentString = base64StringParts.contentType; - this.fileName = obj.fileName; - this.fileBuffer = Buffer.from(base64StringParts.contentString, 'base64'); + this.content_type = base64StringParts.content_type; + this.content_string = base64StringParts.content_type; + this.file_name = obj.file_name; + this.file_buffer = Buffer.from(base64StringParts.contentString, 'base64'); } } @@ -78,7 +91,7 @@ export class ActivityPostRequestBody { this.activityPostBody = { ...obj, // Strip out any media base64 strings which would convolute the record - media: (obj.media && obj.media.map((item: MediaBase64) => item.fileName)) || [] + media: (obj.media && obj.media.map((item: MediaBase64) => item.file_name)) || [] }; this.activity_type = (obj && obj.activity_type) || null; diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 780e6896e..a8e40eb8b 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -1,16 +1,18 @@ 'use strict'; import { ManagedUpload } from 'aws-sdk/clients/s3'; -import { RequestHandler } from 'express'; +import { RequestHandler, response } from 'express'; import { Operation } from 'express-openapi'; import { SQLStatement } from 'sql-template-strings'; -import { ALL_ROLES, WRITE_ROLES } from './../constants/misc'; -import { getDBConnection } from './../database/db'; -import { ActivityPostRequestBody, ActivitySearchCriteria, IMediaItem, MediaBase64 } from './../models/activity'; -import { getActivitiesSQL, postActivitySQL } from './../queries/activity-queries'; -import { uploadFileToS3 } from './../utils/file-utils'; -import { getLogger } from './../utils/logger'; +import { ALL_ROLES, WRITE_ROLES } from '../constants/misc'; +import { getDBConnection } from '../database/db'; +import { ActivityPostRequestBody, ActivitySearchCriteria, IMediaItem, MediaBase64 } from '../models/activity'; +import { getActivitiesSQL, postActivitySQL } from '../queries/activity-queries'; +import { uploadFileToS3 } from '../utils/file-utils'; +import { getLogger } from '../utils/logger'; import * as geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; +import { json } from 'body-parser'; +import { createPrinter } from 'typescript'; const defaultLog = getLogger('activity-controller'); @@ -233,9 +235,9 @@ function uploadMedia(): RequestHandler { errors: [error] }; } - + const metadata = { - filename: media.fileName, + file_name: media.file_name, username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', email: (req['auth_payload'] && req['auth_payload'].email) || '' }; @@ -248,6 +250,7 @@ function uploadMedia(): RequestHandler { req['mediaKeys'] = results.map(result => result.Key); next(); + }; } @@ -258,8 +261,6 @@ function uploadMedia(): RequestHandler { */ function createActivity(): RequestHandler { return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); - const data = { ...req.body, mediaKeys: req['mediaKeys'] }; const sanitizedActivityData = new ActivityPostRequestBody(data); @@ -288,7 +289,8 @@ function createActivity(): RequestHandler { const result = (response && response.rows && response.rows[0]) || null; return res.status(200).json(result); - } finally { + } + finally { connection.release(); } }; diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 1ed8c2312..80e28612f 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -100,10 +100,10 @@ GET.apiDoc = { items: { type: 'object', properties: { - fileName: { + file_name: { type: 'string' }, - encodedFile: { + encoded_file: { type: 'string', format: 'base64', description: 'A Data URL base64 encoded image', @@ -191,12 +191,12 @@ function getMedia(): RequestHandler { const result: IMediaItem[] = response.map((s3Object: GetObjectOutput) => { // Encode image buffer as base64 - const contentString = Buffer.from(s3Object.Body).toString('base64'); + const content_string = Buffer.from(s3Object.Body).toString('base64'); // Append DATA Url string - const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; + const encoded_file = `data:${s3Object.ContentType};base64,${content_string}`; - const mediaItem: IMediaItem = { fileName: s3Object.Metadata.filename, encodedFile: encodedFile }; + const mediaItem: IMediaItem = { file_name: s3Object.Metadata.fileName, encoded_file: encoded_file }; return mediaItem; }); diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index dff1cadec..4971c6bbe 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -28,7 +28,7 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement `; if (activity.geometry && activity.geometry.length) { - sqlStatement.append(` + sqlStatement.append(SQL` ,public.geography( public.ST_Force2D( public.ST_SetSRID( @@ -39,12 +39,12 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement ) `); } else { - sqlStatement.append(` + sqlStatement.append(SQL` ,null `); } - sqlStatement.append(` + sqlStatement.append(SQL` ,${activity.mediaKeys} ) RETURNING diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts index 5a88a333e..fa1449779 100644 --- a/api-mobile/src/utils/file-utils.ts +++ b/api-mobile/src/utils/file-utils.ts @@ -48,12 +48,12 @@ export async function uploadFileToS3(media: MediaBase64, metadata: Metadata = {} return null; } - const key = `${uuidv4()}-${media.fileName}`; + const key = `${uuidv4()}-${media.file_name}`; return S3.upload({ Bucket: OBJECT_STORE_BUCKET_NAME, - Body: media.fileBuffer, - ContentType: media.contentType, + Body: media.file_buffer, + ContentType: media.content_type, Key: key, ACL: S3ACLRole.AUTH_READ, Metadata: metadata @@ -82,15 +82,15 @@ export async function getS3SignedURL(key: string): Promise { const base64DataURLRegex = new RegExp(/^data:(\w+\/\w+);base64,(.*)/); /** - * Takes a Data URL base64 encoded string, and parses out the contentType (`image/jpeg`, `file/png`, etc) and the + * Takes a Data URL base64 encoded string, and parses out the content_type (`image/jpeg`, `file/png`, etc) and the * base64 contentString. * * @export * @param {string} base64String - * @return {{ contentType: string; contentString: string }} returns an object with the Data URL encoded strings - * contentType and contentString, or null if string is invalid or encoded incorrectly. + * @return {{ contenType: string; contentString: string }} returns an object with the Data URL encoded strings + * content_type and contentString, or null if string is invalid or encoded incorrectly. */ -export function parseBase64DataURLString(base64String: string): { contentType: string; contentString: string } { +export function parseBase64DataURLString(base64String: string): { content_type: string; contentString: string } { if (!base64String) { return null; } @@ -101,5 +101,5 @@ export function parseBase64DataURLString(base64String: string): { contentType: s return null; } - return { contentType: matches[1], contentString: matches[2] }; + return { content_type: matches[1], contentString: matches[2] }; } diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts index f7fd971ea..7f58f6dab 100644 --- a/api-mobile/src/utils/logger.ts +++ b/api-mobile/src/utils/logger.ts @@ -63,7 +63,7 @@ export const getLogger = function (logLabel: string) { return winston.loggers.get(logLabel || 'default', { transports: [ new winston.transports.Console({ - level: process.env.LOG_LEVEL || 'info', + level: process.env.LOG_LEVEL || 'error', format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.errors({ stack: true }), From 67e8e2eb293abdd6e20e97a2e6fbfe8f95f845f2 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 15 Oct 2020 15:07:50 -0700 Subject: [PATCH 091/194] photos storing to DB and S3 (#943) --- api-mobile/.env-anissa | 43 ++ api-mobile/package-lock.json | 548 +++++++++--------- api-mobile/src/models/activity.ts | 7 +- api-mobile/src/paths/activity.ts | 21 +- api-mobile/src/paths/activity/{activityId}.ts | 6 +- api-mobile/src/queries/activity-queries.ts | 6 +- api-mobile/src/utils/file-utils.ts | 10 +- api-mobile/src/utils/logger.ts | 2 +- 8 files changed, 345 insertions(+), 298 deletions(-) create mode 100644 api-mobile/.env-anissa diff --git a/api-mobile/.env-anissa b/api-mobile/.env-anissa new file mode 100644 index 000000000..a34a82ef6 --- /dev/null +++ b/api-mobile/.env-anissa @@ -0,0 +1,43 @@ +# This env config should be used when running api-mobile via docker-compose (see Makefile commands). + +# ------------------------------------------------------------------------------ +# Project Details +# ------------------------------------------------------------------------------ +PROJECT_NAME=invasivesbc +TAG=mobile + +# ------------------------------------------------------------------------------ +# Environment Details +# ------------------------------------------------------------------------------ +NODE_ENV=local +ENVIRONMENT=local + +# ------------------------------------------------------------------------------ +# Api +# ------------------------------------------------------------------------------ +API_HOST=localhost +API_PORT=3002 + +# ------------------------------------------------------------------------------ +# Postgrest Database +# ------------------------------------------------------------------------------ +DB_HOST=localhost +DB_USER=invasivebc +DB_PASS=invasive@BC#2 +DB_PORT=5556 +DB_DATABASE=InvasivesBC +DB_SCHEMA=invasivesbc + +# ------------------------------------------------------------------------------ +# KeyClock URLS +# ------------------------------------------------------------------------------ +APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs + +# ------------------------------------------------------------------------------ +# Object Store (S3) +# ------------------------------------------------------------------------------ +OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca +OBJECT_STORE_ACCESS_KEY_ID=AKIATWHOVEAS3UK4ZXOF +OBJECT_STORE_SECRET_KEY_ID=vRZPxep4CUTwJeFRtyNuWmSS6b2vlDGEnYlZDYQA +OBJECT_STORE_BUCKET_NAME=invasivesbc-temp diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index bc56d4634..fafadb406 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -7,7 +7,7 @@ "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -16,13 +16,13 @@ "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=", "dev": true }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -33,7 +33,7 @@ "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "integrity": "sha1-KQ0I97OBuPlGB9yPRxoSxnX52zE=", "requires": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -89,7 +89,7 @@ "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", "requires": { "@types/connect": "*", "@types/node": "*" @@ -98,18 +98,18 @@ "@types/chai": { "version": "4.2.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", - "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", + "integrity": "sha1-YWCuRUzYna4FrcO7l5l/SItgggE=", "dev": true }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=" }, "@types/connect": { "version": "3.4.33", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "integrity": "sha1-MWEMkB7KVzuHE8MzCrxua59YhUY=", "requires": { "@types/node": "*" } @@ -117,7 +117,7 @@ "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=", "dev": true }, "@types/expect": { @@ -129,7 +129,7 @@ "@types/express": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "integrity": "sha1-QgRb5kdWNtmAE2nNRBjvZc2w3Vk=", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -140,7 +140,7 @@ "@types/express-jwt": { "version": "0.0.42", "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", + "integrity": "sha1-TwTh+t+dGHJZUNwEGAikpK339a4=", "requires": { "@types/express": "*", "@types/express-unless": "*" @@ -158,7 +158,7 @@ "@types/express-serve-static-core": { "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", + "integrity": "sha1-LXs03P0l7GY8JchddmCPiySWZ/E=", "requires": { "@types/node": "*", "@types/qs": "*", @@ -168,7 +168,7 @@ "@types/express-unless": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", + "integrity": "sha1-T0QLkF5Cu/Uzgrgge8M33F/5/R8=", "requires": { "@types/express": "*" } @@ -370,7 +370,7 @@ "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "integrity": "sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=", "dev": true }, "@types/json5": { @@ -383,7 +383,7 @@ "@types/jsonwebtoken": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", - "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", + "integrity": "sha1-JTHV4wCAOqYyebIywBSs94DJgcU=", "dev": true, "requires": { "@types/node": "*" @@ -392,13 +392,13 @@ "@types/memory-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", + "integrity": "sha1-AMr11zfkrMEA9bmBUsY17avbANc=", "dev": true }, "@types/mime": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=" }, "@types/minimatch": { "version": "3.0.3", @@ -409,18 +409,18 @@ "@types/mocha": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", + "integrity": "sha1-gTtP+N2ZINZS4ea0Uf8eNxpFYdI=", "dev": true }, "@types/node": { - "version": "14.0.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.26.tgz", - "integrity": "sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA==" + "version": "14.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", + "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==" }, "@types/pg": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", - "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", + "integrity": "sha1-Fc/P2TAPlP1E5hkaGwuhjS3iCfY=", "dev": true, "requires": { "@types/node": "*", @@ -430,23 +430,23 @@ "@types/pg-types": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", - "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", + "integrity": "sha1-Huu+YrZ3L8x1wYlXqQ+TPRVeAFs=", "dev": true }, "@types/qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" + "integrity": "sha1-pZ6FHBuhbAUT6hI4MN1jmgoVy2o=" }, "@types/range-parser": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=" }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "integrity": "sha1-PSXZQaGEFdOrCS3vhG4TWgi7z1M=", "requires": { "@types/express-serve-static-core": "*", "@types/mime": "*" @@ -503,13 +503,13 @@ "@types/yamljs": { "version": "0.2.31", "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", - "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", + "integrity": "sha1-saYgsRXJbbezv98M9UruDFcTkkU=", "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", + "integrity": "sha1-0UTEmpoP/o3XBLsXnCQ992wRG8k=", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "3.7.1", @@ -523,7 +523,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -532,13 +532,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true } } @@ -546,7 +546,7 @@ "@typescript-eslint/experimental-utils": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", + "integrity": "sha1-qwNsqu1Mhw0iUx1B+TUvMUc2TWE=", "dev": true, "requires": { "@types/json-schema": "^7.0.3", @@ -559,7 +559,7 @@ "@typescript-eslint/parser": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", + "integrity": "sha1-XZzOyxFtEtnGBz6YYcV8mxqogSg=", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", @@ -572,13 +572,13 @@ "@typescript-eslint/types": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", + "integrity": "sha1-kDdWBrL9c8EiT+njl+4VHij6Hgw=", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", + "integrity": "sha1-zh/70PpT801M6FGno2TjkkMvbrM=", "dev": true, "requires": { "@typescript-eslint/types": "3.7.1", @@ -594,7 +594,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -603,13 +603,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true } } @@ -617,7 +617,7 @@ "@typescript-eslint/visitor-keys": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", + "integrity": "sha1-uQGR50797mVr6MWjD0KO0W3aRtE=", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -632,7 +632,7 @@ "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -647,7 +647,7 @@ "acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", "dev": true }, "aggregate-error": { @@ -663,7 +663,7 @@ "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -730,7 +730,7 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", "dev": true }, "ansi-gray": { @@ -745,7 +745,7 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=" }, "ansi-styles": { "version": "3.2.1", @@ -765,7 +765,7 @@ "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -790,13 +790,13 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "integrity": "sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=", "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "requires": { "sprintf-js": "~1.0.2" } @@ -923,7 +923,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", "requires": { "safer-buffer": "~2.1.0" } @@ -931,7 +931,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", "dev": true }, "assign-symbols": { @@ -942,7 +942,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", "dev": true }, "async": { @@ -1022,7 +1022,7 @@ "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", "requires": { "follow-redirects": "1.5.10" } @@ -1117,7 +1117,7 @@ "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", "dev": true }, "bindings": { @@ -1133,12 +1133,12 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=" }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -1155,7 +1155,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -1163,7 +1163,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" } } }, @@ -1238,7 +1238,7 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1247,7 +1247,7 @@ "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -1283,7 +1283,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", "dev": true }, "buffer-shims": { @@ -1295,12 +1295,12 @@ "buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + "integrity": "sha1-zn64Gjj3gp2wnIc/L7t5LAyY7AQ=" }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" }, "cache-base": { "version": "1.0.1", @@ -1363,18 +1363,18 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "integrity": "sha1-dgqnLPION5XoSxKHfODoNzeqKeU=", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -1399,7 +1399,7 @@ "chance": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", - "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", + "integrity": "sha1-lnoKEp4PNC98Zc1dIPWuhwomuK8=", "dev": true }, "check-error": { @@ -1411,7 +1411,7 @@ "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "integrity": "sha1-yE5bPRjZpNd1WP70ZrG/FrvrNFA=", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -1619,7 +1619,7 @@ "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -1641,7 +1641,7 @@ "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -1661,12 +1661,12 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "integrity": "sha1-xQSRR51MG9rtLJztMs98fcI2D3g=" }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "integrity": "sha1-4BKJUNCCuGohaFgHlqCqXWxo2MU=", "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -1675,7 +1675,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -1684,7 +1684,7 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" }, "concat-map": { "version": "0.0.1", @@ -1720,7 +1720,7 @@ "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", "requires": { "safe-buffer": "5.1.2" } @@ -1728,7 +1728,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, "convert-source-map": { "version": "1.7.0", @@ -1742,7 +1742,7 @@ "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" }, "cookie-signature": { "version": "1.0.6", @@ -1752,7 +1752,7 @@ "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=", "dev": true }, "copy-descriptor": { @@ -1773,7 +1773,7 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=", "dev": true }, "core-util-is": { @@ -1818,13 +1818,13 @@ "database-cleaner": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", - "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", + "integrity": "sha1-MGwAFb0uuWjQimvmok/lLdkf1lY=", "dev": true }, "db-migrate": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", - "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", + "integrity": "sha1-ZWdkrYyIiPai6TeGafppGyiVjqI=", "requires": { "balanced-match": "^1.0.0", "bluebird": "^3.1.1", @@ -1960,7 +1960,7 @@ "db-migrate-pg": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", - "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", + "integrity": "sha1-ZkNtutC6OYwFhR0gD3aNtrLlvBo=", "requires": { "bluebird": "^3.1.1", "db-migrate-base": "^2.3.0", @@ -1981,12 +1981,12 @@ "db-migrate-shared": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", - "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" + "integrity": "sha1-YSW+GzpeZhIp/HXVDIX2w/+tvt4=" }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "requires": { "ms": "2.0.0" } @@ -2013,7 +2013,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -2027,7 +2027,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" }, "deep-is": { "version": "0.1.3", @@ -2067,7 +2067,7 @@ "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -2184,7 +2184,7 @@ "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", "dev": true, "requires": { "esutils": "^2.0.2" @@ -2236,7 +2236,7 @@ "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", "requires": { "safe-buffer": "^5.0.1" } @@ -2249,12 +2249,12 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" }, "enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + "integrity": "sha1-+d2S7C1vS7wNXR5k4h1hzUZl58I=" }, "encodeurl": { "version": "1.0.2", @@ -2273,7 +2273,7 @@ "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "integrity": "sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -2282,7 +2282,7 @@ "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -2291,7 +2291,7 @@ "es-abstract": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "integrity": "sha1-kUIHFweFeyysx7iey2cDFsPi1So=", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -2310,7 +2310,7 @@ "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -2382,7 +2382,7 @@ "eslint": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", + "integrity": "sha1-nsv61iIW0iO4Ksn/6n7zREZx0TU=", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2472,7 +2472,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -2496,7 +2496,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, "path-key": { @@ -2508,7 +2508,7 @@ "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", "dev": true }, "shebang-command": { @@ -2529,7 +2529,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", "dev": true }, "supports-color": { @@ -2555,7 +2555,7 @@ "eslint-config-prettier": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", + "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -2564,7 +2564,7 @@ "eslint-plugin-prettier": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "integrity": "sha1-Foq0MVTi6lfbmSos0JfIKBcfdcI=", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -2573,7 +2573,7 @@ "eslint-scope": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2583,7 +2583,7 @@ "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -2592,7 +2592,7 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", "dev": true }, "esm": { @@ -2603,7 +2603,7 @@ "espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", + "integrity": "sha1-HCY9W1E9utCsMMSZG5OsNU6UjWk=", "dev": true, "requires": { "acorn": "^7.3.1", @@ -2614,12 +2614,12 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2636,7 +2636,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -2645,13 +2645,13 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", "dev": true }, "etag": { @@ -2715,7 +2715,7 @@ "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -2752,7 +2752,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -2760,7 +2760,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" } } }, @@ -2799,7 +2799,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" }, "extend-shallow": { "version": "3.0.2", @@ -2887,7 +2887,7 @@ "factory-girl": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", - "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", + "integrity": "sha1-N4yqvgOqx7Mn1H2eKLTwLO0MPAs=", "dev": true, "requires": { "babel-runtime": "^6.11.6", @@ -2909,12 +2909,12 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=" }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", "dev": true }, "fast-glob": { @@ -2951,7 +2951,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" }, "fast-levenshtein": { "version": "2.0.6", @@ -2962,7 +2962,7 @@ "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + "integrity": "sha1-EkqohYmSYfaK7bQqfAgN6dpgh0M=" }, "fastq": { "version": "1.8.0", @@ -2976,12 +2976,12 @@ "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" + "integrity": "sha1-P/tjlUU+Pz7/+FBATwpZtnR/X0E=" }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", "dev": true, "requires": { "flat-cache": "^2.0.1" @@ -2997,7 +2997,7 @@ "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -3015,7 +3015,7 @@ "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -3029,7 +3029,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -3093,7 +3093,7 @@ "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", "dev": true, "requires": { "flatted": "^2.0.0", @@ -3104,7 +3104,7 @@ "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", "dev": true, "requires": { "glob": "^7.1.3" @@ -3115,7 +3115,7 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", "dev": true }, "flush-write-stream": { @@ -3163,12 +3163,12 @@ "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + "integrity": "sha1-JsrYAXlnrqhzG8QpYdBKPVmIrMw=" }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", "requires": { "debug": "=3.1.0" } @@ -3200,7 +3200,7 @@ "formidable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", + "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=", "dev": true }, "forwarded": { @@ -3297,7 +3297,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", "dev": true }, "functional-red-black-tree": { @@ -3309,7 +3309,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=" }, "get-func-name": { "version": "2.0.0", @@ -3320,7 +3320,7 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", "dev": true }, "get-stream": { @@ -3357,7 +3357,7 @@ "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3370,7 +3370,7 @@ "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -3673,7 +3673,7 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", "dev": true }, "growl": { @@ -3777,7 +3777,7 @@ "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -3792,7 +3792,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", "dev": true }, "has-value": { @@ -3865,7 +3865,7 @@ "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", "dev": true }, "http-cache-semantics": { @@ -3877,7 +3877,7 @@ "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -3894,7 +3894,7 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -3907,7 +3907,7 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", "dev": true }, "ignore-by-default": { @@ -3919,7 +3919,7 @@ "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3966,7 +3966,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" }, "interpret": { "version": "2.2.0", @@ -3982,7 +3982,7 @@ "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" }, "is-absolute": { "version": "1.0.0", @@ -4020,7 +4020,7 @@ "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -4034,7 +4034,7 @@ "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", "dev": true }, "is-ci": { @@ -4067,7 +4067,7 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", "dev": true }, "is-descriptor": { @@ -4105,12 +4105,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=" }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", "requires": { "is-extglob": "^2.1.1" } @@ -4140,7 +4140,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", "dev": true }, "is-obj": { @@ -4189,7 +4189,7 @@ "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -4265,13 +4265,13 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", "dev": true }, "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4309,7 +4309,7 @@ "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "integrity": "sha1-AOceC431TCEhofJhN98igGc7zA0=", "requires": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -4326,7 +4326,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" } } }, @@ -4339,7 +4339,7 @@ "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -4378,7 +4378,7 @@ "jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", "requires": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -4458,7 +4458,7 @@ "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + "integrity": "sha1-4sVwo4ADiPtEQH6FFTHB1nCwYbM=" }, "last-run": { "version": "1.1.1", @@ -4509,7 +4509,7 @@ "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -4534,7 +4534,7 @@ "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" }, "load-json-file": { "version": "4.0.0", @@ -4569,7 +4569,7 @@ "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=" }, "lodash.defaults": { "version": "4.2.0", @@ -4634,7 +4634,7 @@ "logform": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "integrity": "sha1-QPA20ZFh/Ha2irUP3H/klVREkvI=", "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -4646,7 +4646,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" } } }, @@ -4668,7 +4668,7 @@ "lru-memoizer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", + "integrity": "sha1-XGtDZZx4rQ6eZb+BqeXvHuEJot0=", "requires": { "lodash.clonedeep": "^4.5.0", "lru-cache": "~4.0.0" @@ -4701,7 +4701,7 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=", "dev": true }, "make-iterator": { @@ -4892,17 +4892,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", "requires": { "mime-db": "1.44.0" } @@ -4916,7 +4916,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } @@ -4924,7 +4924,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" }, "mixin-deep": { "version": "1.3.2", @@ -4948,7 +4948,7 @@ "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", "requires": { "minimist": "^1.2.5" } @@ -5170,7 +5170,7 @@ "moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + "integrity": "sha1-i/9OPiaiNiIN/j423nVrbrqgEF0=" }, "mongodb-uri": { "version": "0.9.7", @@ -5191,7 +5191,7 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" }, "nan": { "version": "2.14.1", @@ -5232,7 +5232,7 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" }, "next-tick": { "version": "1.0.0", @@ -5249,7 +5249,7 @@ "nock": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", - "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", + "integrity": "sha1-n4HwRJmvaof5xBmgI5ILYj1xURA=", "dev": true, "requires": { "debug": "^4.1.0", @@ -5261,7 +5261,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "dev": true, "requires": { "ms": "^2.1.1" @@ -5270,7 +5270,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true } } @@ -5337,7 +5337,7 @@ "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -5349,7 +5349,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", "dev": true }, "normalize-url": { @@ -5421,13 +5421,13 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "integrity": "sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA=", "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", "dev": true }, "object-visit": { @@ -5441,7 +5441,7 @@ "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", "dev": true, "requires": { "define-properties": "^1.1.2", @@ -5517,7 +5517,7 @@ "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "integrity": "sha1-4GvBdK7SFO1Y7e3lc7Qzu/gny0U=", "requires": { "fn.name": "1.x.x" } @@ -5615,7 +5615,7 @@ "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -5653,7 +5653,7 @@ "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", "requires": { "p-try": "^2.0.0" } @@ -5679,7 +5679,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" }, "package-json": { "version": "6.5.0", @@ -5704,12 +5704,12 @@ "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + "integrity": "sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ=" }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", "dev": true, "requires": { "callsites": "^3.0.0" @@ -5757,7 +5757,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" }, "pascalcase": { "version": "0.1.1", @@ -5790,7 +5790,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" }, "path-root": { "version": "0.1.1", @@ -5825,7 +5825,7 @@ "pg": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", - "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", + "integrity": "sha1-lBODMA047vUey4igGIzsRBq2TYE=", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -5847,27 +5847,27 @@ "pg-connection-string": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", - "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" + "integrity": "sha1-wT/LhMKY0L+puhK0DdbCPZRvVdY=" }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + "integrity": "sha1-lDvUY79bcbQXARX4D478mgwOt4w=" }, "pg-pool": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", - "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" + "integrity": "sha1-X0r8D1gGNlmu76lS02r0n6KLMOA=" }, "pg-protocol": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", - "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" + "integrity": "sha1-KKFJLN4RZG/y0tBr3uQqO6BfEmw=" }, "pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "integrity": "sha1-LQJQ1jZFT3z6O2rgOC/fqAYyVKM=", "requires": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -5887,7 +5887,7 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", "dev": true }, "pidtree": { @@ -5953,7 +5953,7 @@ "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + "integrity": "sha1-SPj84FT7xpZxmZMpuINLdyZS2C4=" }, "postgres-bytea": { "version": "1.0.0", @@ -5968,7 +5968,7 @@ "postgres-interval": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "integrity": "sha1-tGDILLFYdQd4iBmgaqD//bNURpU=", "requires": { "xtend": "^4.0.0" } @@ -5976,7 +5976,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", "dev": true }, "prepend-http": { @@ -5988,13 +5988,13 @@ "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "integrity": "sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -6015,7 +6015,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", "dev": true }, "prompt": { @@ -6067,13 +6067,13 @@ "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "integrity": "sha1-QM3tqxgIXHkjNOZPCsFyVtOPmkU=", "dev": true }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" @@ -6128,7 +6128,7 @@ "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + "integrity": "sha1-kJCykNH5FyjTwi5UhDykSupatoc=" }, "querystring": { "version": "0.2.0", @@ -6138,12 +6138,12 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -6154,7 +6154,7 @@ "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6291,7 +6291,7 @@ "readdirp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "integrity": "sha1-mERY0ToeQuLp9YQbEp4WLzaa/xc=", "dev": true, "requires": { "picomatch": "^2.0.7" @@ -6308,7 +6308,7 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", "dev": true }, "regex-not": { @@ -6323,7 +6323,7 @@ "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", "dev": true }, "registry-auth-token": { @@ -6448,12 +6448,12 @@ "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=" }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", "requires": { "path-parse": "^1.0.6" } @@ -6470,7 +6470,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", "dev": true }, "resolve-options": { @@ -6515,7 +6515,7 @@ "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", "requires": { "glob": "^7.1.3" } @@ -6529,7 +6529,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "safe-regex": { "version": "1.1.0", @@ -6542,7 +6542,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" }, "sax": { "version": "1.2.1", @@ -6552,7 +6552,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" }, "semver-diff": { "version": "3.1.1", @@ -6583,7 +6583,7 @@ "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -6603,7 +6603,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" }, @@ -6618,14 +6618,14 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" } } }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -6662,7 +6662,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" }, "shebang-command": { "version": "1.2.0", @@ -6709,13 +6709,13 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=", "dev": true }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -6856,7 +6856,7 @@ "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -6885,7 +6885,7 @@ "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -6895,13 +6895,13 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -6911,13 +6911,13 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", "dev": true }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "integrity": "sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=", "requires": { "through": "2" } @@ -7007,7 +7007,7 @@ "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7037,7 +7037,7 @@ "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7047,7 +7047,7 @@ "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7066,7 +7066,7 @@ "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -7089,7 +7089,7 @@ "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "integrity": "sha1-Rg6g29t9WxG8T3jeulZfhqF44Sg=", "dev": true, "requires": { "component-emitter": "^1.2.0", @@ -7139,7 +7139,7 @@ "supertest": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", - "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", + "integrity": "sha1-wiNNvdbcebbxW5nI1ld7kOTOPzY=", "dev": true, "requires": { "methods": "^1.1.2", @@ -7149,7 +7149,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7195,7 +7195,7 @@ "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", "dev": true, "requires": { "ajv": "^6.10.2", @@ -7207,13 +7207,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", "dev": true }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", "dev": true }, "is-fullwidth-code-point": { @@ -7225,7 +7225,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -7236,7 +7236,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -7258,7 +7258,7 @@ "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" }, "text-table": { "version": "0.2.0", @@ -7400,7 +7400,7 @@ "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", "dev": true, "requires": { "is-number": "^7.0.0" @@ -7460,7 +7460,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" }, "touch": { "version": "3.1.0", @@ -7474,7 +7474,7 @@ "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk=" }, "ts-log": { "version": "2.1.4", @@ -7484,7 +7484,7 @@ "ts-mocha": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", - "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", + "integrity": "sha1-8VSbSLRvU9euHcy7JjE8eHmssZA=", "dev": true, "requires": { "ts-node": "7.0.1", @@ -7500,7 +7500,7 @@ "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", "dev": true, "requires": { "arrify": "^1.0.0", @@ -7524,7 +7524,7 @@ "ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "integrity": "sha1-7uA3ZGM7EjTd03+NuewQt17H+40=", "dev": true, "requires": { "arg": "^4.1.0", @@ -7537,7 +7537,7 @@ "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "integrity": "sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=", "dev": true, "optional": true, "requires": { @@ -7569,13 +7569,13 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=", "dev": true }, "tsutils": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", "dev": true, "requires": { "tslib": "^1.8.1" @@ -7584,7 +7584,7 @@ "tunnel-ssh": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", - "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", + "integrity": "sha1-swH3czxz3OoWFkZrnIe2B/SVi0U=", "requires": { "debug": "2.6.9", "lodash.defaults": "^4.1.0", @@ -7594,7 +7594,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -7610,7 +7610,7 @@ "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -7619,19 +7619,19 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", "dev": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", "dev": true }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -7655,7 +7655,7 @@ "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + "integrity": "sha1-mNYApevcOPQMsndSLxLcgA6eJfo=" }, "unc-path-regex": { "version": "0.1.2", @@ -7867,7 +7867,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", "requires": { "punycode": "^2.1.0" }, @@ -7938,7 +7938,7 @@ "v8-compile-cache": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", "dev": true }, "v8flags": { @@ -7952,7 +7952,7 @@ "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -7962,7 +7962,7 @@ "validator": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", - "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" + "integrity": "sha1-+IETaEc9IXOp2GEVcrWMV4PyI78=" }, "value-or-function": { "version": "3.0.0", @@ -8154,7 +8154,7 @@ "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "integrity": "sha1-rmFyBCyvspeGr6PQnI/4M6t8kXA=", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.1.0", @@ -8170,7 +8170,7 @@ "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + "integrity": "sha1-s6JoXF67ZB094C0WEALGD8n4VyA=" }, "is-stream": { "version": "2.0.0", @@ -8180,7 +8180,7 @@ "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8205,7 +8205,7 @@ "winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "integrity": "sha1-F69RjappDVsuzMqnrPeyDKeSXlk=", "requires": { "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" @@ -8243,7 +8243,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", "dev": true }, "wrap-ansi": { @@ -8301,7 +8301,7 @@ "write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -8342,12 +8342,12 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" }, "yallist": { "version": "2.1.2", @@ -8357,7 +8357,7 @@ "yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "integrity": "sha1-3AYL8mdEezn3ME6bK/votafdsDs=", "requires": { "argparse": "^1.0.7", "glob": "^7.0.5" diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index bd760b9b2..33f7a1a3a 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -1,5 +1,8 @@ import { SEARCH_LIMIT_MAX } from '../constants/misc'; import { parseBase64DataURLString } from './../utils/file-utils'; +import { getLogger } from '../utils/logger'; + +const defaultLog = getLogger('activity-models'); /** * A single media item. @@ -45,8 +48,8 @@ export class MediaBase64 { throw new Error('media encoded_file could not be parsed'); } - this.contentType = base64StringParts.contentType; - this.contentString = base64StringParts.contentType; + this.contentType = base64StringParts.content_type; + this.contentString = base64StringParts.content_type; this.mediaName = obj.file_name; this.mediaBuffer = Buffer.from(base64StringParts.contentString, 'base64'); this.mediaDescription = obj.description || null; diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 13d34972e..630bf4682 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -1,16 +1,18 @@ 'use strict'; import { ManagedUpload } from 'aws-sdk/clients/s3'; -import { RequestHandler } from 'express'; +import { RequestHandler, response } from 'express'; import { Operation } from 'express-openapi'; import { SQLStatement } from 'sql-template-strings'; -import { ALL_ROLES, WRITE_ROLES } from './../constants/misc'; -import { getDBConnection } from './../database/db'; -import { ActivityPostRequestBody, ActivitySearchCriteria, IMediaItem, MediaBase64 } from './../models/activity'; -import { getActivitiesSQL, postActivitySQL } from './../queries/activity-queries'; -import { uploadFileToS3 } from './../utils/file-utils'; -import { getLogger } from './../utils/logger'; +import { ALL_ROLES, WRITE_ROLES } from '../constants/misc'; +import { getDBConnection } from '../database/db'; +import { ActivityPostRequestBody, ActivitySearchCriteria, IMediaItem, MediaBase64 } from '../models/activity'; +import { getActivitiesSQL, postActivitySQL } from '../queries/activity-queries'; +import { uploadFileToS3 } from '../utils/file-utils'; +import { getLogger } from '../utils/logger'; import * as geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; +import { json } from 'body-parser'; +import { createPrinter } from 'typescript'; const defaultLog = getLogger('activity'); @@ -226,7 +228,7 @@ function uploadMedia(): RequestHandler { message: 'Included media was invalid/encoded incorrectly' }; } - + const metadata = { filename: media.mediaName, username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', @@ -241,6 +243,7 @@ function uploadMedia(): RequestHandler { req['mediaKeys'] = results.map(result => result.Key); next(); + }; } @@ -251,8 +254,6 @@ function uploadMedia(): RequestHandler { */ function createActivity(): RequestHandler { return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); - const data = { ...req.body, mediaKeys: req['mediaKeys'] }; const sanitizedActivityData = new ActivityPostRequestBody(data); diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 085cf5333..96a5162cf 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -122,14 +122,14 @@ function getMedia(): RequestHandler { const result: IMediaItem[] = response.map((s3Object: GetObjectOutput) => { // Encode image buffer as base64 - const contentString = Buffer.from(s3Object.Body).toString('base64'); + const content_string = Buffer.from(s3Object.Body).toString('base64'); // Append DATA Url string - const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; + const encoded_file = `data:${s3Object.ContentType};base64,${content_string}`; const mediaItem: IMediaItem = { file_name: (s3Object && s3Object.Metadata && s3Object.Metadata.filename) || null, - encoded_file: encodedFile, + encoded_file: encoded_file, description: (s3Object && s3Object.Metadata && s3Object.Metadata.description) || null, media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.media_date) || null }; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index d41059a55..5de0a97f0 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -28,7 +28,7 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement `; if (activity.geometry && activity.geometry.length) { - sqlStatement.append(` + sqlStatement.append(SQL` ,public.geography( public.ST_Force2D( public.ST_SetSRID( @@ -39,12 +39,12 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement ) `); } else { - sqlStatement.append(` + sqlStatement.append(SQL` ,null `); } - sqlStatement.append(` + sqlStatement.append(SQL` ,${activity.mediaKeys} ) RETURNING diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts index 315960c04..a8c2e1dfa 100644 --- a/api-mobile/src/utils/file-utils.ts +++ b/api-mobile/src/utils/file-utils.ts @@ -82,15 +82,15 @@ export async function getS3SignedURL(key: string): Promise { const base64DataURLRegex = new RegExp(/^data:(\w+\/\w+);base64,(.*)/); /** - * Takes a Data URL base64 encoded string, and parses out the contentType (`image/jpeg`, `file/png`, etc) and the + * Takes a Data URL base64 encoded string, and parses out the content_type (`image/jpeg`, `file/png`, etc) and the * base64 contentString. * * @export * @param {string} base64String - * @return {{ contentType: string; contentString: string }} returns an object with the Data URL encoded strings - * contentType and contentString, or null if string is invalid or encoded incorrectly. + * @return {{ contenType: string; contentString: string }} returns an object with the Data URL encoded strings + * content_type and contentString, or null if string is invalid or encoded incorrectly. */ -export function parseBase64DataURLString(base64String: string): { contentType: string; contentString: string } { +export function parseBase64DataURLString(base64String: string): { content_type: string; contentString: string } { if (!base64String) { return null; } @@ -101,5 +101,5 @@ export function parseBase64DataURLString(base64String: string): { contentType: s return null; } - return { contentType: matches[1], contentString: matches[2] }; + return { content_type: matches[1], contentString: matches[2] }; } diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts index 9dea7c9e6..d04b57927 100644 --- a/api-mobile/src/utils/logger.ts +++ b/api-mobile/src/utils/logger.ts @@ -64,7 +64,7 @@ export const getLogger = function (logLabel: string) { return winston.loggers.get(logLabel || 'default', { transports: [ new winston.transports.Console({ - level: process.env.LOG_LEVEL || 'info', + level: process.env.LOG_LEVEL || 'error', format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.errors({ stack: true }), From bac30adf196f3b808754ab33532a65c317e70b0f Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 15 Oct 2020 16:23:58 -0700 Subject: [PATCH 092/194] removed unneccesary file --- api-mobile/.env-anissa | 43 ------------------------------------------ 1 file changed, 43 deletions(-) delete mode 100644 api-mobile/.env-anissa diff --git a/api-mobile/.env-anissa b/api-mobile/.env-anissa deleted file mode 100644 index a34a82ef6..000000000 --- a/api-mobile/.env-anissa +++ /dev/null @@ -1,43 +0,0 @@ -# This env config should be used when running api-mobile via docker-compose (see Makefile commands). - -# ------------------------------------------------------------------------------ -# Project Details -# ------------------------------------------------------------------------------ -PROJECT_NAME=invasivesbc -TAG=mobile - -# ------------------------------------------------------------------------------ -# Environment Details -# ------------------------------------------------------------------------------ -NODE_ENV=local -ENVIRONMENT=local - -# ------------------------------------------------------------------------------ -# Api -# ------------------------------------------------------------------------------ -API_HOST=localhost -API_PORT=3002 - -# ------------------------------------------------------------------------------ -# Postgrest Database -# ------------------------------------------------------------------------------ -DB_HOST=localhost -DB_USER=invasivebc -DB_PASS=invasive@BC#2 -DB_PORT=5556 -DB_DATABASE=InvasivesBC -DB_SCHEMA=invasivesbc - -# ------------------------------------------------------------------------------ -# KeyClock URLS -# ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs - -# ------------------------------------------------------------------------------ -# Object Store (S3) -# ------------------------------------------------------------------------------ -OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca -OBJECT_STORE_ACCESS_KEY_ID=AKIATWHOVEAS3UK4ZXOF -OBJECT_STORE_SECRET_KEY_ID=vRZPxep4CUTwJeFRtyNuWmSS6b2vlDGEnYlZDYQA -OBJECT_STORE_BUCKET_NAME=invasivesbc-temp From 730dd62f23feb23e6da7bc0361b5df6502d836a6 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 15 Oct 2020 16:25:18 -0700 Subject: [PATCH 093/194] adjust logger level --- api-mobile/src/utils/logger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts index d04b57927..9dea7c9e6 100644 --- a/api-mobile/src/utils/logger.ts +++ b/api-mobile/src/utils/logger.ts @@ -64,7 +64,7 @@ export const getLogger = function (logLabel: string) { return winston.loggers.get(logLabel || 'default', { transports: [ new winston.transports.Console({ - level: process.env.LOG_LEVEL || 'error', + level: process.env.LOG_LEVEL || 'info', format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.errors({ stack: true }), From e6cc9dd0949ad0ea2f788c0ff202036029ed6581 Mon Sep 17 00:00:00 2001 From: Anissa Agahchen Date: Thu, 15 Oct 2020 16:41:52 -0700 Subject: [PATCH 094/194] code cleanup --- api-mobile/.env-anissa | 43 ---------------------------------- api-mobile/src/utils/logger.ts | 2 +- 2 files changed, 1 insertion(+), 44 deletions(-) delete mode 100644 api-mobile/.env-anissa diff --git a/api-mobile/.env-anissa b/api-mobile/.env-anissa deleted file mode 100644 index a34a82ef6..000000000 --- a/api-mobile/.env-anissa +++ /dev/null @@ -1,43 +0,0 @@ -# This env config should be used when running api-mobile via docker-compose (see Makefile commands). - -# ------------------------------------------------------------------------------ -# Project Details -# ------------------------------------------------------------------------------ -PROJECT_NAME=invasivesbc -TAG=mobile - -# ------------------------------------------------------------------------------ -# Environment Details -# ------------------------------------------------------------------------------ -NODE_ENV=local -ENVIRONMENT=local - -# ------------------------------------------------------------------------------ -# Api -# ------------------------------------------------------------------------------ -API_HOST=localhost -API_PORT=3002 - -# ------------------------------------------------------------------------------ -# Postgrest Database -# ------------------------------------------------------------------------------ -DB_HOST=localhost -DB_USER=invasivebc -DB_PASS=invasive@BC#2 -DB_PORT=5556 -DB_DATABASE=InvasivesBC -DB_SCHEMA=invasivesbc - -# ------------------------------------------------------------------------------ -# KeyClock URLS -# ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs - -# ------------------------------------------------------------------------------ -# Object Store (S3) -# ------------------------------------------------------------------------------ -OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca -OBJECT_STORE_ACCESS_KEY_ID=AKIATWHOVEAS3UK4ZXOF -OBJECT_STORE_SECRET_KEY_ID=vRZPxep4CUTwJeFRtyNuWmSS6b2vlDGEnYlZDYQA -OBJECT_STORE_BUCKET_NAME=invasivesbc-temp diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts index d04b57927..9dea7c9e6 100644 --- a/api-mobile/src/utils/logger.ts +++ b/api-mobile/src/utils/logger.ts @@ -64,7 +64,7 @@ export const getLogger = function (logLabel: string) { return winston.loggers.get(logLabel || 'default', { transports: [ new winston.transports.Console({ - level: process.env.LOG_LEVEL || 'error', + level: process.env.LOG_LEVEL || 'info', format: winston.format.combine( winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), winston.format.errors({ stack: true }), From 1e11cae71b9af4004ea38f508bc27666f12a099b Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Fri, 16 Oct 2020 23:12:46 -0700 Subject: [PATCH 095/194] General cleanup and fixes. (#945) --- api-mobile/src/models/activity.ts | 19 ++++++++------- api-mobile/src/paths/activity.ts | 21 ++++++++++------- api-mobile/src/paths/activity/{activityId}.ts | 12 ++++++---- api-mobile/src/paths/media.ts | 2 +- api-mobile/src/queries/activity-queries.ts | 23 ++++++++++++++++--- api-mobile/src/utils/file-utils.ts | 8 +++---- 6 files changed, 56 insertions(+), 29 deletions(-) diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 33f7a1a3a..79b37c6df 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -1,8 +1,5 @@ import { SEARCH_LIMIT_MAX } from '../constants/misc'; import { parseBase64DataURLString } from './../utils/file-utils'; -import { getLogger } from '../utils/logger'; - -const defaultLog = getLogger('activity-models'); /** * A single media item. @@ -48,8 +45,8 @@ export class MediaBase64 { throw new Error('media encoded_file could not be parsed'); } - this.contentType = base64StringParts.content_type; - this.contentString = base64StringParts.content_type; + this.contentType = base64StringParts.contentType; + this.contentString = base64StringParts.contentType; this.mediaName = obj.file_name; this.mediaBuffer = Buffer.from(base64StringParts.contentString, 'base64'); this.mediaDescription = obj.description || null; @@ -76,7 +73,7 @@ export class ActivityPostRequestBody { received_timestamp: string; - geometry: object[]; + geoJSONFeature: GeoJSON.Feature[]; mediaKeys: string[]; @@ -91,7 +88,13 @@ export class ActivityPostRequestBody { this.activityPostBody = { ...obj, // Strip out any media base64 strings which would convolute the record - media: (obj.media && obj.media.map((item: MediaBase64) => item.mediaName)) || [] + media: + (obj.media && + obj.media.map((item: IMediaItem) => { + delete item.encoded_file; + return item; + })) || + [] }; this.activity_type = (obj && obj.activity_type) || null; @@ -103,7 +106,7 @@ export class ActivityPostRequestBody { this.received_timestamp = new Date().toISOString(); - this.geometry = (obj && obj.geometry && obj.geometry.length) || []; + this.geoJSONFeature = (obj && obj.geometry) || []; this.mediaKeys = (obj && obj.mediaKeys) || null; } diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 630bf4682..bf2358c6f 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -1,7 +1,7 @@ 'use strict'; import { ManagedUpload } from 'aws-sdk/clients/s3'; -import { RequestHandler, response } from 'express'; +import { RequestHandler } from 'express'; import { Operation } from 'express-openapi'; import { SQLStatement } from 'sql-template-strings'; import { ALL_ROLES, WRITE_ROLES } from '../constants/misc'; @@ -11,8 +11,6 @@ import { getActivitiesSQL, postActivitySQL } from '../queries/activity-queries'; import { uploadFileToS3 } from '../utils/file-utils'; import { getLogger } from '../utils/logger'; import * as geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; -import { json } from 'body-parser'; -import { createPrinter } from 'typescript'; const defaultLog = getLogger('activity'); @@ -204,6 +202,8 @@ POST.apiDoc = { */ function uploadMedia(): RequestHandler { return async (req, res, next) => { + defaultLog.debug({ label: 'activity', message: 'uploadMedia', body: req.body }); + if (!req.body.media || !req.body.media.length) { // no media objects included, skipping media upload step return next(); @@ -218,7 +218,7 @@ function uploadMedia(): RequestHandler { return; } - let media; + let media: MediaBase64; try { media = new MediaBase64(rawMedia); } catch (error) { @@ -228,9 +228,13 @@ function uploadMedia(): RequestHandler { message: 'Included media was invalid/encoded incorrectly' }; } - + + console.log(media); + const metadata = { - filename: media.mediaName, + filename: media.mediaName || '', + description: media.mediaDescription || '', + date: media.mediaDate || '', username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', email: (req['auth_payload'] && req['auth_payload'].email) || '' }; @@ -243,7 +247,6 @@ function uploadMedia(): RequestHandler { req['mediaKeys'] = results.map(result => result.Key); next(); - }; } @@ -254,6 +257,8 @@ function uploadMedia(): RequestHandler { */ function createActivity(): RequestHandler { return async (req, res, next) => { + defaultLog.debug({ label: 'activity', message: 'createActivity', body: req.params }); + const data = { ...req.body, mediaKeys: req['mediaKeys'] }; const sanitizedActivityData = new ActivityPostRequestBody(data); @@ -298,7 +303,7 @@ function createActivity(): RequestHandler { */ function getActivitiesBySearchFilterCriteria(): RequestHandler { return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'body', body: req.body }); + defaultLog.debug({ label: 'activity', message: 'getActivitiesBySearchFilterCriteria', body: req.body }); const sanitizedSearchCriteria = new ActivitySearchCriteria(req.body); diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 96a5162cf..1c64b9f5c 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -64,7 +64,7 @@ GET.apiDoc = { */ function getActivity(): RequestHandler { return async (req, res, next) => { - defaultLog.debug({ label: '{activityId}', message: 'params', body: req.params }); + defaultLog.debug({ label: '{activityId}', message: 'getActivity', body: req.params }); const activityId = Number(req.params.activityId); @@ -105,6 +105,8 @@ function getActivity(): RequestHandler { function getMedia(): RequestHandler { return async (req, res, next) => { + defaultLog.debug({ label: '{activityId}', message: 'getMedia', body: req.body }); + const activity = req['activity']; if (!activity || !activity.media_keys || !activity.media_keys.length) { @@ -122,16 +124,16 @@ function getMedia(): RequestHandler { const result: IMediaItem[] = response.map((s3Object: GetObjectOutput) => { // Encode image buffer as base64 - const content_string = Buffer.from(s3Object.Body).toString('base64'); + const contentString = Buffer.from(s3Object.Body).toString('base64'); // Append DATA Url string - const encoded_file = `data:${s3Object.ContentType};base64,${content_string}`; + const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; const mediaItem: IMediaItem = { file_name: (s3Object && s3Object.Metadata && s3Object.Metadata.filename) || null, - encoded_file: encoded_file, + encoded_file: encodedFile, description: (s3Object && s3Object.Metadata && s3Object.Metadata.description) || null, - media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.media_date) || null + media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.date) || null }; return mediaItem; diff --git a/api-mobile/src/paths/media.ts b/api-mobile/src/paths/media.ts index 6e27ae342..e162d828b 100644 --- a/api-mobile/src/paths/media.ts +++ b/api-mobile/src/paths/media.ts @@ -85,7 +85,7 @@ function getMedia(): RequestHandler { file_name: (s3Object && s3Object.Metadata && s3Object.Metadata.filename) || null, encoded_file: encodedFile, description: (s3Object && s3Object.Metadata && s3Object.Metadata.description) || null, - media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.media_date) || null + media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.date) || null }; return mediaItem; diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 5de0a97f0..5a97e84f6 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -12,6 +12,8 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement return null; } + console.log(activity); + const sqlStatement: SQLStatement = SQL` INSERT INTO activity_incoming_data ( activity_type, @@ -27,12 +29,15 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement ${activity.activityPostBody} `; - if (activity.geometry && activity.geometry.length) { + if (activity.geoJSONFeature && activity.geoJSONFeature.length) { + // Note: this is only saving the `geometry` part of the feature, and not any assocaited `properties`. + const geometry = JSON.stringify(activity.geoJSONFeature[0].geometry); + sqlStatement.append(SQL` ,public.geography( public.ST_Force2D( public.ST_SetSRID( - public.ST_GeomFromGeoJSON('${JSON.stringify(activity.geometry[0])}') + public.ST_GeomFromGeoJSON(${geometry}) ,4326 ) ) @@ -44,13 +49,25 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement `); } - sqlStatement.append(SQL` + if (activity.mediaKeys) { + sqlStatement.append(SQL` ,${activity.mediaKeys} + `); + } else { + sqlStatement.append(SQL` + ,null + `); + } + + sqlStatement.append(SQL` ) RETURNING activity_incoming_data_id; `); + console.log(sqlStatement.text); + console.log(sqlStatement.values); + return sqlStatement; }; diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts index a8c2e1dfa..1ed4e87b4 100644 --- a/api-mobile/src/utils/file-utils.ts +++ b/api-mobile/src/utils/file-utils.ts @@ -82,15 +82,15 @@ export async function getS3SignedURL(key: string): Promise { const base64DataURLRegex = new RegExp(/^data:(\w+\/\w+);base64,(.*)/); /** - * Takes a Data URL base64 encoded string, and parses out the content_type (`image/jpeg`, `file/png`, etc) and the + * Takes a Data URL base64 encoded string, and parses out the contentType (`image/jpeg`, `file/png`, etc) and the * base64 contentString. * * @export * @param {string} base64String * @return {{ contenType: string; contentString: string }} returns an object with the Data URL encoded strings - * content_type and contentString, or null if string is invalid or encoded incorrectly. + * contentType and contentString, or null if string is invalid or encoded incorrectly. */ -export function parseBase64DataURLString(base64String: string): { content_type: string; contentString: string } { +export function parseBase64DataURLString(base64String: string): { contentType: string; contentString: string } { if (!base64String) { return null; } @@ -101,5 +101,5 @@ export function parseBase64DataURLString(base64String: string): { content_type: return null; } - return { content_type: matches[1], contentString: matches[2] }; + return { contentType: matches[1], contentString: matches[2] }; } From ed3c328f378d1088b013906e313f88db8664e16e Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Mon, 19 Oct 2020 12:11:31 -0700 Subject: [PATCH 096/194] 61: add spatial support to activity search (#946) --- api-mobile/package-lock.json | 542 ++++++++++----------- api-mobile/src/models/activity.ts | 4 +- api-mobile/src/queries/activity-queries.ts | 26 +- 3 files changed, 289 insertions(+), 283 deletions(-) diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json index fafadb406..4bcdbc5da 100644 --- a/api-mobile/package-lock.json +++ b/api-mobile/package-lock.json @@ -7,7 +7,7 @@ "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -16,13 +16,13 @@ "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -33,7 +33,7 @@ "@dabh/diagnostics": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha1-KQ0I97OBuPlGB9yPRxoSxnX52zE=", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", "requires": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -89,7 +89,7 @@ "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", "requires": { "@types/connect": "*", "@types/node": "*" @@ -98,18 +98,18 @@ "@types/chai": { "version": "4.2.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", - "integrity": "sha1-YWCuRUzYna4FrcO7l5l/SItgggE=", + "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", "dev": true }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=" + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/connect": { "version": "3.4.33", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha1-MWEMkB7KVzuHE8MzCrxua59YhUY=", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", "requires": { "@types/node": "*" } @@ -117,7 +117,7 @@ "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha1-HuMNeVRMqE1o1LPNsK9PIFZj3S0=", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, "@types/expect": { @@ -129,7 +129,7 @@ "@types/express": { "version": "4.17.7", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha1-QgRb5kdWNtmAE2nNRBjvZc2w3Vk=", + "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -140,7 +140,7 @@ "@types/express-jwt": { "version": "0.0.42", "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha1-TwTh+t+dGHJZUNwEGAikpK339a4=", + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", "requires": { "@types/express": "*", "@types/express-unless": "*" @@ -158,7 +158,7 @@ "@types/express-serve-static-core": { "version": "4.17.9", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha1-LXs03P0l7GY8JchddmCPiySWZ/E=", + "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -168,7 +168,7 @@ "@types/express-unless": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha1-T0QLkF5Cu/Uzgrgge8M33F/5/R8=", + "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", "requires": { "@types/express": "*" } @@ -370,7 +370,7 @@ "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha1-3M5EMOZLRDuolF8CkPtWStW6xt0=", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, "@types/json5": { @@ -383,7 +383,7 @@ "@types/jsonwebtoken": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", - "integrity": "sha1-JTHV4wCAOqYyebIywBSs94DJgcU=", + "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", "dev": true, "requires": { "@types/node": "*" @@ -392,13 +392,13 @@ "@types/memory-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha1-AMr11zfkrMEA9bmBUsY17avbANc=", + "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", "dev": true }, "@types/mime": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=" + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" }, "@types/minimatch": { "version": "3.0.3", @@ -409,7 +409,7 @@ "@types/mocha": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha1-gTtP+N2ZINZS4ea0Uf8eNxpFYdI=", + "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", "dev": true }, "@types/node": { @@ -420,7 +420,7 @@ "@types/pg": { "version": "7.14.4", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", - "integrity": "sha1-Fc/P2TAPlP1E5hkaGwuhjS3iCfY=", + "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", "dev": true, "requires": { "@types/node": "*", @@ -430,23 +430,23 @@ "@types/pg-types": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", - "integrity": "sha1-Huu+YrZ3L8x1wYlXqQ+TPRVeAFs=", + "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", "dev": true }, "@types/qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha1-pZ6FHBuhbAUT6hI4MN1jmgoVy2o=" + "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" }, "@types/range-parser": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=" + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha1-PSXZQaGEFdOrCS3vhG4TWgi7z1M=", + "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", "requires": { "@types/express-serve-static-core": "*", "@types/mime": "*" @@ -503,13 +503,13 @@ "@types/yamljs": { "version": "0.2.31", "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", - "integrity": "sha1-saYgsRXJbbezv98M9UruDFcTkkU=", + "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha1-0UTEmpoP/o3XBLsXnCQ992wRG8k=", + "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "3.7.1", @@ -523,7 +523,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -532,13 +532,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -546,7 +546,7 @@ "@typescript-eslint/experimental-utils": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha1-qwNsqu1Mhw0iUx1B+TUvMUc2TWE=", + "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", @@ -559,7 +559,7 @@ "@typescript-eslint/parser": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha1-XZzOyxFtEtnGBz6YYcV8mxqogSg=", + "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", @@ -572,13 +572,13 @@ "@typescript-eslint/types": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha1-kDdWBrL9c8EiT+njl+4VHij6Hgw=", + "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", "dev": true }, "@typescript-eslint/typescript-estree": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha1-zh/70PpT801M6FGno2TjkkMvbrM=", + "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", "dev": true, "requires": { "@typescript-eslint/types": "3.7.1", @@ -594,7 +594,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -603,13 +603,13 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } @@ -617,7 +617,7 @@ "@typescript-eslint/visitor-keys": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha1-uQGR50797mVr6MWjD0KO0W3aRtE=", + "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -632,7 +632,7 @@ "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -647,7 +647,7 @@ "acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "aggregate-error": { @@ -663,7 +663,7 @@ "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha1-GMWvOKER3etPJpe9eNaKvByr1wY=", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -730,7 +730,7 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-gray": { @@ -745,7 +745,7 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=" + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "3.2.1", @@ -765,7 +765,7 @@ "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -790,13 +790,13 @@ "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha1-Jp/HrVuOQstjyJbVZmAXJhwUQIk=", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" } @@ -923,7 +923,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { "safer-buffer": "~2.1.0" } @@ -931,7 +931,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, "assign-symbols": { @@ -942,7 +942,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, "async": { @@ -1022,7 +1022,7 @@ "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { "follow-redirects": "1.5.10" } @@ -1117,7 +1117,7 @@ "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, "bindings": { @@ -1133,12 +1133,12 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -1155,7 +1155,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -1163,7 +1163,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -1238,7 +1238,7 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1247,7 +1247,7 @@ "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { "fill-range": "^7.0.1" @@ -1283,7 +1283,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "buffer-shims": { @@ -1295,12 +1295,12 @@ "buffer-writer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha1-zn64Gjj3gp2wnIc/L7t5LAyY7AQ=" + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cache-base": { "version": "1.0.1", @@ -1363,18 +1363,18 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha1-dgqnLPION5XoSxKHfODoNzeqKeU=", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { "assertion-error": "^1.1.0", @@ -1399,7 +1399,7 @@ "chance": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", - "integrity": "sha1-lnoKEp4PNC98Zc1dIPWuhwomuK8=", + "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", "dev": true }, "check-error": { @@ -1411,7 +1411,7 @@ "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha1-yE5bPRjZpNd1WP70ZrG/FrvrNFA=", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -1619,7 +1619,7 @@ "color": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -1641,7 +1641,7 @@ "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -1661,12 +1661,12 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha1-xQSRR51MG9rtLJztMs98fcI2D3g=" + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha1-4BKJUNCCuGohaFgHlqCqXWxo2MU=", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -1675,7 +1675,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -1684,7 +1684,7 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=" + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { "version": "0.0.1", @@ -1720,7 +1720,7 @@ "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { "safe-buffer": "5.1.2" } @@ -1728,7 +1728,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { "version": "1.7.0", @@ -1742,7 +1742,7 @@ "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=" + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, "cookie-signature": { "version": "1.0.6", @@ -1752,7 +1752,7 @@ "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, "copy-descriptor": { @@ -1773,7 +1773,7 @@ "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, "core-util-is": { @@ -1818,13 +1818,13 @@ "database-cleaner": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", - "integrity": "sha1-MGwAFb0uuWjQimvmok/lLdkf1lY=", + "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", "dev": true }, "db-migrate": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", - "integrity": "sha1-ZWdkrYyIiPai6TeGafppGyiVjqI=", + "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", "requires": { "balanced-match": "^1.0.0", "bluebird": "^3.1.1", @@ -1960,7 +1960,7 @@ "db-migrate-pg": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", - "integrity": "sha1-ZkNtutC6OYwFhR0gD3aNtrLlvBo=", + "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", "requires": { "bluebird": "^3.1.1", "db-migrate-base": "^2.3.0", @@ -1981,12 +1981,12 @@ "db-migrate-shared": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", - "integrity": "sha1-YSW+GzpeZhIp/HXVDIX2w/+tvt4=" + "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -2013,7 +2013,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -2027,7 +2027,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.3", @@ -2067,7 +2067,7 @@ "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -2184,7 +2184,7 @@ "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -2236,7 +2236,7 @@ "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { "safe-buffer": "^5.0.1" } @@ -2249,12 +2249,12 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha1-+d2S7C1vS7wNXR5k4h1hzUZl58I=" + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "encodeurl": { "version": "1.0.2", @@ -2273,7 +2273,7 @@ "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -2282,7 +2282,7 @@ "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -2291,7 +2291,7 @@ "es-abstract": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha1-kUIHFweFeyysx7iey2cDFsPi1So=", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -2310,7 +2310,7 @@ "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -2382,7 +2382,7 @@ "eslint": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha1-nsv61iIW0iO4Ksn/6n7zREZx0TU=", + "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2472,7 +2472,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -2496,7 +2496,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "path-key": { @@ -2508,7 +2508,7 @@ "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha1-YElisFK4HtB4aq6EOJ/7pw/9OTg=", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "shebang-command": { @@ -2529,7 +2529,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { @@ -2555,7 +2555,7 @@ "eslint-config-prettier": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha1-9tIjjBKQ0ByFmotcH301KgsNqLE=", + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -2564,7 +2564,7 @@ "eslint-plugin-prettier": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha1-Foq0MVTi6lfbmSos0JfIKBcfdcI=", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -2573,7 +2573,7 @@ "eslint-scope": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -2583,7 +2583,7 @@ "eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -2592,7 +2592,7 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "esm": { @@ -2603,7 +2603,7 @@ "espree": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha1-HCY9W1E9utCsMMSZG5OsNU6UjWk=", + "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", "dev": true, "requires": { "acorn": "^7.3.1", @@ -2614,12 +2614,12 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2636,7 +2636,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -2645,13 +2645,13 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -2715,7 +2715,7 @@ "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -2752,7 +2752,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -2760,7 +2760,7 @@ "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -2799,7 +2799,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -2887,7 +2887,7 @@ "factory-girl": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", - "integrity": "sha1-N4yqvgOqx7Mn1H2eKLTwLO0MPAs=", + "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", "dev": true, "requires": { "babel-runtime": "^6.11.6", @@ -2909,12 +2909,12 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "fast-glob": { @@ -2951,7 +2951,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -2962,7 +2962,7 @@ "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha1-EkqohYmSYfaK7bQqfAgN6dpgh0M=" + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, "fastq": { "version": "1.8.0", @@ -2976,12 +2976,12 @@ "fecha": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha1-P/tjlUU+Pz7/+FBATwpZtnR/X0E=" + "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { "flat-cache": "^2.0.1" @@ -2997,7 +2997,7 @@ "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -3015,7 +3015,7 @@ "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -3029,7 +3029,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -3093,7 +3093,7 @@ "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { "flatted": "^2.0.0", @@ -3104,7 +3104,7 @@ "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -3115,7 +3115,7 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "flush-write-stream": { @@ -3163,12 +3163,12 @@ "fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha1-JsrYAXlnrqhzG8QpYdBKPVmIrMw=" + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" } @@ -3200,7 +3200,7 @@ "formidable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=", + "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", "dev": true }, "forwarded": { @@ -3297,7 +3297,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "functional-red-black-tree": { @@ -3309,7 +3309,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=" + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { "version": "2.0.0", @@ -3320,7 +3320,7 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, "get-stream": { @@ -3357,7 +3357,7 @@ "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3370,7 +3370,7 @@ "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -3673,7 +3673,7 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "growl": { @@ -3777,7 +3777,7 @@ "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -3792,7 +3792,7 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -3865,7 +3865,7 @@ "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "http-cache-semantics": { @@ -3877,7 +3877,7 @@ "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -3894,7 +3894,7 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -3907,7 +3907,7 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "ignore-by-default": { @@ -3919,7 +3919,7 @@ "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3966,7 +3966,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "interpret": { "version": "2.2.0", @@ -3982,7 +3982,7 @@ "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=" + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-absolute": { "version": "1.0.0", @@ -4020,7 +4020,7 @@ "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { "binary-extensions": "^2.0.0" @@ -4034,7 +4034,7 @@ "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-ci": { @@ -4067,7 +4067,7 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-descriptor": { @@ -4105,12 +4105,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } @@ -4140,7 +4140,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-obj": { @@ -4189,7 +4189,7 @@ "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -4265,13 +4265,13 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4309,7 +4309,7 @@ "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha1-AOceC431TCEhofJhN98igGc7zA0=", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", "requires": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -4326,7 +4326,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4339,7 +4339,7 @@ "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "requires": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -4378,7 +4378,7 @@ "jws": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -4458,7 +4458,7 @@ "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha1-4sVwo4ADiPtEQH6FFTHB1nCwYbM=" + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "last-run": { "version": "1.1.1", @@ -4509,7 +4509,7 @@ "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -4534,7 +4534,7 @@ "limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha1-j5KiWzsWxhMSk6DMg0tKg4oqp8I=" + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" }, "load-json-file": { "version": "4.0.0", @@ -4569,7 +4569,7 @@ "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha1-5I3e2+MLMyF4PFtDAfvTU7weSks=" + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.defaults": { "version": "4.2.0", @@ -4634,7 +4634,7 @@ "logform": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha1-QPA20ZFh/Ha2irUP3H/klVREkvI=", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -4646,7 +4646,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4668,7 +4668,7 @@ "lru-memoizer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha1-XGtDZZx4rQ6eZb+BqeXvHuEJot0=", + "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", "requires": { "lodash.clonedeep": "^4.5.0", "lru-cache": "~4.0.0" @@ -4701,7 +4701,7 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, "make-iterator": { @@ -4892,17 +4892,17 @@ "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "requires": { "mime-db": "1.44.0" } @@ -4916,7 +4916,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } @@ -4924,7 +4924,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mixin-deep": { "version": "1.3.2", @@ -4948,7 +4948,7 @@ "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { "minimist": "^1.2.5" } @@ -5170,7 +5170,7 @@ "moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha1-i/9OPiaiNiIN/j423nVrbrqgEF0=" + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" }, "mongodb-uri": { "version": "0.9.7", @@ -5191,7 +5191,7 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=" + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nan": { "version": "2.14.1", @@ -5232,7 +5232,7 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "next-tick": { "version": "1.0.0", @@ -5249,7 +5249,7 @@ "nock": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", - "integrity": "sha1-n4HwRJmvaof5xBmgI5ILYj1xURA=", + "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", "dev": true, "requires": { "debug": "^4.1.0", @@ -5261,7 +5261,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -5270,7 +5270,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -5337,7 +5337,7 @@ "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -5349,7 +5349,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, "normalize-url": { @@ -5421,13 +5421,13 @@ "object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA=", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { @@ -5441,7 +5441,7 @@ "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { "define-properties": "^1.1.2", @@ -5517,7 +5517,7 @@ "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha1-4GvBdK7SFO1Y7e3lc7Qzu/gny0U=", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "requires": { "fn.name": "1.x.x" } @@ -5615,7 +5615,7 @@ "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -5653,7 +5653,7 @@ "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { "p-try": "^2.0.0" } @@ -5679,7 +5679,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "package-json": { "version": "6.5.0", @@ -5704,12 +5704,12 @@ "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ=" + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" @@ -5757,7 +5757,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -5790,7 +5790,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-root": { "version": "0.1.1", @@ -5825,7 +5825,7 @@ "pg": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", - "integrity": "sha1-lBODMA047vUey4igGIzsRBq2TYE=", + "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", @@ -5847,27 +5847,27 @@ "pg-connection-string": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", - "integrity": "sha1-wT/LhMKY0L+puhK0DdbCPZRvVdY=" + "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" }, "pg-int8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha1-lDvUY79bcbQXARX4D478mgwOt4w=" + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, "pg-pool": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", - "integrity": "sha1-X0r8D1gGNlmu76lS02r0n6KLMOA=" + "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" }, "pg-protocol": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", - "integrity": "sha1-KKFJLN4RZG/y0tBr3uQqO6BfEmw=" + "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" }, "pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha1-LQJQ1jZFT3z6O2rgOC/fqAYyVKM=", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "requires": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -5887,7 +5887,7 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, "pidtree": { @@ -5953,7 +5953,7 @@ "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha1-SPj84FT7xpZxmZMpuINLdyZS2C4=" + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" }, "postgres-bytea": { "version": "1.0.0", @@ -5968,7 +5968,7 @@ "postgres-interval": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha1-tGDILLFYdQd4iBmgaqD//bNURpU=", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "requires": { "xtend": "^4.0.0" } @@ -5976,7 +5976,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prepend-http": { @@ -5988,13 +5988,13 @@ "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha1-1tVigkVSQ/L5LMFxZpLAiqMVItQ=", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -6015,7 +6015,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "prompt": { @@ -6067,13 +6067,13 @@ "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha1-QM3tqxgIXHkjNOZPCsFyVtOPmkU=", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" @@ -6128,7 +6128,7 @@ "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha1-kJCykNH5FyjTwi5UhDykSupatoc=" + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" }, "querystring": { "version": "0.2.0", @@ -6138,12 +6138,12 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -6154,7 +6154,7 @@ "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -6291,7 +6291,7 @@ "readdirp": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha1-mERY0ToeQuLp9YQbEp4WLzaa/xc=", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "dev": true, "requires": { "picomatch": "^2.0.7" @@ -6308,7 +6308,7 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, "regex-not": { @@ -6323,7 +6323,7 @@ "regexpp": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "registry-auth-token": { @@ -6448,12 +6448,12 @@ "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=" + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } @@ -6470,7 +6470,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-options": { @@ -6515,7 +6515,7 @@ "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -6529,7 +6529,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -6542,7 +6542,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sax": { "version": "1.2.1", @@ -6552,7 +6552,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { "version": "3.1.1", @@ -6583,7 +6583,7 @@ "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -6603,7 +6603,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" }, @@ -6618,14 +6618,14 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -6662,7 +6662,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=" + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "shebang-command": { "version": "1.2.0", @@ -6709,13 +6709,13 @@ "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -6856,7 +6856,7 @@ "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -6885,7 +6885,7 @@ "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -6895,13 +6895,13 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -6911,13 +6911,13 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "requires": { "through": "2" } @@ -7007,7 +7007,7 @@ "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7037,7 +7037,7 @@ "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7047,7 +7047,7 @@ "string.prototype.trimstart": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -7066,7 +7066,7 @@ "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -7089,7 +7089,7 @@ "superagent": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha1-Rg6g29t9WxG8T3jeulZfhqF44Sg=", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", "dev": true, "requires": { "component-emitter": "^1.2.0", @@ -7139,7 +7139,7 @@ "supertest": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", - "integrity": "sha1-wiNNvdbcebbxW5nI1ld7kOTOPzY=", + "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", "dev": true, "requires": { "methods": "^1.1.2", @@ -7149,7 +7149,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7195,7 +7195,7 @@ "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -7207,13 +7207,13 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "is-fullwidth-code-point": { @@ -7225,7 +7225,7 @@ "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -7236,7 +7236,7 @@ "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -7258,7 +7258,7 @@ "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU=" + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" }, "text-table": { "version": "0.2.0", @@ -7400,7 +7400,7 @@ "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -7460,7 +7460,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "touch": { "version": "3.1.0", @@ -7474,7 +7474,7 @@ "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk=" + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "ts-log": { "version": "2.1.4", @@ -7484,7 +7484,7 @@ "ts-mocha": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", - "integrity": "sha1-8VSbSLRvU9euHcy7JjE8eHmssZA=", + "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", "dev": true, "requires": { "ts-node": "7.0.1", @@ -7500,7 +7500,7 @@ "ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", "dev": true, "requires": { "arrify": "^1.0.0", @@ -7524,7 +7524,7 @@ "ts-node": { "version": "8.10.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha1-7uA3ZGM7EjTd03+NuewQt17H+40=", + "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", "dev": true, "requires": { "arg": "^4.1.0", @@ -7537,7 +7537,7 @@ "tsconfig-paths": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, "optional": true, "requires": { @@ -7569,13 +7569,13 @@ "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tsutils": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha1-7XGZF/EcoN7lhicrKsSeAVot11k=", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -7584,7 +7584,7 @@ "tunnel-ssh": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", - "integrity": "sha1-swH3czxz3OoWFkZrnIe2B/SVi0U=", + "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", "requires": { "debug": "2.6.9", "lodash.defaults": "^4.1.0", @@ -7594,7 +7594,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { "ms": "2.0.0" } @@ -7610,7 +7610,7 @@ "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" @@ -7619,19 +7619,19 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -7655,7 +7655,7 @@ "typescript": { "version": "3.9.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha1-mNYApevcOPQMsndSLxLcgA6eJfo=" + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" }, "unc-path-regex": { "version": "0.1.2", @@ -7867,7 +7867,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { "punycode": "^2.1.0" }, @@ -7938,7 +7938,7 @@ "v8-compile-cache": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", "dev": true }, "v8flags": { @@ -7952,7 +7952,7 @@ "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -7962,7 +7962,7 @@ "validator": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", - "integrity": "sha1-+IETaEc9IXOp2GEVcrWMV4PyI78=" + "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" }, "value-or-function": { "version": "3.0.0", @@ -8154,7 +8154,7 @@ "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha1-rmFyBCyvspeGr6PQnI/4M6t8kXA=", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.1.0", @@ -8170,7 +8170,7 @@ "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha1-s6JoXF67ZB094C0WEALGD8n4VyA=" + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, "is-stream": { "version": "2.0.0", @@ -8180,7 +8180,7 @@ "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8205,7 +8205,7 @@ "winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha1-F69RjappDVsuzMqnrPeyDKeSXlk=", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", "requires": { "readable-stream": "^2.3.7", "triple-beam": "^1.2.0" @@ -8243,7 +8243,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrap-ansi": { @@ -8301,7 +8301,7 @@ "write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -8342,12 +8342,12 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "2.1.2", @@ -8357,7 +8357,7 @@ "yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha1-3AYL8mdEezn3ME6bK/votafdsDs=", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", "requires": { "argparse": "^1.0.7", "glob": "^7.0.5" diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 79b37c6df..1f546b5c2 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -130,7 +130,7 @@ export class ActivitySearchCriteria { include_media: boolean; - bbox: GeoJSON.BBox; + search_polygon: GeoJSON.Polygon; /** * Creates an instance of ActivitySearchCriteria. @@ -150,7 +150,7 @@ export class ActivitySearchCriteria { this.include_media = (obj && obj.include_media) || false; - this.bbox = (obj && obj.bbox) || null; + this.search_polygon = (obj && obj.search_polygon) || null; } setPage(page: number): number { diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 5a97e84f6..1fdef4c6c 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -12,8 +12,6 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement return null; } - console.log(activity); - const sqlStatement: SQLStatement = SQL` INSERT INTO activity_incoming_data ( activity_type, @@ -37,8 +35,8 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement ,public.geography( public.ST_Force2D( public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${geometry}) - ,4326 + public.ST_GeomFromGeoJSON(${geometry}), + 4326 ) ) ) @@ -65,9 +63,6 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement activity_incoming_data_id; `); - console.log(sqlStatement.text); - console.log(sqlStatement.values); - return sqlStatement; }; @@ -96,9 +91,20 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta sqlStatement.append(SQL` AND received_timestamp <= ${searchCriteria.date_range_end}::DATE`); } - if (searchCriteria.bbox) { - // TODO Add Spatial query support using `searchCriteria.bbox` - sqlStatement.append(SQL` `); + if (searchCriteria.search_polygon) { + sqlStatement.append(SQL` + AND public.ST_INTERSECTS( + geog, + public.geography( + public.ST_Force2D( + public.ST_SetSRID( + public.ST_GeomFromGeoJSON(${searchCriteria.search_polygon}), + 4326 + ) + ) + ) + ) + `); } if (searchCriteria.limit) { From a3503b43291ae9ea8d5fa0904ad0444f91b76c71 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Thu, 22 Oct 2020 14:50:26 -0700 Subject: [PATCH 097/194] Change the SSO url to *.oidc.gov.bc.ca (#948) --- .config/config.json | 12 ++++++------ .github/workflows/e2e.yml | 2 +- api-mobile/.pipeline/lib/api.test.js | 2 +- api-mobile/env_config/env.docker | 4 ++-- api-mobile/env_config/env.local | 4 ++-- api-mobile/openshift/api.dc.yaml | 2 +- api-mobile/openshift/api.test.yaml | 2 +- api-mobile/openshift/db.migrations.yaml | 2 +- api-mobile/src/utils/auth-utils.ts | 2 +- api/.pipeline/lib/test.api.js | 2 +- api/docs/user.info.json | 2 +- api/openshift/dc.yaml | 2 +- api/openshift/seed.pod.yaml | 2 +- api/openshift/setup.pod.yaml | 2 +- api/openshift/test.pod.yaml | 2 +- app/lucy/src/app/constants/app-constants.ts | 2 +- app/openshift/app.dc.yaml | 2 +- env_config/env.docker | 4 ++-- loadTest/README.md | 2 +- loadTest/app/env.example | 2 +- loadTest/openshift/job.yml | 2 +- loadTest/openshift/pod.yml | 2 +- .../integration/postman/DEV.postman_environment.json | 4 ++-- .../postman/lucy-api-mobile.postman_collection.json | 6 +++--- 24 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.config/config.json b/.config/config.json index 53a8c6110..0fc58489c 100644 --- a/.config/config.json +++ b/.config/config.json @@ -32,23 +32,23 @@ "prod": "api-mobile-invasivesbc.pathfinder.gov.bc.ca" }, "certificateURL": { - "dev": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", - "test": "https://sso-test.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", - "prod": "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + "dev": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", + "test": "https://test.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", + "prod": "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" }, "sso": { "dev": { - "url": "https://sso-dev.pathfinder.gov.bc.ca", + "url": "https://dev.oidc.gov.bc.ca", "clientId": "invasives-bc", "realm": "dfmlcg7z" }, "test": { - "url": "https://sso-test.pathfinder.gov.bc.ca", + "url": "https://test.oidc.gov.bc.ca", "clientId": "invasives-bc", "realm": "dfmlcg7z" }, "prod": { - "url": "https://sso.pathfinder.gov.bc.ca", + "url": "https://oidc.gov.bc.ca", "clientId": "invasives-bc", "realm": "dfmlcg7z" } diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index f50e349d5..d9f107f73 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -59,6 +59,6 @@ jobs: env: host: 'http://localhost:3033' with: - env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=dfmlcg7z,authClientId=invasives-bc,authUrl=https://sso-dev.pathfinder.gov.bc.ca/auth' + env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=dfmlcg7z,authClientId=invasives-bc,authUrl=https://dev.oidc.gov.bc.ca/auth' working-directory: './app/cypress-e2e' record: true \ No newline at end of file diff --git a/api-mobile/.pipeline/lib/api.test.js b/api-mobile/.pipeline/lib/api.test.js index dcd5ebf76..9eb84987a 100644 --- a/api-mobile/.pipeline/lib/api.test.js +++ b/api-mobile/.pipeline/lib/api.test.js @@ -44,7 +44,7 @@ module.exports = settings => { ENVIRONMENT: phases[phase].env || 'dev', DB_SERVICE_NAME: `${phases[phase].dbName}-postgresql${phases[phase].suffix}`, IMAGE: imageStream.image.dockerImageReference, - CERTIFICATE_URL: 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs', + CERTIFICATE_URL: 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs', DB_CLEAN_UP: phases[phase].migrationInfo.cleanup, DB_SEED: phases[phase].migrationInfo.dbSeed } diff --git a/api-mobile/env_config/env.docker b/api-mobile/env_config/env.docker index ff3c60115..fae793bfc 100644 --- a/api-mobile/env_config/env.docker +++ b/api-mobile/env_config/env.docker @@ -33,8 +33,8 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs # ------------------------------------------------------------------------------ # Object Store (S3) diff --git a/api-mobile/env_config/env.local b/api-mobile/env_config/env.local index 7c053e1f2..6530270c1 100644 --- a/api-mobile/env_config/env.local +++ b/api-mobile/env_config/env.local @@ -32,8 +32,8 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs # ------------------------------------------------------------------------------ # Object Store (S3) diff --git a/api-mobile/openshift/api.dc.yaml b/api-mobile/openshift/api.dc.yaml index 125461a06..3e9a5414a 100644 --- a/api-mobile/openshift/api.dc.yaml +++ b/api-mobile/openshift/api.dc.yaml @@ -272,7 +272,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - name: CPU_REQ value: "500m" - name: CPU_LIMIT diff --git a/api-mobile/openshift/api.test.yaml b/api-mobile/openshift/api.test.yaml index a93957ad8..c2381cce5 100644 --- a/api-mobile/openshift/api.test.yaml +++ b/api-mobile/openshift/api.test.yaml @@ -28,7 +28,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - name: CPU_REQ value: "500m" - name: CPU_LIMIT diff --git a/api-mobile/openshift/db.migrations.yaml b/api-mobile/openshift/db.migrations.yaml index 752c87aa5..ab1bebbc6 100644 --- a/api-mobile/openshift/db.migrations.yaml +++ b/api-mobile/openshift/db.migrations.yaml @@ -32,7 +32,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - name: CPU_REQ value: "500m" - name: CPU_LIMIT diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts index 47ce47562..9e56491ab 100644 --- a/api-mobile/src/utils/auth-utils.ts +++ b/api-mobile/src/utils/auth-utils.ts @@ -12,7 +12,7 @@ const defaultLog = getLogger('auth-utils'); const APP_CERTIFICATE_URL = process.env.APP_CERTIFICATE_URL || - 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs'; + 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs'; const TOKEN_IGNORE_EXPIRATION: boolean = process.env.TOKEN_IGNORE_EXPIRATION === 'true' || diff --git a/api/.pipeline/lib/test.api.js b/api/.pipeline/lib/test.api.js index 7ca6f0c85..3b5b4dc41 100644 --- a/api/.pipeline/lib/test.api.js +++ b/api/.pipeline/lib/test.api.js @@ -35,7 +35,7 @@ module.exports = (settings) => { 'ENVIRONMENT': phases[phase].env || 'dev', 'DB_SERVICE_NAME': `${phases[phase].name}-postgresql${phases[phase].suffix}`, 'IMAGE': imageStream.image.dockerImageReference, - 'CERTIFICATE_URL': 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs', + 'CERTIFICATE_URL': 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs', 'DB_MIGRATION_TYPE': phases[phase].migrationInfo.type, 'DB_CLEAN_UP': phases[phase].migrationInfo.cleanup, 'DB_SEED': phases[phase].migrationInfo.dbSeed diff --git a/api/docs/user.info.json b/api/docs/user.info.json index ccc0a88ed..e30fa5ef0 100644 --- a/api/docs/user.info.json +++ b/api/docs/user.info.json @@ -3,7 +3,7 @@ "exp": 1557947030, "nbf": 0, "iat": 1557946730, - "iss": "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z", + "iss": "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z", "aud": "lucy", "sub": "32e33e03-9d12-43a5-88e6-ce031fc36be8", "typ": "Bearer", diff --git a/api/openshift/dc.yaml b/api/openshift/dc.yaml index cda174f99..3709e4cd4 100644 --- a/api/openshift/dc.yaml +++ b/api/openshift/dc.yaml @@ -270,7 +270,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/api/openshift/seed.pod.yaml b/api/openshift/seed.pod.yaml index 34844b16f..fb374c739 100644 --- a/api/openshift/seed.pod.yaml +++ b/api/openshift/seed.pod.yaml @@ -28,7 +28,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/api/openshift/setup.pod.yaml b/api/openshift/setup.pod.yaml index 54910cdcb..5e9936f60 100644 --- a/api/openshift/setup.pod.yaml +++ b/api/openshift/setup.pod.yaml @@ -28,7 +28,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/api/openshift/test.pod.yaml b/api/openshift/test.pod.yaml index a68cb4677..1adb01446 100644 --- a/api/openshift/test.pod.yaml +++ b/api/openshift/test.pod.yaml @@ -28,7 +28,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/app/lucy/src/app/constants/app-constants.ts b/app/lucy/src/app/constants/app-constants.ts index 7e3c2c36e..3f1412c26 100755 --- a/app/lucy/src/app/constants/app-constants.ts +++ b/app/lucy/src/app/constants/app-constants.ts @@ -66,7 +66,7 @@ export class AppConstants { // SSO static SSOConstants = { SSO_CLIENT_ID : `invasives-bc`, - SSO_BASE_URL : `https://sso-dev.pathfinder.gov.bc.ca`, + SSO_BASE_URL : `https://dev.oidc.gov.bc.ca`, SSO_REALM_NAME : `dfmlcg7z`, SSO_LOGIN_REDIRECT_URI : `http://${window.location.host}`, }; diff --git a/app/openshift/app.dc.yaml b/app/openshift/app.dc.yaml index 1da582ca6..ead73c703 100644 --- a/app/openshift/app.dc.yaml +++ b/app/openshift/app.dc.yaml @@ -233,7 +233,7 @@ parameters: value: '2Gi' - name: SSO_URL description: Key clock login url - value: 'https://sso.pathfinder.gov.bc.ca' + value: 'https://oidc.gov.bc.ca' - name: SSO_CLIENT_ID description: Client Id for application value: "lucy" diff --git a/env_config/env.docker b/env_config/env.docker index 53a829a94..d5c705060 100644 --- a/env_config/env.docker +++ b/env_config/env.docker @@ -44,8 +44,8 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://sso.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs # ------------------------------------------------------------------------------ # Mailer Config diff --git a/loadTest/README.md b/loadTest/README.md index af53e2d55..fda142cfc 100644 --- a/loadTest/README.md +++ b/loadTest/README.md @@ -25,7 +25,7 @@ The __/loadTest__ directory under root contains all resources and source code fi TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details - AUTH_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms + AUTH_URL=https://dev.oidc.gov.bc.ca/auth/realms REALM=dfmlcg7z CLIENT_ID=invasives-bc ``` diff --git a/loadTest/app/env.example b/loadTest/app/env.example index 527f3b663..b61ddc5fe 100644 --- a/loadTest/app/env.example +++ b/loadTest/app/env.example @@ -2,6 +2,6 @@ TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details -AUTH_URL=https://sso-dev.pathfinder.gov.bc.ca/auth/realms +AUTH_URL=https://dev.oidc.gov.bc.ca/auth/realms REALM=dfmlcg7z CLIENT_ID=invasives-bc \ No newline at end of file diff --git a/loadTest/openshift/job.yml b/loadTest/openshift/job.yml index 1c2287668..013d733dc 100644 --- a/loadTest/openshift/job.yml +++ b/loadTest/openshift/job.yml @@ -20,7 +20,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://sso-test.pathfinder.gov.bc.ca/auth/realms" + value: "https://test.oidc.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: dfmlcg7z diff --git a/loadTest/openshift/pod.yml b/loadTest/openshift/pod.yml index ec297ad58..79df70398 100644 --- a/loadTest/openshift/pod.yml +++ b/loadTest/openshift/pod.yml @@ -19,7 +19,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://sso-test.pathfinder.gov.bc.ca/auth/realms" + value: "https://test.oidc.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: dfmlcg7z diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json index bb63822a8..4eb0805ad 100644 --- a/testing/integration/postman/DEV.postman_environment.json +++ b/testing/integration/postman/DEV.postman_environment.json @@ -4,7 +4,7 @@ "values": [ { "key": "auth_host", - "value": "https://sso-dev.pathfinder.gov.bc.ca", + "value": "https://dev.oidc.gov.bc.ca", "enabled": true }, { @@ -39,7 +39,7 @@ }, { "key": "KEYCLOAK_URL", - "value": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "value": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", "enabled": true }, { diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index 7a6038c16..f9b2bc57c 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -1014,7 +1014,7 @@ "protocolProfileBehavior": {} }, { - "name": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "name": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", "event": [ { "listen": "test", @@ -1072,7 +1072,7 @@ ] }, "url": { - "raw": "https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "raw": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", "protocol": "https", "host": [ "sso-dev", @@ -1112,7 +1112,7 @@ "type": "text/javascript", "exec": [ "const echoPostRequest = {", - " url: 'https://sso-dev.pathfinder.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token',", + " url: 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token',", " method: 'POST',", " header: 'Content-Type:application/x-www-form-urlencoded',", " body: {", From 4002beba9719367f495b64b9d8ed35462eea7f61 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Thu, 29 Oct 2020 14:18:40 -0700 Subject: [PATCH 098/194] Move Get endpoint in activity.ts to Post endpoint in activities.ts (#952) --- api-mobile/src/models/activity.ts | 4 - .../src/openapi/geojson-polygon-doc.json | 37 +++++ api-mobile/src/paths/activities.ts | 138 ++++++++++++++++++ api-mobile/src/paths/activity.ts | 138 +----------------- 4 files changed, 179 insertions(+), 138 deletions(-) create mode 100644 api-mobile/src/openapi/geojson-polygon-doc.json create mode 100644 api-mobile/src/paths/activities.ts diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 1f546b5c2..5df5da24e 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -128,8 +128,6 @@ export class ActivitySearchCriteria { date_range_start: Date; date_range_end: Date; - include_media: boolean; - search_polygon: GeoJSON.Polygon; /** @@ -148,8 +146,6 @@ export class ActivitySearchCriteria { this.date_range_start = (obj && obj.date_range_start) || null; this.date_range_end = (obj && obj.date_range_end) || null; - this.include_media = (obj && obj.include_media) || false; - this.search_polygon = (obj && obj.search_polygon) || null; } diff --git a/api-mobile/src/openapi/geojson-polygon-doc.json b/api-mobile/src/openapi/geojson-polygon-doc.json new file mode 100644 index 000000000..8c8e61b08 --- /dev/null +++ b/api-mobile/src/openapi/geojson-polygon-doc.json @@ -0,0 +1,37 @@ +{ + "title": "GeoJSON Polygon", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Polygon" + ] + }, + "coordinates": { + "type": "array", + "items": { + "type": "array", + "minItems": 4, + "items": { + "type": "array", + "minItems": 2, + "items": { + "type": "number" + } + } + } + }, + "bbox": { + "type": "array", + "minItems": 4, + "items": { + "type": "number" + } + } + } +} diff --git a/api-mobile/src/paths/activities.ts b/api-mobile/src/paths/activities.ts new file mode 100644 index 000000000..9da1dfe5b --- /dev/null +++ b/api-mobile/src/paths/activities.ts @@ -0,0 +1,138 @@ +'use strict'; + +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { SQLStatement } from 'sql-template-strings'; +import { ALL_ROLES } from '../constants/misc'; +import { getDBConnection } from '../database/db'; +import { ActivitySearchCriteria } from '../models/activity'; +import geoJSON_Polygon_Schema from '../openapi/geojson-polygon-doc.json'; +import { getActivitiesSQL } from '../queries/activity-queries'; +import { getLogger } from '../utils/logger'; + +const defaultLog = getLogger('activity'); + +export const POST: Operation = [getActivitiesBySearchFilterCriteria()]; + +POST.apiDoc = { + description: 'Fetches all activities based on search criteria.', + tags: ['activity'], + security: [ + { + Bearer: ALL_ROLES + } + ], + requestBody: { + description: 'Activities search filter criteria object.', + content: { + 'application/json': { + schema: { + properties: { + page: { + type: 'number', + default: 0, + minimum: 0 + }, + limit: { + type: 'number', + default: 25, + minimum: 0, + maximum: 100 + }, + activity_type: { + type: 'string' + }, + activity_subtype: { + type: 'string' + }, + date_range_start: { + type: 'string', + description: 'Date range start, in YYYY-MM-DD format. Defaults time to start of day.', + example: '2020-07-30' + }, + date_range_end: { + type: 'string', + description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', + example: '2020-08-30' + }, + search_polygon: { + ...geoJSON_Polygon_Schema + } + } + } + } + } + }, + responses: { + 200: { + description: 'Activity get response object array.', + content: { + 'application/json': { + schema: { + type: 'array', + items: { + type: 'object', + properties: { + // Don't specify exact response, as it will vary, and is not currently enforced anyways + // Eventually this could be updated to be a oneOf list, similar to the Post request below. + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +/** + * Fetches all activity records based on request search filter criteria. + * + * @return {RequestHandler} + */ +function getActivitiesBySearchFilterCriteria(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ label: 'activity', message: 'getActivitiesBySearchFilterCriteria', body: req.body }); + + const sanitizedSearchCriteria = new ActivitySearchCriteria(req.body); + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + try { + const sqlStatement: SQLStatement = getActivitiesSQL(sanitizedSearchCriteria); + + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + + const result = (response && response.rows) || null; + + return res.status(200).json(result); + } catch (error) { + defaultLog.debug({ label: 'getActivitiesBySearchFilterCriteria', message: 'error', error }); + throw error; + } finally { + connection.release(); + } + }; +} diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index bf2358c6f..7e4736d94 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -4,102 +4,16 @@ import { ManagedUpload } from 'aws-sdk/clients/s3'; import { RequestHandler } from 'express'; import { Operation } from 'express-openapi'; import { SQLStatement } from 'sql-template-strings'; -import { ALL_ROLES, WRITE_ROLES } from '../constants/misc'; +import { WRITE_ROLES } from '../constants/misc'; import { getDBConnection } from '../database/db'; -import { ActivityPostRequestBody, ActivitySearchCriteria, IMediaItem, MediaBase64 } from '../models/activity'; -import { getActivitiesSQL, postActivitySQL } from '../queries/activity-queries'; +import { ActivityPostRequestBody, IMediaItem, MediaBase64 } from '../models/activity'; +import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; +import { postActivitySQL } from '../queries/activity-queries'; import { uploadFileToS3 } from '../utils/file-utils'; import { getLogger } from '../utils/logger'; -import * as geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; const defaultLog = getLogger('activity'); -export const GET: Operation = [getActivitiesBySearchFilterCriteria()]; - -GET.apiDoc = { - description: 'Fetches all activities based on search criteria.', - tags: ['activity'], - security: [ - { - Bearer: ALL_ROLES - } - ], - requestBody: { - description: 'Activities search filter criteria object.', - content: { - 'application/json': { - schema: { - properties: { - page: { - type: 'number', - default: 0, - minimum: 0 - }, - limit: { - type: 'number', - default: 25, - minimum: 0, - maximum: 100 - }, - activity_type: { - type: 'string' - }, - activity_subtype: { - type: 'string' - }, - date_range_start: { - type: 'string', - description: 'Date range start, in YYYY-MM-DD format. Defaults time to start of day.', - example: '2020-07-30' - }, - date_range_end: { - type: 'string', - description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', - example: '2020-08-30' - }, - // GeoJson Bounding Box - bbox: { - type: 'array', - minItems: 4, - items: { - type: 'number' - } - } - } - } - } - } - }, - responses: { - 200: { - description: 'Activity get response object array.', - content: { - 'application/json': { - schema: { - type: 'array', - items: { - type: 'object', - properties: { - // Don't specify exact response, as it will vary, and is not currently enforced anyways - // Eventually this could be updated to be a oneOf list, similar to the Post request below. - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - export const POST: Operation = [uploadMedia(), createActivity()]; POST.apiDoc = { @@ -295,47 +209,3 @@ function createActivity(): RequestHandler { } }; } - -/** - * Fetches all activity records based on request search filter criteria. - * - * @return {RequestHandler} - */ -function getActivitiesBySearchFilterCriteria(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'getActivitiesBySearchFilterCriteria', body: req.body }); - - const sanitizedSearchCriteria = new ActivitySearchCriteria(req.body); - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatement: SQLStatement = getActivitiesSQL(sanitizedSearchCriteria); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - const result = (response && response.rows) || null; - - return res.status(200).json(result); - } catch (error) { - defaultLog.debug({ label: 'getActivitiesBySearchFilterCriteria', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - }; -} From caaf2aa6d3db09c884624be6061aca964fb9d8ee Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Fri, 30 Oct 2020 14:42:32 -0700 Subject: [PATCH 099/194] Update /activities search to use a feature instead of a polygon (#954) --- api-mobile/src/models/activity.ts | 4 +- .../src/openapi/geojson-polygon-doc.json | 37 ------------------- api-mobile/src/paths/activities.ts | 6 +-- api-mobile/src/queries/activity-queries.ts | 4 +- 4 files changed, 7 insertions(+), 44 deletions(-) delete mode 100644 api-mobile/src/openapi/geojson-polygon-doc.json diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 5df5da24e..1c3b2d0ed 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -128,7 +128,7 @@ export class ActivitySearchCriteria { date_range_start: Date; date_range_end: Date; - search_polygon: GeoJSON.Polygon; + search_feature: GeoJSON.Feature; /** * Creates an instance of ActivitySearchCriteria. @@ -146,7 +146,7 @@ export class ActivitySearchCriteria { this.date_range_start = (obj && obj.date_range_start) || null; this.date_range_end = (obj && obj.date_range_end) || null; - this.search_polygon = (obj && obj.search_polygon) || null; + this.search_feature = (obj && obj.search_feature) || null; } setPage(page: number): number { diff --git a/api-mobile/src/openapi/geojson-polygon-doc.json b/api-mobile/src/openapi/geojson-polygon-doc.json deleted file mode 100644 index 8c8e61b08..000000000 --- a/api-mobile/src/openapi/geojson-polygon-doc.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "title": "GeoJSON Polygon", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Polygon" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 4, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } -} diff --git a/api-mobile/src/paths/activities.ts b/api-mobile/src/paths/activities.ts index 9da1dfe5b..ddb0e6bd7 100644 --- a/api-mobile/src/paths/activities.ts +++ b/api-mobile/src/paths/activities.ts @@ -6,7 +6,7 @@ import { SQLStatement } from 'sql-template-strings'; import { ALL_ROLES } from '../constants/misc'; import { getDBConnection } from '../database/db'; import { ActivitySearchCriteria } from '../models/activity'; -import geoJSON_Polygon_Schema from '../openapi/geojson-polygon-doc.json'; +import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; import { getActivitiesSQL } from '../queries/activity-queries'; import { getLogger } from '../utils/logger'; @@ -55,8 +55,8 @@ POST.apiDoc = { description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', example: '2020-08-30' }, - search_polygon: { - ...geoJSON_Polygon_Schema + search_feature: { + ...geoJSON_Feature_Schema } } } diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 1fdef4c6c..52b4a4b26 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -91,14 +91,14 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta sqlStatement.append(SQL` AND received_timestamp <= ${searchCriteria.date_range_end}::DATE`); } - if (searchCriteria.search_polygon) { + if (searchCriteria.search_feature) { sqlStatement.append(SQL` AND public.ST_INTERSECTS( geog, public.geography( public.ST_Force2D( public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${searchCriteria.search_polygon}), + public.ST_GeomFromGeoJSON(${searchCriteria.search_feature}), 4326 ) ) From 1a7c0f9f439b594b1d0cf7824ba33c598565e25c Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Sat, 31 Oct 2020 17:14:43 -0700 Subject: [PATCH 100/194] Parse geometry from feature in /activities endpoint (#955) --- api-mobile/src/queries/activity-queries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 52b4a4b26..6fdd6aecb 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -98,7 +98,7 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta public.geography( public.ST_Force2D( public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${searchCriteria.search_feature}), + public.ST_GeomFromGeoJSON(${searchCriteria.search_feature.geometry}), 4326 ) ) From da9fee3cad7fbc93d5aed9123cebbabb9c3256e5 Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Thu, 5 Nov 2020 14:02:22 -0800 Subject: [PATCH 101/194] Elevation api (#953) * Here is the file * The elevation test * https over http * fixing paths to dependencies * Elevation being returned * Cleaning up and Swagger * more debugging * Shema adjustments * doc * IPMA end point * Indent * RISO layer * Spelling * utm test * epsg end point working --- api-mobile/package.json | 4 +- api-mobile/src/paths/context/elevation.ts | 93 +++++++++++ .../src/paths/context/internal/{target}.ts | 158 ++++++++++++++++++ api-mobile/src/paths/context/transform.ts | 130 ++++++++++++++ api-mobile/test/context-elevation.sh | 4 + api-mobile/test/context-internal.sh | 19 +++ 6 files changed, 406 insertions(+), 2 deletions(-) create mode 100644 api-mobile/src/paths/context/elevation.ts create mode 100644 api-mobile/src/paths/context/internal/{target}.ts create mode 100644 api-mobile/src/paths/context/transform.ts create mode 100755 api-mobile/test/context-elevation.sh create mode 100755 api-mobile/test/context-internal.sh diff --git a/api-mobile/package.json b/api-mobile/package.json index 46d446b52..4f6ef2512 100644 --- a/api-mobile/package.json +++ b/api-mobile/package.json @@ -28,10 +28,10 @@ "aws-sdk": "~2.742.0", "axios": "~0.19.2", "body-parser": "~1.19.0", - "db-migrate-pg": "~1.2.2", "db-migrate": "~0.11.11", - "express-openapi": "~7.0.1", + "db-migrate-pg": "~1.2.2", "express": "~4.17.1", + "express-openapi": "~7.0.1", "fast-json-patch": "~3.0.0-1", "js-base64": "~3.4.5", "json-schema-traverse": "~0.5.0", diff --git a/api-mobile/src/paths/context/elevation.ts b/api-mobile/src/paths/context/elevation.ts new file mode 100644 index 000000000..5ab65eeac --- /dev/null +++ b/api-mobile/src/paths/context/elevation.ts @@ -0,0 +1,93 @@ +'use strict'; + +import axios from 'axios'; +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { ALL_ROLES } from '../../constants/misc'; +import { getLogger } from '../../utils/logger'; + +const defaultLog = getLogger('activity'); + +export const GET: Operation = [getElevation()]; + +GET.apiDoc = { + description: 'Fetches elevation for a single point', + tags: ['activity','elevation'], + security: [ + { + Bearer: ALL_ROLES + } + ], + parameters: [ + { + in: 'query', + name: 'lon', + required: true + }, + { + in: 'query', + name: 'lat', + required: true + } + ], + responses: { + 200: { + description: 'Elevation value', + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + elevation: { + type: 'integer' + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + + +/** + * Fetches all activity records based on request search filter criteria. + * + * @return {RequestHandler} + */ +function getElevation(): RequestHandler { + return async (req, res, next) => { + + // Grab coordinates from the query string + const {lon,lat} = req.query; + + // Error if no coordinates + if (!lon || !lat) { + throw { + status: 400, + message: 'Did not supply valid coordinates' + } + } + + defaultLog.debug({ label: 'elevation', message: 'getElevation', body: req.body }); + + var url = `https://geogratis.gc.ca/services/elevation/cdem/altitude?lat=${lat}&lon=${lon}`; + + axios.get(url) + .then((response) => { + return res.status(200).json({elevation: response.data?.altitude}); + }) + .catch((error) => { + return defaultLog.debug({ label: 'getElevation', message: 'error', error }); + }); + }; +} diff --git a/api-mobile/src/paths/context/internal/{target}.ts b/api-mobile/src/paths/context/internal/{target}.ts new file mode 100644 index 000000000..2244fc109 --- /dev/null +++ b/api-mobile/src/paths/context/internal/{target}.ts @@ -0,0 +1,158 @@ +'use strict'; + +import { RequestHandler, Response } from 'express'; +import { Operation } from 'express-openapi'; +import { ALL_ROLES } from '../../../constants/misc'; +import { getLogger } from '../../../utils/logger'; +import { getDBConnection } from '../../../database/db'; + +const defaultLog = getLogger('activity'); + +export const GET: Operation = [getContext()]; + +GET.apiDoc = { + description: 'Fetch internal contextual data for a single point.', + tags: ['activity','RISO','IPMA'], + security: [ + { + Bearer: ALL_ROLES + } + ], + parameters: [ + { + in: 'query', + name: 'lon', + required: true + }, + { + in: 'query', + name: 'lat', + required: true + }, + { + in: 'path', + name: 'target', + required: true + } + ], + responses: { + 200: { + description: 'Target value', + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + target: { + type: 'string' + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + + +/** + * ## getPlanningArea + * Get the Invasive Plant Management Area + * @param lon {float} Longitude + * @param lat {float} Latitude + * @param res {object} Express response object + * @param attr {string} The postgres table attribute to target + * @param table {string} The postgres table to target + */ +const getPlanningArea = async ( + lon: any, + lat: any, + res: Response, + attr: string, + table: string +) => { + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + const sql = ` + select + target.${attr} "target" + from + public.${table} "target" + where + public.st_intersects( + public.geography( + public.st_setSrid( + public.st_point(${lon},${lat}) + ,4326) + ),target.geog + ) + `; + + try { + const response = await connection.query(sql); + const payload = {target: response.rows[0].target}; + res.status(200).json(payload); + } catch (error) { + defaultLog.debug({ label: 'getContext', message: 'error', error }); + throw error; + } finally { + connection.release(); + } +}; + +/** + * ## getContext + * Relay function for all context functions + * + */ +function getContext(): RequestHandler { + return async (req, res) => { + + // Grab coordinates from the query string + const {lon,lat} = req.query; + + // Error if no coordinates + if (!lon || !lat) { + throw { + status: 400, + message: 'Did not supply valid coordinates' + } + } + + const target = req.params.target; + + switch(target) { + case 'ipma': + getPlanningArea(lon,lat,res,'ipma','invasive_plant_management_areas'); + break; + case 'riso': + getPlanningArea(lon,lat,res,'agency','regional_invasive_species_organization_areas'); + break; + case 'utm': + getPlanningArea(lon,lat,res,'utm_zone','utm_zones'); + break; + default: + res.status(401).send('Please specify a target dataset'); + } + + + defaultLog.debug({ label: 'context', message: 'getContext', body: req.body }); + + }; +} diff --git a/api-mobile/src/paths/context/transform.ts b/api-mobile/src/paths/context/transform.ts new file mode 100644 index 000000000..5da1e5844 --- /dev/null +++ b/api-mobile/src/paths/context/transform.ts @@ -0,0 +1,130 @@ +'use strict'; + +import { RequestHandler, Response } from 'express'; +import { Operation } from 'express-openapi'; +import { ALL_ROLES } from '../../constants/misc'; +import { getLogger } from '../../utils/logger'; +import { getDBConnection } from '../../database/db'; + +const defaultLog = getLogger('activity'); + +export const GET: Operation = [getContext()]; + +GET.apiDoc = { + description: 'Transform from geographic coordinates to any EPSG codded coordinate', + tags: ['activity','transform','projection'], + security: [ + { + Bearer: ALL_ROLES + } + ], + parameters: [ + { + in: 'query', + name: 'lon', + required: true + }, + { + in: 'query', + name: 'lat', + required: true + }, + { + in: 'query', + name: 'epsg', + description: 'The EPSG integer code for the destination projection.', + required: true + } + ], + responses: { + 200: { + description: 'An array of transformed coordinates: x & y', + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + x: { + type: 'number' + }, + y: { + type: 'number' + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + + +/** + * ## getContext + * Relay function for all context functions + * + */ +function getContext(): RequestHandler { + return async (req, res) => { + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + // Grab coordinates and epsg from the query string + const {lon,lat,epsg} = req.query; + + // Error if no coordinates + if (!lon || !lat || !epsg) { + throw { + status: 400, + message: 'Did not supply valid coordinates or epsg code' + } + } + + const sql = ` + select + public.st_x( + public.st_transform( + public.st_setSrid( + public.st_point(${lon},${lat}) + ,4326) + ,${epsg}) + ) "x", + public.st_y( + public.st_transform( + public.st_setSrid( + public.st_point(${lon},${lat}) + ,4326) + ,${epsg}) + ) "y" + `; + + try { + const response = await connection.query(sql); + const payload = {target: response.rows[0]}; + res.status(200).json(payload); + } catch (error) { + defaultLog.debug({ label: 'getContext', message: 'error', error }); + throw error; + } finally { + connection.release(); + } + + defaultLog.debug({ label: 'context', message: 'getContext', body: req.body }); + + }; +} diff --git a/api-mobile/test/context-elevation.sh b/api-mobile/test/context-elevation.sh new file mode 100755 index 000000000..9b70cc683 --- /dev/null +++ b/api-mobile/test/context-elevation.sh @@ -0,0 +1,4 @@ +# Request an elevation value from Mt Arthur Evans (Vancouver Island) +curl -X GET "localhost:3002/api/context/elevation?lon=-125.37806&lat=49.54147" \ +--header "Content-Type: application/json" \ +--header 'Authorization: Bearer '${1} \ diff --git a/api-mobile/test/context-internal.sh b/api-mobile/test/context-internal.sh new file mode 100755 index 000000000..8141f9081 --- /dev/null +++ b/api-mobile/test/context-internal.sh @@ -0,0 +1,19 @@ +# Request which IPMA region this point is in. +# curl -X GET "localhost:3002/api/context/internal/ipma?lon=-125.848&lat=53.643" \ +# --header "Content-Type: application/json" \ +# --header 'Authorization: Bearer '${1} + +# Request which RISO region this point is in. +# curl -X GET "localhost:3002/api/context/internal/riso?lon=-125.848&lat=53.643" \ +# --header "Content-Type: application/json" \ +# --header 'Authorization: Bearer '${1} + +# Request utm zone +# curl -X GET "localhost:3002/api/context/internal/utm?lon=-125.848&lat=53.643" \ +# --header "Content-Type: application/json" \ +# --header 'Authorization: Bearer '${1} + +# Request utm zone +curl -X GET "localhost:3002/api/context/transform?lon=-125.848&lat=53.643&epsg=3005" \ +--header "Content-Type: application/json" \ +--header 'Authorization: Bearer '${1} From c3b5b384875a45c12b4795fb2dcf695c54c97ea7 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 5 Nov 2020 14:42:06 -0800 Subject: [PATCH 102/194] Point of interest endpoint (#956) * add migration for point of interest data * add point of interest model * add schema for iapp site * migration tweaks and fully flush out spec for iapp site schema * add point of interest queries * expose point of interest route --- .../20201102152915_point_of_interest.ts | 81 ++++++++ api-mobile/src/models/point-of-interest.ts | 171 +++++++++++++++ api-mobile/src/openapi/api-doc.json | 139 +++++++++++++ api-mobile/src/paths/point-of-interest.ts | 195 ++++++++++++++++++ .../src/queries/point-of-interest-queries.ts | 131 ++++++++++++ 5 files changed, 717 insertions(+) create mode 100644 api-mobile/src/database/migrations/20201102152915_point_of_interest.ts create mode 100644 api-mobile/src/models/point-of-interest.ts create mode 100644 api-mobile/src/paths/point-of-interest.ts create mode 100644 api-mobile/src/queries/point-of-interest-queries.ts diff --git a/api-mobile/src/database/migrations/20201102152915_point_of_interest.ts b/api-mobile/src/database/migrations/20201102152915_point_of_interest.ts new file mode 100644 index 000000000..d8178ad4e --- /dev/null +++ b/api-mobile/src/database/migrations/20201102152915_point_of_interest.ts @@ -0,0 +1,81 @@ +import Knex from 'knex'; + +const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; + +export async function up(knex: Knex): Promise { + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + -- ### Creating table: point of interest incoming data ### - + CREATE SCHEMA IF NOT EXISTS ${DB_SCHEMA}; + + CREATE TABLE ${DB_SCHEMA}.point_of_interest_incoming_data (); + COMMENT ON TABLE ${DB_SCHEMA}.point_of_interest_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_incoming_data_id SERIAL PRIMARY KEY; + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_incoming_data_id IS 'Auto generated primary key'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_id SERIAL ; + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_id IS 'Unique record number. Can occur multiple times with record updates.'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN version INTEGER NULL; + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_type VARCHAR(200) NULL; + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_type IS 'Type of record'; + CREATE index poi_type_idx on ${DB_SCHEMA}.point_of_interest_incoming_data (point_of_interest_type); + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_subtype VARCHAR(200) NULL; + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_subtype IS 'Sub Type of record'; + CREATE index poi_sub_type_idx on ${DB_SCHEMA}.point_of_interest_incoming_data (point_of_interest_subtype); + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN geom geometry(Geometry,3005) CHECK (st_isValid(geom)); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.geom IS 'Geometry in Albers projection.'; + CREATE index point_of_interest_incoming_data_gist on ${DB_SCHEMA}.point_of_interest_incoming_data using gist ("geom"); + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN geog geography(Geometry); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.geog IS 'Geography type containing a geometry.'; + CREATE index point_of_interest_incoming_data_gist2 on ${DB_SCHEMA}.point_of_interest_incoming_data using gist ("geog"); + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_payload JSONB; + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_payload IS 'Raw data upload in compressed JSON format.'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN biogeoclimatic_zones varchar(30); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.biogeoclimatic_zones IS 'Biogeoclimatic Ecosystem Classification (BEC) Zone/Subzone/Variant/Phase'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN regional_invasive_species_organization_areas varchar(10); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.regional_invasive_species_organization_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC.'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN invasive_plant_management_areas varchar(50); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.invasive_plant_management_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC. Within several RISO areas, they subdivide the land area in smaller management areas (Invasive Plant Management Areas).'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN forest_cover_ownership varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.forest_cover_ownership IS 'This data product is a generalized description of the primary ownership of forest lands for use in strategic decision making such as Timber Supply Analysis. It is based upon the structure used in the Forest Inventory Planning (FIP/FC1) format. It is created and revised using information from Min of Agriculture and Lands Registries Branch.'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN regional_districts varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.regional_districts IS 'Regional districts of British Columbia: https://catalogue.data.gov.bc.ca/dataset/d1aff64e-dbfe-45a6-af97-582b7f6418b9'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN flnro_districts varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.flnro_districts IS 'Ministry of Forest Lands and Natural Resources districts'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN moti_districts varchar(100); + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.moti_districts IS 'Ministry of Transportation and Infrastructure districts'; + + ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN media_keys text[]; + COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.media_keys IS 'Array of keys used to fetch original files from external storage'; + + `); +} + +export async function down(knex: Knex): Promise { + await knex.raw(` + set schema '${DB_SCHEMA}'; + set search_path = ${DB_SCHEMA},public; + + DROP TABLE IF EXISTS ${DB_SCHEMA}.point_of_interest_incoming_data; + `); +} diff --git a/api-mobile/src/models/point-of-interest.ts b/api-mobile/src/models/point-of-interest.ts new file mode 100644 index 000000000..8108e7a52 --- /dev/null +++ b/api-mobile/src/models/point-of-interest.ts @@ -0,0 +1,171 @@ +import { SEARCH_LIMIT_MAX } from '../constants/misc'; +import { parseBase64DataURLString } from '../utils/file-utils'; + +/** + * A single media item. + * + * @export + * @interface IMediaItem + */ +export interface IMediaItem { + media_date?: string; + description?: string; + file_name: string; + encoded_file: string; +} + +/** + * Media object for Data URL base64 encoded files. + * + * @export + * @class MediaBase64 + */ +export class MediaBase64 { + mediaName: string; + contentType: string; + contentString: string; + mediaBuffer: Buffer; + mediaDescription: string; + mediaDate: string; + + /** + * Creates an instance of MediaBase64. + * + * @param {IMediaItem} obj + * @memberof MediaBase64 + */ + constructor(obj: IMediaItem) { + if (!obj) { + throw new Error('media was null'); + } + + const base64StringParts = parseBase64DataURLString(obj.encoded_file); + + if (!base64StringParts) { + throw new Error('media encoded_file could not be parsed'); + } + + this.contentType = base64StringParts.contentType; + this.contentString = base64StringParts.contentType; + this.mediaName = obj.file_name; + this.mediaBuffer = Buffer.from(base64StringParts.contentString, 'base64'); + this.mediaDescription = obj.description || null; + this.mediaDate = obj.media_date || null; + } +} + +/** + * PointOfInterest post request body. + * + * @export + * @class PointOfInterestPostRequestBody + */ +export class PointOfInterestPostRequestBody { + pontOfInterestPostBody: object; + pontOfInterestResponseBody: object; + + pontOfInterest_type: string; + pontOfInterest_subtype: string; + + pontOfInterest_data: object; + pontOfInterest_type_data: object; + pontOfInterest_subtype_data: object; + + received_timestamp: string; + + geoJSONFeature: GeoJSON.Feature[]; + + mediaKeys: string[]; + + /** + * Creates an instance of PointOfInterestPostRequestBody. + * + * @param {*} [obj] + * @memberof PointOfInterestPostRequestBody + */ + constructor(obj?: any) { + // Add whole original object for auditing + this.pontOfInterestPostBody = { + ...obj, + // Strip out any media base64 strings which would convolute the record + media: + (obj.media && + obj.media.map((item: IMediaItem) => { + delete item.encoded_file; + return item; + })) || + [] + }; + + this.pontOfInterest_type = (obj && obj.pontOfInterest_type) || null; + this.pontOfInterest_subtype = (obj && obj.pontOfInterest_subtype) || null; + + this.pontOfInterest_data = (obj && obj.form_data && obj.form_data.pontOfInterest_data) || null; + this.pontOfInterest_type_data = (obj && obj.form_data && obj.form_data.pontOfInterest_type_data) || null; + this.pontOfInterest_subtype_data = (obj && obj.form_data && obj.form_data.pontOfInterest_subtype_data) || null; + + this.received_timestamp = new Date().toISOString(); + + this.geoJSONFeature = (obj && obj.geometry) || []; + + this.mediaKeys = (obj && obj.mediaKeys) || null; + } +} + +/** + * PointOfInterest search filter criteria object. + * + * @export + * @class PointOfInterestSearchCriteria + */ +export class PointOfInterestSearchCriteria { + page: number; + limit: number; + + pontOfInterest_type: string; + pontOfInterest_subtype: string; + + date_range_start: Date; + date_range_end: Date; + + search_feature: GeoJSON.Feature; + + /** + * Creates an instance of PointOfInterestSearchCriteria. + * + * @param {*} [obj] + * @memberof PointOfInterestSearchCriteria + */ + constructor(obj?: any) { + this.page = (obj && obj.page && this.setPage(obj.page)) || 0; + this.limit = (obj && obj.limit && this.setLimit(obj.limit)) || SEARCH_LIMIT_MAX; + + this.pontOfInterest_type = (obj && obj.pontOfInterest_type) || null; + this.pontOfInterest_subtype = (obj && obj.pontOfInterest_subtype) || null; + + this.date_range_start = (obj && obj.date_range_start) || null; + this.date_range_end = (obj && obj.date_range_end) || null; + + this.search_feature = (obj && obj.search_feature) || null; + } + + setPage(page: number): number { + if (!page || page < 0) { + return 0; + } + + return page; + } + + setLimit(limit: number): number { + if (!limit || limit < 0) { + return 25; + } + + if (limit > SEARCH_LIMIT_MAX) { + return SEARCH_LIMIT_MAX; + } + + return limit; + } +} diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index b8e96387d..db7535072 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -1387,6 +1387,145 @@ "format": "float" } } + }, + "PointOfInterest_IAPP_Site": { + "type": "object", + "properties": { + "point_of_interest_data": { + "$ref": "#/components/schemas/Point_Of_Interest" + }, + "point_of_interest_type_data": { + "$ref": "#/components/schemas/IAPP_Site" + } + } + }, + "Point_Of_Interest": { + "title": "Basic Information", + "description": "Basic information captured for all points of interest", + "type": "object", + "required": [ + "species_agency_code", + "jurisdiction_code", + "point_of_interest_status", + "access_description", + "media_indicator", + "created_date_on_device", + "updated_date_on_device" + ], + "properties": { + "jurisdiction_code": { + "type": "string", + "title": "Jurisdiction", + "x-enum-code": { + "x-enum-code-set-name": "jurisdiction_code", + "x-enum-code-value": "jurisdiction_code", + "x-enum-code-name": "description" + } + }, + "point_of_interest_status": { + "type": "string", + "title": "Point of interest status", + "enum": [ + "sync", + "done", + "pending", + "errors" + ] + }, + "general_comment": { + "type": "string", + "title": "Comment", + "maximum": 300 + }, + "access_description": { + "type": "string", + "title": "Access Description", + "maximum": 300 + }, + "media_indicator": { + "type": "boolean", + "title": "Photo" + }, + "created_date_on_device": { + "type": "string", + "title": "Created date on device" + }, + "updated_date_on_device": { + "type": "string", + "title": "Updated date on device" + }, + "paper_file": { + "type": "array", + "title": "Paper file", + "items": { + "$ref": "#/components/schemas/PaperFile" + } + } + } + }, + "IAPP_Site": { + "title": "IAPP Site", + "description": "IAPP Site", + "type": "object", + "required": [ + "site_id", + "created_date", + "aspect", + "original_bec_id", + "map_sheet", + "specific_use", + "soil_texture", + "comments", + "species" + ], + "properties": { + "site_id": { + "type": "string", + "title": "Site ID", + "maximum": 30 + }, + "species": { + "type": "array", + "items": { + "type": "string" + } + }, + "created_date": { + "type": "string", + "title": "", + "maximum": 30 + }, + "aspect": { + "type": "string", + "title": "", + "maximum": 30 + }, + "original_bec_id": { + "type": "string", + "title": "", + "maximum": 30 + }, + "map_sheet": { + "type": "string", + "title": "", + "maximum": 30 + }, + "specific_use": { + "type": "string", + "title": "", + "maximum": 30 + }, + "soil_texture": { + "type": "string", + "title": "", + "maximum": 30 + }, + "comments": { + "type": "string", + "title": "", + "maximum": 300 + } + } } } } diff --git a/api-mobile/src/paths/point-of-interest.ts b/api-mobile/src/paths/point-of-interest.ts new file mode 100644 index 000000000..288d23f1e --- /dev/null +++ b/api-mobile/src/paths/point-of-interest.ts @@ -0,0 +1,195 @@ +'use strict'; + +import { ManagedUpload } from 'aws-sdk/clients/s3'; +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { SQLStatement } from 'sql-template-strings'; +import { WRITE_ROLES } from '../constants/misc'; +import { getDBConnection } from '../database/db'; +import { IMediaItem, MediaBase64, PointOfInterestPostRequestBody } from '../models/point-of-interest'; +import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; +import { postPointOfInterestSQL } from '../queries/point-of-interest-queries'; +import { uploadFileToS3 } from '../utils/file-utils'; +import { getLogger } from '../utils/logger'; + +const defaultLog = getLogger('point-of-interest'); + +export const POST: Operation = [uploadMedia(), createPointOfInterest()]; + +POST.apiDoc = { + description: 'Create a new point of interest.', + tags: ['point-of-interest'], + security: [ + { + Bearer: WRITE_ROLES + } + ], + requestBody: { + description: 'Point of interest post request object.', + content: { + 'application/json': { + schema: { + required: ['point_of_interest_type', 'point_of_interest_subtype'], + properties: { + point_of_interest_type: { + type: 'string', + title: 'Point of Interest type' + }, + point_of_interest_subtype: { + type: 'string', + title: 'Point of Interest subtype' + }, + media: { + type: 'array', + title: 'Media', + items: { + $ref: '#/components/schemas/Media' + } + }, + geometry: { + type: 'array', + title: 'Geometries', + items: { + ...geoJSON_Feature_Schema + } + }, + form_data: { + oneOf: [{ $ref: '#/components/schemas/PointOfInterest_IAPP_Site' }] + } + } + } + } + } + }, + responses: { + 200: { + description: 'Point of Interest post response object.', + content: { + 'application/json': { + schema: { + required: ['point_of_interest_incoming_data_id'], + properties: { + point_of_interest_incoming_data_id: { + type: 'number' + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +/** + * Uploads any media in the request to S3, adding their keys to the request, and calling next(). + * + * Does nothing if no media is present in the request. + * + * TODO: make media handling an extension that can be added to different endpoints/record types + * + * @returns {RequestHandler} + */ +function uploadMedia(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ label: 'point-of-interest', message: 'uploadMedia', body: req.body }); + + if (!req.body.media || !req.body.media.length) { + // no media objects included, skipping media upload step + return next(); + } + + const rawMediaArray: IMediaItem[] = req.body.media; + + const s3UploadPromises: Promise[] = []; + + rawMediaArray.forEach((rawMedia: IMediaItem) => { + if (!rawMedia) { + return; + } + + let media: MediaBase64; + try { + media = new MediaBase64(rawMedia); + } catch (error) { + defaultLog.debug({ label: 'uploadMedia', message: 'error', error }); + throw { + status: 400, + message: 'Included media was invalid/encoded incorrectly' + }; + } + + console.log(media); + + const metadata = { + filename: media.mediaName || '', + description: media.mediaDescription || '', + date: media.mediaDate || '', + username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', + email: (req['auth_payload'] && req['auth_payload'].email) || '' + }; + + s3UploadPromises.push(uploadFileToS3(media, metadata)); + }); + + const results = await Promise.all(s3UploadPromises); + + req['mediaKeys'] = results.map(result => result.Key); + + next(); + }; +} + +/** + * Creates a new point of interest record. + * + * @returns {RequestHandler} + */ +function createPointOfInterest(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ label: 'point-of-interest', message: 'createPointOfInterest', body: req.params }); + + const data = { ...req.body, mediaKeys: req['mediaKeys'] }; + + const sanitizedPointOfInterestData = new PointOfInterestPostRequestBody(data); + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + try { + const sqlStatement: SQLStatement = postPointOfInterestSQL(sanitizedPointOfInterestData); + + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + + const result = (response && response.rows && response.rows[0]) || null; + + return res.status(200).json(result); + } catch (error) { + defaultLog.debug({ label: 'createPointOfInterest', message: 'error', error }); + throw error; + } finally { + connection.release(); + } + }; +} diff --git a/api-mobile/src/queries/point-of-interest-queries.ts b/api-mobile/src/queries/point-of-interest-queries.ts new file mode 100644 index 000000000..f9984ca88 --- /dev/null +++ b/api-mobile/src/queries/point-of-interest-queries.ts @@ -0,0 +1,131 @@ +import { SQL, SQLStatement } from 'sql-template-strings'; +import { PointOfInterestPostRequestBody, PointOfInterestSearchCriteria } from '../models/point-of-interest'; + +/** + * SQL query to insert a new point_of_interest, and return the inserted record. + * + * @param {PointOfInterestPostRequestBody} point_of_interest + * @returns {SQLStatement} sql query object + */ +export const postPointOfInterestSQL = (point_of_interest: PointOfInterestPostRequestBody): SQLStatement => { + if (!point_of_interest) { + return null; + } + + const sqlStatement: SQLStatement = SQL` + INSERT INTO point_of_interest_incoming_data ( + point_of_interest_type, + point_of_interest_subtype, + received_timestamp, + point_of_interest_payload, + geog, + media_keys + ) VALUES ( + ${point_of_interest.pontOfInterest_type}, + ${point_of_interest.pontOfInterest_subtype}, + ${point_of_interest.received_timestamp}, + ${point_of_interest.pontOfInterestPostBody} + `; + + if (point_of_interest.geoJSONFeature && point_of_interest.geoJSONFeature.length) { + // Note: this is only saving the `geometry` part of the feature, and not any assocaited `properties`. + const geometry = JSON.stringify(point_of_interest.geoJSONFeature[0].geometry); + + sqlStatement.append(SQL` + ,public.geography( + public.ST_Force2D( + public.ST_SetSRID( + public.ST_GeomFromGeoJSON(${geometry}), + 4326 + ) + ) + ) + `); + } else { + sqlStatement.append(SQL` + ,null + `); + } + + if (point_of_interest.mediaKeys) { + sqlStatement.append(SQL` + ,${point_of_interest.mediaKeys} + `); + } else { + sqlStatement.append(SQL` + ,null + `); + } + + sqlStatement.append(SQL` + ) + RETURNING + point_of_interest_incoming_data_id; + `); + + return sqlStatement; +}; + +/** + * SQL query to fetch point_of_interest records based on search criteria. + * + * @param {PointOfInterestSearchCriteria} searchCriteria + * @returns {SQLStatement} sql query object + */ +export const getPointsOfInterestSQL = (searchCriteria: PointOfInterestSearchCriteria): SQLStatement => { + const sqlStatement: SQLStatement = SQL`SELECT * FROM point_of_interest_incoming_data WHERE 1 = 1`; + + if (searchCriteria.pontOfInterest_type) { + sqlStatement.append(SQL` AND point_of_interest_type = ${searchCriteria.pontOfInterest_type}`); + } + + if (searchCriteria.pontOfInterest_subtype) { + sqlStatement.append(SQL` AND point_of_interest_subtype = ${searchCriteria.pontOfInterest_subtype}`); + } + + if (searchCriteria.date_range_start) { + sqlStatement.append(SQL` AND received_timestamp >= ${searchCriteria.date_range_start}::DATE`); + } + + if (searchCriteria.date_range_end) { + sqlStatement.append(SQL` AND received_timestamp <= ${searchCriteria.date_range_end}::DATE`); + } + + if (searchCriteria.search_feature) { + sqlStatement.append(SQL` + AND public.ST_INTERSECTS( + geog, + public.geography( + public.ST_Force2D( + public.ST_SetSRID( + public.ST_GeomFromGeoJSON(${searchCriteria.search_feature.geometry}), + 4326 + ) + ) + ) + ) + `); + } + + if (searchCriteria.limit) { + sqlStatement.append(SQL` LIMIT ${searchCriteria.limit}`); + } + + if (searchCriteria.limit) { + sqlStatement.append(SQL` OFFSET ${searchCriteria.page}`); + } + + sqlStatement.append(SQL`;`); + + return sqlStatement; +}; + +/** + * SQL query to fetch a single point_of_interest record based on its primary key. + * + * @param {number} point_of_interestId + * @returns {SQLStatement} sql query object + */ +export const getPointOfInterestSQL = (point_of_interestId: number): SQLStatement => { + return SQL`SELECT * FROM point_of_interest_incoming_data where point_of_interest_incoming_data_id = ${point_of_interestId}`; +}; From e97595c3664317afc0325457695c85ad8e31256a Mon Sep 17 00:00:00 2001 From: Jamie Popkin Date: Mon, 9 Nov 2020 13:05:38 -0800 Subject: [PATCH 103/194] Databc api (#961) * Generic databc end point * Updated some documentation --- api-mobile/src/paths/context/databc/{wfs}.ts | 102 +++++++++++++++++++ api-mobile/test/context-databc.sh | 4 + 2 files changed, 106 insertions(+) create mode 100644 api-mobile/src/paths/context/databc/{wfs}.ts create mode 100755 api-mobile/test/context-databc.sh diff --git a/api-mobile/src/paths/context/databc/{wfs}.ts b/api-mobile/src/paths/context/databc/{wfs}.ts new file mode 100644 index 000000000..2a0bf84c6 --- /dev/null +++ b/api-mobile/src/paths/context/databc/{wfs}.ts @@ -0,0 +1,102 @@ +'use strict'; + +import axios from 'axios'; +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { ALL_ROLES } from '../../../constants/misc'; +import { getLogger } from '../../../utils/logger'; + +const defaultLog = getLogger('activity'); + +export const GET: Operation = [getDataBC()]; + +GET.apiDoc = { + description: 'Fetches a single feature of a DataBC WFS layer from a geographic point location.', + tags: ['activity','databc'], + security: [ + { + Bearer: ALL_ROLES + } + ], + parameters: [ + { + in: 'query', + name: 'lon', + required: true + }, + { + in: 'query', + name: 'lat', + required: true + }, + { + in: 'path', + name: 'wfs', + required: true + } + ], + responses: { + 200: { + description: 'GeoJSON feature from DataBC Layer', + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + + +/** + * Fetches a single feature of a DataBC WFS layer from a geographic point location. + * + * @return {RequestHandler} + */ +function getDataBC(): RequestHandler { + return async (req, res, next) => { + + // Grab coordinates from the query string + const {lon,lat} = req.query; + + // Grab the wfs target from the url path + const wfs = req.params.wfs; + + // Error if no coordinates + if (!lon || !lat) { + throw { + status: 400, + message: 'Did not supply valid coordinates' + } + } + + defaultLog.debug({ label: 'dataBC', message: 'getElevation', body: req.body }); + + // Convert point coordinates into a bounding box + const coords = `${lon},${lat},${parseFloat(lon as string) + 0.00001},${parseFloat(lat as string) + 0.00001}` + + // Formulate the url. + const url = `https://openmaps.gov.bc.ca/geo/pub/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=pub:${wfs}&outputFormat=json&maxFeatures=1&srsName=epsg:4326&bbox=${coords},epsg:4326`; + + axios.get(url) + .then((response) => { + return res.status(200).json({target: response.data?.features[0]?.properties}); + }) + .catch((error) => { + return defaultLog.debug({ label: 'getDataBC', message: 'error', error }); + }); + }; +} diff --git a/api-mobile/test/context-databc.sh b/api-mobile/test/context-databc.sh new file mode 100755 index 000000000..4e6b21a7d --- /dev/null +++ b/api-mobile/test/context-databc.sh @@ -0,0 +1,4 @@ +# Request private land +curl -X GET "localhost:3002/api/context/databc/WHSE_CADASTRE.CBM_CADASTRAL_FABRIC_PUB_SVW?lon=-125.05596&lat=49.28648" \ +--header "Content-Type: application/json" \ +--header 'Authorization: Bearer '${1} From e4d1b59bf527e2c6f73a74b1d71500b3d1f04db4 Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 10 Nov 2020 14:46:53 -0800 Subject: [PATCH 104/194] 111: Search endpoint updates (#962) - update limit/offset logic - support column name filtering - support order by filter --- api-mobile/src/constants/misc.ts | 11 ++++ api-mobile/src/models/activity.ts | 18 +++++-- api-mobile/src/openapi/api-doc.json | 2 +- api-mobile/src/paths/activities.ts | 47 ++++++++++++++-- api-mobile/src/queries/activity-queries.ts | 53 ++++++++++++++++--- .../src/queries/point-of-interest-queries.ts | 4 +- 6 files changed, 115 insertions(+), 20 deletions(-) diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts index 94c10867a..52c86b627 100644 --- a/api-mobile/src/constants/misc.ts +++ b/api-mobile/src/constants/misc.ts @@ -103,3 +103,14 @@ export enum XEnumCode { * @type {number} */ export const SEARCH_LIMIT_MAX = 100; + +/** + * Supported PSQL `ORDER BY` directions. + * + * @export + * @enum {number} + */ +export enum SORT_DIRECTION { + ASC = 'ASC', + DESC = 'DESC' +} diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 1c3b2d0ed..750142875 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -1,4 +1,4 @@ -import { SEARCH_LIMIT_MAX } from '../constants/misc'; +import { SEARCH_LIMIT_MAX, SORT_DIRECTION } from '../constants/misc'; import { parseBase64DataURLString } from './../utils/file-utils'; /** @@ -121,15 +121,19 @@ export class ActivityPostRequestBody { export class ActivitySearchCriteria { page: number; limit: number; + sort_by: string; + sort_direction: string; - activity_type: string; - activity_subtype: string; + activity_type: string[]; + activity_subtype: string[]; date_range_start: Date; date_range_end: Date; search_feature: GeoJSON.Feature; + column_names: string[]; + /** * Creates an instance of ActivitySearchCriteria. * @@ -139,14 +143,18 @@ export class ActivitySearchCriteria { constructor(obj?: any) { this.page = (obj && obj.page && this.setPage(obj.page)) || 0; this.limit = (obj && obj.limit && this.setLimit(obj.limit)) || SEARCH_LIMIT_MAX; + this.sort_by = (obj && obj.sort_by) || ''; + this.sort_direction = (obj && obj.sort_direction) || SORT_DIRECTION.ASC; - this.activity_type = (obj && obj.activity_type) || null; - this.activity_subtype = (obj && obj.activity_subtype) || null; + this.activity_type = (obj && obj.activity_type) || []; + this.activity_subtype = (obj && obj.activity_subtype) || []; this.date_range_start = (obj && obj.date_range_start) || null; this.date_range_end = (obj && obj.date_range_end) || null; this.search_feature = (obj && obj.search_feature) || null; + + this.column_names = (obj && obj.column_names) || []; } setPage(page: number): number { diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index db7535072..5a99f6fb2 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -28,7 +28,7 @@ }, { "url": "https://api-mobile-invasivesbc.pathfinder.gov.bc.ca", - "description": "deployed api in prod environmen" + "description": "deployed api in prod environment" } ], "tags": [ diff --git a/api-mobile/src/paths/activities.ts b/api-mobile/src/paths/activities.ts index ddb0e6bd7..ba99a4681 100644 --- a/api-mobile/src/paths/activities.ts +++ b/api-mobile/src/paths/activities.ts @@ -39,11 +39,24 @@ POST.apiDoc = { minimum: 0, maximum: 100 }, - activity_type: { + sort_by: { type: 'string' }, + sort_direction: { + type: 'string', + enum: ['ASC', 'DESC'] + }, + activity_type: { + type: 'array', + items: { + type: 'string' + } + }, activity_subtype: { - type: 'string' + type: 'array', + items: { + type: 'string' + } }, date_range_start: { type: 'string', @@ -57,6 +70,12 @@ POST.apiDoc = { }, search_feature: { ...geoJSON_Feature_Schema + }, + column_names: { + type: 'array', + items: { + type: 'string' + } } } } @@ -73,8 +92,19 @@ POST.apiDoc = { items: { type: 'object', properties: { - // Don't specify exact response, as it will vary, and is not currently enforced anyways - // Eventually this could be updated to be a oneOf list, similar to the Post request below. + rows: { + type: 'array', + items: { + type: 'object', + properties: { + // Don't specify exact object properties, as it will vary, and is not currently enforced anyways + // Eventually this could be updated to be a oneOf list, similar to the Post request below. + } + } + }, + count: { + type: 'number' + } } } } @@ -125,7 +155,14 @@ function getActivitiesBySearchFilterCriteria(): RequestHandler { const response = await connection.query(sqlStatement.text, sqlStatement.values); - const result = (response && response.rows) || null; + // parse the rows from the response + const rows = { rows: (response && response.rows) || [] }; + + // parse the count from the response + const count = { count: rows.rows.length && rows.rows[0]['total_rows_count'] } || {}; + + // build the return object + const result = { ...rows, ...count }; return res.status(200).json(result); } catch (error) { diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 6fdd6aecb..9ee15e189 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -1,3 +1,4 @@ +import { SORT_DIRECTION } from './../constants/misc'; import { SQL, SQLStatement } from 'sql-template-strings'; import { ActivityPostRequestBody, ActivitySearchCriteria } from './../models/activity'; @@ -73,14 +74,47 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement * @returns {SQLStatement} sql query object */ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLStatement => { - const sqlStatement: SQLStatement = SQL`SELECT * FROM activity_incoming_data WHERE 1 = 1`; + const sqlStatement: SQLStatement = SQL`SELECT`; - if (searchCriteria.activity_type) { - sqlStatement.append(SQL` AND activity_type = ${searchCriteria.activity_type}`); + if (searchCriteria.column_names && searchCriteria.column_names.length) { + // do not include the `SQL` template string prefix, as column names can not be parameterized + sqlStatement.append(` ${searchCriteria.column_names.join(', ')}`); + } else { + // if no column_names specified, select all + sqlStatement.append(SQL` *`); + } + + // include the total count of results that would be returned if the limit and offset constraints weren't applied + sqlStatement.append(SQL`, COUNT(*) OVER() AS total_rows_count`); + + sqlStatement.append(SQL` FROM activity_incoming_data WHERE 1 = 1`); + + if (searchCriteria.activity_subtype && searchCriteria.activity_type.length) { + sqlStatement.append(SQL` AND activity_type IN (`); + + // add the first activity type, which does not get a comma prefix + sqlStatement.append(SQL`${searchCriteria.activity_type[0]}`); + + for (let idx = 1; idx < searchCriteria.activity_type.length; idx++) { + // add all subsequent activity types, which do get a comma prefix + sqlStatement.append(SQL`, ${searchCriteria.activity_type[idx]}`); + } + + sqlStatement.append(SQL`)`); } - if (searchCriteria.activity_subtype) { - sqlStatement.append(SQL` AND activity_subtype = ${searchCriteria.activity_subtype}`); + if (searchCriteria.activity_subtype && searchCriteria.activity_subtype.length) { + sqlStatement.append(SQL` AND activity_subtype IN (`); + + // add the first activity subtype, which does not get a comma prefix + sqlStatement.append(SQL`${searchCriteria.activity_subtype[0]}`); + + for (let idx = 1; idx < searchCriteria.activity_subtype.length; idx++) { + // add all subsequent activity subtypes, which do get a comma prefix + sqlStatement.append(SQL`, ${searchCriteria.activity_subtype[idx]}`); + } + + sqlStatement.append(SQL`)`); } if (searchCriteria.date_range_start) { @@ -107,12 +141,17 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta `); } + if (searchCriteria.sort_by) { + // do not include the `SQL` template string prefix, as column names and sort direction can not be parameterized + sqlStatement.append(` ORDER BY ${searchCriteria.sort_by} ${searchCriteria.sort_direction}`); + } + if (searchCriteria.limit) { sqlStatement.append(SQL` LIMIT ${searchCriteria.limit}`); } - if (searchCriteria.limit) { - sqlStatement.append(SQL` OFFSET ${searchCriteria.page}`); + if (searchCriteria.page && searchCriteria.limit) { + sqlStatement.append(SQL` OFFSET ${searchCriteria.page * searchCriteria.limit}`); } sqlStatement.append(SQL`;`); diff --git a/api-mobile/src/queries/point-of-interest-queries.ts b/api-mobile/src/queries/point-of-interest-queries.ts index f9984ca88..4fe4fc789 100644 --- a/api-mobile/src/queries/point-of-interest-queries.ts +++ b/api-mobile/src/queries/point-of-interest-queries.ts @@ -111,8 +111,8 @@ export const getPointsOfInterestSQL = (searchCriteria: PointOfInterestSearchCrit sqlStatement.append(SQL` LIMIT ${searchCriteria.limit}`); } - if (searchCriteria.limit) { - sqlStatement.append(SQL` OFFSET ${searchCriteria.page}`); + if (searchCriteria.page && searchCriteria.limit) { + sqlStatement.append(SQL` OFFSET ${searchCriteria.page * searchCriteria.limit}`); } sqlStatement.append(SQL`;`); From 96b442ea4149d7c81755c60b7aeaaa632091f3ec Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 10 Nov 2020 17:43:52 -0800 Subject: [PATCH 105/194] add endpoint missed in last pr for bulk point of interest fetch (#960) --- api-mobile/src/paths/points-of-interest.ts | 142 +++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 api-mobile/src/paths/points-of-interest.ts diff --git a/api-mobile/src/paths/points-of-interest.ts b/api-mobile/src/paths/points-of-interest.ts new file mode 100644 index 000000000..75d5fd647 --- /dev/null +++ b/api-mobile/src/paths/points-of-interest.ts @@ -0,0 +1,142 @@ +'use strict'; + +import { RequestHandler } from 'express'; +import { Operation } from 'express-openapi'; +import { SQLStatement } from 'sql-template-strings'; +import { ALL_ROLES } from '../constants/misc'; +import { getDBConnection } from '../database/db'; +import { PointOfInterestSearchCriteria } from '../models/point-of-interest'; +import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; +import { getPointOfInterestSQL, getPointsOfInterestSQL } from '../queries/point-of-interest-queries'; +import { getLogger } from '../utils/logger'; + +const defaultLog = getLogger('point-of-interest'); + +export const POST: Operation = [getPointsOfInterestBySearchFilterCriteria()]; + +POST.apiDoc = { + description: 'Fetches all ponts of interest based on search criteria.', + tags: ['point-of-interest'], + security: [ + { + Bearer: ALL_ROLES + } + ], + requestBody: { + description: 'Points Of Interest search filter criteria object.', + content: { + 'application/json': { + schema: { + properties: { + page: { + type: 'number', + default: 0, + minimum: 0 + }, + limit: { + type: 'number', + default: 25, + minimum: 0, + maximum: 100 + }, + point_of_interest_type: { + type: 'string' + }, + point_of_interest_subtype: { + type: 'string' + }, + date_range_start: { + type: 'string', + description: 'Date range start, in YYYY-MM-DD format. Defaults time to start of day.', + example: '2020-07-30' + }, + date_range_end: { + type: 'string', + description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', + example: '2020-08-30' + }, + search_feature: { + ...geoJSON_Feature_Schema + } + } + } + } + } + }, + responses: { + 200: { + description: 'Point Of Interest get response object array.', + content: { + 'application/json': { + schema: { + type: 'array', + items: { + type: 'object', + properties: { + // Don't specify exact response, as it will vary, and is not currently enforced anyways + // Eventually this could be updated to be a oneOf list, similar to the Post request below. + } + } + } + } + } + }, + 401: { + $ref: '#/components/responses/401' + }, + 503: { + $ref: '#/components/responses/503' + }, + default: { + $ref: '#/components/responses/default' + } + } +}; + +/** + * Fetches all point-of-interest records based on request search filter criteria. + * + * @return {RequestHandler} + */ +function getPointsOfInterestBySearchFilterCriteria(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ + label: 'point-of-interest', + message: 'getPointsOfInterestBySearchFilterCriteria', + body: req.body + }); + + const sanitizedSearchCriteria = new PointOfInterestSearchCriteria(req.body); + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + try { + const sqlStatement: SQLStatement = getPointsOfInterestSQL(sanitizedSearchCriteria); + + if (!sqlStatement) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } + + const response = await connection.query(sqlStatement.text, sqlStatement.values); + + const result = (response && response.rows) || null; + + return res.status(200).json(result); + } catch (error) { + defaultLog.debug({ label: 'getPointsOfInterestBySearchFilterCriteria', message: 'error', error }); + throw error; + } finally { + connection.release(); + } + }; +} From 7b637a9361dd469423b484c16fd9e9f6c8c421ea Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Tue, 17 Nov 2020 13:20:47 -0800 Subject: [PATCH 106/194] 62: Add PUT activity endpoint to support updates (#963) 62: Edit Single Activity + Misc Updates - Add PUT activity endpoint - Update enum doc population logic (to use new code tables) - Update auth logic (to use new code tables) --- api-mobile/src/constants/misc.ts | 35 ++-- api-mobile/src/models/activity.ts | 8 + api-mobile/src/openapi/api-doc.json | 160 +++++++++++------- api-mobile/src/paths/activity.ts | 92 +++++++++- api-mobile/src/paths/activity/{activityId}.ts | 2 +- api-mobile/src/paths/point-of-interest.ts | 2 - api-mobile/src/queries/activity-queries.ts | 53 +++++- api-mobile/src/queries/code-queries.ts | 79 +-------- api-mobile/src/queries/observation-queries.ts | 22 --- api-mobile/src/queries/user-queries.ts | 10 +- .../src/utils/api-doc-security-filter.ts | 110 +++++++----- api-mobile/src/utils/auth-utils.ts | 2 +- api-mobile/src/utils/code-utils.ts | 128 ++++++-------- 13 files changed, 398 insertions(+), 305 deletions(-) delete mode 100644 api-mobile/src/queries/observation-queries.ts diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts index 52c86b627..69b1ee0cc 100644 --- a/api-mobile/src/constants/misc.ts +++ b/api-mobile/src/constants/misc.ts @@ -20,8 +20,9 @@ export const WRITE_ROLES = [ROLE_SUPER_USER, ROLE_ADMIN, ROLE_DATA_EDITOR]; * @enum {number} */ export enum CacheKeys { - AllCodeSets = 'allCodeSets', - ObservationCodePlant = 'observationCodePlant' + ALL_CODE_CATEGORIES = 'all-code-categories', + ALL_CODE_HEADERS = 'all-code-headers', + ALL_CODES = 'all-codes' } /** @@ -69,32 +70,40 @@ export enum S3ACLRole { * @export * @enum {number} */ -export enum XApiDocKeys { +export enum X_API_DOC_KEYS { /** - * specifies a field whose value is an object containing `x-enum-code...` fields (see `XEnumCode`) + * specifies a field whose value is an object containing `x-enum-code...` fields (see `X_ENUM_CODE`) */ - XEnumCode = 'x-enum-code' + X_ENUM_CODE = 'x-enum-code' } /** - * Nested keys in a `x-enum-code` field (see `XApiDocKeys.XEnumCode`) + * Nested keys in a `x-enum-code` field (see `X_API_DOC_KEYS.X_ENUM_CODE`) * * @export * @enum {number} */ -export enum XEnumCode { +export enum X_ENUM_CODE { /** - * the name of the table/collection for the code set + * The `code_category` name. */ - XEnumCodeSetName = 'x-enum-code-set-name', + CATEGORY_NAME = 'x-enum-code-category-name', /** - * the name of the column/field that holds the unique code value + * The `code_header` name. */ - XEnumCodeValue = 'x-enum-code-value', + HEADER_NAME = 'x-enum-code-header-name', /** - * the name of the column/fild that holds the human readable name for the code value + * The `code` column name that holds the unique code value. */ - XEnumCodeName = 'x-enum-code-name' + CODE_NAME = 'x-enum-code-name', + /** + * The `code` column name that holds the human readable name for the code value. + */ + CODE_TEXT = 'x-enum-code-text', + /** + * The `code` column name that defines the sort order. + */ + CODE_SORT_ORDER = 'x-enum-code-sort-order' } /** diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts index 750142875..2696606e3 100644 --- a/api-mobile/src/models/activity.ts +++ b/api-mobile/src/models/activity.ts @@ -64,6 +64,8 @@ export class ActivityPostRequestBody { activityPostBody: object; activityResponseBody: object; + activity_id: string; + activity_type: string; activity_subtype: string; @@ -71,7 +73,9 @@ export class ActivityPostRequestBody { activity_type_data: object; activity_subtype_data: object; + created_timestamp: string; // ISO string received_timestamp: string; + deleted_timestamp: string; // ISO string geoJSONFeature: GeoJSON.Feature[]; @@ -97,6 +101,8 @@ export class ActivityPostRequestBody { [] }; + this.activity_id = (obj && obj.activity_id) || null; + this.activity_type = (obj && obj.activity_type) || null; this.activity_subtype = (obj && obj.activity_subtype) || null; @@ -104,7 +110,9 @@ export class ActivityPostRequestBody { this.activity_type_data = (obj && obj.form_data && obj.form_data.activity_type_data) || null; this.activity_subtype_data = (obj && obj.form_data && obj.form_data.activity_subtype_data) || null; + this.created_timestamp = (obj && obj.created_timestamp) || null; this.received_timestamp = new Date().toISOString(); + this.deleted_timestamp = (obj && obj.deleted_timestamp) || null; this.geoJSONFeature = (obj && obj.geometry) || []; diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json index 5a99f6fb2..75d636750 100644 --- a/api-mobile/src/openapi/api-doc.json +++ b/api-mobile/src/openapi/api-doc.json @@ -388,18 +388,22 @@ "type": "string", "title": "Agency", "x-enum-code": { - "x-enum-code-set-name": "species_agency_code", - "x-enum-code-value": "species_agency_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "species_agency_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "jurisdiction_code": { "type": "string", "title": "Jurisdiction", "x-enum-code": { - "x-enum-code-set-name": "jurisdiction_code", - "x-enum-code-value": "jurisdiction_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "jurisdiction_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "activity_status": { @@ -533,63 +537,77 @@ "type": "string", "title": "Density", "x-enum-code": { - "x-enum-code-set-name": "species_density_code", - "x-enum-code-value": "density_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "species_density_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "species_distribution_code": { "type": "number", "title": "Distribution", "x-enum-code": { - "x-enum-code-set-name": "species_distribution_code", - "x-enum-code-value": "species_distribution_code_id", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "species_distribution_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "soil_texture_code": { "type": "string", "title": "Soil Texture", "x-enum-code": { - "x-enum-code-set-name": "soil_texture_code", - "x-enum-code-value": "soil_texture_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "soil_texture_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "specific_use_code": { "type": "string", "title": "Specific Use", "x-enum-code": { - "x-enum-code-set-name": "specific_use_code", - "x-enum-code-value": "specific_use_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "specific_use_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "slope_code": { "type": "string", "title": "Slope", "x-enum-code": { - "x-enum-code-set-name": "observation_slope_code", - "x-enum-code-value": "observation_slope_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "observation_slope_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "aspect_code": { "type": "string", "title": "Aspect", "x-enum-code": { - "x-enum-code-set-name": "observation_aspect_code", - "x-enum-code-value": "observation_aspect_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "observation_aspect_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "proposed_action_code": { "type": "string", "title": "Proposed Action", "x-enum-code": { - "x-enum-code-set-name": "observation_proposed_action_code", - "x-enum-code-value": "observation_proposed_action_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "observation_proposed_action_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "flowering": { @@ -668,9 +686,11 @@ "type": "string", "title": "Specific Use", "x-enum-code": { - "x-enum-code-set-name": "specific_use_code", - "x-enum-code-value": "specific_use_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "specific_use_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "proposed_action_code": { @@ -766,18 +786,22 @@ "type": "string", "title": "Life Stage", "x-enum-code": { - "x-enum-code-set-name": "specieslife_stage_code_agency_code", - "x-enum-code-value": "life_stage_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "specieslife_stage_code_agency_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "behaviour_code": { "type": "string", "title": "Behaviour", "x-enum-code": { - "x-enum-code-set-name": "behaviour_code", - "x-enum-code-value": "behaviour_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "behaviour_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } } } @@ -831,9 +855,11 @@ "type": "string", "title": "Pesticide employer code", "x-enum-code": { - "x-enum-code-set-name": "pesticide_employer_code", - "x-enum-code-value": "pesticide_employer_code", - "x-enum-code-name": "business_name" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "pesticide_employer_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "project_management_plan_PMP": { @@ -862,9 +888,11 @@ "type": "string", "title": "Wind direction", "x-enum-code": { - "x-enum-code-set-name": "wind_direction_code", - "x-enum-code-value": "wind_direction_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "wind_direction_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "humidity": { @@ -947,36 +975,44 @@ "type": "string", "title": "Mechanical method", "x-enum-code": { - "x-enum-code-set-name": "mechanical_method_code", - "x-enum-code-value": "mechanical_method_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "mechanical_method_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "mechanical_disposal_method_code": { "type": "string", "title": "Mechanical disposal method", "x-enum-code": { - "x-enum-code-set-name": "mechanical_disposal_method_code", - "x-enum-code-value": "mechanical_disposal_method_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "mechanical_disposal_method_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "mechanical_root_removal_code": { "type": "string", "title": "Mechanical root removal code", "x-enum-code": { - "x-enum-code-set-name": "mechanical_root_removal_code", - "x-enum-code-value": "mechanical_root_removal_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "mechanical_root_removal_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "mechanical_soil_disturbance_code": { "type": "string", "title": "Mechanical soil disturbance code", "x-enum-code": { - "x-enum-code-set-name": "mechanical_soil_disturbance_code", - "x-enum-code-value": "mechanical_soil_disturbance_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "mechanical_soil_disturbance_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "signage_on_site": { @@ -1173,9 +1209,11 @@ "type": "string", "title": "Efficacy rating", "x-enum-code": { - "x-enum-code-set-name": "efficacy_code", - "x-enum-code-value": "efficacy_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "efficacy_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } } } @@ -1417,9 +1455,11 @@ "type": "string", "title": "Jurisdiction", "x-enum-code": { - "x-enum-code-set-name": "jurisdiction_code", - "x-enum-code-value": "jurisdiction_code", - "x-enum-code-name": "description" + "x-enum-code-category-name": "invasives", + "x-enum-code-header-name": "jurisdiction_code", + "x-enum-code-name": "code_name", + "x-enum-code-text": "code_description", + "x-enum-code-sort-order": "code_sort_order" } }, "point_of_interest_status": { diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts index 7e4736d94..dda18b2e2 100644 --- a/api-mobile/src/paths/activity.ts +++ b/api-mobile/src/paths/activity.ts @@ -8,7 +8,7 @@ import { WRITE_ROLES } from '../constants/misc'; import { getDBConnection } from '../database/db'; import { ActivityPostRequestBody, IMediaItem, MediaBase64 } from '../models/activity'; import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; -import { postActivitySQL } from '../queries/activity-queries'; +import { IPutActivitySQL, postActivitySQL, putActivitySQL } from '../queries/activity-queries'; import { uploadFileToS3 } from '../utils/file-utils'; import { getLogger } from '../utils/logger'; @@ -16,7 +16,9 @@ const defaultLog = getLogger('activity'); export const POST: Operation = [uploadMedia(), createActivity()]; -POST.apiDoc = { +export const PUT: Operation = [uploadMedia(), updateActivity()]; + +const post_put_apiDoc = { description: 'Create a new activity.', tags: ['activity'], security: [ @@ -31,6 +33,18 @@ POST.apiDoc = { schema: { required: ['activity_type', 'activity_subtype'], properties: { + activity_id: { + type: 'string', + format: 'uuid', + example: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d', + description: 'An RFC4122 UUID' + }, + created_timestamp: { + type: 'string', + format: 'date-time', + example: '2018-11-13T20:20:39+00:00', + description: 'Date created on user device. Must be in ISO8601 format.' + }, activity_type: { type: 'string', title: 'Activity type' @@ -51,7 +65,8 @@ POST.apiDoc = { title: 'Geometries', items: { ...geoJSON_Feature_Schema - } + }, + description: 'An array of GeoJSON Features' }, form_data: { oneOf: [ @@ -107,6 +122,14 @@ POST.apiDoc = { } }; +POST.apiDoc = { + ...post_put_apiDoc +}; + +PUT.apiDoc = { + ...post_put_apiDoc +}; + /** * Uploads any media in the request to S3, adding their keys to the request, and calling next(). * @@ -143,8 +166,6 @@ function uploadMedia(): RequestHandler { }; } - console.log(media); - const metadata = { filename: media.mediaName || '', description: media.mediaDescription || '', @@ -209,3 +230,64 @@ function createActivity(): RequestHandler { } }; } + +/** + * Updates an activity record. + * + * Note: An update consists of marking the existing record as 'deleted' and creating a new record with the updated data. + * + * @returns {RequestHandler} + */ +function updateActivity(): RequestHandler { + return async (req, res, next) => { + defaultLog.debug({ label: 'activity', message: 'updateActivity', body: req.params }); + + const data = { ...req.body, mediaKeys: req['mediaKeys'] }; + + const sanitizedActivityData = new ActivityPostRequestBody(data); + + const connection = await getDBConnection(); + + if (!connection) { + throw { + status: 503, + message: 'Failed to establish database connection' + }; + } + + try { + const sqlStatements: IPutActivitySQL = putActivitySQL(sanitizedActivityData); + + if (!sqlStatements || !sqlStatements.updateSQL || !sqlStatements.createSQL) { + throw { + status: 400, + message: 'Failed to build SQL statements' + }; + } + + let createResponse = null; + + try { + // Perform both update and create operations as a single transaction + await connection.query('BEGIN'); + + await connection.query(sqlStatements.updateSQL.text, sqlStatements.updateSQL.values); + createResponse = await connection.query(sqlStatements.createSQL.text, sqlStatements.createSQL.values); + + await connection.query('COMMIT'); + } catch (error) { + await connection.query('ROLLBACK'); + throw error; + } + + const result = (createResponse && createResponse.rows && createResponse.rows[0]) || null; + + return res.status(200).json(result); + } catch (error) { + defaultLog.debug({ label: 'updateActivity', message: 'error', error }); + throw error; + } finally { + connection.release(); + } + }; +} diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts index 1c64b9f5c..51dcf13c8 100644 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ b/api-mobile/src/paths/activity/{activityId}.ts @@ -66,7 +66,7 @@ function getActivity(): RequestHandler { return async (req, res, next) => { defaultLog.debug({ label: '{activityId}', message: 'getActivity', body: req.params }); - const activityId = Number(req.params.activityId); + const activityId = req.params.activityId; const connection = await getDBConnection(); diff --git a/api-mobile/src/paths/point-of-interest.ts b/api-mobile/src/paths/point-of-interest.ts index 288d23f1e..c93b15a6e 100644 --- a/api-mobile/src/paths/point-of-interest.ts +++ b/api-mobile/src/paths/point-of-interest.ts @@ -127,8 +127,6 @@ function uploadMedia(): RequestHandler { }; } - console.log(media); - const metadata = { filename: media.mediaName || '', description: media.mediaDescription || '', diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts index 9ee15e189..814903dff 100644 --- a/api-mobile/src/queries/activity-queries.ts +++ b/api-mobile/src/queries/activity-queries.ts @@ -1,4 +1,3 @@ -import { SORT_DIRECTION } from './../constants/misc'; import { SQL, SQLStatement } from 'sql-template-strings'; import { ActivityPostRequestBody, ActivitySearchCriteria } from './../models/activity'; @@ -15,15 +14,19 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement const sqlStatement: SQLStatement = SQL` INSERT INTO activity_incoming_data ( + activity_id, activity_type, activity_subtype, + created_timestamp, received_timestamp, activity_payload, geog, media_keys ) VALUES ( + ${activity.activity_id}, ${activity.activity_type}, ${activity.activity_subtype}, + ${activity.created_timestamp}, ${activity.received_timestamp}, ${activity.activityPostBody} `; @@ -67,6 +70,36 @@ export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement return sqlStatement; }; +export interface IPutActivitySQL { + updateSQL: SQLStatement; + createSQL: SQLStatement; +} + +/** + * SQL queries to update an existing activity record and mark it as `deleted` and to create a new activity record. + * + * @param {ActivityPostRequestBody} activity + * @return {*} {IPutActivitySQL} array of sql query objects + */ +export const putActivitySQL = (activity: ActivityPostRequestBody): IPutActivitySQL => { + if (!activity) { + return null; + } + + // update existing activity record + const updateSQLStatement: SQLStatement = SQL` + UPDATE activity_incoming_data + SET deleted_timestamp = ${new Date().toISOString()} + WHERE activity_id = ${activity.activity_id} + AND deleted_timestamp IS NULL; + `; + + // create new activity record + const createSQLStatement: SQLStatement = postActivitySQL(activity); + + return { updateSQL: updateSQLStatement, createSQL: createSQLStatement }; +}; + /** * SQL query to fetch activity records based on search criteria. * @@ -89,6 +122,9 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta sqlStatement.append(SQL` FROM activity_incoming_data WHERE 1 = 1`); + // don't include deleted or out-dated records + sqlStatement.append(SQL` AND deleted_timestamp IS NULL`); + if (searchCriteria.activity_subtype && searchCriteria.activity_type.length) { sqlStatement.append(SQL` AND activity_type IN (`); @@ -160,11 +196,18 @@ export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLSta }; /** - * SQL query to fetch a single activity record based on its primary key. + * SQL query to fetch a single activity record based on its `activity_id` and `deleted_timestamp` fields. * - * @param {number} activityId + * Note: An activity record with a non-null `deleted_timestamp` indicates it has either been deleted or is an out-dated + * version. The latest version should have a null `deleted_timestamp`. + * + * @param {string} activityId * @returns {SQLStatement} sql query object */ -export const getActivitySQL = (activityId: number): SQLStatement => { - return SQL`SELECT * FROM activity_incoming_data where activity_incoming_data_id = ${activityId}`; +export const getActivitySQL = (activityId: string): SQLStatement => { + return SQL` + SELECT * FROM activity_incoming_data + WHERE activity_id = ${activityId} + AND deleted_timestamp IS NULL; + `; }; diff --git a/api-mobile/src/queries/code-queries.ts b/api-mobile/src/queries/code-queries.ts index 91f565613..8e7e8a063 100644 --- a/api-mobile/src/queries/code-queries.ts +++ b/api-mobile/src/queries/code-queries.ts @@ -1,86 +1,25 @@ import { SQL, SQLStatement } from 'sql-template-strings'; /** - * SQL query to fetch observation aspect codes. + * SQL query to fetch code categories. * * @returns {SQLStatement} sql query object */ -export const getObservationAspectCodesSQL = (): SQLStatement => SQL`SELECT * from observation_aspect_code;`; +export const getCodeCategoriesSQL = (): SQLStatement => + SQL`SELECT code_category_id, code_category_name FROM code_category WHERE valid_to IS NULL;`; /** - * SQL query to fetch jurisdiction codes. + * SQL query to fetch code headers. * * @returns {SQLStatement} sql query object */ -export const getJurisdictionCodesSQL = (): SQLStatement => SQL`SELECT * from jurisdiction_code;`; +export const getCodeHeadersSQL = (): SQLStatement => + SQL`SELECT code_header_id, code_category_id, code_header_name FROM code_header WHERE valid_to IS NULL;`; /** - * SQL query to fetch observation geometry codes. + * SQL query to fetch codes. * * @returns {SQLStatement} sql query object */ -export const getObservationGeometryCodesSQL = (): SQLStatement => SQL`SELECT * from observation_geometry_code;`; - -/** - * SQL query to fetch observation type codes. - * - * @returns {SQLStatement} sql query object - */ -export const getObservationTypeCodesSQL = (): SQLStatement => SQL`SELECT * from observation_type_code;`; - -/** - * SQL query to fetch observation proposed action codes. - * - * @returns {SQLStatement} sql query object - */ -export const getObservationProposedActionCodesSQL = (): SQLStatement => - SQL`SELECT * from observation_proposed_action_code;`; - -/** - * SQL query to fetch observation slope codes. - * - * @returns {SQLStatement} sql query object - */ -export const getObservationSlopeCodesSQL = (): SQLStatement => SQL`SELECT * from observation_slope_code;`; - -/** - * SQL query to fetch texture codes. - * - * @returns {SQLStatement} sql query object - */ -export const getSoilTextureCodesSQL = (): SQLStatement => SQL`SELECT * from soil_texture_code;`; - -/** - * SQL query to fetch agency codes. - * - * @returns {SQLStatement} sql query object - */ -export const getSpeciesAgencyCodesSQL = (): SQLStatement => SQL`SELECT * from species_agency_code;`; - -/** - * SQL query to fetch density codes. - * - * @returns {SQLStatement} sql query object - */ -export const getSpeciesDensityCodesSQL = (): SQLStatement => SQL`SELECT * from species_density_code;`; - -/** - * SQL query to fetch distribution codes. - * - * @returns {SQLStatement} sql query object - */ -export const getSpeciesDistributionCodesSQL = (): SQLStatement => SQL`SELECT * from species_distribution_code;`; - -/** - * SQL query to fetch species codes. - * - * @returns {SQLStatement} sql query object - */ -export const getSpeciesCodesSQL = (): SQLStatement => SQL`SELECT * from species;`; - -/** - * SQL query to fetch specific use codes. - * - * @returns {SQLStatement} sql query object - */ -export const getSpecificUseCodesSQL = (): SQLStatement => SQL`SELECT * from specific_use_code;`; +export const getCodesSQL = (): SQLStatement => + SQL`SELECT code_id, code_header_id, code_name, code_description, code_sort_order FROM code WHERE valid_to IS NULL;`; diff --git a/api-mobile/src/queries/observation-queries.ts b/api-mobile/src/queries/observation-queries.ts deleted file mode 100644 index e878f76ba..000000000 --- a/api-mobile/src/queries/observation-queries.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { SQL, SQLStatement } from 'sql-template-strings'; - -/** - * SQL query to fetch all plant observations. - * - * @returns {SQLStatement} sql query object - */ -export const getAllObservationPlantSQL = (): SQLStatement => SQL`SELECT * FROM observation;`; - -/** - * SQL query to fetch a single plant observation. - * - * @param {string} observationId observation primary key - * @returns {SQLStatement} sql query object - */ -export const getSingleObservationPlantSQL = (observationId: string): SQLStatement => { - if (!observationId) { - return null; - } - - return SQL`SELECT * FROM observation WHERE observation_id = ${observationId};`; -}; diff --git a/api-mobile/src/queries/user-queries.ts b/api-mobile/src/queries/user-queries.ts index 350c7f72a..1fa495983 100644 --- a/api-mobile/src/queries/user-queries.ts +++ b/api-mobile/src/queries/user-queries.ts @@ -12,9 +12,11 @@ export const getUserWithRolesSQL = (email: string): SQLStatement => { } return SQL` - SELECT * FROM application_user - LEFT JOIN user_role USING (user_id) - LEFT JOIN app_role_code USING (role_code_id) - WHERE email = ${email.toLowerCase()}; + SELECT * FROM application_user au + LEFT JOIN user_role ur + USING (user_id) + LEFT JOIN code cc + ON cc.code_id = ur.role_code_id + WHERE au.email = ${email.toLowerCase()}; `; }; diff --git a/api-mobile/src/utils/api-doc-security-filter.ts b/api-mobile/src/utils/api-doc-security-filter.ts index 06c0f23c3..3206cf146 100644 --- a/api-mobile/src/utils/api-doc-security-filter.ts +++ b/api-mobile/src/utils/api-doc-security-filter.ts @@ -1,10 +1,9 @@ import jsonpatch from 'fast-json-patch'; import traverse from 'json-schema-traverse'; -import { CacheKeys, XApiDocKeys, XEnumCode } from '../constants/misc'; -import { getDBConnection } from '../database/db'; -import { getAllCodeSets, IAllCodeSets } from './code-utils'; -import { cached } from './utils'; +import { CacheKeys, X_API_DOC_KEYS, X_ENUM_CODE } from '../constants/misc'; +import { getAllCodeEntities, IAllCodeEntities } from './code-utils'; import { getLogger } from './logger'; +import { cached } from './utils'; const defaultLog = getLogger('api-doc-security-filter'); @@ -16,18 +15,14 @@ const defaultLog = getLogger('api-doc-security-filter'); * @return {*} req */ export async function applyApiDocSecurityFilters(req: any) { - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - try { - // fetch all code sets - const allCodeSets: IAllCodeSets = await cached(CacheKeys.AllCodeSets, 3600000, () => getAllCodeSets(connection))(); + const allCodeEntities: IAllCodeEntities = await cached(CacheKeys.ALL_CODE_CATEGORIES, 3600000, () => + getAllCodeEntities() + )(); + + if (!allCodeEntities) { + return req; + } // the apiDoc that updates will be applied to const apiDoc = req['apiDoc']; @@ -46,9 +41,9 @@ export async function applyApiDocSecurityFilters(req: any) { } // apply code enum filters, if a matching `x-...` field exists - if (Object.keys(schema).includes(XApiDocKeys.XEnumCode)) { + if (Object.keys(schema).includes(X_API_DOC_KEYS.X_ENUM_CODE)) { // apply code enum filtering to this piece of schema - const updatedSchema = applyCodeEnumFilter(schema, allCodeSets); + const updatedSchema = applyCodeEnumFilter(schema, allCodeEntities); // update apiDoc, replacing the old schema part with the updated schema part jsonpatch.applyPatch(apiDoc, [{ op: 'replace', path: jsonPtr, value: updatedSchema }]); @@ -61,8 +56,6 @@ export async function applyApiDocSecurityFilters(req: any) { } catch (error) { defaultLog.debug({ label: 'applyApiDocSecurityFilters', message: 'error', error }); throw error; - } finally { - connection.release(); } return req; @@ -73,61 +66,90 @@ export async function applyApiDocSecurityFilters(req: any) { * * @export * @param {object} obj the schema object to apply updates to - * @param {IAllCodeSets} allCodeSets an object containing all of the code sets and their values + * @param {IAllCodeEntities} allCodeEntities an object containing all of the code categories, headers, and codes * @return {*} {object} the updated object */ -export function applyCodeEnumFilter(obj: object, allCodeSets: IAllCodeSets): object { - // get the XEnumCode object - const xEnumCodeObj = obj[XApiDocKeys.XEnumCode]; +export function applyCodeEnumFilter(obj: object, allCodeEntities: IAllCodeEntities): object { + // prase the `x-enum-code` object + const xEnumCodeObj = obj[X_API_DOC_KEYS.X_ENUM_CODE]; + + const codeCategoryName = xEnumCodeObj[X_ENUM_CODE.CATEGORY_NAME]; + const codeHeaderName = xEnumCodeObj[X_ENUM_CODE.HEADER_NAME]; + const codeName = xEnumCodeObj[X_ENUM_CODE.CODE_NAME]; + const codeText = xEnumCodeObj[X_ENUM_CODE.CODE_TEXT]; + const codeSortOrder = xEnumCodeObj[X_ENUM_CODE.CODE_SORT_ORDER] || []; + + if (!codeCategoryName || !codeHeaderName || !codeName || !codeText) { + return obj; + } - // get the name of the code set - const codeSetName = xEnumCodeObj[XEnumCode.XEnumCodeSetName]; + // Get the matching code category row + const codeCategoryRow = allCodeEntities.categories.find(item => { + return item['code_category_name'] === codeCategoryName; + }); - if (!codeSetName) { + if (!codeCategoryRow) { return obj; } - // get the list of codes for this code set name - const codes: any[] = allCodeSets[codeSetName]; + // Get the matching code header row + const codeHeaderRow = allCodeEntities.headers.find(item => { + return ( + item['code_category_id'] === codeCategoryRow['code_category_id'] && item['code_header_name'] === codeHeaderName + ); + }); - if (!codes || !codes.length) { + if (!codeHeaderRow) { + return obj; + } + + // Get all of the matching code rows + const codeRows = allCodeEntities.codes.filter(item => { + return item['code_header_id'] === codeHeaderRow['code_header_id']; + }); + + if (!codeRows || !codeRows.length) { return obj; } // update the object, adding an `anyOf` field whose value is an array of enum objects obj = { ...obj, - anyOf: codes - .map(code => { + anyOf: codeRows + .map(codeRow => { return { - // the `type` specified by the field that contains the enum (the enum `type` must match the field `type`) + // the `type` specified by the parent object that contains this enum object (their types must match) type: obj['type'], // the column that contains the unique value for this code - enum: [code[xEnumCodeObj[XEnumCode.XEnumCodeValue]]], + enum: [codeRow[codeName]], // the column that contains the human readable name of this code - title: code[xEnumCodeObj[XEnumCode.XEnumCodeName]] + title: codeRow[codeText] }; }) - .sort(getAscObjectSorter('title')) + // sort by code sort order, and secondarily by title + .sort(getAscObjectSorter([codeSortOrder, 'title'])) }; return obj; } /** - * Returns a comparator function that sorts objects in ascending order based on a specified `field`. + * Returns a comparator function that sorts objects in ascending order. * - * @param {string} field the object field to sort based on - * @return {number} + * @param {string[]} fields An array of ordered field names to sort on. + * If the the fields[0] comparison results in a tie, then the fields[1] comparison will run, etc. + * @return {*} */ -function getAscObjectSorter(field: string) { +function getAscObjectSorter(fields: string[]) { return (a: object, b: object) => { - if (a[field] < b[field]) { - return -1; - } + for (const field of fields) { + if (a[field] < b[field]) { + return -1; + } - if (a[field] > b[field]) { - return 1; + if (a[field] > b[field]) { + return 1; + } } return 0; diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts index 9e56491ab..cd2cb2cae 100644 --- a/api-mobile/src/utils/auth-utils.ts +++ b/api-mobile/src/utils/auth-utils.ts @@ -200,7 +200,7 @@ export const verifyUser = async function (req: any, scopes: string[]) { return null; } - const userHasRole = verifyUserRoles(scopes, response['role_code']); + const userHasRole = verifyUserRoles(scopes, response['code_name']); if (!userHasRole) { defaultLog.warn({ label: 'verifyUser', message: 'user verification error: insufficient roles' }); diff --git a/api-mobile/src/utils/code-utils.ts b/api-mobile/src/utils/code-utils.ts index bee890c93..29a6163c0 100644 --- a/api-mobile/src/utils/code-utils.ts +++ b/api-mobile/src/utils/code-utils.ts @@ -1,88 +1,60 @@ -import { PoolClient } from 'pg'; -import { - getJurisdictionCodesSQL, - getObservationAspectCodesSQL, - getObservationGeometryCodesSQL, - getObservationProposedActionCodesSQL, - getObservationSlopeCodesSQL, - getObservationTypeCodesSQL, - getSoilTextureCodesSQL, - getSpeciesAgencyCodesSQL, - getSpeciesCodesSQL, - getSpeciesDensityCodesSQL, - getSpeciesDistributionCodesSQL, - getSpecificUseCodesSQL -} from '../queries/code-queries'; +import { QueryResult, QueryResultRow } from 'pg'; +import { SQLStatement } from 'sql-template-strings'; +import { getDBConnection } from '../database/db'; +import { getCodeCategoriesSQL, getCodeHeadersSQL, getCodesSQL } from '../queries/code-queries'; +import { getLogger } from './logger'; -export interface IAllCodeSets { - observation_aspect_code: object; - jurisdiction_code: object; - observation_geometry_code: object; - observation_type_code: object; - observation_proposed_action_code: object; - observation_slope_code: object; - soil_texture_code: object; - species_agency_code: object; - species_density_code: object; - species_distribution_code: object; - species: object; - specific_use_code: object; +const defaultLog = getLogger('code-utils'); + +export interface IAllCodeEntities { + categories: QueryResultRow[]; + headers: QueryResultRow[]; + codes: QueryResultRow[]; } -/** - * Function that fetches all code sets. - * - * @param {PoolClient} connection - * @returns {IAllCodeSets} an object containing all code sets - */ -export async function getAllCodeSets(connection: PoolClient): Promise { +export async function getAllCodeEntities(): Promise { + const connection = await getDBConnection(); + if (!connection) { - return null; + throw { + status: 503, + message: 'Failed to establish database connection' + }; } - const result: IAllCodeSets = { - observation_aspect_code: [], - jurisdiction_code: [], - observation_geometry_code: [], - observation_type_code: [], - observation_proposed_action_code: [], - observation_slope_code: [], - soil_texture_code: [], - species_agency_code: [], - species_density_code: [], - species_distribution_code: [], - species: [], - specific_use_code: [] - }; + try { + const codeCategoriesSQL: SQLStatement = getCodeCategoriesSQL(); + const codeHeadersSQL: SQLStatement = getCodeHeadersSQL(); + const codesSQL: SQLStatement = getCodesSQL(); + + if (!codeCategoriesSQL || !codeHeadersSQL || !codesSQL) { + throw { + status: 400, + message: 'Failed to build SQL statement' + }; + } - // Fetch all observation codes - const observation_aspect_code = await connection.query(getObservationAspectCodesSQL().text); - const jurisdiction_code = await connection.query(getJurisdictionCodesSQL().text); - const observation_geometry_code = await connection.query(getObservationGeometryCodesSQL().text); - const observation_type_code = await connection.query(getObservationTypeCodesSQL().text); - const observation_proposed_action_code = await connection.query(getObservationProposedActionCodesSQL().text); - const observation_slope_code = await connection.query(getObservationSlopeCodesSQL().text); - const soil_texture_code = await connection.query(getSoilTextureCodesSQL().text); - const species_agency_code = await connection.query(getSpeciesAgencyCodesSQL().text); - const species_density_code = await connection.query(getSpeciesDensityCodesSQL().text); - const species_distribution_code = await connection.query(getSpeciesDistributionCodesSQL().text); - const species = await connection.query(getSpeciesCodesSQL().text); - const specific_use_code = await connection.query(getSpecificUseCodesSQL().text); + const promises = []; - // Add code responses to results object - result.observation_aspect_code = (observation_aspect_code && observation_aspect_code.rows) || []; - result.jurisdiction_code = (jurisdiction_code && jurisdiction_code.rows) || []; - result.observation_geometry_code = (observation_geometry_code && observation_geometry_code.rows) || []; - result.observation_type_code = (observation_type_code && observation_type_code.rows) || []; - result.observation_proposed_action_code = - (observation_proposed_action_code && observation_proposed_action_code.rows) || []; - result.observation_slope_code = (observation_slope_code && observation_slope_code.rows) || []; - result.soil_texture_code = (soil_texture_code && soil_texture_code.rows) || []; - result.species_agency_code = (species_agency_code && species_agency_code.rows) || []; - result.species_density_code = (species_density_code && species_density_code.rows) || []; - result.species_distribution_code = (species_distribution_code && species_distribution_code.rows) || []; - result.species = (species && species.rows) || []; - result.specific_use_code = (specific_use_code && specific_use_code.rows) || []; + promises.push(connection.query(codeCategoriesSQL.text, codeCategoriesSQL.values)); + promises.push(connection.query(codeHeadersSQL.text, codeHeadersSQL.values)); + promises.push(connection.query(codesSQL.text, codesSQL.values)); - return result; + const responses: QueryResult[] = await Promise.all(promises); + + if (!responses || responses.length !== 3) { + return null; + } + + return { + categories: responses[0].rows, + headers: responses[1].rows, + codes: responses[2].rows + }; + } catch (error) { + defaultLog.debug({ label: 'getAllCodeEntities', message: 'error', error }); + throw error; + } finally { + connection.release(); + } } From 6cc61137ebb9866bf7485f62253fc778be59abc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Nov 2020 16:57:06 -0800 Subject: [PATCH 107/194] Bump dot-prop from 4.2.0 to 4.2.1 in /api/api_sources (#958) Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/sindresorhus/dot-prop/releases) - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- api/api_sources/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index de9f4091d..17a35a3a3 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -2577,9 +2577,9 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "requires": { "is-obj": "^1.0.0" } From b58dc8b2c76eb572b853b63f80276fb11d632eaa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Nov 2020 09:54:11 -0800 Subject: [PATCH 108/194] Bump dot-prop from 4.2.0 to 4.2.1 in /loadTest/app (#957) Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/sindresorhus/dot-prop/releases) - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- loadTest/app/package-lock.json | 556 +++++++++------------------------ 1 file changed, 143 insertions(+), 413 deletions(-) diff --git a/loadTest/app/package-lock.json b/loadTest/app/package-lock.json index 61e57d0ff..ef8e4c808 100644 --- a/loadTest/app/package-lock.json +++ b/loadTest/app/package-lock.json @@ -7,20 +7,17 @@ "@types/node": { "version": "14.0.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", - "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==", - "dev": true + "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==" }, "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, "ajv": { "version": "6.12.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -32,7 +29,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, "requires": { "string-width": "^2.0.0" } @@ -40,20 +36,17 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -61,14 +54,12 @@ "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" }, "arrivals": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/arrivals/-/arrivals-2.1.2.tgz", "integrity": "sha512-g3+rxhxUen2H4+PPBOz6U6pkQ4esBuQPna1rPskgK1jamBdDZeoppyB2vPUM/l0ccunwRrq4r2rKgCvc2FnrFA==", - "dev": true, "requires": { "debug": "^4.0.1", "nanotimer": "0.3.14" @@ -78,7 +69,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -86,8 +76,7 @@ "nanotimer": { "version": "0.3.14", "resolved": "https://registry.npmjs.org/nanotimer/-/nanotimer-0.3.14.tgz", - "integrity": "sha1-ENgR+NBkeIGACWzh+WxwhG/Voro=", - "dev": true + "integrity": "sha1-ENgR+NBkeIGACWzh+WxwhG/Voro=" } } }, @@ -95,7 +84,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/artillery/-/artillery-1.6.0.tgz", "integrity": "sha512-vapCO+TR3EDf1Vg30xUEl+JasTBjctck9Hh3pvMW8RUDvXUv5gF+LanhsfkpZE3AwPGN1sEZ/9tbmnYGR913NQ==", - "dev": true, "requires": { "arrivals": "^2.1.2", "artillery-plugin-statsd": "^2.2.1", @@ -136,7 +124,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/artillery-plugin-statsd/-/artillery-plugin-statsd-2.2.1.tgz", "integrity": "sha512-Zn6hxi11p1Rpazopm8bZkIqhIA5laTE3/amEhLsE933o8bgvrAJBblpsZ45vhmURztsglqC9yxSCQyW27yUZmQ==", - "dev": true, "requires": { "debug": "^3.1.0", "lodash": "^4.17.11", @@ -147,7 +134,6 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -158,7 +144,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -166,44 +151,37 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", - "dev": true + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "dev": true, "requires": { "follow-redirects": "1.5.10" } @@ -211,20 +189,17 @@ "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -233,7 +208,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, "requires": { "callsite": "1.0.0" } @@ -241,20 +215,17 @@ "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, "requires": { "ansi-align": "^2.0.0", "camelcase": "^4.0.0", @@ -269,7 +240,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -278,7 +248,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -289,7 +258,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -299,32 +267,27 @@ "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "capture-stack-trace": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -337,7 +300,6 @@ "version": "1.0.0-rc.3", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", - "dev": true, "requires": { "css-select": "~1.2.0", "dom-serializer": "~0.1.1", @@ -350,20 +312,17 @@ "ci-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" }, "cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, "requires": { "restore-cursor": "^2.0.0" } @@ -371,14 +330,12 @@ "cli-spinners": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -386,14 +343,12 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -402,7 +357,6 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, "requires": { "graceful-readlink": ">= 1.0.0" } @@ -410,26 +364,22 @@ "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, "configstore": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, "requires": { "dot-prop": "^4.1.0", "graceful-fs": "^4.1.2", @@ -442,14 +392,12 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-error-class": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, "requires": { "capture-stack-trace": "^1.0.0" } @@ -458,7 +406,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, "requires": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -468,14 +415,12 @@ "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, "css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, "requires": { "boolbase": "~1.0.0", "css-what": "2.1", @@ -486,20 +431,17 @@ "css-what": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" }, "csv-parse": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.10.1.tgz", - "integrity": "sha512-gdDJVchi0oSLIcYXz1H/VSgLE6htHDqJyFsRU/vTkQgmVOZ3S0IR2LXnNbWUYG7VD76dYVwdfBLyx8AX9+An8A==", - "dev": true + "integrity": "sha512-gdDJVchi0oSLIcYXz1H/VSgLE6htHDqJyFsRU/vTkQgmVOZ3S0IR2LXnNbWUYG7VD76dYVwdfBLyx8AX9+An8A==" }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -508,7 +450,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" }, @@ -516,8 +457,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -525,7 +465,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, "requires": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", @@ -538,14 +477,12 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-for-each": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-3.0.0.tgz", "integrity": "sha512-pPN+0f8jlnNP+z90qqOdxGghJU5XM6oBDhvAR+qdQzjCg5pk/7VPPvKK1GqoXEFkHza6ZS+Otzzvmr0g3VUaKw==", - "dev": true, "requires": { "lodash.isplainobject": "^4.0.6" } @@ -553,14 +490,12 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -568,14 +503,12 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, "requires": { "domelementtype": "^1.3.0", "entities": "^1.1.1" @@ -584,14 +517,12 @@ "domelementtype": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, "requires": { "domelementtype": "1" } @@ -600,17 +531,15 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, "requires": { "dom-serializer": "0", "domelementtype": "1" } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "requires": { "is-obj": "^1.0.0" } @@ -624,7 +553,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/driftless/-/driftless-2.0.3.tgz", "integrity": "sha512-hSDKsQphnL4O0XLAiyWQ8EiM9suXH0Qd4gMtwF86b5wygGV8r95w0JcA38FOmx9N3LjFCIHLG2winLPNken4Tg==", - "dev": true, "requires": { "present": "^0.0.3" } @@ -632,14 +560,12 @@ "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -649,7 +575,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", - "dev": true, "requires": { "component-emitter": "~1.3.0", "component-inherit": "0.0.3", @@ -667,14 +592,12 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -683,7 +606,6 @@ "version": "6.1.4", "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dev": true, "requires": { "async-limiter": "~1.0.0" } @@ -694,7 +616,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", - "dev": true, "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", @@ -706,14 +627,12 @@ "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "es-abstract": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -732,7 +651,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -742,14 +660,12 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.2.tgz", "integrity": "sha512-InuOIiKk8wwuOFg6x9BQXbzjrQhtyXh46K9bqVTPzSo2FnyMBaYGBMC6PhQy7yxxil9vIedFBweQBMK74/7o8A==", - "dev": true, "requires": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -761,26 +677,22 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, "requires": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", @@ -794,44 +706,37 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "filtrex": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/filtrex/-/filtrex-0.5.4.tgz", - "integrity": "sha1-mAddUY8GjE9Yt7WJoifZi9n2OV0=", - "dev": true + "integrity": "sha1-mAddUY8GjE9Yt7WJoifZi9n2OV0=" }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, "requires": { "debug": "=3.1.0" }, @@ -840,7 +745,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -848,22 +752,19 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -873,20 +774,17 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -895,7 +793,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, "requires": { "ini": "^1.3.4" } @@ -904,7 +801,6 @@ "version": "6.7.1", "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, "requires": { "create-error-class": "^3.0.0", "duplexer3": "^0.1.4", @@ -922,26 +818,22 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -951,7 +843,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -960,7 +851,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -969,7 +859,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, "requires": { "isarray": "2.0.1" } @@ -977,26 +866,22 @@ "has-cors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, "requires": { "domelementtype": "^1.3.1", "domhandler": "^2.3.0", @@ -1010,7 +895,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -1020,50 +904,42 @@ "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" }, "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" }, "is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, "requires": { "ci-info": "^1.5.0" } @@ -1071,20 +947,17 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, "requires": { "global-dirs": "^0.1.0", "is-path-inside": "^1.0.0" @@ -1093,20 +966,17 @@ "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, "requires": { "path-is-inside": "^1.0.1" } @@ -1114,14 +984,12 @@ "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" }, "is-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -1129,20 +997,17 @@ "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -1150,44 +1015,37 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isnumber": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isnumber/-/isnumber-1.0.0.tgz", - "integrity": "sha1-Dj+XWbWB2Z3YUIbw7Cp0kJz63QE=", - "dev": true + "integrity": "sha1-Dj+XWbWB2Z3YUIbw7Cp0kJz63QE=" }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1196,38 +1054,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsck": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/jsck/-/jsck-0.3.2.tgz", - "integrity": "sha1-jgazG7V7AJDlA91O5q0PJp3/GlU=", - "dev": true + "integrity": "sha1-jgazG7V7AJDlA91O5q0PJp3/GlU=" }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "jsonpath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.0.2.tgz", "integrity": "sha512-rmzlgFZiQPc6q4HDyK8s9Qb4oxBnI5sF61y/Co5PV0lc3q2bIuRsNdueVbhoSHdKM4fxeimphOAtfz47yjCfeA==", - "dev": true, "requires": { "esprima": "1.2.2", "static-eval": "2.0.2", @@ -1237,8 +1089,7 @@ "esprima": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs=", - "dev": true + "integrity": "sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs=" } } }, @@ -1246,7 +1097,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -1258,7 +1108,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, "requires": { "package-json": "^4.0.0" } @@ -1267,7 +1116,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -1276,20 +1124,17 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, "requires": { "chalk": "^2.0.1" }, @@ -1298,7 +1143,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -1307,7 +1151,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1318,7 +1161,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -1328,14 +1170,12 @@ "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -1345,7 +1185,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.2.0.tgz", "integrity": "sha1-eeZnRTDaQYPoeVO9aGFx4HDaULk=", - "dev": true, "requires": { "mersenne": "~0.0.3", "statsd-parser": "~0.0.4" @@ -1355,7 +1194,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, "requires": { "pify": "^3.0.0" } @@ -1363,20 +1201,17 @@ "mersenne": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.4.tgz", - "integrity": "sha1-QB/ex+whzbngPNPTAhOY2iGycIU=", - "dev": true + "integrity": "sha1-QB/ex+whzbngPNPTAhOY2iGycIU=" }, "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "dev": true + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dev": true, "requires": { "mime-db": "1.44.0" } @@ -1384,38 +1219,32 @@ "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "moment": { "version": "2.26.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", - "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==", - "dev": true + "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanotimer": { "version": "0.3.15", "resolved": "https://registry.npmjs.org/nanotimer/-/nanotimer-0.3.15.tgz", - "integrity": "sha1-KA0nfbkUbspvilcLVyq68qmsx1Q=", - "dev": true + "integrity": "sha1-KA0nfbkUbspvilcLVyq68qmsx1Q=" }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, "requires": { "path-key": "^2.0.0" } @@ -1424,7 +1253,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, "requires": { "boolbase": "~1.0.0" } @@ -1432,26 +1260,22 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" }, "object-inspect": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" }, "object-is": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -1460,14 +1284,12 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, "requires": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", @@ -1479,7 +1301,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, "requires": { "mimic-fn": "^1.0.0" } @@ -1488,7 +1309,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, "requires": { "is-wsl": "^1.1.0" } @@ -1497,7 +1317,6 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -1511,7 +1330,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", - "dev": true, "requires": { "chalk": "^2.1.0", "cli-cursor": "^2.1.0", @@ -1523,7 +1341,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -1532,7 +1349,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1543,7 +1359,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -1553,20 +1368,17 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, "requires": { "got": "^6.7.1", "registry-auth-token": "^3.0.1", @@ -1578,7 +1390,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, "requires": { "@types/node": "*" } @@ -1587,7 +1398,6 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, "requires": { "better-assert": "~1.0.0" } @@ -1596,7 +1406,6 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, "requires": { "better-assert": "~1.0.0" } @@ -1604,80 +1413,67 @@ "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pidusage": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-1.2.0.tgz", - "integrity": "sha512-OGo+iSOk44HRJ8q15AyG570UYxcm5u+R99DI8Khu8P3tKGkVu5EZX4ywHglWSTMNNXQ274oeGpYrvFEhDIFGPg==", - "dev": true + "integrity": "sha512-OGo+iSOk44HRJ8q15AyG570UYxcm5u+R99DI8Khu8P3tKGkVu5EZX4ywHglWSTMNNXQ274oeGpYrvFEhDIFGPg==" }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, "present": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/present/-/present-0.0.3.tgz", - "integrity": "sha1-Wu+4pd32s0xldDvxzeU1I6rBwFo=", - "dev": true + "integrity": "sha1-Wu+4pd32s0xldDvxzeU1I6rBwFo=" }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -1689,7 +1485,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -1700,7 +1495,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" @@ -1710,7 +1504,6 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dev": true, "requires": { "rc": "^1.1.6", "safe-buffer": "^5.0.1" @@ -1720,7 +1513,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, "requires": { "rc": "^1.0.1" } @@ -1729,7 +1521,6 @@ "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1756,8 +1547,7 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -1765,7 +1555,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, "requires": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -1774,26 +1563,22 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, "requires": { "semver": "^5.0.3" } @@ -1802,7 +1587,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -1810,20 +1594,17 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "socket.io-client": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", - "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", @@ -1845,7 +1626,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -1856,7 +1636,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", - "dev": true, "requires": { "component-emitter": "1.2.1", "debug": "~3.1.0", @@ -1867,7 +1646,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -1875,35 +1653,30 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "socketio-wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/socketio-wildcard/-/socketio-wildcard-2.0.0.tgz", - "integrity": "sha1-JGboMidrGRY1Y77ncjiHR/kSR1s=", - "dev": true + "integrity": "sha1-JGboMidrGRY1Y77ncjiHR/kSR1s=" }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "optional": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1920,7 +1693,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "dev": true, "requires": { "escodegen": "^1.8.1" } @@ -1929,7 +1701,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/stats-lite/-/stats-lite-2.2.0.tgz", "integrity": "sha512-/Kz55rgUIv2KP2MKphwYT/NCuSfAlbbMRv2ZWw7wyXayu230zdtzhxxuXXcvsc6EmmhS8bSJl3uS1wmMHFumbA==", - "dev": true, "requires": { "isnumber": "~1.0.0" } @@ -1937,14 +1708,12 @@ "statsd-parser": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", - "integrity": "sha1-y9JDlTzELv/VSLXSI4jtaJ7GOb0=", - "dev": true + "integrity": "sha1-y9JDlTzELv/VSLXSI4jtaJ7GOb0=" }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -1953,14 +1722,12 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -1971,7 +1738,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -1981,7 +1747,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -1991,7 +1756,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "requires": { "safe-buffer": "~5.2.0" } @@ -2000,7 +1764,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2008,26 +1771,22 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, "requires": { "execa": "^0.7.0" } @@ -2035,14 +1794,12 @@ "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "tmp": { "version": "0.0.28", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", - "dev": true, "requires": { "os-tmpdir": "~1.0.1" } @@ -2050,14 +1807,12 @@ "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -2066,14 +1821,12 @@ "try-require": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/try-require/-/try-require-1.2.1.tgz", - "integrity": "sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I=", - "dev": true + "integrity": "sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I=" }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -2081,14 +1834,12 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -2096,14 +1847,12 @@ "underscore": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, "requires": { "crypto-random-string": "^1.0.0" } @@ -2111,14 +1860,12 @@ "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, "update-notifier": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, "requires": { "boxen": "^1.2.1", "chalk": "^2.0.1", @@ -2136,7 +1883,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -2145,7 +1891,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2156,7 +1901,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -2167,7 +1911,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -2176,7 +1919,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, "requires": { "prepend-http": "^1.0.1" } @@ -2184,20 +1926,17 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -2208,7 +1947,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -2217,7 +1955,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, "requires": { "string-width": "^2.1.1" } @@ -2225,14 +1962,12 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -2243,7 +1978,6 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, "requires": { "async-limiter": "~1.0.0" } @@ -2251,26 +1985,22 @@ "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" }, "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", - "dev": true + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } } From a2eff18ceee87aa9000c51993f76c4e4d55ea493 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Thu, 26 Nov 2020 11:08:43 -0800 Subject: [PATCH 109/194] remove build/deploy for the api mobile from the Pipeline (#968) * remove build in the api mobile from the Pipeline * Removing all reference to the mobile api --- .config/config.json | 8 +-- .github/workflows/cleanClosedPR.yml | 10 +-- .github/workflows/deploy.yml | 59 ++--------------- .github/workflows/deployStatic.yml | 99 +++-------------------------- 4 files changed, 16 insertions(+), 160 deletions(-) diff --git a/.config/config.json b/.config/config.json index 0fc58489c..19100705b 100644 --- a/.config/config.json +++ b/.config/config.json @@ -12,8 +12,7 @@ "olderVersions": [], "module": { "app": "invasivesbc-app", - "api": "invasivesbc-api", - "api-mobile": "invasivesbc-api-mobile" + "api": "invasivesbc-api" }, "staticBranches": ["dev", "staging", "prod"], "staticUrls": { @@ -26,11 +25,6 @@ "staging": "api-test-invasivesbc.pathfinder.gov.bc.ca", "prod": "api-invasivesbc.pathfinder.gov.bc.ca" }, - "staticUrlsAPIMobile": { - "dev": "api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca", - "staging": "api-mobile-test-invasivesbc.pathfinder.gov.bc.ca", - "prod": "api-mobile-invasivesbc.pathfinder.gov.bc.ca" - }, "certificateURL": { "dev": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", "test": "https://test.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", diff --git a/.github/workflows/cleanClosedPR.yml b/.github/workflows/cleanClosedPR.yml index 5deb9a49c..0fcd13950 100644 --- a/.github/workflows/cleanClosedPR.yml +++ b/.github/workflows/cleanClosedPR.yml @@ -7,7 +7,7 @@ on: types: [closed] jobs: clean: - name: Clean Deployment Artifacts for App, API, and API-MOBILE in Dev and Tools environment + name: Clean Deployment Artifacts for App, API in Dev and Tools environment runs-on: ubuntu-latest # Only do this when the PR was not merged and only for dev if: ${{ github.event.pull_request.merged != true && github.base_ref == 'dev' }} @@ -38,14 +38,6 @@ jobs: DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the api-mobile deployment artifacts - - name: Clean API Mobile Deployment - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the app deployment artifacts - name: Clean APP Deployment working-directory: "./app/.pipeline/" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0d5fd29db..ac3b55609 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -50,38 +50,6 @@ jobs: npm ci DEBUG=* npm run build -- --pr=$BUILD_ID - # Build the `api-mobile` API - # Note: This job relies on setup (database, etc) executed as part of the previous `buildAPI` job - buildAPIMobile: - name: Build "api-mobile" - runs-on: ubuntu-latest - if: ${{ github.event.pull_request.merged == false }} # Only run when the PR is opened/updated - env: - BUILD_ID: ${{ github.event.number }} - steps: - # Checkout the PR branch - - name: Checkout Target Branch - uses: actions/checkout@v2 - - # Install Node - for `node` and `npm` commands - - name: Setup Node.js - uses: actions/setup-node@v1 - with: - node-version: 10.16 - - # Log in to OpenShift. - # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. - # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} - - # Build the api-mobile images - - name: Build API Mobile Images - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run build -- --pr=$BUILD_ID - # Build the web frontend app buildAPP: name: Build App @@ -113,16 +81,15 @@ jobs: npm ci DEBUG=* npm run build -- --pr=$BUILD_ID - # Deploy App, API, and API-MOBILE images + # Deploy App, API images deploy: - name: Deploy App, API, and API-MOBILE + name: Deploy App, API runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == false}} env: BUILD_ID: ${{ github.event.number }} needs: - buildAPI - - buildAPIMobile - buildAPP steps: # Checkout the PR branch @@ -153,16 +120,6 @@ jobs: DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev - # Deploy the api-mobile - - name: Deploy API Mobile - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev - # TODO disable test while there are no tests to run. Test command (see api.test.yaml) will need updating. - # DEBUG=* npm run test -- --pr=$BUILD_ID --env=dev - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev - # Deploy the app - name: Deploy App working-directory: "./app/.pipeline" @@ -170,9 +127,9 @@ jobs: npm ci DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev - # Deploy App, API, and API-MOBILE images and related build/deployment artifacts + # Deploy App, API images and related build/deployment artifacts clean: - name: Clean Deployment Artifacts for App, API, and API-MOBILE + name: Clean Deployment Artifacts for App, API runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && (github.base_ref != 'dev' && github.base_ref != 'prod') }} env: @@ -202,14 +159,6 @@ jobs: DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the api-mobile deployment artifacts - - name: Clean API Mobile Deployment - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the app deployment artifacts - name: Clean APP Deployment working-directory: "./app/.pipeline/" diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index a97c05dd0..fd80ea04c 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -53,40 +53,6 @@ jobs: npm ci DEBUG=* npm run build -- --pr=$BUILD_ID --branch=${{ github.base_ref }} --type=static - # Build the `api-mobile` API - # Note: This job relies on setup (database, etc) executed as part of the previous `buildAPI` job - buildAPIMobile: - name: Build "api-mobile" Static - runs-on: ubuntu-latest - if: ${{ github.event.pull_request.merged == true}} # Only run when the PR is merged - env: - BUILD_ID: ${{ github.event.number }} - needs: - - buildAPI - steps: - # Checkout the PR branch - - name: Checkout Target Branch - uses: actions/checkout@v2 - - # Install Node - for `node` and `npm` commands - - name: Setup Node.js - uses: actions/setup-node@v1 - with: - node-version: 10.16 - - # Log in to OpenShift. - # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. - # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} - - # Build the api-mobile images - - name: Build API Mobile Images - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run build -- --pr=$BUILD_ID --branch=${{ github.base_ref }} --type=static - # Build the web frontend app buildAPP: name: Build App Static @@ -119,16 +85,15 @@ jobs: DEBUG=* npm run build -- --pr=$BUILD_ID --branch=${{ github.base_ref }} --type=static # End buildAPP - # Deploy App, API, and API-MOBILE images in Dev + # Deploy App, API images in Dev deployDev: - name: Deploy App, API, and API-MOBILE to DEV environment + name: Deploy App, API to DEV environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: BUILD_ID: ${{ github.event.number }} needs: - buildAPI - - buildAPIMobile - buildAPP steps: # Checkout the PR branch @@ -158,14 +123,6 @@ jobs: DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - # Deploy the api-mobile - - name: Deploy API Mobile - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - # Deploy the app - name: Deploy App working-directory: "./app/.pipeline" @@ -173,16 +130,15 @@ jobs: npm ci DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - # Deploy App, API, and API-MOBILE images in Test + # Deploy App, API images in Test deployTest: - name: Deploy App, API, and API-MOBILE to TEST environment + name: Deploy App, API to TEST environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: BUILD_ID: ${{ github.event.number }} needs: - buildAPI - - buildAPIMobile - buildAPP steps: # Checkout the PR branch @@ -212,14 +168,6 @@ jobs: DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - # Deploy the api-mobile - - name: Deploy API Mobile - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - # Deploy the app - name: Deploy App working-directory: "./app/.pipeline" @@ -227,16 +175,15 @@ jobs: npm ci DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - # Deploy App, API, and API-MOBILE images in Prod + # Deploy App, API images in Prod deployProd: - name: Deploy App, API, and API-MOBILE to PROD environment + name: Deploy App, API to PROD environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'prod'}} env: BUILD_ID: ${{ github.event.number }} needs: - buildAPI - - buildAPIMobile - buildAPP steps: # Checkout the PR branch @@ -265,14 +212,6 @@ jobs: DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - # Deploy the api-mobile - - name: Deploy API Mobile - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - # Deploy the app - name: Deploy App working-directory: "./app/.pipeline" @@ -280,14 +219,13 @@ jobs: npm ci DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - # Deploy App, API, and API-MOBILE images and related build/deployment artifacts + # Deploy App, API images and related build/deployment artifacts clean: - name: Clean Deployment Artifacts for App, API, and API-MOBILE in DEV and Test environments + name: Clean Deployment Artifacts for App, API in DEV and Test environments runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'dev' }} needs: - buildAPI - - buildAPIMobile - buildAPP - deployDev - deployTest @@ -318,14 +256,6 @@ jobs: DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the api-mobile deployment artifacts - - name: Clean API Mobile Deployment - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the app deployment artifacts - name: Clean APP Deployment working-directory: "./app/.pipeline/" @@ -334,14 +264,13 @@ jobs: DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean App, API, and API-MOBILE images and related build/deployment artifacts + # Clean App, API images and related build/deployment artifacts cleanProd: - name: Clean Deployment Artifacts for App, API, and API-MOBILE in PROD environment + name: Clean Deployment Artifacts for App, API in PROD environment runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'prod' }} needs: - buildAPI - - buildAPIMobile - buildAPP - deployProd env: @@ -371,14 +300,6 @@ jobs: DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the api-mobile deployment artifacts - - name: Clean API Mobile Deployment - working-directory: "./api-mobile/.pipeline/" - run: | - npm ci - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - # Clean the app deployment artifacts - name: Clean APP Deployment working-directory: "./app/.pipeline/" From 32350767ae3f9a5cc2a935b299abef74dd00fb23 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Wed, 16 Dec 2020 08:31:10 -0800 Subject: [PATCH 110/194] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1ecc219b5..4a83af2a5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # Invasive Species BC +[![img](https://img.shields.io/badge/Lifecycle-Dormant-ff7f2a)](https://github.com/bcgov/repomountie/blob/master/doc/lifecycle-badges.md) +Note: In progress of being deprecated by /bcgov/invasivesbc. API still supports /bcgov/mussels-ios https://bcdevexchange.org/projects/prj-invasive-species From 83ed14e8d847f58d01c5949f16f985a8d2e02210 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Tue, 22 Dec 2020 17:41:16 -0800 Subject: [PATCH 111/194] Prepare for OCP4 (#977) * Prepare for OCP4 * Pointing to OCP4 * YAML Formatting * Point to the right image --- .config/config.json | 14 +- .github/workflows/cleanClosedPR.yml | 4 +- .github/workflows/deploy.yml | 17 +- .github/workflows/deployStatic.yml | 32 +- .github/workflows/{e2e.yml => e2e.bkp} | 0 .../{test-analysis.yml => test-analysis.bkp} | 0 .../workflows/{zap-scan.yml => zap-scan.bkp} | 2 +- .jenkins/.pipeline/lib/config.js | 8 +- .jenkins/.pipeline/lib/deploy.js | 2 +- .jenkins/.pipeline/package-lock.json | 21 +- .jenkins/.pipeline/package.json | 7 +- .yo-rc.json | 26 +- PIPELINE.md | 2 +- api-mobile/.docker/api-mobile/Dockerfile | 25 - api-mobile/.docker/api-mobile/Dockerfile.npm | 25 - api-mobile/.docker/db/Dockerfile | 28 - api-mobile/.docker/db/create_postgis.sql | 16 - api-mobile/.docker/nginx/Dockerfile | 15 - api-mobile/.docker/nginx/dev.conf | 11 - api-mobile/.dockerignore | 10 - api-mobile/.editorconfig | 23 - api-mobile/.eslintignore | 11 - api-mobile/.eslintrc | 35 - api-mobile/.gitignore | 12 - api-mobile/.pipeline/README.md | 85 - api-mobile/.pipeline/api.build.js | 9 - api-mobile/.pipeline/api.deploy.js | 9 - api-mobile/.pipeline/api.test.js | 9 - api-mobile/.pipeline/clean.js | 9 - api-mobile/.pipeline/config.js | 117 - api-mobile/.pipeline/lib/api.build.js | 36 - api-mobile/.pipeline/lib/api.deploy.js | 46 - api-mobile/.pipeline/lib/api.test.js | 59 - api-mobile/.pipeline/lib/clean.js | 84 - api-mobile/.pipeline/lib/setup.js | 77 - api-mobile/.pipeline/npmw | 12 - api-mobile/.pipeline/package-lock.json | 46 - api-mobile/.pipeline/package.json | 23 - api-mobile/.pipeline/setup.js | 9 - api-mobile/.pipeline/utils/checkAndClean.js | 39 - api-mobile/.pipeline/utils/wait.js | 109 - api-mobile/.prettierignore | 11 - api-mobile/.prettierrc | 15 - api-mobile/.vscode/launch.json | 14 - api-mobile/.vscode/settings.json | 6 - ...L_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh | 73 - api-mobile/Dockerfile | 56 - api-mobile/Makefile | 92 - api-mobile/README.md | 286 - api-mobile/app.ts | 76 - api-mobile/docker-compose.yml | 90 - api-mobile/dotenv.sh | 26 - api-mobile/env_config/env.docker | 45 - api-mobile/env_config/env.local | 44 - api-mobile/gulpfile.ts | 18 - api-mobile/knexfile.ts | 88 - api-mobile/nodemon.json | 11 - api-mobile/openshift/api.bc.yaml | 114 - api-mobile/openshift/api.dc.yaml | 300 - api-mobile/openshift/api.is.yaml | 25 - api-mobile/openshift/api.test.yaml | 135 - api-mobile/openshift/db.migrations.yaml | 109 - api-mobile/package-lock.json | 8580 ----------------- api-mobile/package.json | 87 - api-mobile/src/constants/misc.ts | 125 - api-mobile/src/database/db.ts | 59 - .../db_source/activity_common_data_view.sql | 23 - ...invasive_terrestrial_plant_observation.sql | 27 - .../observation_common_data_view.sql | 25 - .../20200811120312_activity_incoming_data.ts | 78 - .../20200819074819_activity_view.ts | 35 - .../20200819083337_observation_view.ts | 44 - ...173212_add_media_keys_to_activity_table.ts | 36 - .../20201102152915_point_of_interest.ts | 81 - api-mobile/src/models/activity.ts | 187 - api-mobile/src/models/observation-plant.ts | 127 - api-mobile/src/models/point-of-interest.ts | 171 - api-mobile/src/openapi/README.md | 11 - api-mobile/src/openapi/api-doc.json | 1572 --- .../src/openapi/geojson-feature-doc.json | 493 - api-mobile/src/paths/activities.ts | 175 - api-mobile/src/paths/activity.ts | 293 - api-mobile/src/paths/activity/{activityId}.ts | 158 - api-mobile/src/paths/context/databc/{wfs}.ts | 102 - api-mobile/src/paths/context/elevation.ts | 93 - .../src/paths/context/internal/{target}.ts | 158 - api-mobile/src/paths/context/transform.ts | 130 - api-mobile/src/paths/media.ts | 96 - api-mobile/src/paths/media/{key}.ts | 62 - api-mobile/src/paths/misc/version.ts | 47 - api-mobile/src/paths/point-of-interest.ts | 193 - api-mobile/src/paths/points-of-interest.ts | 142 - api-mobile/src/queries/activity-queries.ts | 213 - api-mobile/src/queries/code-queries.ts | 25 - .../src/queries/point-of-interest-queries.ts | 131 - api-mobile/src/queries/user-queries.ts | 22 - .../src/utils/api-doc-security-filter.ts | 157 - api-mobile/src/utils/auth-utils.ts | 295 - api-mobile/src/utils/code-utils.ts | 60 - api-mobile/src/utils/file-utils.ts | 105 - api-mobile/src/utils/logger.ts | 83 - api-mobile/src/utils/utils.ts | 79 - api-mobile/test/activity-with-files.json | 56 - api-mobile/test/activity.sh | 10 - api-mobile/test/context-databc.sh | 4 - api-mobile/test/context-elevation.sh | 4 - api-mobile/test/context-internal.sh | 19 - api-mobile/test/observation-point.json | 65 - api-mobile/test/observation-polygon.json | 81 - api-mobile/test/observation.sh | 4 - api-mobile/tsconfig.json | 25 - api/.docker/db/Dockerfile | 4 +- api/.pipeline/lib/config.js | 12 +- api/.pipeline/lib/deploy.db.backup.js | 6 +- api/.pipeline/lib/deploy.schemaspy.js | 2 +- api/.pipeline/package-lock.json | 15 +- api/.pipeline/package.json | 9 +- api/openshift/bc.yaml | 2 +- api/openshift/db.bc.yaml | 2 +- api/openshift/route.yaml | 6 +- api/openshift/tools/db.backup.dc.yaml | 2 +- api/openshift/tools/metabase/metabase.dc.yaml | 2 +- api/openshift/tools/schemaspy.dc.yaml | 2 +- app/.pipeline/lib/config.js | 16 +- app/.pipeline/package-lock.json | 21 +- app/.pipeline/package.json | 7 +- app/cypress-e2e/cypress/plugins/index.ts | 2 +- app/openshift/temp.bc.json | 2 +- loadTest/.pipeline/lib/config.js | 4 +- loadTest/.pipeline/package-lock.json | 21 +- loadTest/.pipeline/package.json | 7 +- loadTest/Makefile | 2 +- loadTest/README.md | 2 +- loadTest/app/Makefile | 2 +- loadTest/app/tests/api.yml | 2 +- .../postman/DEV.postman_environment.json | 2 +- 136 files changed, 164 insertions(+), 17596 deletions(-) rename .github/workflows/{e2e.yml => e2e.bkp} (100%) rename .github/workflows/{test-analysis.yml => test-analysis.bkp} (100%) rename .github/workflows/{zap-scan.yml => zap-scan.bkp} (88%) delete mode 100644 api-mobile/.docker/api-mobile/Dockerfile delete mode 100644 api-mobile/.docker/api-mobile/Dockerfile.npm delete mode 100644 api-mobile/.docker/db/Dockerfile delete mode 100644 api-mobile/.docker/db/create_postgis.sql delete mode 100644 api-mobile/.docker/nginx/Dockerfile delete mode 100644 api-mobile/.docker/nginx/dev.conf delete mode 100644 api-mobile/.dockerignore delete mode 100644 api-mobile/.editorconfig delete mode 100644 api-mobile/.eslintignore delete mode 100644 api-mobile/.eslintrc delete mode 100644 api-mobile/.gitignore delete mode 100644 api-mobile/.pipeline/README.md delete mode 100644 api-mobile/.pipeline/api.build.js delete mode 100644 api-mobile/.pipeline/api.deploy.js delete mode 100644 api-mobile/.pipeline/api.test.js delete mode 100644 api-mobile/.pipeline/clean.js delete mode 100644 api-mobile/.pipeline/config.js delete mode 100644 api-mobile/.pipeline/lib/api.build.js delete mode 100644 api-mobile/.pipeline/lib/api.deploy.js delete mode 100644 api-mobile/.pipeline/lib/api.test.js delete mode 100644 api-mobile/.pipeline/lib/clean.js delete mode 100644 api-mobile/.pipeline/lib/setup.js delete mode 100644 api-mobile/.pipeline/npmw delete mode 100644 api-mobile/.pipeline/package-lock.json delete mode 100644 api-mobile/.pipeline/package.json delete mode 100644 api-mobile/.pipeline/setup.js delete mode 100644 api-mobile/.pipeline/utils/checkAndClean.js delete mode 100644 api-mobile/.pipeline/utils/wait.js delete mode 100644 api-mobile/.prettierignore delete mode 100644 api-mobile/.prettierrc delete mode 100644 api-mobile/.vscode/launch.json delete mode 100644 api-mobile/.vscode/settings.json delete mode 100644 api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh delete mode 100644 api-mobile/Dockerfile delete mode 100644 api-mobile/Makefile delete mode 100644 api-mobile/README.md delete mode 100644 api-mobile/app.ts delete mode 100644 api-mobile/docker-compose.yml delete mode 100644 api-mobile/dotenv.sh delete mode 100644 api-mobile/env_config/env.docker delete mode 100644 api-mobile/env_config/env.local delete mode 100644 api-mobile/gulpfile.ts delete mode 100644 api-mobile/knexfile.ts delete mode 100644 api-mobile/nodemon.json delete mode 100644 api-mobile/openshift/api.bc.yaml delete mode 100644 api-mobile/openshift/api.dc.yaml delete mode 100644 api-mobile/openshift/api.is.yaml delete mode 100644 api-mobile/openshift/api.test.yaml delete mode 100644 api-mobile/openshift/db.migrations.yaml delete mode 100644 api-mobile/package-lock.json delete mode 100644 api-mobile/package.json delete mode 100644 api-mobile/src/constants/misc.ts delete mode 100644 api-mobile/src/database/db.ts delete mode 100644 api-mobile/src/database/db_source/activity_common_data_view.sql delete mode 100644 api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql delete mode 100644 api-mobile/src/database/db_source/observation_common_data_view.sql delete mode 100644 api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts delete mode 100644 api-mobile/src/database/migrations/20200819074819_activity_view.ts delete mode 100644 api-mobile/src/database/migrations/20200819083337_observation_view.ts delete mode 100644 api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts delete mode 100644 api-mobile/src/database/migrations/20201102152915_point_of_interest.ts delete mode 100644 api-mobile/src/models/activity.ts delete mode 100644 api-mobile/src/models/observation-plant.ts delete mode 100644 api-mobile/src/models/point-of-interest.ts delete mode 100644 api-mobile/src/openapi/README.md delete mode 100644 api-mobile/src/openapi/api-doc.json delete mode 100644 api-mobile/src/openapi/geojson-feature-doc.json delete mode 100644 api-mobile/src/paths/activities.ts delete mode 100644 api-mobile/src/paths/activity.ts delete mode 100644 api-mobile/src/paths/activity/{activityId}.ts delete mode 100644 api-mobile/src/paths/context/databc/{wfs}.ts delete mode 100644 api-mobile/src/paths/context/elevation.ts delete mode 100644 api-mobile/src/paths/context/internal/{target}.ts delete mode 100644 api-mobile/src/paths/context/transform.ts delete mode 100644 api-mobile/src/paths/media.ts delete mode 100644 api-mobile/src/paths/media/{key}.ts delete mode 100644 api-mobile/src/paths/misc/version.ts delete mode 100644 api-mobile/src/paths/point-of-interest.ts delete mode 100644 api-mobile/src/paths/points-of-interest.ts delete mode 100644 api-mobile/src/queries/activity-queries.ts delete mode 100644 api-mobile/src/queries/code-queries.ts delete mode 100644 api-mobile/src/queries/point-of-interest-queries.ts delete mode 100644 api-mobile/src/queries/user-queries.ts delete mode 100644 api-mobile/src/utils/api-doc-security-filter.ts delete mode 100644 api-mobile/src/utils/auth-utils.ts delete mode 100644 api-mobile/src/utils/code-utils.ts delete mode 100644 api-mobile/src/utils/file-utils.ts delete mode 100644 api-mobile/src/utils/logger.ts delete mode 100644 api-mobile/src/utils/utils.ts delete mode 100644 api-mobile/test/activity-with-files.json delete mode 100644 api-mobile/test/activity.sh delete mode 100755 api-mobile/test/context-databc.sh delete mode 100755 api-mobile/test/context-elevation.sh delete mode 100755 api-mobile/test/context-internal.sh delete mode 100644 api-mobile/test/observation-point.json delete mode 100644 api-mobile/test/observation-polygon.json delete mode 100755 api-mobile/test/observation.sh delete mode 100644 api-mobile/tsconfig.json diff --git a/.config/config.json b/.config/config.json index 19100705b..563e0964b 100644 --- a/.config/config.json +++ b/.config/config.json @@ -1,6 +1,6 @@ { "name": "invasivesbc", - "namespaceSuffix": "8ecbmv", + "namespaceSuffix": "7068ad", "namespace": { "tools": "tools", "dev": "dev", @@ -16,14 +16,14 @@ }, "staticBranches": ["dev", "staging", "prod"], "staticUrls": { - "dev": "dev-invasivesbc.pathfinder.gov.bc.ca", - "staging": "test-invasivesbc.pathfinder.gov.bc.ca", - "prod": "invasivesbc.pathfinder.gov.bc.ca" + "dev": "dev-invasivesbc.apps.silver.devops.gov.bc.ca", + "staging": "test-invasivesbc.apps.silver.devops.gov.bc.ca", + "prod": "invasivesbc.apps.silver.devops.gov.bc.ca" }, "staticUrlsAPI": { - "dev": "api-dev-invasivesbc.pathfinder.gov.bc.ca", - "staging": "api-test-invasivesbc.pathfinder.gov.bc.ca", - "prod": "api-invasivesbc.pathfinder.gov.bc.ca" + "dev": "api-dev-invasivesbc.apps.silver.devops.gov.bc.ca", + "staging": "api-test-invasivesbc.apps.silver.devops.gov.bc.ca", + "prod": "api-invasivesbc.apps.silver.devops.gov.bc.ca" }, "certificateURL": { "dev": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", diff --git a/.github/workflows/cleanClosedPR.yml b/.github/workflows/cleanClosedPR.yml index 0fcd13950..13ab169a4 100644 --- a/.github/workflows/cleanClosedPR.yml +++ b/.github/workflows/cleanClosedPR.yml @@ -22,13 +22,13 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 # Log in to OpenShift. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Clean the api deployment artifacts - name: Clean API Deployment diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ac3b55609..9cf7a6a5f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -33,7 +33,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -41,7 +41,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Build the api images - name: Build API Images @@ -64,7 +64,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -72,7 +72,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Build the app images - name: Build APP Images @@ -98,7 +98,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -106,7 +106,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Deploy the api - name: Deploy API @@ -116,7 +116,6 @@ jobs: DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev - DEBUG=* npm run test -- --pr=$BUILD_ID --env=dev DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev @@ -141,7 +140,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -149,7 +148,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Clean the api deployment artifacts - name: Clean API Deployment diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index fd80ea04c..386c943a9 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -36,7 +36,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -44,7 +44,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{secrets.TOOLS_SA_TOKEN}} --server=https://api.silver.devops.gov.bc.ca:6443 # Build the api images - name: Build API Images @@ -67,7 +67,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -75,7 +75,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Build the app images - name: Build APP Images @@ -102,7 +102,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -110,7 +110,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Deploy the api - name: Deploy API @@ -147,7 +147,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -155,7 +155,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Deploy the api - name: Deploy API @@ -192,7 +192,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -200,7 +200,7 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 # Deploy the api - name: Deploy API @@ -238,7 +238,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -246,8 +246,8 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} - + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 + # Clean the api deployment artifacts - name: Clean API Deployment working-directory: "./api/.pipeline/" @@ -282,7 +282,7 @@ jobs: # Install Node - for `node` and `npm` commands - name: Setup Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: 10.16 @@ -290,8 +290,8 @@ jobs: # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - name: Log in to OpenShift - run: oc login https://console.pathfinder.gov.bc.ca:8443 --token=${{ secrets.TOOLS_SA_TOKEN }} - + run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 + # Clean the api deployment artifacts - name: Clean API Deployment working-directory: "./api/.pipeline/" diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.bkp similarity index 100% rename from .github/workflows/e2e.yml rename to .github/workflows/e2e.bkp diff --git a/.github/workflows/test-analysis.yml b/.github/workflows/test-analysis.bkp similarity index 100% rename from .github/workflows/test-analysis.yml rename to .github/workflows/test-analysis.bkp diff --git a/.github/workflows/zap-scan.yml b/.github/workflows/zap-scan.bkp similarity index 88% rename from .github/workflows/zap-scan.yml rename to .github/workflows/zap-scan.bkp index 8c4b99e5b..f4a676da6 100644 --- a/.github/workflows/zap-scan.yml +++ b/.github/workflows/zap-scan.bkp @@ -22,4 +22,4 @@ jobs: continue-on-error: true with: docker_name: 'owasp/zap2docker-stable' - target: "https://dev-invasivesbc.pathfinder.gov.bc.ca" + target: "https://dev-invasivesbc.apps.silver.devops.gov.bc.ca" diff --git a/.jenkins/.pipeline/lib/config.js b/.jenkins/.pipeline/lib/config.js index 0d454c5e5..ebf4254f8 100644 --- a/.jenkins/.pipeline/lib/config.js +++ b/.jenkins/.pipeline/lib/config.js @@ -5,10 +5,10 @@ const version = '1.0.0' const name = 'jenkins' const phases = { - build: {namespace:'8ecbmv-tools' , name: `${name}`, phase: 'build' , changeId:changeId, suffix: `-build-${changeId}` , instance: `${name}-build-${changeId}` , version:`${version}-${changeId}`, tag:`build-${version}-${changeId}`}, - dev: {namespace:'8ecbmv-tools' , name: `${name}`, phase: 'dev' , changeId:changeId, suffix: `-dev-${changeId}` , instance: `${name}-dev-${changeId}` , version:`${version}-${changeId}`, tag:`dev-${version}-${changeId}`}, - test: {namespace:'8ecbmv-tools' , name: `${name}`, phase: 'test' , changeId:changeId, suffix: `-test` , instance: `${name}-test` , version:`${version}`, tag:`test-${version}`}, - prod: {namespace:'8ecbmv-tools' , name: `${name}`, phase: 'prod' , changeId:changeId, suffix: `-prod` , instance: `${name}-prod` , version:`${version}`, tag:`prod-${version}`}, + build: {namespace:'7068ad-tools' , name: `${name}`, phase: 'build' , changeId:changeId, suffix: `-build-${changeId}` , instance: `${name}-build-${changeId}` , version:`${version}-${changeId}`, tag:`build-${version}-${changeId}`}, + dev: {namespace:'7068ad-tools' , name: `${name}`, phase: 'dev' , changeId:changeId, suffix: `-dev-${changeId}` , instance: `${name}-dev-${changeId}` , version:`${version}-${changeId}`, tag:`dev-${version}-${changeId}`}, + test: {namespace:'7068ad-tools' , name: `${name}`, phase: 'test' , changeId:changeId, suffix: `-test` , instance: `${name}-test` , version:`${version}`, tag:`test-${version}`}, + prod: {namespace:'7068ad-tools' , name: `${name}`, phase: 'prod' , changeId:changeId, suffix: `-prod` , instance: `${name}-prod` , version:`${version}`, tag:`prod-${version}`}, }; // This callback forces the node process to exit as failure. diff --git a/.jenkins/.pipeline/lib/deploy.js b/.jenkins/.pipeline/lib/deploy.js index 529f4fca8..29d9c2719 100755 --- a/.jenkins/.pipeline/lib/deploy.js +++ b/.jenkins/.pipeline/lib/deploy.js @@ -17,7 +17,7 @@ module.exports = (settings)=>{ 'NAME': phases[phase].name, 'SUFFIX': phases[phase].suffix, 'VERSION': phases[phase].tag, - 'ROUTE_HOST': `${phases[phase].name}${phases[phase].suffix}-${phases[phase].namespace}.pathfinder.gov.bc.ca` + 'ROUTE_HOST': `${phases[phase].name}${phases[phase].suffix}-${phases[phase].namespace}.apps.silver.devops.gov.bc.ca` } })) diff --git a/.jenkins/.pipeline/package-lock.json b/.jenkins/.pipeline/package-lock.json index cd85b2fc3..0189c1e9d 100644 --- a/.jenkins/.pipeline/package-lock.json +++ b/.jenkins/.pipeline/package-lock.json @@ -5,13 +5,18 @@ "requires": true, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, "lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", @@ -28,12 +33,12 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "pipeline-cli": { - "version": "git+https://github.com/BCDevOps/pipeline-cli.git#2d2c46e6fbd54ad2c39537508f54b1c9b20da24a", + "version": "git+https://github.com/BCDevOps/pipeline-cli.git#c7261fb33dec80a9aff4399aab49e7f0c6744efe", "from": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", "requires": { "debug": "^4.1.0", diff --git a/.jenkins/.pipeline/package.json b/.jenkins/.pipeline/package.json index 0ca51bbfc..1585261de 100644 --- a/.jenkins/.pipeline/package.json +++ b/.jenkins/.pipeline/package.json @@ -18,6 +18,11 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1" + "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", + "debug": "^4.2.0", + "lodash.isempty": "^4.0.1", + "lodash.isfunction": "^3.0.9", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1" } } diff --git a/.yo-rc.json b/.yo-rc.json index 473c87804..65606fa40 100644 --- a/.yo-rc.json +++ b/.yo-rc.json @@ -4,21 +4,21 @@ "modules": { "jenkins": { "path": ".jenkins", - "namespace": "8ecbmv-tools", + "namespace": "7068ad-tools", "name": "jenkins", "version": "1.0.0", "environments": { "build": { - "namespace": "8ecbmv-tools" + "namespace": "7068ad-tools" }, "dev": { - "namespace": "8ecbmv-tools" + "namespace": "7068ad-tools" }, "test": { - "namespace": "8ecbmv-tools" + "namespace": "7068ad-tools" }, "prod": { - "namespace": "8ecbmv-tools" + "namespace": "7068ad-tools" } }, "jenkinsJobName": "_jenkins", @@ -33,16 +33,16 @@ "path": "app", "environments": { "build": { - "namespace": "8ecbmv-tools" + "namespace": "7068ad-tools" }, "dev": { - "namespace": "8ecbmv-dev" + "namespace": "7068ad-dev" }, "test": { - "namespace": "8ecbmv-test" + "namespace": "7068ad-test" }, "prod": { - "namespace": "8ecbmv-prod" + "namespace": "7068ad-prod" } }, "jenkinsJobName": "app", @@ -57,16 +57,16 @@ "path": "api", "environments": { "build": { - "namespace": "8ecbmv-tools" + "namespace": "7068ad-tools" }, "dev": { - "namespace": "8ecbmv-dev" + "namespace": "7068ad-dev" }, "test": { - "namespace": "8ecbmv-test" + "namespace": "7068ad-test" }, "prod": { - "namespace": "8ecbmv-prod" + "namespace": "7068ad-prod" } }, "jenkinsJobName": "api", diff --git a/PIPELINE.md b/PIPELINE.md index 3184a163a..4b2c8cb16 100644 --- a/PIPELINE.md +++ b/PIPELINE.md @@ -50,7 +50,7 @@ Run tests with SonarQube Analysis. #### Security Scan -Whenever a new PR is created or a new commit is pushed to an existing PR, a dynamic security scan will be performed on the DEV environment (https://dev-invasivesbc.pathfinder.gov.bc.ca/) using OWASP Zap's baseline scan. The results of the scan will be displayed on the PR's page in GitHub. +Whenever a new PR is created or a new commit is pushed to an existing PR, a dynamic security scan will be performed on the DEV environment (https://dev-invasivesbc.apps.silver.devops.gov.bc.ca/) using OWASP Zap's baseline scan. The results of the scan will be displayed on the PR's page in GitHub. OWASP Zap and GitHub Actions will automatically create a new Issue for any security vulnerabilities discovered during the scan. diff --git a/api-mobile/.docker/api-mobile/Dockerfile b/api-mobile/.docker/api-mobile/Dockerfile deleted file mode 100644 index b517f9cfd..000000000 --- a/api-mobile/.docker/api-mobile/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM node:10 - -RUN apt-get -qq update -RUN apt-get -qq install -y curl -RUN npm install -g npm - -# set variables -ENV HOME_ROOT=/opt/app-root -ENV HOME=/opt/app-root/src - -# create source directory -RUN mkdir -p $HOME - -WORKDIR $HOME_ROOT -WORKDIR $HOME - -# Bundle app source -COPY ./ . - -VOLUME ${HOME} - -ENV PATH ${HOME}/node_modules/.bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH - -# run the database migrations and start api-mobile in reload mode (will reload on file changes) -CMD [ "npm", "run", "start:migrate:reload" ] diff --git a/api-mobile/.docker/api-mobile/Dockerfile.npm b/api-mobile/.docker/api-mobile/Dockerfile.npm deleted file mode 100644 index 4821f0893..000000000 --- a/api-mobile/.docker/api-mobile/Dockerfile.npm +++ /dev/null @@ -1,25 +0,0 @@ -FROM node:10 - -RUN apt-get -qq update -RUN npm install -g npm - -# Create app directory -ENV HOME_ROOT=/opt/app-root -ENV HOME=/opt/app-root/src - -RUN mkdir -p $HOME - -WORKDIR $HOME_ROOT - -WORKDIR $HOME - -# Install dependencies -# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+) -COPY ./package*.json ./ - -# If you are building your code for production -# RUN npm install --only=production -RUN npm set progress=false && npm ci - -VOLUME ${HOME}/node_modules -ENTRYPOINT /usr/bin/tail -f /dev/null diff --git a/api-mobile/.docker/db/Dockerfile b/api-mobile/.docker/db/Dockerfile deleted file mode 100644 index b0a33fe42..000000000 --- a/api-mobile/.docker/db/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM postgres:9.6 - -# set variables -ENV POSTGISV 2.4 -ENV TZ America/Vancouver -ENV PORT 5432 - -# install postgis packages -RUN mkdir -p /opt/apps -RUN apt-get -qq update -RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-postgis-$POSTGISV -RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-postgis-$POSTGISV-scripts -RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-pgrouting -RUN apt-get -qq install -y --no-install-recommends postgresql-$PG_MAJOR-pgrouting-scripts -RUN apt-get -qq install -y --no-install-recommends postgresql-server-dev-$PG_MAJOR -RUN apt-get -qq purge -y --auto-remove postgresql-server-dev-$PG_MAJOR -RUN apt-get -qq clean - -# set time zone -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -# copy postgis init script to docker init directory -RUN mkdir -p /docker-entrypoint-initdb.d -COPY ./create_postgis.sql /docker-entrypoint-initdb.d/postgis.sql - -EXPOSE ${PORT} - -CMD ["postgres"] diff --git a/api-mobile/.docker/db/create_postgis.sql b/api-mobile/.docker/db/create_postgis.sql deleted file mode 100644 index 4376aed62..000000000 --- a/api-mobile/.docker/db/create_postgis.sql +++ /dev/null @@ -1,16 +0,0 @@ --- Enable PostGIS (includes raster) -CREATE EXTENSION IF NOT EXISTS postgis; --- Enable Topology -CREATE EXTENSION IF NOT EXISTS postgis_topology; --- -- Enable PostGIS Advanced 3D --- -- and other geoprocessing algorithms --- -- sfcgal not available with all distributions --- CREATE EXTENSION IF NOT EXISTS postgis_sfcgal; --- -- fuzzy matching needed for Tiger --- CREATE EXTENSION IF NOT EXISTS fuzzystrmatch; --- -- rule based standardizer --- CREATE EXTENSION IF NOT EXISTS address_standardizer; --- -- example rule data set --- CREATE EXTENSION IF NOT EXISTS address_standardizer_data_us; --- -- Enable US Tiger Geocoder --- CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder; diff --git a/api-mobile/.docker/nginx/Dockerfile b/api-mobile/.docker/nginx/Dockerfile deleted file mode 100644 index 3390313c4..000000000 --- a/api-mobile/.docker/nginx/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM nginx:stable-alpine - -RUN apk update -q -RUN apk upgrade -q -RUN apk add -q --no-cache bash -RUN adduser -D -H -u 1000 -s /bin/bash www-data -G www-data - -RUN mkdir -p /usr/app -WORKDIR /usr/app - -# remove any existing conf file -RUN rm /etc/nginx/conf.d/default.conf - -# copy our nginx conf file -COPY /dev.conf /etc/nginx/conf.d diff --git a/api-mobile/.docker/nginx/dev.conf b/api-mobile/.docker/nginx/dev.conf deleted file mode 100644 index 4686cf223..000000000 --- a/api-mobile/.docker/nginx/dev.conf +++ /dev/null @@ -1,11 +0,0 @@ -server { - listen 80; - location / { - proxy_pass http://api-mobile:7080; - proxy_redirect default; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Host $server_name; - } -} diff --git a/api-mobile/.dockerignore b/api-mobile/.dockerignore deleted file mode 100644 index fffda4861..000000000 --- a/api-mobile/.dockerignore +++ /dev/null @@ -1,10 +0,0 @@ -node_modules -**/node_modules - -**/.npm -**/.config -**.bash_history - -dist - -coverage diff --git a/api-mobile/.editorconfig b/api-mobile/.editorconfig deleted file mode 100644 index a3710eddb..000000000 --- a/api-mobile/.editorconfig +++ /dev/null @@ -1,23 +0,0 @@ -# prettier vscode extension + .prettierrc config takes presedence over .editorconfig config - -# Editor configuration, see http://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -max_line_length = off -trim_trailing_whitespace = false - -[*.html] -indent_style = space -indent_size = 2 - -[*.scss] -indent_style = space -indent_size = 2 diff --git a/api-mobile/.eslintignore b/api-mobile/.eslintignore deleted file mode 100644 index c94c5e177..000000000 --- a/api-mobile/.eslintignore +++ /dev/null @@ -1,11 +0,0 @@ -node_modules -**/node_modules - -dist -coverage - -openshift -sonar-runner -uploads - -.vscode diff --git a/api-mobile/.eslintrc b/api-mobile/.eslintrc deleted file mode 100644 index 6c32e038b..000000000 --- a/api-mobile/.eslintrc +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": [ - "eslint:recommended", - "prettier/@typescript-eslint", - "plugin:prettier/recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module" - }, - "plugins": ["prettier", "@typescript-eslint"], - "env": { - "es6": true, - "node": true, - "mongo": true, - "mocha": true, - "jest": true, - "jasmine": true - }, - "rules": { - "prettier/prettier": [ - "error", - { - "endOfLine": "auto" - } - ], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/ban-types": ["error", { "types": { "object": false, "extendDefaults": true } }], - "no-var": "error" - } -} diff --git a/api-mobile/.gitignore b/api-mobile/.gitignore deleted file mode 100644 index 230f72d58..000000000 --- a/api-mobile/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -node_modules -**/node_modules - -**/.npm -**/.config -**.bash_history - -dist - -coverage - -.env diff --git a/api-mobile/.pipeline/README.md b/api-mobile/.pipeline/README.md deleted file mode 100644 index 87dd1665e..000000000 --- a/api-mobile/.pipeline/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# Openshift PR-Based Pipeline via GitHub Actions - -## Important files/folders - -- ### _./.github/workflows/_ - - The workflows executed by the GitHub Actions mechanism - - - #### _./github/workflows/deploy.yml_ - - The workflow that runs when a PR is opened. - - - #### _./github/workflows/deployStatic.yml_ - - The workflow that runs when a PR is closed/merged. - -- ### _./.config/config.json_ - - Root config object used in various parts of the pipeline - -- ### _./api-mobile/.pipeline/_ - - Contains all of the jobs executed as part of one or more GitHub workflows - - - #### _./api-mobile/.pipeline/package.json_ - - Defines the scripts executed in one or more steps (in a GitHub Workflow->job) - - - #### _./api-mobile/.pipeline/config.js_ - - Defines the scripts executed in one or more steps (in a GitHub Workflow->job) - - - #### _./api-mobile/.pipeline/lib/_ - - Defines additional config used by the pipeline, extending the root config. - - - #### _./api-mobile/.pipeline/utils/_ - - Contains general helper functions utilized by the task functions - -- ### _./api-mobile/openshift/_ - - Contains OpenShift yaml configs for builds/deployments/etc. These are utilized by the library functions when configuring pods/commands. - -- ### _./Dockerfile_ - Used to build the api image, as part of the execution of the OpenShift build config. - -## Important technologies/repos - -- ### _pipeline-cli_ - - The BCGov npm package that is leveraged heavily in the `./api-mobile/.pipeline/*` code. - - Repo: https://github.com/BCDevOps/pipeline-cli - -- ### _GitHub Workflows_ - - https://docs.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow - -- ### _OpenShift_ - - https://docs.openshift.com/container-platform/3.11/welcome/index.html - -## General flow of pipeline execution - -1. GitHub PR is opened/closed/etc - _Workflow execution triggers are controlled using `on:` statements_ -2. GitHub Workflows are executed -3. Within a given workflow: - - 1. Jobs are executed - _The conditional execution of jobs can be controlled using `if:` statements_ - _The execution order of jobs can be controlled using `needs:` statements_ - - 2. Within a given job: - - 1. Steps are executed - 2. Eventually one of the steps will execute one or more npm commands - _These npm commands match package.json scripts in `.../.pipeline/package.json`_ - - 3. Within a given npm command: - - 1. The pacakge.json script runs, and executes the `.../.pipeline/` file it references - _This file may configure and execute one or more `.../.pipeline/lib/` tasks_ - 2. The `../.pipeline/lib` task will utilize the `pipeline-cli` tool and the `../openshift/` configs to configure and run OpenShift pods/commands diff --git a/api-mobile/.pipeline/api.build.js b/api-mobile/.pipeline/api.build.js deleted file mode 100644 index 323d9a9b2..000000000 --- a/api-mobile/.pipeline/api.build.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const apiBuildTask = require('./lib/api.build.js'); -const config = require('./config.js'); - -const settings = { ...config, phase: 'build' }; - -// Builds the api image -apiBuildTask(settings); diff --git a/api-mobile/.pipeline/api.deploy.js b/api-mobile/.pipeline/api.deploy.js deleted file mode 100644 index c9e065a61..000000000 --- a/api-mobile/.pipeline/api.deploy.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const config = require('./config.js'); -const apiDeployTask = require('./lib/api.deploy.js'); - -const settings = { ...config, phase: config.options.env }; - -// Deploys the api image -apiDeployTask(settings); diff --git a/api-mobile/.pipeline/api.test.js b/api-mobile/.pipeline/api.test.js deleted file mode 100644 index 97947193e..000000000 --- a/api-mobile/.pipeline/api.test.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const config = require('./config.js'); -const apiTestTask = require('./lib/api.test.js'); - -const settings = { ...config, phase: config.options.env }; - -// Executes the api tests -apiTestTask(settings); diff --git a/api-mobile/.pipeline/clean.js b/api-mobile/.pipeline/clean.js deleted file mode 100644 index 44d75f997..000000000 --- a/api-mobile/.pipeline/clean.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const config = require('./config.js'); -const cleanTask = require('./lib/clean.js'); - -const settings = { ...config, phase: config.options.env }; - -// Cleans all build and deployment artifacts (pods, etc) -cleanTask(settings); diff --git a/api-mobile/.pipeline/config.js b/api-mobile/.pipeline/config.js deleted file mode 100644 index da4ecf891..000000000 --- a/api-mobile/.pipeline/config.js +++ /dev/null @@ -1,117 +0,0 @@ -'use strict'; -let options = require('pipeline-cli').Util.parseArguments(); -const config = require('../../.config/config.json'); - -const defaultHost = 'invasivebc-8ecbmv-api-mobile.pathfinder.gov.bc.ca'; -const name = (config.module && config.module['api-mobile']) || 'lucy-api-mobile'; -const dbName = (config.module && config.module['api']) || 'lucy-api'; -const changeId = options.pr || `${Math.floor(Date.now() * 1000) / 60.0}`; //aka pull-request or brach to process -const version = config.version || '1.0.0'; -const deployType = options.type || ''; -const isStaticDeployment = deployType === 'static'; -const deployChangeId = (isStaticDeployment && 'deploy') || changeId; -const branch = (isStaticDeployment && options.branch) || undefined; -const tag = (branch && `build-${version}-${changeId}-${branch}`) || `build-${version}-${changeId}`; -const staticUrlsAPIMobile = config.staticUrlsAPIMobile || {}; -const staticBranches = config.staticBranches || []; - -const processOptions = options => { - const result = options; - - // Check git - if (!result.git.url.includes('.git')) { - result.git.url = `${result.git.url}.git`; - } - if (!result.git.http_url.includes('.git')) { - result.git.http_url = `${result.git.http_url}.git`; - } - - // Fixing repo - if (result.git.repository.includes('/')) { - const last = result.git.repository.split('/').pop(); - const final = last.split('.')[0]; - result.git.repository = final; - } - - return result; -}; - -options = processOptions(options); - -const phases = { - build: { - namespace: '8ecbmv-tools', - name: `${name}`, - dbName: `${dbName}`, - phase: 'build', - changeId: changeId, - suffix: `-build-${changeId}`, - instance: `${name}-build-${changeId}`, - version: `${version}-${changeId}`, - tag: tag, - branch: branch - }, - dev: { - namespace: '8ecbmv-dev', - name: `${name}`, - dbName: `${dbName}`, - phase: 'dev', - changeId: deployChangeId, - suffix: `-dev-${deployChangeId}`, - instance: `${name}-dev-${deployChangeId}`, - version: `${deployChangeId}-${changeId}`, - tag: `dev-${version}-${deployChangeId}`, - host: - (isStaticDeployment && (staticUrlsAPIMobile.dev || defaultHost)) || - `${name}-${changeId}-8ecbmv-dev.pathfinder.gov.bc.ca`, - env: 'dev', - certificateURL: config.certificateURL.dev, - migrationInfo: config.migrationInfo.dev, - replicas: 1, - maxReplicas: 2 - }, - test: { - namespace: '8ecbmv-test', - name: `${name}`, - dbName: `${dbName}`, - phase: 'test', - changeId: deployChangeId, - suffix: `-test`, - instance: `${name}-test`, - version: `${version}`, - previousVersion: config.previousVersion || 'NA', - tag: `test-${version}`, - host: staticUrlsAPIMobile.staging, - env: 'test', - certificateURL: config.certificateURL.test, - migrationInfo: config.migrationInfo.test, - replicas: 3, - maxReplicas: 5 - }, - prod: { - namespace: '8ecbmv-prod', - name: `${name}`, - dbName: `${dbName}`, - phase: 'prod', - changeId: deployChangeId, - suffix: `-prod`, - instance: `${name}-prod`, - version: `${version}`, - previousVersion: config.previousVersion || 'NA', - tag: `prod-${version}`, - host: staticUrlsAPIMobile.prod, - env: 'prod', - certificateURL: config.certificateURL.prod, - migrationInfo: config.migrationInfo.prod, - replicas: 3, - maxReplicas: 6 - } -}; - -// This callback forces the node process to exit as failure. -process.on('unhandledRejection', reason => { - console.log(reason); - process.exit(1); -}); - -module.exports = exports = { phases, options, staticBranches }; diff --git a/api-mobile/.pipeline/lib/api.build.js b/api-mobile/.pipeline/lib/api.build.js deleted file mode 100644 index 1372ac0f6..000000000 --- a/api-mobile/.pipeline/lib/api.build.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; -const { OpenShiftClientX } = require('pipeline-cli'); -const path = require('path'); - -/** - * Run a pod to build the api image stream. - * - * @param {*} settings - */ -module.exports = settings => { - const phases = settings.phases; - const options = settings.options; - const phase = 'build'; - - const oc = new OpenShiftClientX(Object.assign({ namespace: phases.build.namespace }, options)); - - const changeId = phases[phase].changeId; - const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); - - const objects = []; - - objects.push( - ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.bc.yaml`, { - param: { - NAME: phases[phase].name, - SUFFIX: phases[phase].suffix, - VERSION: phases[phase].tag, - SOURCE_REPOSITORY_URL: oc.git.http_url, - SOURCE_REPOSITORY_REF: phases[phase].branch || oc.git.ref - } - }) - ); - - oc.applyRecommendedLabels(objects, phases[phase].name, phase, changeId, phases[phase].instance); - oc.applyAndBuild(objects); -}; diff --git a/api-mobile/.pipeline/lib/api.deploy.js b/api-mobile/.pipeline/lib/api.deploy.js deleted file mode 100644 index 0f5990669..000000000 --- a/api-mobile/.pipeline/lib/api.deploy.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; -const { OpenShiftClientX } = require('pipeline-cli'); -const path = require('path'); - -/** - * Run a pod to deploy the api image (must be already built, see api.build.js). - * - * @param {*} settings - * @returns - */ -module.exports = settings => { - const phases = settings.phases; - const options = settings.options; - const phase = options.env; - - const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); - - const changeId = phases[phase].changeId; - const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); - - let objects = []; - - objects.push( - ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.dc.yaml`, { - param: { - NAME: phases[phase].name, - DBNAME: phases[phase].dbName, - SUFFIX: phases[phase].suffix, - VERSION: phases[phase].tag, - HOST: phases[phase].host, - CHANGE_ID: phases.build.changeId || changeId, - ENVIRONMENT: phases[phase].env || 'dev', - DB_SERVICE_NAME: `${phases[phase].dbName}-postgresql${phases[phase].suffix}`, - CERTIFICATE_URL: phases[phase].certificateURL, - DB_CLEAN_UP: phases[phase].migrationInfo.cleanup, - DB_SEED: phases[phase].migrationInfo.dbSeed, - REPLICAS: phases[phase].replicas || 1, - REPLICA_MAX: phases[phase].maxReplicas || 1 - } - }) - ); - - oc.applyRecommendedLabels(objects, phases[phase].name, phase, `${changeId}`, phases[phase].instance); - oc.importImageStreams(objects, phases[phase].tag, phases.build.namespace, phases.build.tag); - oc.applyAndDeploy(objects, phases[phase].instance); -}; diff --git a/api-mobile/.pipeline/lib/api.test.js b/api-mobile/.pipeline/lib/api.test.js deleted file mode 100644 index 9eb84987a..000000000 --- a/api-mobile/.pipeline/lib/api.test.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; -const { OpenShiftClientX } = require('pipeline-cli'); -const path = require('path'); -const wait = require('../utils/wait'); -const checkAndClean = require('../utils/checkAndClean'); - -/** - * Run a pod to execute tests. - * - * @param {*} settings - */ -module.exports = settings => { - const phases = settings.phases; - const options = settings.options; - const phase = options.env; - - const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); - - const changeId = phases[phase].changeId; - const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); - - let objects = []; - - const instance = `${phases[phase].name}-${changeId}`; - const image = `${phases[phase].name}:${phases[phase].tag}-setup`; - - // Get API image stream - const data = oc.get(`istag/${image}`) || []; - if (data.length === 0) { - console.log('Unable to fetch API Mobile image ref'); - process.exit(0); - } - const imageStream = data[0]; - - const podName = `${phases[phase].name}${phases[phase].suffix}-test`; - - objects.push( - ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.test.yaml`, { - param: { - NAME: podName, - SUFFIX: phases[phase].suffix, - VERSION: phases[phase].tag, - CHANGE_ID: phases[phase].changeId, - ENVIRONMENT: phases[phase].env || 'dev', - DB_SERVICE_NAME: `${phases[phase].dbName}-postgresql${phases[phase].suffix}`, - IMAGE: imageStream.image.dockerImageReference, - CERTIFICATE_URL: 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs', - DB_CLEAN_UP: phases[phase].migrationInfo.cleanup, - DB_SEED: phases[phase].migrationInfo.dbSeed - } - }) - ); - checkAndClean(`pod/${podName}`, oc); - - oc.applyRecommendedLabels(objects, phases[phase].name, phase, `${changeId}`, instance); - oc.applyAndDeploy(objects, phases[phase].instance); - - wait(`pod/${podName}`, settings, 35); -}; diff --git a/api-mobile/.pipeline/lib/clean.js b/api-mobile/.pipeline/lib/clean.js deleted file mode 100644 index 5f767b108..000000000 --- a/api-mobile/.pipeline/lib/clean.js +++ /dev/null @@ -1,84 +0,0 @@ -'use strict'; -const { OpenShiftClientX } = require('pipeline-cli'); -const checkAndClean = require('../utils/checkAndClean'); - -/** - * Run OC commands to clean all build and deployment artifacts (pods, etc). - * - * @param {*} settings - */ -module.exports = settings => { - const phases = settings.phases; - const options = settings.options; - const oc = new OpenShiftClientX(Object.assign({ namespace: phases.build.namespace }, options)); - const target_phase = options.env; - - for (let phaseKey in phases) { - if (!phases.hasOwnProperty(phaseKey)) { - continue; - } - - if (phaseKey !== target_phase) { - continue; - } - - const phaseObj = phases[phaseKey]; - - // Get build configs - let buildConfigs = oc.get('bc', { - selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, - namespace: phaseObj.namespace - }); - - // Clean build configs - buildConfigs.forEach(buildConfig => { - if (buildConfig.spec.output.to.kind == 'ImageStreamTag') { - oc.delete([`ImageStreamTag/${buildConfig.spec.output.to.name}`], { - 'ignore-not-found': 'true', - wait: 'true', - namespace: phaseObj.namespace - }); - } - }); - - // get deployment configs - let deploymentConfigs = oc.get('dc', { - selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},env-name=${phaseKey},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, - namespace: phaseObj.namespace - }); - - // Clean deployment configs - deploymentConfigs.forEach(deploymentConfig => { - deploymentConfig.spec.triggers.forEach(trigger => { - if (trigger.type == 'ImageChange' && trigger.imageChangeParams.from.kind == 'ImageStreamTag') { - oc.delete([`ImageStreamTag/${trigger.imageChangeParams.from.name}`], { - 'ignore-not-found': 'true', - wait: 'true', - namespace: phaseObj.namespace - }); - } - }); - }); - - // Cleaning other pods - if (phaseKey !== 'build') { - const newOC = new OpenShiftClientX(Object.assign({ namespace: phases[phaseKey].namespace }, options)); - const setupPod = `${phases[phaseKey].name}${phases[phaseKey].suffix}-setup`; - // const testPod = `${phases[phaseKey].name}${phases[phaseKey].suffix}-test`; - checkAndClean(`pod/${setupPod}`, newOC); - // checkAndClean(`pod/${testPod}`, newOC); - } - - oc.raw('delete', ['all'], { - selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, - wait: 'true', - namespace: phaseObj.namespace - }); - - oc.raw('delete', ['all,pvc,secrets,Secrets,secret,configmap,endpoints,Endpoints'], { - selector: `app=${phaseObj.instance},env-id=${phaseObj.changeId},!shared,github-repo=${oc.git.repository},github-owner=${oc.git.owner}`, - wait: 'true', - namespace: phaseObj.namespace - }); - } -}; diff --git a/api-mobile/.pipeline/lib/setup.js b/api-mobile/.pipeline/lib/setup.js deleted file mode 100644 index 6e8d36706..000000000 --- a/api-mobile/.pipeline/lib/setup.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; -const { OpenShiftClientX } = require('pipeline-cli'); -const wait = require('../utils/wait'); -const checkAndClean = require('../utils/checkAndClean'); -const path = require('path'); - -/** - * Run a pod to perform general setup operations. - * - * @param {*} settings - */ -module.exports = settings => { - const phases = settings.phases; - const options = settings.options; - const phase = options.env; - - const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); - - const changeId = phases[phase].changeId; - const templatesLocalBaseUrl = oc.toFileUrl(path.resolve(__dirname, '../../openshift')); - - const objects = []; - const isObjects = []; - - const imageStreamName = phases[phase].name; - const instance = `${imageStreamName}-${changeId}`; - const setupTag = `${phases[phase].tag}-setup`; - const image = `${imageStreamName}:${setupTag}`; - - // Clean existing setup image stream - checkAndClean(`istag/${image}`, oc); - - // Creating image stream for setup pod - isObjects.push( - ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/api.is.yaml`, { - param: { - NAME: imageStreamName - } - }) - ); - - oc.applyRecommendedLabels(isObjects, imageStreamName, phase, changeId, instance); - oc.importImageStreams(isObjects, setupTag, phases.build.namespace, phases.build.tag); - - // Get setup image stream - const data = oc.get(`istag/${image}`) || []; - if (data.length === 0) { - console.log('Unable to fetch Setup image ref'); - process.exit(0); - } - const imageStream = data[0]; - - const podName = `${imageStreamName}${phases[phase].suffix}-setup`; - - // Configure database migrations operation - objects.push( - ...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/db.migrations.yaml`, { - param: { - NAME: podName, - SUFFIX: phases[phase].suffix, - VERSION: phases[phase].tag, - CHANGE_ID: phases[phase].changeId, - ENVIRONMENT: phases[phase].env || 'dev', - NODE_ENV: phases[phase].env || 'dev', - DB_SERVICE_NAME: `${phases[phase].dbName}-postgresql${phases[phase].suffix}`, - IMAGE: imageStream.image.dockerImageReference - } - }) - ); - - checkAndClean(`pod/${podName}`, oc); - - oc.applyRecommendedLabels(objects, imageStreamName, phase, changeId, instance); - oc.applyAndDeploy(objects, phases[phase].instance); - - wait(`pod/${podName}`, settings, 30); -}; diff --git a/api-mobile/.pipeline/npmw b/api-mobile/.pipeline/npmw deleted file mode 100644 index 1eed7c953..000000000 --- a/api-mobile/.pipeline/npmw +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -set +x -type -t nvm && nvm deactivate -export NVM_DIR="$(git rev-parse --show-toplevel)/.nvm" -if [ ! -f "$NVM_DIR/nvm.sh" ]; then - mkdir -p "${NVM_DIR}" - curl -sSL -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash &>/dev/null -fi -source "$NVM_DIR/nvm.sh" &>/dev/null -METHOD=script nvm install --no-progress &>/dev/null -nvm use &>/dev/null -exec npm "$@" diff --git a/api-mobile/.pipeline/package-lock.json b/api-mobile/.pipeline/package-lock.json deleted file mode 100644 index 39413b554..000000000 --- a/api-mobile/.pipeline/package-lock.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "pipeline", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "pipeline-cli": { - "version": "git+https://github.com/BCDevOps/pipeline-cli.git#2d2c46e6fbd54ad2c39537508f54b1c9b20da24a", - "from": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", - "requires": { - "debug": "^4.1.0", - "lodash.isfunction": "^3.0.9", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1" - } - } - } -} diff --git a/api-mobile/.pipeline/package.json b/api-mobile/.pipeline/package.json deleted file mode 100644 index acf3d916d..000000000 --- a/api-mobile/.pipeline/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "pipeline", - "version": "1.0.0", - "description": "Contains dependencies and scripts for executing OpenShift pipeline build/deploy scripts", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - }, - "scripts": { - "build": "node api.build.js", - "deploy": "node api.deploy.js", - "test": "node api.test.js", - "setup": "node setup.js", - "clean": "node clean.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/bcgov/ocp-sso.git" - }, - "dependencies": { - "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1" - } -} diff --git a/api-mobile/.pipeline/setup.js b/api-mobile/.pipeline/setup.js deleted file mode 100644 index cab552348..000000000 --- a/api-mobile/.pipeline/setup.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const config = require('./config.js'); -const setupTask = require('./lib/setup.js'); - -const settings = { ...config, phase: config.options.env }; - -// Performs any general setup (ie: database migrations) -setupTask(settings); diff --git a/api-mobile/.pipeline/utils/checkAndClean.js b/api-mobile/.pipeline/utils/checkAndClean.js deleted file mode 100644 index 6314a4329..000000000 --- a/api-mobile/.pipeline/utils/checkAndClean.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright © 2019 Province of British Columbia - * Licensed under the Apache License, Version 2.0 (the "License") - * You may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * ** - * http://www.apache.org/licenses/LICENSE-2.0 - * ** - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * File: checkAndClean.js - * Project: pipeline - * File Created: Tuesday, 29th October 2019 10:17:44 am - * Author: pushan (you@you.you) - * ----- - * Last Modified: Tuesday, 29th October 2019 10:18:04 am - * Modified By: pushan (you@you.you>) - * ----- - */ -/** - * @description Check and delete existing resource - */ -module.exports = (resourceName, oc) => { - try { - const list = oc.get(resourceName) || []; - if (list.length === 0) { - console.log(`checkAndClean: No resource available with resource name: ${resourceName}`); - } else { - console.log(`checkAndClean: Cleaning resource => ${resourceName}`); - oc.delete([resourceName], { 'ignore-not-found': 'true', wait: 'true' }); - } - } catch (excp) { - console.log(`Resource ${resourceName} not available [${excp}]`); - } -}; -// --------------------------------------- diff --git a/api-mobile/.pipeline/utils/wait.js b/api-mobile/.pipeline/utils/wait.js deleted file mode 100644 index 5376833b1..000000000 --- a/api-mobile/.pipeline/utils/wait.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict'; -const { OpenShiftClientX } = require('pipeline-cli'); - -module.exports = (resourceName, settings, countArg, timeoutArg) => { - const timeout = timeoutArg || 20000; - let count = countArg || 20; - const phases = settings.phases; - const options = settings.options; - const phase = options.env; - const oc = new OpenShiftClientX(Object.assign({ namespace: phases[phase].namespace }, options)); - - const check = () => { - try { - console.log(`Getting resource ${resourceName}`); - const list = oc.get(resourceName) || []; - // console.log(`${list.length}:${JSON.stringify(list, null, 2)}`) - if (list.length === 0) { - console.log(`Unable to fetch API Mobile resource: ${resourceName}`); - throw new Error(`Unable to fetch API Mobile resource: ${resourceName}`); - } - // console.log(JSON.stringify(data, null, 2)); - // Get Status - console.log(`Getting POD Status: ${resourceName}`); - const data = list[0]; - const status = data.status || { conditions: [], containerStatuses: [] }; - if (status.conditions && status.conditions.length === 0) { - console.log(`Unable to fetch API Mobile resource: ${resourceName} status`); - console.log(`${JSON.stringify(data)}`); - - // Retry if count is not zero - if (count > 0) { - console.log(`Retry until count is 0: ${resourceName}`); - count = count - 1; - setTimeout(check, timeout); - } else { - throw new Error(`Unable to fetch API Mobile resource: ${resourceName} status`); - } - } - - if (!status.containerStatuses) { - console.log(`Unable to fetch API Mobile resource: ${resourceName} container state (not defined)`); - console.log(`${JSON.stringify(data)}`); - - // Retry if count is not zero - if (count > 0) { - console.log(`Retry until count is 0: ${resourceName}`); - count = count - 1; - setTimeout(check, timeout); - return; - } else { - throw new Error(`Unable to fetch API Mobile resource: ${resourceName} status`); - } - } - - // Checking Container state - if (status.containerStatuses && status.containerStatuses.length === 0) { - console.log(`Unable to fetch API Mobile resource: ${resourceName} container state`); - console.log(`${JSON.stringify(data)}`); - - // Retry if count is not zero - if (count > 0) { - console.log(`Retry until count is 0: ${resourceName}`); - count = count - 1; - setTimeout(check, timeout); - return; - } else { - throw new Error(`Unable to fetch API Mobile resource: ${resourceName} status`); - } - } - - console.log(`Checking Container State: ${resourceName}`); - const containerStatus = status.containerStatuses[0] || {}; - if (!containerStatus.state) { - console.log(`Unable to fetch API Mobile resource: ${resourceName} container state`); - console.log(`${JSON.stringify(data)}`); - throw new Error(`Unable to fetch API Mobile resource: ${resourceName} container state`); - } - const state = containerStatus.state || {}; - if (state.terminated) { - if (state.terminated.reason.toLowerCase() === 'completed') { - console.log(`${resourceName}: Finished [Successfully]`); - // console.log(`${resourceName}: Deleting`) - // Remove Pod - // oc.delete([resourceName], {'ignore-not-found':'true', 'wait':'true'}) - return; - } else { - console.log(`Unable to fetch API Mobile resource: ${resourceName} terminated with error`); - console.log(JSON.stringify(data.status, null, 2)); - throw new Error(`Unable to fetch API Mobile resource: ${resourceName} terminated with error`); - } - } else { - if (count > 0) { - console.log(`Waiting for resource: ${resourceName} to finish ... ${count}`); - count = count - 1; - setTimeout(check, timeout); - } else { - console.log(`Wait time exceed for resource: ${resourceName}`); - console.log(`${JSON.stringify(data)}`); - throw new Error(`Wait time exceed for resource: ${resourceName}`); - } - } - } catch (excp) { - console.log(`Pod (${resourceName}) Wait: Exception ${excp}`); - throw excp; - } - }; - - setTimeout(check, timeout + 10000); -}; diff --git a/api-mobile/.prettierignore b/api-mobile/.prettierignore deleted file mode 100644 index c94c5e177..000000000 --- a/api-mobile/.prettierignore +++ /dev/null @@ -1,11 +0,0 @@ -node_modules -**/node_modules - -dist -coverage - -openshift -sonar-runner -uploads - -.vscode diff --git a/api-mobile/.prettierrc b/api-mobile/.prettierrc deleted file mode 100644 index ecaf4d232..000000000 --- a/api-mobile/.prettierrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "printWidth": 120, - "tabWidth": 2, - "useTabs": false, - "semi": true, - "singleQuote": true, - "trailingComma": "none", - "bracketSpacing": true, - "jsxBracketSameLine": true, - "arrowParens": "avoid", - "requirePragma": false, - "insertPragma": false, - "proseWrap": "never", - "htmlWhitespaceSensitivity": "ignore" -} diff --git a/api-mobile/.vscode/launch.json b/api-mobile/.vscode/launch.json deleted file mode 100644 index 354182c71..000000000 --- a/api-mobile/.vscode/launch.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "request": "launch", - "name": "Launch API using Node", - "program": "${workspaceFolder}/app.ts" - } - ] -} diff --git a/api-mobile/.vscode/settings.json b/api-mobile/.vscode/settings.json deleted file mode 100644 index b55450f6d..000000000 --- a/api-mobile/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "editor.defaultFormatter": "esbenp.prettier-vscode", - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - } -} diff --git a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh b/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh deleted file mode 100644 index ee19b219d..000000000 --- a/api-mobile/CURL_POST_ACTIVITY_BEARER_TOKEN_IS_PARAM_1.sh +++ /dev/null @@ -1,73 +0,0 @@ -echo $1 -curl --location --request POST 'localhost:3002/api/activity' \ ---header 'Authorization: Bearer '${1} \ ---header 'Content-Type: application/json' \ ---data-raw ' -{ - "activity_type": "Observation", - "activity_subtype": "Terrestrial Invasive Plant", - "date": "2019-04-12", - "deviceRequestUID": "string", - "media": [ - { - - } - ], - "geometry": [ - { - - } - ], - "locationAndGeometry": { - "anchorPointY": 0, - "anchorPointX": 0, - "area": 0, - "geometry": {}, - "jurisdiction": "string", - "agency": "string", - "observer1FirstName": "string", - "observer1LastName": "string", - "locationComment": "string", - "generalComment": "string", - "photoTaken": true - }, - "activity_data": { - - }, - "activity_type_data": { - "negative_observation_ind": false, - "aquatic_observation_ind": false, - "primary_user_last_name": "mike", - "secondary_user_first_name": "mike", - "secondary_user_last_name": "mike", - "species": "banana", - "primary_file_id": "test", - "secondary_file_id": "test", - "location_comment": "test", - "general_observation_comment": "general comment", - "sample_taken_ind": true, - "sample_label_number": "string" - }, - "activity_subtype_data": { - "species": "banana", - "distribution": 123, - "density": 123, - "soil_texture": 1, - "slope": 123, - "aspect": 123, - "flowering": true, - "specific_use": 123, - "proposed_action": 123, - "seed_stage": 123, - "plant_health": 123, - "plant_life_stage": 123, - "early_detection": 1, - "research": true, - "well_on_site_ind": true, - "special_care_ind": true, - "biological_care_ind": true, - "legacy_site_ind": true, - "range_unit": "Canyon" - } -} -' diff --git a/api-mobile/Dockerfile b/api-mobile/Dockerfile deleted file mode 100644 index cb3471e71..000000000 --- a/api-mobile/Dockerfile +++ /dev/null @@ -1,56 +0,0 @@ -FROM node:10 - -ENV PORT 3002 -ENV HOME /opt/app-root/src/app - -# Creating HOME -USER 0 -RUN mkdir -p ${HOME} -RUN chmod -R 777 ${HOME} -RUN chown -R 1001 ${HOME} -# Make Directory for uploading issue logs - -RUN mkdir -p ${HOME}/../temp/uploads/issues -RUN chmod -R 777 ${HOME}/../temp/uploads/issues -USER 1001 - -# Setting Path -ENV PATH /opt/rh/rh-nodejs8/root/usr/bin:/opt/app-root/src/node_modules/.bin/:/opt/app-root/src/app.npm-global/bin/:/opt/app-root/src/app/bin:/opt/app-root/src/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/app-root/src/app/node_modules/.bin:/opt/app-root/src/app/app.npm-global/bin - -# Create app directory - -WORKDIR ${HOME} - -# Install app dependencies -# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+) -# RUN npm install --only=production -COPY ./package*.json ./ - -RUN npm ci - -# If you are building your code for production, copy all files -COPY ./ . - -# Cleaning any existing generated file -RUN rm -rf ./dist - -# Build the api dist -RUN npm run build - -# Setting NODE_PATH -ENV NODE_PATH ${HOME}/node_modules - -# Allow all user and app to update few folders -RUN chmod 777 ${HOME}/node_modules -RUN mkdir -p ${HOME}/.config/configstore -RUN chmod -R 777 ${HOME}/.config -RUN chmod -R 777 ${HOME}/.config/configstore - -# Application VOLUME -VOLUME ${HOME} - -# Application Port -EXPOSE 3002 - -# Application Entry point -CMD ["npm", "run", "start"] diff --git a/api-mobile/Makefile b/api-mobile/Makefile deleted file mode 100644 index 015ea9e74..000000000 --- a/api-mobile/Makefile +++ /dev/null @@ -1,92 +0,0 @@ -#!make - -# ------------------------------------------------------------------------------ -# Makefile -- InvasivesBC api-mobile -# ------------------------------------------------------------------------------ - --include .env - -export $(shell sed 's/=.*//' .env) - -all : help -.DEFAULT : help -.PHONY : local local-debug build-local setup-local run-local run-debug close-local cclean-local test-local database api-mobile help - -# ------------------------------------------------------------------------------ -# Task Aliases -# ------------------------------------------------------------------------------ - -# Note: If you need to edit the .env file before running the build: -# 1. Run `make setup-docker` -# 2. Edit the `.env` file -# 3. Run `make local` or `make local-debug` - -local: | setup-docker close-local build-local run-local ## Performs all commands necessary to run api-mobile in docker - -local-debug: | setup-docker close-local build-local run-debug ## Performs all commands necessary to run api-mobile in docker in debug mode - -# ------------------------------------------------------------------------------ -# Development Commands -# ------------------------------------------------------------------------------ - -setup-local: ## Prepares the environment variables for local development (will not overwrite an existing .env file) - @echo "===============================================" - @echo "Make: setup-local - copying env.local to .env" - @echo "===============================================" - @cp -i env_config/env.local .env - -setup-docker: ## Prepares the environment variables for local development using docker (will not overwrite an existing .env file) - @echo "===============================================" - @echo "Make: setup-local - copying env.docker to .env" - @echo "===============================================" - @cp -i env_config/env.docker .env - -build-local: ## Builds the local development containers - @echo "===============================================" - @echo "Make: build-local - building api-mobile Docker image" - @echo "===============================================" - @docker-compose -f docker-compose.yml build - -run-local: ## Runs the local development containers - @echo "===============================================" - @echo "Make: run-local - running api-mobile" - @echo "===============================================" - @docker-compose -f docker-compose.yml up -d - -run-debug: ## Runs the local development containers in debug mode, where all container output is printed to the console - @echo "===============================================" - @echo "Make: run-debug - running api-mobile for debugging" - @echo "===============================================" - @docker-compose -f docker-compose.yml up - -close-local: ## Closes the local development containers - @echo "===============================================" - @echo "Make: close-local - closing local api-mobile containers" - @echo "===============================================" - @docker-compose -f docker-compose.yml down - -clean-local: ## Closes and cleans (removes) local development containers - @echo "===============================================" - @echo "Make: clean-local - closing and cleaning api-mobile containers" - @echo "===============================================" - @docker-compose -f docker-compose.yml down -v --rmi all --remove-orphans - -# ------------------------------------------------------------------------------ -# Helper Commands -# ------------------------------------------------------------------------------ - -database: ## Executes into database container. - @echo "===============================================" - @echo "Make: Shelling into database container" - @echo "===============================================" - @export PGPASSWORD=$(DB_PASS) - @docker-compose exec db psql -U $(DB_USER) $(DB_DATABASE) - -api-mobile: ## Executes into the workspace container. - @echo "===============================================" - @echo "Shelling into api-mobile container" - @echo "===============================================" - @docker-compose exec api-mobile bash - -help: ## Display this help screen. - @grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/api-mobile/README.md b/api-mobile/README.md deleted file mode 100644 index 876e21fb7..000000000 --- a/api-mobile/README.md +++ /dev/null @@ -1,286 +0,0 @@ -# bcgov/lucy-web/api-mobile - -## Technologies Used - -| Technology | Version | Website | Description | -| ---------- | ------- | ------------------------------------ | -------------------- | -| node | 10.x.x | https://nodejs.org/en/ | JavaScript Runtime | -| npm | 6.x.x | https://www.npmjs.com/ | Node Package Manager | -| PostgreSQL | 9.6 | https://www.postgresql.org/download/ | PSQL database | - -
- -# Running Locally with Docker - -See `./Makefile` for all available commands. - -## Primary make commands - -- Build and run a dockerized instance of the api-mobile api, a postgresql database, and an nginx reverse proxy. - - ``` - make local - ``` - -- Build and run a dockerized instance of the api-mobile api, a postgresql database, and an nginx reverse proxy, in debug mode where all docker output is printed to the console: - - ``` - make local-debug - ``` - -## Calling the API - -Access the api directly: `localhost:3002/api/` - -Access the api via the nginx reverse proxy: `localhost:80/api/` - -
- -# Running Locally without Docker - -## Prerequisites - -- A PostgreSQL database, with details matching the _DB\_\*_ variables in `./env_config/env.local`, is available. - -## Commands - -1. CD into `api-mobile` folder - - ``` - cd api-mobile - ``` - -2. Download dependencies - - ``` - npm install - ``` - -3. Create and configure the `.env` file - - - Create an empty `.env` file in `./api-mobile` - - Populate the `.env` with some initial basic values - ``` - make setup-local - ``` - - Manually edit the `.env` to update values as needed, and to set any sensitive values (passwords, etc) - -4. Apply the `.env` variables to the terminal - - ``` - source dotenv.sh - ``` - - - This is a convenience script that iterates over the `.env` file and runs the `export` command on all of key/value pairs. This applies these environment variables to your local terminal. - - _Note: these environment variables only apply to the terminal that this command was run in, and do not persist if the terminal is closed._ - -5. Run the app, using either: - - ``` - npm start - ``` - - or - - ``` - npm run start:reload - ``` - -6. Go to http://localhost:3002/api/api-docs/ to verify that the application is running. - -
- -# API Specification - -The base API is defined in `api-doc.json`. - -If this project is running locally, you can view the api docs at: `http://localhost:3002/api/api-docs/` or `http://localhost:7080/api/api-docs/` if running in Docker. - -This project uses npm package `express-openapi` via `./app.ts` to automatically generate the express server and its routes, based on the contents of the `api-doc.yaml` and the `./src/path/` content. - -- The endpoint paths are defined based on the folder structure of the `./src/paths/` folder. - - Example: `/api/activity` is handled by `./src/paths/activity.ts` - - Example: `/api/code/observation/plant` is handled by `./src/paths/code/observation/plant.ts` - -Recommend reviewing the [Open API Specification](https://swagger.io/docs/specification/about/) before making any changes to the `api-doc.yaml` file. - -_Note: This API currently uses OpenAPI 2.0, as 3.0 is not yet fully supported by many of the swagger libraries/tools used._ - -
- -# Database Migrations - -## Info - -This api users `Knex` to manage and run database migrations. - -A log of executed migrations can be found in the `migration` postgres table. Knex will not re-run a migration that has been run before (indicated by an entry in the `migration` table). - -### Technologies used - -- [Knex](http://knexjs.org/) - -### Configuration file - -- knexfile.ts - -## Running migrations Locally - -- Set up the environment variables required by the `knexfile.ts` config - - ``` - make setup-local - ``` - -- Run migrations: - - ``` - npm run migrate:latest - - or - - npx knex migrate:latest - ``` - -- Rollback last set of migrations: - - ``` - npm run migrate:rollback - - or - - npx knex migrate:rollback - ``` - -- See other available Knex commands: - - ``` - npx knex --help - ``` - -
- -# Linting and Formatting - -## Info - -Linting and formatting is handled by a combiation of `ESlint` and `Prettier`. The reason for this, is that you get the best of both worlds: ESlint's larger selection of linting rules with Prettier's robust formatting rules. EditorConfig is additionally used to add enforce some basic IDE formatting rules. - -### Technologies used - -- [ESlint](https://eslint.org/) -- [Prettier](https://prettier.io/) -- [EditorConfig](http://editorconfig.org) - -### Configuration files - -- ESlint - - .eslintrc - - .eslintignore -- Prettier - - .prettierrc - - .prettierignore -- EditorConfig - - .editorconfig - -## Run Linters - -- Lint the `*.ts` files using `ESLint`. - -``` -npm run lint -``` - -## Run Linters + Formatters - -_Note: In the worst case scenario, where linting/formatting has been neglected, then these `lint-fix` commands have the potential to create 100's of file changes. In this case, it is recommended to only run these commands as part of a separate commit._ - -_Note: Not all linting/formatting errors can be automatically fixed, and will require human intervention._ - -- Lint and fix the `*.ts` files using `ESLint` + `Prettier`. - -``` -npm run lint-fix -``` - -
- -# Logging - -A centralized logger has been created (see `api/utils/logger.ts`). - -## Logger configuration - -The loggers log level can be configured via an environment variable: `LOG_LEVEL` - -Set this variable to one of: `error`, `warn`, `info`, `debug` - -Default value: `info` - -## Instantiating the logger in your class/file - -``` -const log = require('./logger)('a meaningful label, typically the class name`) -``` - -## Using the logger - -``` -log.error({ label: 'functionName', message: 'Used when logging unexpected errors. Generally these will only exist in catch() blocks', error }) - -log.warn({ label: 'functionName', message: 'Used when logging soft errors. For example, if your request finished but returned a 404 not found' }); - -log.info({ label: 'functionName', message: 'General log messages about the state of the application' }); - -log.debug({ label: 'functionName', message: 'Useful for logging objects and other developer data', aJSONObjectToPrint, anotherObject); -or -log.debug({ label: 'functionName', message: 'Useful for logging objects and other developer data', someLabel: aJSONObjectToPrint, anotherObject }); -``` - -Supported log properties: - -``` -- timestamp: overwrite the default time of `now` with your own timestamp. -- level: overwrite the default level (via log.()) with your own level string. -- label: adds an additional label to the log message. -- message: a log message. -- : any additional object properties will be JSON.stringify'd and appended to the log message. -``` - -
- -# Testing - -- To access the API without logging in to the front end, you can manually add a user this way: - -``` -$ make database -$ psql -psql_prompt: insert into application_user (first_name, last_name, email,preferred_username) values ('micheal', 'wells', 'micheal.w.wells@bananasInPajamas.ca','officialUserName@idir'); - -psql_prompt: insert into user_role (user_id, role_code_id) values (8,3); -``` - -## Info - -### Technologies used - -- [Mocha](https://www.npmjs.com/package/mocha) -- [Chai](https://www.npmjs.com/package/chai) -- [SuperTest](https://www.npmjs.com/package/supertest) -- [Nock](https://www.npmjs.com/package/nock) - -## Run Tests - -- Run the unit tests - -``` -npm run test -``` - -
- -# Keycloak - -This project uses [Keycloak](https://www.keycloak.org/) to handle authentication. diff --git a/api-mobile/app.ts b/api-mobile/app.ts deleted file mode 100644 index d29474ccf..000000000 --- a/api-mobile/app.ts +++ /dev/null @@ -1,76 +0,0 @@ -'use strict'; - -import bodyParser from 'body-parser'; -import express from 'express'; -import { initialize } from 'express-openapi'; -import { authenticate } from './src/utils/auth-utils'; -import { getLogger } from './src/utils/logger'; -import { applyApiDocSecurityFilters } from './src/utils/api-doc-security-filter'; - -const defaultLog = getLogger('app'); - -const HOST = process.env.API_HOST || 'localhost'; -const PORT = Number(process.env.API_PORT || '3002'); - -// Get initial express app -const app: express.Express = express(); - -// Enable CORS -app.use(function (req: any, res: any, next: any) { - defaultLog.info(`${req.method} ${req.url}`); - - res.setHeader('Access-Control-Allow-Credentials', true); - res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Authorization, responseType'); - res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE, HEAD'); - res.setHeader('Access-Control-Allow-Origin', '*'); - res.setHeader('Cache-Control', 'max-age=4'); - - next(); -}); - -// Initialize express-openapi framework -initialize({ - apiDoc: './src/openapi/api-doc.json', // base open api spec - app: app, // express app to initialize - paths: './src/paths', // base folder for endpoint routes - routesGlob: '**/*.{ts,js}', // updated default to allow .ts - routesIndexFileRegExp: /(?:index)?\.[tj]s$/, // updated default to allow .ts - promiseMode: true, // allow endpoint handlers to return promises - consumesMiddleware: { - 'application/json': bodyParser.json({ limit: '50mb' }), - 'application/x-www-form-urlencoded': bodyParser.urlencoded({ limit: '50mb', extended: true }) - }, - securityHandlers: { - Bearer: function (req, scopes) { - // return true // bypass authentication - return authenticate(req, scopes); - } - }, - securityFilter: async (req, res) => { - const updatedReq = await applyApiDocSecurityFilters(req); - res.status(200).json(updatedReq['apiDoc']); - }, - errorTransformer: function (openapiError: object, ajvError: object): object { - // Transform openapi-request-validator and openapi-response-validator errors - return ajvError; - }, - errorMiddleware: function (error, req, res, next) { - if (!error.status) { - // TODO some unplanned errors do have a status, maybe change status to code for intentional errors? - // log any unintentionally thrown errors (where no status has been set) - defaultLog.error({ label: 'errorMiddleware', message: 'unexpected error', error }); - } - - res.status(error.status || 500).json(error); - } -}); - -// Start api -try { - app.listen(PORT, () => { - defaultLog.info({ label: 'start api', message: `started api-mobile on ${HOST}:${PORT}/api` }); - }); -} catch (error) { - defaultLog.error({ label: 'start api', message: 'error', error }); - process.exit(1); -} diff --git a/api-mobile/docker-compose.yml b/api-mobile/docker-compose.yml deleted file mode 100644 index 2fd27cb84..000000000 --- a/api-mobile/docker-compose.yml +++ /dev/null @@ -1,90 +0,0 @@ -version: "3.5" - -services: - db: - image: ${PROJECT_NAME}-${TAG}-postgress-img-mobile - container_name: ${PROJECT_NAME}-${TAG}-db-mobile - build: - context: ./.docker/db - dockerfile: Dockerfile - ports: - - ${DB_PORT}:${DB_PORT} - environment: - - POSTGRES_USER=${DB_USER} - - POSTGRES_PASSWORD=${DB_PASS} - - POSTGRES_DB=${DB_DATABASE} - - PORT=${DB_PORT} - networks: - - local-network - volumes: - - postgres:/var/lib/postgresql/data - - api-mobile_dependency: - image: ${PROJECT_NAME}-${TAG}-api-mobile-dep-img - container_name: ${PROJECT_NAME}-${TAG}-api-mobile-dep - build: - context: ./ - dockerfile: ./.docker/api-mobile/Dockerfile.npm - volumes: - - npmcache:/opt/app-root/src/node_modules - - api-mobile: - image: ${PROJECT_NAME}-${TAG}-api-mobile-img - container_name: ${PROJECT_NAME}-${TAG}-api-mobile - build: - context: ./ - dockerfile: ./.docker/api-mobile/Dockerfile - ports: - - ${API_PORT}:${API_PORT} - environment: - - API_HOST=${API_HOST} - - API_PORT=${API_PORT} - - DB_HOST=${DB_HOST} - - DB_USER=${DB_USER} - - DB_PASS=${DB_PASS} - - DB_PORT=${DB_PORT} - - DB_DATABASE=${DB_DATABASE} - - APP_CERTIFICATE_URL=${APP_CERTIFICATE_URL} - - APP_CERTIFICATE_URL_TEST=${APP_CERTIFICATE_URL_TEST} - - ENVIRONMENT=local - - NODE_ENV=local - - OBJECT_STORE_URL=${OBJECT_STORE_URL} - - OBJECT_STORE_ACCESS_KEY_ID=${OBJECT_STORE_ACCESS_KEY_ID} - - OBJECT_STORE_SECRET_KEY_ID=${OBJECT_STORE_SECRET_KEY_ID} - - OBJECT_STORE_BUCKET_NAME=${OBJECT_STORE_BUCKET_NAME} - volumes: - - ./:/opt/app-root/src - - npmcache:/opt/app-root/src/node_modules - networks: - - local-network - links: - - db - depends_on: - - db - - api-mobile_dependency - restart: "no" - - nginx: - image: ${PROJECT_NAME}-${TAG}-nginx-mobile-img - container_name: ${PROJECT_NAME}-${TAG}-nginx-mobile - build: - context: ./.docker/nginx - dockerfile: Dockerfile - restart: always - ports: - - 80:80 - depends_on: - - db - - api-mobile - networks: - - local-network - -networks: - local-network: - driver: bridge - -volumes: - postgres: - name: ${PROJECT_NAME}-${TAG}-vol-postgres - npmcache: - name: ${PROJECT_NAME}-${TAG}-vol-npmcache diff --git a/api-mobile/dotenv.sh b/api-mobile/dotenv.sh deleted file mode 100644 index 450431b69..000000000 --- a/api-mobile/dotenv.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!bin/bash - -# =================================================== -# Reads all `key=value` lines from a `./.env` file and exports them -# To apply variables to your local shell, use `source dotenv.sh` or `. dotenv.sh` -# -# Usage Example: -# $ make setup-local -# (edit the ./.env as needed) -# $ source dotenv.sh -# $ npm start -# =================================================== - -if [ -f .env ] -then - regex='^.*=.*$' - - while read line - do - if [[ $line =~ $regex ]] - then - echo $line - export $line - fi - done < .env -fi diff --git a/api-mobile/env_config/env.docker b/api-mobile/env_config/env.docker deleted file mode 100644 index fae793bfc..000000000 --- a/api-mobile/env_config/env.docker +++ /dev/null @@ -1,45 +0,0 @@ -# This env config should be used when running api-mobile via docker-compose (see Makefile commands). - -# ------------------------------------------------------------------------------ -# Project Details -# ------------------------------------------------------------------------------ -PROJECT_NAME=invasivesbc -TAG=mobile - -# ------------------------------------------------------------------------------ -# Environment Details -# ------------------------------------------------------------------------------ -NODE_ENV=local -ENVIRONMENT=local - -# ------------------------------------------------------------------------------ -# Api -# ------------------------------------------------------------------------------ -API_HOST=localhost -API_PORT=7080 -# See `logger.ts` for details on LOG_LEVEL -LOG_LEVEL=debug - -# ------------------------------------------------------------------------------ -# Postgrest Database -# ------------------------------------------------------------------------------ -DB_HOST=db -DB_USER=postgres -DB_PASS=postgres -DB_PORT=5432 -DB_DATABASE=lucy -DB_SCHEMA=invasivesbc - -# ------------------------------------------------------------------------------ -# KeyClock URLS -# ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs - -# ------------------------------------------------------------------------------ -# Object Store (S3) -# ------------------------------------------------------------------------------ -OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca -OBJECT_STORE_ACCESS_KEY_ID= -OBJECT_STORE_SECRET_KEY_ID= -OBJECT_STORE_BUCKET_NAME= diff --git a/api-mobile/env_config/env.local b/api-mobile/env_config/env.local deleted file mode 100644 index 6530270c1..000000000 --- a/api-mobile/env_config/env.local +++ /dev/null @@ -1,44 +0,0 @@ -# This env config should be used when running api-mobile manually, via `npm start`. See Readme for prerequisites. - -# ------------------------------------------------------------------------------ -# Project Details -# ------------------------------------------------------------------------------ -PROJECT_NAME=invasivesbc - -# ------------------------------------------------------------------------------ -# Environment Details -# ------------------------------------------------------------------------------ -NODE_ENV=local -ENVIRONMENT=local - -# ------------------------------------------------------------------------------ -# Api-mobile -# ------------------------------------------------------------------------------ -API_HOST=localhost -API_PORT=3002 -# See `logger.ts` for details on LOG_LEVEL -LOG_LEVEL=debug - -# ------------------------------------------------------------------------------ -# Postgrest Database -# ------------------------------------------------------------------------------ -DB_HOST=localhost -DB_USER=postgres -DB_PASS=postgres -DB_PORT=5432 -DB_DATABASE=lucy -DB_SCHEMA=invasivesbc - -# ------------------------------------------------------------------------------ -# KeyClock URLS -# ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs - -# ------------------------------------------------------------------------------ -# Object Store (S3) -# ------------------------------------------------------------------------------ -OBJECT_STORE_URL=nrs.objectstore.gov.bc.ca -OBJECT_STORE_ACCESS_KEY_ID= -OBJECT_STORE_SECRET_KEY_ID= -OBJECT_STORE_BUCKET_NAME= diff --git a/api-mobile/gulpfile.ts b/api-mobile/gulpfile.ts deleted file mode 100644 index 28667dbfc..000000000 --- a/api-mobile/gulpfile.ts +++ /dev/null @@ -1,18 +0,0 @@ -import del from 'del'; -import gulp from 'gulp'; -import ts from 'gulp-typescript'; - -// Clean (delete) the dist folder -gulp.task('clean', () => { - return del(['./dist']); -}); - -// Compile the api and create the dist folder -gulp.task('ts-server', () => { - const tsProject = ts.createProject('tsconfig.json'); - const tsResult = tsProject.src().pipe(tsProject()); - return tsResult.js.pipe(gulp.dest('dist')); -}); - -// Clean the dist folder, and build the api dist -gulp.task('build', gulp.series('clean', 'ts-server')); diff --git a/api-mobile/knexfile.ts b/api-mobile/knexfile.ts deleted file mode 100644 index 04f20b552..000000000 --- a/api-mobile/knexfile.ts +++ /dev/null @@ -1,88 +0,0 @@ -import dotenv from 'dotenv'; - -const env = process.env.NODE_ENV || 'local'; - -if (env === 'local') { - dotenv.config({ path: './env_config/env.local' }); -} - -module.exports = { - local: { - client: 'postgresql', - connection: { - host: process.env.DB_HOST, - port: process.env.DB_PORT || 5432, - database: process.env.DB_DATABASE, - user: process.env.DB_USER, - password: process.env.DB_PASS - }, - pool: { - min: 2, - max: 10 - }, - migrations: { - // stub: './config/knex-migration-stub.js', - tableName: 'migration', - directory: 'src/database/migrations' - }, - seeds: { - // stub: './config/knex-migration-stub.js', - tableName: 'seed', - directory: 'src/database/seeds' - } - }, - dev: { - client: 'postgresql', - connection: { - host: process.env.DB_HOST, - port: process.env.DB_PORT || 5432, - database: process.env.DB_DATABASE, - user: process.env.DB_USER, - password: process.env.DB_PASS - }, - pool: { - min: 2, - max: 10 - }, - migrations: { - tableName: 'migration', - directory: 'src/database/migrations' - } - }, - test: { - client: 'postgresql', - connection: { - host: process.env.DB_HOST, - port: process.env.DB_PORT || 5432, - database: process.env.DB_DATABASE, - user: process.env.DB_USER, - password: process.env.DB_PASS - }, - pool: { - min: 2, - max: 10 - }, - migrations: { - tableName: 'migration', - directory: 'src/database/migrations' - } - }, - prod: { - client: 'postgresql', - connection: { - host: process.env.DB_HOST, - port: process.env.DB_PORT || 5432, - database: process.env.DB_DATABASE, - user: process.env.DB_USER, - password: process.env.DB_PASS - }, - pool: { - min: 2, - max: 10 - }, - migrations: { - tableName: 'migration', - directory: 'src/database/migrations' - } - } -}; diff --git a/api-mobile/nodemon.json b/api-mobile/nodemon.json deleted file mode 100644 index cc821d450..000000000 --- a/api-mobile/nodemon.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "verbose": false, - "ignore": [ - "*.spec.ts" - ], - "watch": [ - "app.ts", - "src" - ], - "ext": "ts" -} diff --git a/api-mobile/openshift/api.bc.yaml b/api-mobile/openshift/api.bc.yaml deleted file mode 100644 index 9fdef5afc..000000000 --- a/api-mobile/openshift/api.bc.yaml +++ /dev/null @@ -1,114 +0,0 @@ -apiVersion: v1 -kind: Template -metadata: - creationTimestamp: null - labels: - build: invasivebc-api-mobile - name: invasivebc-api-mobile -parameters: - - name: NAME - displayName: Name - description: A suffix appended to all objects - required: true - value: invasivebc-api-mobile - - name: SUFFIX - displayName: Name Suffix - description: A suffix appended to all objects - required: true - value: "-dev" - - name: VERSION - required: true - value: "1.0" - - name: SOURCE_CONTEXT_DIR - required: true - value: api-mobile - - name: SOURCE_REPOSITORY_URL - required: true - value: https://github.com/bcgov/lucy-web - - name: SOURCE_REPOSITORY_REF - required: false - value: dev - - name: BASE_IMAGE_URL - required: true - value: registry.access.redhat.com/ubi8/nodejs-10:1-41 - - name: SOURCE_IMAGE_NAME - required: true - value: redhat-ubi-node-10 - - name: SOURCE_IMAGE_TAG - required: true - value: 1-41 -objects: - - kind: ImageStream - apiVersion: v1 - metadata: - name: ${SOURCE_IMAGE_NAME} - creationTimestamp: null - annotations: - description: Nodejs Base Image - labels: - shared: "true" - spec: - lookupPolicy: - local: false - tags: - - name: ${SOURCE_IMAGE_TAG} - annotations: null - from: - kind: DockerImage - name: ${BASE_IMAGE_URL} - importPolicy: {} - referencePolicy: - type: Local - - kind: ImageStream - apiVersion: v1 - metadata: - name: "${NAME}" - creationTimestamp: - annotations: - description: Nodejs Runtime Image - labels: - shared: "true" - spec: - lookupPolicy: - local: false - - apiVersion: v1 - kind: BuildConfig - metadata: - name: "${NAME}${SUFFIX}" - creationTimestamp: - labels: {} - annotations: {} - spec: - failedBuildsHistoryLimit: 5 - nodeSelector: - output: - to: - kind: ImageStreamTag - name: "${NAME}:${VERSION}" - postCommit: {} - resources: - limits: - cpu: 1250m - memory: 3Gi - requests: - cpu: 750m - memory: 2Gi - runPolicy: SerialLatestOnly - source: - contextDir: "${SOURCE_CONTEXT_DIR}" - git: - uri: "${SOURCE_REPOSITORY_URL}" - ref: "${SOURCE_REPOSITORY_REF}" - type: Git - strategy: - dockerStrategy: - from: - kind: ImageStreamTag - name: ${SOURCE_IMAGE_NAME}:${SOURCE_IMAGE_TAG} - type: Docker - successfulBuildsHistoryLimit: 5 - triggers: - - type: ConfigChange - - type: ImageChange - status: - lastVersion: 7 diff --git a/api-mobile/openshift/api.dc.yaml b/api-mobile/openshift/api.dc.yaml deleted file mode 100644 index 3e9a5414a..000000000 --- a/api-mobile/openshift/api.dc.yaml +++ /dev/null @@ -1,300 +0,0 @@ -apiVersion: v1 -objects: - - apiVersion: image.openshift.io/v1 - kind: ImageStream - metadata: - annotations: - description: Nodejs Runtime Image - labels: - shared: "true" - creationTimestamp: null - generation: 0 - name: ${NAME} - spec: - lookupPolicy: - local: false - status: - dockerImageRepository: null - - apiVersion: apps.openshift.io/v1 - kind: DeploymentConfig - metadata: - annotations: - openshift.io/generated-by: OpenShiftWebConsole - creationTimestamp: null - generation: 0 - labels: null - name: ${NAME}${SUFFIX} - spec: - replicas: "${{REPLICAS}}" - revisionHistoryLimit: 10 - selector: - deploymentConfig: ${NAME}${SUFFIX} - strategy: - activeDeadlineSeconds: 21600 - recreateParams: - timeoutSeconds: 600 - resources: - limits: - cpu: ${CPU_LIMIT} - memory: ${MEMORY_LIMIT} - requests: - cpu: ${CPU_REQ} - memory: ${MEMORY_REQ} - type: Rolling - template: - metadata: - annotations: null - creationTimestamp: null - labels: - deploymentConfig: ${NAME}${SUFFIX} - spec: - containers: - - env: - - name: API_HOST - value: ${HOST} - - name: DB_HOST - value: ${DB_SERVICE_NAME} - - name: DB_USER - valueFrom: - secretKeyRef: - key: database-user - name: ${DBNAME}${SUFFIX} - - name: DB_PASS - valueFrom: - secretKeyRef: - key: database-password - name: ${DBNAME}${SUFFIX} - - name: DB_DATABASE - valueFrom: - secretKeyRef: - key: database-name - name: ${DBNAME}${SUFFIX} - - name: DB_PORT - value: "5432" - - name: APP_CERTIFICATE_URL - value: ${CERTIFICATE_URL} - - name: CHANGE_VERSION - value: ${CHANGE_ID} - - name: ENVIRONMENT - value: ${ENVIRONMENT} - - name: VERSION - value: ${VERSION} - - name: DB_CLEAN_UP - value: ${DB_CLEAN_UP} - - name: DB_SEED - value: ${DB_SEED} - - name: OBJECT_STORE_URL - valueFrom: - secretKeyRef: - key: object_store_url - name: ${OBJECT_STORE_SECRETS} - - name: OBJECT_STORE_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - key: object_store_access_key_id - name: ${OBJECT_STORE_SECRETS} - - name: OBJECT_STORE_SECRET_KEY_ID - valueFrom: - secretKeyRef: - key: object_store_secret_key_id - name: ${OBJECT_STORE_SECRETS} - - name: OBJECT_STORE_BUCKET_NAME - valueFrom: - secretKeyRef: - key: object_store_bucket_name - name: ${OBJECT_STORE_SECRETS} - image: " " - imagePullPolicy: Always - name: api - ports: - - containerPort: "${{PORT}}" - protocol: TCP - - containerPort: 8080 - protocol: TCP - resources: - limits: - cpu: ${CPU_LIMIT} - memory: ${MEMORY_LIMIT} - requests: - cpu: ${CPU_REQ} - memory: ${MEMORY_REQ} - readinessProbe: - failureThreshold: 10 - httpGet: - path: /api/misc/version - port: 3002 - scheme: HTTP - initialDelaySeconds: 100 - periodSeconds: 30 - successThreshold: 1 - timeoutSeconds: 20 - livenessProbe: - failureThreshold: 10 - httpGet: - path: /api/misc/version - port: 3002 - scheme: HTTP - initialDelaySeconds: 80 - periodSeconds: 30 - successThreshold: 1 - timeoutSeconds: 20 - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - volumeMounts: - - mountPath: /opt/app-root/app - name: ${NAME}${SUFFIX} - dnsPolicy: ClusterFirst - restartPolicy: Always - schedulerName: default-scheduler - securityContext: {} - terminationGracePeriodSeconds: 30 - volumes: - - emptyDir: {} - name: ${NAME}${SUFFIX} - test: false - triggers: - - imageChangeParams: - automatic: true - containerNames: - - api - from: - kind: ImageStreamTag - name: ${NAME}:${VERSION} - type: ImageChange - - type: ConfigChange - status: - availableReplicas: 0 - latestVersion: 0 - observedGeneration: 0 - replicas: 0 - unavailableReplicas: 0 - updatedReplicas: 0 - - apiVersion: v1 - stringData: - database-name: "" - database-password: "" - database-user: "" - kind: Secret - metadata: - annotations: - as-copy-of: ${DB_SERVICE_NAME} - creationTimestamp: null - name: ${NAME}${SUFFIX} - type: Opaque - - apiVersion: v1 - kind: Service - metadata: - annotations: null - creationTimestamp: null - labels: {} - name: ${NAME}${SUFFIX} - spec: - ports: - - name: ${NAME}-${APP_PORT_DEFAULT} - port: "${{PORT}}" - protocol: TCP - targetPort: "${{PORT}}" - - name: ${APP_PORT_OTHER} - port: 8080 - protocol: TCP - targetPort: 8080 - selector: - deploymentconfig: ${NAME}${SUFFIX} - sessionAffinity: None - type: ClusterIP - status: - loadBalancer: {} - - apiVersion: route.openshift.io/v1 - kind: Route - metadata: - annotations: {} - creationTimestamp: null - labels: {} - name: ${NAME}${SUFFIX} - spec: - host: ${HOST} - tls: - insecureEdgeTerminationPolicy: Redirect - termination: edge - port: - targetPort: ${NAME}-${APP_PORT_DEFAULT} - to: - kind: Service - name: ${NAME}${SUFFIX} - weight: 100 - wildcardPolicy: None - status: - ingress: null - - apiVersion: autoscaling/v1 - kind: HorizontalPodAutoscaler - metadata: - annotations: {} - creationTimestamp: null - labels: {} - name: ${NAME}${SUFFIX} - spec: - maxReplicas: "${{REPLICA_MAX}}" - minReplicas: "${{REPLICAS}}" - scaleTargetRef: - apiVersion: v1 - kind: DeploymentConfig - name: ${NAME}${SUFFIX} - cpuUtilization: - targetPercentage: 95 -kind: Template -metadata: - resourceVersion: "" - selfLink: "" -parameters: - - name: NAME - value: invasivesbc-api-mobile - - name: DBNAME - value: invasivesbc-api - - name: SUFFIX - value: "-dev" - - name: VERSION - description: Version of the application - value: "1.0.0" - - name: HOST - description: Host name of the application - required: true - - name: CHANGE_ID - description: Change id of the project. This will help to pull image stream - required: true - value: "0" - - name: DB_SERVICE_NAME - description: "Database service name associated with deployment" - required: true - - name: ENVIRONMENT - description: Application Environment type variable - required: true - value: "dev" - - name: CERTIFICATE_URL - description: Authentication certificate urls - required: true - value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - - name: CPU_REQ - value: "500m" - - name: CPU_LIMIT - value: "750m" - - name: MEMORY_REQ - value: "1Gi" - - name: MEMORY_LIMIT - value: "2Gi" - - name: REPLICAS - value: "1" - - name: APP_PORT_DEFAULT - value: "3002-tcp" - - name: APP_PORT_OTHER - value: "8080-tcp" - - name: PORT - value: "3002" - - name: DB_CLEAN_UP - value: "none" - - name: DB_SEED - value: "yes" - - name: OBJECT_STORE_SECRETS - value: "invasivesbc-object-store" - - name: REPLICA_MAX - required: true - value: "1" diff --git a/api-mobile/openshift/api.is.yaml b/api-mobile/openshift/api.is.yaml deleted file mode 100644 index 0035a0b00..000000000 --- a/api-mobile/openshift/api.is.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v1 -parameters: - - name: NAME - value: invasivesbc-api-mobile-setup -objects: - - apiVersion: image.openshift.io/v1 - kind: ImageStream - metadata: - annotations: - description: Application api base image - labels: - shared: "true" - creationTimestamp: null - generation: 0 - name: ${NAME} - spec: - lookupPolicy: - local: false - status: - dockerImageRepository: null - # End IS - # End object -kind: Template -# End Template - diff --git a/api-mobile/openshift/api.test.yaml b/api-mobile/openshift/api.test.yaml deleted file mode 100644 index c2381cce5..000000000 --- a/api-mobile/openshift/api.test.yaml +++ /dev/null @@ -1,135 +0,0 @@ -kind: Template -apiVersion: v1 -metadata: - name: test - creationTimestamp: null -parameters: - - name: IMAGE - description: "Image for pod" - required: true - - name: NAME - value: invasivesbc-api-mobile - - name: SUFFIX - value: "-dev" - - name: VERSION - description: Version of the application - value: "1.0.0" - - name: CHANGE_ID - description: Change id of the project. This will help to pull image stream - required: true - value: "0" - - name: DB_SERVICE_NAME - description: "Database service name associated with deployment" - required: true - - name: ENVIRONMENT - description: Application Environment type variable - required: true - value: "dev" - - name: CERTIFICATE_URL - description: Authentication certificate urls - required: true - value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - - name: CPU_REQ - value: "500m" - - name: CPU_LIMIT - value: "750m" - - name: MEMORY_REQ - value: "1Gi" - - name: MEMORY_LIMIT - value: "2Gi" - - name: REPLICAS - value: "1" - - name: APP_PORT_DEFAULT - value: "3002-tcp" - - name: APP_PORT_OTHER - value: "8080-tcp" - - name: PORT - value: "3002" - - name: DB_CLEAN_UP - value: "none" - - name: DB_SEED - value: "yes" - - name: OBJECT_STORE_SECRETS - value: "invasivesbc-object-store" -objects: - - kind: Pod - apiVersion: v1 - metadata: - name: "${NAME}" - creationTimestamp: - labels: {} - spec: - containers: - - name: test - image: "${IMAGE}" - command: - - container-entrypoint - - bash - - "-c" - - "npm run remote:test-temp" # TODO: Change this back to npm run remote:test once the sonarqube upgrade is done - resources: - limits: - cpu: "1" - memory: 1.5Gi - requests: - cpu: 500m - memory: 512Mi - env: - - name: DB_HOST - value: ${DB_SERVICE_NAME} - - name: DB_USER - valueFrom: - secretKeyRef: - key: database-user - name: ${DB_SERVICE_NAME} - - name: DB_PASS - valueFrom: - secretKeyRef: - key: database-password - name: ${DB_SERVICE_NAME} - - name: DB_DATABASE - valueFrom: - secretKeyRef: - key: database-name - name: ${DB_SERVICE_NAME} - - name: DB_PORT - value: "5432" - - name: APP_CERTIFICATE_URL - value: ${CERTIFICATE_URL} - - name: CHANGE_VERSION - value: ${CHANGE_ID} - - name: ENVIRONMENT - value: ${ENVIRONMENT} - - name: VERSION - value: ${VERSION} - - name: DB_CLEAN_UP - value: ${DB_CLEAN_UP} - - name: DB_SEED - value: ${DB_SEED} - - name: TEST_RUN - value: "yes" - - name: OBJECT_STORE_URL - valueFrom: - secretKeyRef: - key: object_store_url - name: ${OBJECT_STORE_SECRETS} - - name: OBJECT_STORE_ACCESS_KEY_ID - valueFrom: - secretKeyRef: - key: object_store_access_key_id - name: ${OBJECT_STORE_SECRETS} - - name: OBJECT_STORE_SECRET_KEY_ID - valueFrom: - secretKeyRef: - key: object_store_secret_key_id - name: ${OBJECT_STORE_SECRETS} - - name: OBJECT_STORE_BUCKET_NAME - valueFrom: - secretKeyRef: - key: object_store_bucket_name - name: ${OBJECT_STORE_SECRETS} - imagePullPolicy: Always - restartPolicy: Never - activeDeadlineSeconds: 900 - dnsPolicy: ClusterFirst - status: {} diff --git a/api-mobile/openshift/db.migrations.yaml b/api-mobile/openshift/db.migrations.yaml deleted file mode 100644 index ab1bebbc6..000000000 --- a/api-mobile/openshift/db.migrations.yaml +++ /dev/null @@ -1,109 +0,0 @@ -kind: Template -apiVersion: v1 -metadata: - name: migration - creationTimestamp: null -parameters: - - name: IMAGE - description: "Image for pod" - required: true - - name: NAME - value: invasivesbc-api-mobile - - name: SUFFIX - value: "-dev" - - name: VERSION - description: Version of the application - value: "1.0.0" - - name: CHANGE_ID - description: Change id of the project. This will help to pull image stream - required: true - value: "0" - - name: DB_SERVICE_NAME - description: "Database service name associated with deployment" - required: true - - name: ENVIRONMENT - description: Application Environment type variable - required: true - value: "dev" - - name: NODE_ENV - description: Application Environment type variable - required: true - value: "dev" - - name: CERTIFICATE_URL - description: Authentication certificate urls - required: true - value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" - - name: CPU_REQ - value: "500m" - - name: CPU_LIMIT - value: "750m" - - name: MEMORY_REQ - value: "1Gi" - - name: MEMORY_LIMIT - value: "2Gi" - - name: REPLICAS - value: "1" - - name: APP_PORT_DEFAULT - value: "3002-tcp" - - name: APP_PORT_OTHER - value: "8080-tcp" - - name: PORT - value: "3002" -objects: - - kind: Pod - apiVersion: v1 - metadata: - name: "${NAME}" - creationTimestamp: - labels: {} - spec: - containers: - - name: test - image: "${IMAGE}" - command: - - container-entrypoint - - bash - - -c - - npm run migrate:latest; - resources: - limits: - cpu: "1" - memory: 1.5Gi - requests: - cpu: 500m - memory: 512Mi - env: - - name: DB_HOST - value: ${DB_SERVICE_NAME} - - name: DB_USER - valueFrom: - secretKeyRef: - key: database-user - name: ${DB_SERVICE_NAME} - - name: DB_PASS - valueFrom: - secretKeyRef: - key: database-password - name: ${DB_SERVICE_NAME} - - name: DB_DATABASE - valueFrom: - secretKeyRef: - key: database-name - name: ${DB_SERVICE_NAME} - - name: DB_PORT - value: "5432" - - name: APP_CERTIFICATE_URL - value: ${CERTIFICATE_URL} - - name: CHANGE_VERSION - value: ${CHANGE_ID} - - name: ENVIRONMENT - value: ${ENVIRONMENT} - - name: NODE_ENV - value: ${ENVIRONMENT} - - name: VERSION - value: ${VERSION} - imagePullPolicy: Always - restartPolicy: Never - activeDeadlineSeconds: 900 - dnsPolicy: ClusterFirst - status: {} diff --git a/api-mobile/package-lock.json b/api-mobile/package-lock.json deleted file mode 100644 index 4bcdbc5da..000000000 --- a/api-mobile/package-lock.json +++ /dev/null @@ -1,8580 +0,0 @@ -{ - "name": "lucy-api-mobile", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@dabh/diagnostics": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", - "requires": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha1-osKL4CwIVfUm5DeF+jJvKCQC4pA=" - }, - "@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/chai": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", - "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", - "dev": true - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, - "@types/connect": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", - "requires": { - "@types/node": "*" - } - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "@types/express": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-jwt": { - "version": "0.0.42", - "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", - "requires": { - "@types/express": "*", - "@types/express-unless": "*" - } - }, - "@types/express-openapi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@types/express-openapi/-/express-openapi-1.9.0.tgz", - "integrity": "sha512-eP5Fy/qBRNQhwiFKvSOgfOECN9Z6OK1UiTyY0ld2o0Ah7wlOwtx7Z11LJZ55l8xfMqDSNM4R3hCl6+/yezkVMA==", - "dev": true, - "requires": { - "express-openapi": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.9", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/express-unless": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz", - "integrity": "sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==", - "requires": { - "@types/express": "*" - } - }, - "@types/geojson": { - "version": "7946.0.7", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz", - "integrity": "sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==", - "dev": true - }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-RHv6ZQjcTncXo3thYZrsbAVwoy4vSKosSWhuhuQxLOTv74OJuFQxXkmUuZCr3q9uNBEVCvIzmZL/FeRNbHZGUg==", - "dev": true, - "requires": { - "@types/glob": "*", - "@types/node": "*" - } - }, - "@types/gulp": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.6.tgz", - "integrity": "sha512-0E8/iV/7FKWyQWSmi7jnUvgXXgaw+pfAzEB06Xu+l0iXVJppLbpOye5z7E2klw5akXd+8kPtYuk65YBcZPM4ow==", - "dev": true, - "requires": { - "@types/undertaker": "*", - "@types/vinyl-fs": "*", - "chokidar": "^2.1.2" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true, - "optional": true - }, - "@types/jsonwebtoken": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", - "integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/memory-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@types/memory-cache/-/memory-cache-0.2.1.tgz", - "integrity": "sha512-6rmz3bMqJNkj0HIN3AMhOfRN+JhnxxTULeBkwgilfnspjABtKG6ig8mbIzkOjtmiRw+WG1B56z+BO6htGz3IBw==", - "dev": true - }, - "@types/mime": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ==", - "dev": true - }, - "@types/node": { - "version": "14.11.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", - "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==" - }, - "@types/pg": { - "version": "7.14.4", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-7.14.4.tgz", - "integrity": "sha512-yCKVMCcFPZSFHGg+8qjY368uf3ruyDBPjxvOU2ZcGa/vRFo5Ti5Y6z6vl+2hxtwm9VMWUGb6TWkIk3cIV8C0Cw==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/pg-types": "*" - } - }, - "@types/pg-types": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@types/pg-types/-/pg-types-1.11.5.tgz", - "integrity": "sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ==", - "dev": true - }, - "@types/qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" - }, - "@types/serve-static": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "@types/swagger-schema-official": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.1.tgz", - "integrity": "sha1-xU9998/nBHdKbLI6zjOTd3o0rPA=" - }, - "@types/undertaker": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/undertaker/-/undertaker-1.2.3.tgz", - "integrity": "sha512-OhvIYx6pUJBxYZf5fM/BVMNXZQMy095kplml+4cWrlNqM1t6XtSIQCuVySGmICZCnzi69Epdljyplm86BlTouQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/undertaker-registry": "*" - } - }, - "@types/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", - "dev": true - }, - "@types/uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", - "dev": true - }, - "@types/vinyl": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.4.tgz", - "integrity": "sha512-2o6a2ixaVI2EbwBPg1QYLGQoHK56p/8X/sGfKbFC8N6sY9lfjsMf/GprtkQkSya0D4uRiutRZ2BWj7k3JvLsAQ==", - "dev": true, - "requires": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "@types/vinyl-fs": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-2.4.11.tgz", - "integrity": "sha512-2OzQSfIr9CqqWMGqmcERE6Hnd2KY3eBVtFaulVo3sJghplUcaeMdL9ZjEiljcQQeHjheWY9RlNmumjIAvsBNaA==", - "dev": true, - "requires": { - "@types/glob-stream": "*", - "@types/node": "*", - "@types/vinyl": "*" - } - }, - "@types/yamljs": { - "version": "0.2.31", - "resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz", - "integrity": "sha512-QcJ5ZczaXAqbVD3o8mw/mEBhRvO5UAdTtbvgwL/OgoWubvNBh6/MxLBAigtcgIFaq3shon9m3POIxQaLQt4fxQ==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.1.tgz", - "integrity": "sha512-3DB9JDYkMrc8Au00rGFiJLK2Ja9CoMP6Ut0sHsXp3ZtSugjNxvSSHTnKLfo4o+QmjYBJqEznDqsG1zj4F2xnsg==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "3.7.1", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } - } - }, - "@typescript-eslint/experimental-utils": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.1.tgz", - "integrity": "sha512-TqE97pv7HrqWcGJbLbZt1v59tcqsSVpWTOf1AqrWK7n8nok2sGgVtYRuGXeNeLw3wXlLEbY1MKP3saB2HsO/Ng==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.7.1", - "@typescript-eslint/typescript-estree": "3.7.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.7.1.tgz", - "integrity": "sha512-W4QV/gXvfIsccN8225784LNOorcm7ch68Fi3V4Wg7gmkWSQRKevO4RrRqWo6N/Z/myK1QAiGgeaXN57m+R/8iQ==", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.7.1", - "@typescript-eslint/types": "3.7.1", - "@typescript-eslint/typescript-estree": "3.7.1", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/types": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.7.1.tgz", - "integrity": "sha512-PZe8twm5Z4b61jt7GAQDor6KiMhgPgf4XmUb9zdrwTbgtC/Sj29gXP1dws9yEn4+aJeyXrjsD9XN7AWFhmnUfg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.1.tgz", - "integrity": "sha512-m97vNZkI08dunYOr2lVZOHoyfpqRs0KDpd6qkGaIcLGhQ2WPtgHOd/eVbsJZ0VYCQvupKrObAGTOvk3tfpybYA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "3.7.1", - "@typescript-eslint/visitor-keys": "3.7.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.1.tgz", - "integrity": "sha512-xn22sQbEya+Utj2IqJHGLA3i1jDzR43RzWupxojbSWnj3nnPLavaQmWe5utw03CwYao3r00qzXfgJMGNkrzrAA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "dependencies": { - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - } - } - }, - "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "requires": { - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - } - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, - "requires": { - "async-done": "^1.2.2" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "aws-sdk": { - "version": "2.742.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.742.0.tgz", - "integrity": "sha512-zntDB0BpMn/y+B4RQvXuqY8DmJDYPkeFjZ6BbZ6vdNrsdB5TRz8p53ats4D3mLG068RB4M4AmVioFnU69nDXyQ==", - "requires": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.15.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.3.2", - "xml2js": "0.4.19" - }, - "dependencies": { - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - } - } - }, - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "requires": { - "follow-redirects": "1.5.10" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chance": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.6.tgz", - "integrity": "sha512-DXLzaGjasDWbvlFAJyQBIwlzdQZuPdz4of9TTTxmHTjja88ZU/vBwUwxxjalSt43zWTPrhiJT0z0N4bZqfZS9w==", - "dev": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" - }, - "dependencies": { - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - } - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-boxes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", - "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "colorspace": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", - "requires": { - "color": "3.0.x", - "text-hex": "1.0.x" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "dev": true, - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "database-cleaner": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/database-cleaner/-/database-cleaner-1.3.0.tgz", - "integrity": "sha512-WZaUioWrKPkeBzWWKSuPalO48dIfsnuY+IEkYghUr2czRwFdw8LXdehE5+VH2GrQdSnmPnvYDZ1QGwNCMs8pPA==", - "dev": true - }, - "db-migrate": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.11.tgz", - "integrity": "sha512-GHZodjB5hXRy+76ZIb9z0OrUn0qSeGfvS0cCfyzPeFCBZ1YU9o9HUBQ8pUT+v/fJ9+a29eRz2xQsLfccXZtf8g==", - "requires": { - "balanced-match": "^1.0.0", - "bluebird": "^3.1.1", - "db-migrate-shared": "^1.2.0", - "deep-extend": "^0.6.0", - "dotenv": "^5.0.1", - "final-fs": "^1.6.0", - "inflection": "^1.10.0", - "mkdirp": "~0.5.0", - "parse-database-url": "~0.3.0", - "prompt": "^1.0.0", - "rc": "^1.2.8", - "resolve": "^1.1.6", - "semver": "^5.3.0", - "tunnel-ssh": "^4.0.0", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "db-migrate-pg": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz", - "integrity": "sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==", - "requires": { - "bluebird": "^3.1.1", - "db-migrate-base": "^2.3.0", - "pg": "^8.0.3", - "semver": "^5.0.3" - }, - "dependencies": { - "db-migrate-base": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/db-migrate-base/-/db-migrate-base-2.3.0.tgz", - "integrity": "sha512-mxaCkSe7JC2uksvI/rKs+wOQGBSZ6B87xa4b3i+QhB+XRBpGdpMzldKE6INf+EnM6kwhbIPKjyJZgyxui9xBfQ==", - "requires": { - "bluebird": "^3.1.1" - } - } - } - }, - "db-migrate-shared": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz", - "integrity": "sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==" - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-equal": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", - "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "requires": { - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", - "dev": true, - "requires": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "difunc": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/difunc/-/difunc-0.0.4.tgz", - "integrity": "sha512-zBiL4ALDmviHdoLC0g0G6wVme5bwAow9WfhcZLLopXCAWgg3AEf7RYTs2xugszIGulRHzEVDF/SHl9oyQU07Pw==", - "requires": { - "esprima": "^4.0.0" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", - "dev": true - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", - "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", - "espree": "^7.2.0", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "eslint-config-prettier": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", - "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } - }, - "eslint-plugin-prettier": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" - }, - "espree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", - "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", - "dev": true, - "requires": { - "acorn": "^7.3.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "express-normalize-query-params-middleware": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/express-normalize-query-params-middleware/-/express-normalize-query-params-middleware-0.5.1.tgz", - "integrity": "sha1-2+HoE5rssjT7attcAFnHXblzPSo=" - }, - "express-openapi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/express-openapi/-/express-openapi-7.0.1.tgz", - "integrity": "sha512-64YwTWpxgVGnwoLi4zvKaQ5RWIV0dkxVE4GGkBF7D89RI0/I6gTRUDL25Il4AK3cUqyLtxnX2X5BZ2YRvRx5uQ==", - "requires": { - "express-normalize-query-params-middleware": "^0.5.0", - "openapi-framework": "^7.0.1", - "openapi-types": "^7.0.1" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" - }, - "factory-girl": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/factory-girl/-/factory-girl-5.0.4.tgz", - "integrity": "sha512-ugGBetzpevbAlKEyMRasBlmCQ76EkvZFMLIsA6K17Pwp/8+7ffBmmxkkw1LoXrOyB6iIgEcmbVF4TcIAnKXyDA==", - "dev": true, - "requires": { - "babel-runtime": "^6.11.6", - "chance": "^1.0.4" - } - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "dependencies": { - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - } - } - }, - "fast-json-patch": { - "version": "3.0.0-1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz", - "integrity": "sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fecha": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", - "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "final-fs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/final-fs/-/final-fs-1.6.1.tgz", - "integrity": "sha1-1tzZLvb+T+jAer1WjHE1YQ7eMjY=", - "requires": { - "node-fs": "~0.1.5", - "when": "~2.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" - }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - } - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "^1.0.1" - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", - "dev": true - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "fs-routes": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-routes/-/fs-routes-7.0.1.tgz", - "integrity": "sha512-kSAfx/P8oLSi5+tblecTETcJJ/Q+qL+xzGx4hns/+gHXMkTOZEzG73/2dBDW1FFy5+ZW080XoMaBAN2kCN55aQ==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getopts": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", - "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", - "dev": true, - "requires": { - "ini": "^1.3.5" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - } - } - }, - "gulp-typescript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.1.tgz", - "integrity": "sha512-YuMMlylyJtUSHG1/wuSVTrZp60k1dMEFKYOvDf7OvbAJWrDtxxD4oZon4ancdWwzjj30ztiidhe4VXJniF0pIQ==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.5", - "plugin-error": "^1.0.1", - "source-map": "^0.7.3", - "through2": "^3.0.0", - "vinyl": "^2.1.0", - "vinyl-fs": "^3.0.3" - }, - "dependencies": { - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "i": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", - "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-dir/-/is-dir-1.0.0.tgz", - "integrity": "sha1-QdN/SV/MrMBaR3jWboMCTCkro/8=" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" - }, - "js-base64": { - "version": "3.4.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.4.5.tgz", - "integrity": "sha512-Ub/AANierdcT8nm4ndBn3KzpZQ3MdHX4a+bwoVdjgeHCZ0ZEcP+UB4nmR4Z5lR6SH3Y+qAPmgVR0RxKJNHNHEg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.5.0.tgz", - "integrity": "sha512-x+TRJIQFskrNnFKE2Viz9FCSjK1vIh+H/uaBiOYszh/IcZmAFneQ35H4osWDJp1NPXccuV2I0RMXmi2ZS6Kqcg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jwks-rsa": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.9.0.tgz", - "integrity": "sha512-UPCfQQg0s2kF2Ju6UFJrQH73f7MaVN/hKBnYBYOp+X9KN4y6TLChhLtaXS5nRKbZqshwVdrZ9OY63m/Q9CLqcg==", - "requires": { - "@types/express-jwt": "0.0.42", - "axios": "^0.19.2", - "debug": "^4.1.0", - "jsonwebtoken": "^8.5.1", - "limiter": "^1.1.5", - "lru-memoizer": "^2.1.2", - "ms": "^2.1.2" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "knex": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.21.4.tgz", - "integrity": "sha512-vUrR4mJBKWJPouV9C7kqvle9cTpiuuzBWqrQXP7bAv+Ua9oeKkEhhorJwArzcjVrVBojZYPMMtNVliW9B00sTA==", - "requires": { - "colorette": "1.2.1", - "commander": "^5.1.0", - "debug": "4.1.1", - "esm": "^3.2.25", - "getopts": "2.2.5", - "inherits": "~2.0.4", - "interpret": "^2.2.0", - "liftoff": "3.1.0", - "lodash": "^4.17.19", - "mkdirp": "^1.0.4", - "pg-connection-string": "2.3.0", - "tarn": "^3.0.0", - "tildify": "2.0.0", - "uuid": "^7.0.3", - "v8flags": "^3.2.0" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==" - } - } - }, - "kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "logform": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", - "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", - "requires": { - "colors": "^1.2.1", - "fast-safe-stringify": "^2.0.4", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "triple-beam": "^1.3.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", - "requires": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "lru-memoizer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz", - "integrity": "sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A==", - "requires": { - "lodash.clonedeep": "^4.5.0", - "lru-cache": "~4.0.0" - }, - "dependencies": { - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - } - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memory-cache": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", - "integrity": "sha1-eJCwHVLADI68nVM+H46xfjA0hxo=" - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" - }, - "mongodb-uri": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/mongodb-uri/-/mongodb-uri-0.9.7.tgz", - "integrity": "sha1-D3ca0W9IOuZfQoeWlCjp+8SqYYE=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "ncp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", - "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "nock": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", - "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash.set": "^4.3.2", - "propagate": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node-fs": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/node-fs/-/node-fs-0.1.7.tgz", - "integrity": "sha1-MjI8zLRsn78PwRgS1FAhzDHTJbs=" - }, - "nodemon": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.4.tgz", - "integrity": "sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ==", - "dev": true, - "requires": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^4.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "requires": { - "fn.name": "1.x.x" - } - }, - "openapi-default-setter": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-default-setter/-/openapi-default-setter-7.0.1.tgz", - "integrity": "sha512-O9jhaZPEEJzI1HSG3Yw5rOIC0EpZ9PjRJgtksXKuSMyEoxUDnl7zQ27LuFRR1ykSMVhMt8vHMrQBQIwLW8S0yQ==", - "requires": { - "openapi-types": "^7.0.1" - } - }, - "openapi-framework": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-framework/-/openapi-framework-7.0.1.tgz", - "integrity": "sha512-ENQHf+tEqeGp6vykUYiw0uHvMEM3Oqi0SaBs8JlciEuo/fhhqrPmNzNa45xPFYWKYRJ5KpdFWcDlOIYf9gRkog==", - "requires": { - "difunc": "0.0.4", - "fs-routes": "^7.0.1", - "glob": "*", - "is-dir": "^1.0.0", - "js-yaml": "^3.10.0", - "openapi-default-setter": "^7.0.1", - "openapi-request-coercer": "^7.0.1", - "openapi-request-validator": "^7.0.1", - "openapi-response-validator": "^7.0.1", - "openapi-schema-validator": "^7.0.1", - "openapi-security-handler": "^7.0.1", - "openapi-types": "^7.0.1", - "ts-log": "^2.1.4" - } - }, - "openapi-jsonschema-parameters": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-jsonschema-parameters/-/openapi-jsonschema-parameters-7.0.1.tgz", - "integrity": "sha512-PuzKYEILBg4mu9uyoHn7wUGPrx3ds9YJr8t0yvOhAkNITWmXCjuh/HgfoOi+6MUu2Rapj+6tk6lYfeVPcgqi3g==", - "requires": { - "openapi-types": "^7.0.1" - } - }, - "openapi-request-coercer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-request-coercer/-/openapi-request-coercer-7.0.1.tgz", - "integrity": "sha512-nKSRnLX7KQ3Iu1TTZ+1PdEoz0Ke47vH4EcZIM9EOkdqadCFj2pSG/6oMcyqipCs2X7oMFi9Df/UGDRnTdzmPog==", - "requires": { - "openapi-types": "^7.0.1", - "ts-log": "^2.1.4" - } - }, - "openapi-request-validator": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-request-validator/-/openapi-request-validator-7.0.1.tgz", - "integrity": "sha512-qQBI3iiQ2JFokg3tdIOLo38ny7xRNzJZgcMwAS13WFSrUE9kcA6JAHI2cC5x3Q0EPpOtxWnzOaXwiZUJJ7MDOQ==", - "requires": { - "ajv": "^6.5.4", - "content-type": "^1.0.4", - "openapi-jsonschema-parameters": "^7.0.1", - "openapi-types": "^7.0.1", - "ts-log": "^2.1.4" - } - }, - "openapi-response-validator": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-response-validator/-/openapi-response-validator-7.0.1.tgz", - "integrity": "sha512-Fxr9YdQ6s7/SIvvM888iWnc1GUn/fFxTaMFqHkUv0/eNCYoBfOwAKj9aptaRfL+BJXlsVdXWCJd3GWkwn8sIJA==", - "requires": { - "ajv": "^6.5.4", - "openapi-types": "^7.0.1" - } - }, - "openapi-schema-validator": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-schema-validator/-/openapi-schema-validator-7.0.1.tgz", - "integrity": "sha512-P/dmF14xWbyaFVcoS1Fs2tUP4AhJO+eEnZV+jbApeo3569/Z2fiki6Mb6Rs7cfi0ewNnV4L4HiYH+HPZaKWnjQ==", - "requires": { - "ajv": "^6.5.2", - "lodash.merge": "^4.6.1", - "openapi-types": "^7.0.1", - "swagger-schema-official": "2.0.0-bab6bed" - } - }, - "openapi-security-handler": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-security-handler/-/openapi-security-handler-7.0.1.tgz", - "integrity": "sha512-fiRJE2Z5F0tY9QBssBX9g8Txtr0oj1BOU0nOZ6QHHXQdCYxebszGgcXD63uy0UJQwzwVOMs/AlCnKNVS/yMSEg==", - "requires": { - "openapi-types": "^7.0.1" - } - }, - "openapi-types": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-7.0.1.tgz", - "integrity": "sha512-6pi4/Fw+JIW1HHda2Ij7LRJ5QJ8f6YzaXnsRA6m44BJz8nLq/j5gVFzPBKJo+uOFhAeHqZC/3uzhTpYPga3Q/A==" - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-database-url": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/parse-database-url/-/parse-database-url-0.3.0.tgz", - "integrity": "sha1-NpZmMh6SfJreY838Gqr2+zdFPQ0=", - "requires": { - "mongodb-uri": ">= 0.9.7" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pg": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.3.0.tgz", - "integrity": "sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ==", - "requires": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.3.0", - "pg-pool": "^3.2.1", - "pg-protocol": "^1.2.5", - "pg-types": "^2.1.0", - "pgpass": "1.x", - "semver": "4.3.2" - }, - "dependencies": { - "semver": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "integrity": "sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=" - } - } - }, - "pg-connection-string": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.3.0.tgz", - "integrity": "sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==" - }, - "pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" - }, - "pg-pool": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.1.tgz", - "integrity": "sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==" - }, - "pg-protocol": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.2.5.tgz", - "integrity": "sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg==" - }, - "pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "requires": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - } - }, - "pgpass": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz", - "integrity": "sha1-Knu0G2BltnkH6R2hsHwYR8h3swY=", - "requires": { - "split": "^1.0.0" - } - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" - }, - "postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" - }, - "postgres-date": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz", - "integrity": "sha512-pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA==" - }, - "postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "requires": { - "xtend": "^4.0.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prompt": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz", - "integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=", - "requires": { - "colors": "^1.1.2", - "pkginfo": "0.x.x", - "read": "1.0.x", - "revalidator": "0.1.x", - "utile": "0.3.x", - "winston": "2.1.x" - }, - "dependencies": { - "async": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" - }, - "winston": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz", - "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", - "requires": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "pkginfo": "0.3.x", - "stack-trace": "0.0.x" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" - }, - "pkginfo": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" - } - } - } - } - }, - "propagate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", - "dev": true - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "pupa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", - "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", - "dev": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, - "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", - "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", - "dev": true, - "requires": { - "buffer-shims": "~1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.7" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "registry-auth-token": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", - "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dev": true, - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dev": true, - "requires": { - "sver-compat": "^1.5.0" - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sql-template-strings": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/sql-template-strings/-/sql-template-strings-2.2.2.tgz", - "integrity": "sha1-PxFQiiWt384hejBCqdMAwxk7lv8=" - }, - "ssh2": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.5.4.tgz", - "integrity": "sha1-G/a2soyW6u8mf01sRqWiUXpZnic=", - "requires": { - "ssh2-streams": "~0.1.15" - } - }, - "ssh2-streams": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.1.20.tgz", - "integrity": "sha1-URGNFUVV31Rp7h9n4M8efoosDjo=", - "requires": { - "asn1": "~0.2.0", - "semver": "^5.1.0", - "streamsearch": "~0.1.2" - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "string.prototype.padend": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", - "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "dev": true, - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "supertest": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", - "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", - "dev": true, - "requires": { - "methods": "^1.1.2", - "superagent": "^3.8.3" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "swagger-object-validator": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/swagger-object-validator/-/swagger-object-validator-1.2.2.tgz", - "integrity": "sha512-cI9lVOyzKHXDQY0DwNBNM/DfW6xQzT4sDS3pcjfdLuSYAkOZpmpXGitRI6dkm+xIrONKZz4oNODmrs8rjOoQ3g==", - "requires": { - "@types/bluebird": "3.5.3", - "@types/swagger-schema-official": "2.0.1", - "bluebird": "^3.5.0", - "js-yaml": "3.13.1" - }, - "dependencies": { - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "swagger-schema-official": { - "version": "2.0.0-bab6bed", - "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", - "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "tarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.0.tgz", - "integrity": "sha512-PKUnlDFODZueoA8owLehl8vLcgtA8u4dRuVbZc92tspDYZixjJL6TqYOmryf/PfP/EBX+2rgNcrj96NO+RPkdQ==" - }, - "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", - "dev": true - }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "tildify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", - "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dev": true, - "requires": { - "through2": "^2.0.3" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } - }, - "triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" - }, - "ts-log": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.1.4.tgz", - "integrity": "sha512-P1EJSoyV+N3bR/IWFeAqXzKPZwHpnLY6j7j58mAvewHRipo+BQM2Y1f9Y9BjEQznKwgqqZm7H8iuixmssU7tYQ==" - }, - "ts-mocha": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz", - "integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==", - "dev": true, - "requires": { - "ts-node": "7.0.1", - "tsconfig-paths": "^3.5.0" - }, - "dependencies": { - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - } - }, - "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", - "dev": true - } - } - }, - "ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - }, - "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "dev": true, - "optional": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "optional": true - } - } - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel-ssh": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tunnel-ssh/-/tunnel-ssh-4.1.4.tgz", - "integrity": "sha512-CjBqboGvAbM7iXSX2F95kzoI+c2J81YkrHbyyo4SWNKCzU6w5LfEvXBCHu6PPriYaNvfhMKzD8bFf5Vl14YTtg==", - "requires": { - "debug": "2.6.9", - "lodash.defaults": "^4.1.0", - "ssh2": "0.5.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" - }, - "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "dependencies": { - "fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", - "dev": true - } - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "update-notifier": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.1.tgz", - "integrity": "sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utile": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", - "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=", - "requires": { - "async": "~0.9.0", - "deep-equal": "~0.2.1", - "i": "0.3.x", - "mkdirp": "0.x.x", - "ncp": "1.0.x", - "rimraf": "2.x.x" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" - }, - "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", - "dev": true - }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validator": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", - "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "when": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/when/-/when-2.0.1.tgz", - "integrity": "sha1-jYcv4V5oQkyRtLck6EjggH2rZkI=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - } - }, - "winston": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", - "requires": { - "@dabh/diagnostics": "^2.0.2", - "async": "^3.1.0", - "is-stream": "^2.0.0", - "logform": "^2.2.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.4.0" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "winston-transport": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", - "requires": { - "readable-stream": "^2.3.7", - "triple-beam": "^1.2.0" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - } - }, - "yargs": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", - "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "5.0.0-security.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "5.0.0-security.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", - "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/api-mobile/package.json b/api-mobile/package.json deleted file mode 100644 index 4f6ef2512..000000000 --- a/api-mobile/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "lucy-api-mobile", - "description": "API for InvasivesBC iOS app", - "version": "0.0.0", - "license": "Apache-2.0", - "main": "app", - "repository": { - "type": "git", - "url": "https://github.com/bcgov/lucy-web.git" - }, - "scripts": { - "start": "ts-node app", - "clean": "gulp clean", - "build": "gulp build", - "start:reload": "./node_modules/.bin/nodemon app.ts --exec ts-node", - "start:migrate:reload": "npm-run-all -l -s migrate:latest start:reload", - "migrate:latest": "knex migrate:latest", - "migrate:rollback": "knex migrate:rollback", - "test": "ts-mocha --timeout 60000", - "lint": "eslint . --ignore-pattern 'node_modules' --ext .ts", - "lint-fix": "eslint . --fix --ignore-pattern 'node_modules' --ext .ts" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 6.0.0" - }, - "dependencies": { - "aws-sdk": "~2.742.0", - "axios": "~0.19.2", - "body-parser": "~1.19.0", - "db-migrate": "~0.11.11", - "db-migrate-pg": "~1.2.2", - "express": "~4.17.1", - "express-openapi": "~7.0.1", - "fast-json-patch": "~3.0.0-1", - "js-base64": "~3.4.5", - "json-schema-traverse": "~0.5.0", - "jsonwebtoken": "~8.5.1", - "jwks-rsa": "~1.9.0", - "knex": "^0.21.4", - "memory-cache": "~0.2.0", - "moment": "~2.27.0", - "pg": "~8.3.0", - "qs": "~6.9.4", - "sql-template-strings": "~2.2.2", - "swagger-object-validator": "^1.2.2", - "typescript": "~3.9.7", - "uuid": "~8.3.0", - "validator": "~13.1.1", - "winston": "~3.3.3", - "yamljs": "~0.3.0" - }, - "devDependencies": { - "@types/body-parser": "~1.19.0", - "@types/chai": "~4.2.12", - "@types/express-openapi": "~1.9.0", - "@types/express": "~4.17.0", - "@types/geojson": "^7946.0.3", - "@types/gulp": "~4.0.6", - "@types/jsonwebtoken": "~8.5.0", - "@types/memory-cache": "~0.2.1", - "@types/mocha": "~8.0.1", - "@types/pg": "~7.14.4", - "@types/uuid": "~8.3.0", - "@types/yamljs": "~0.2.31", - "@typescript-eslint/eslint-plugin": "~3.7.1", - "@typescript-eslint/parser": "~3.7.1", - "chai": "~4.2.0", - "database-cleaner": "~1.3.0", - "del": "~5.1.0", - "dotenv": "~8.2.0", - "eslint-config-prettier": "~6.11.0", - "eslint-plugin-prettier": "~3.1.4", - "eslint": "~7.5.0", - "factory-girl": "~5.0.4", - "gulp-typescript": "~5.0.1", - "gulp": "~4.0.2", - "mocha": "~7.2.0", - "nock": "~13.0.3", - "nodemon": "~2.0.4", - "npm-run-all": "~4.1.5", - "prettier": "~2.0.5", - "supertest": "~4.0.2", - "ts-mocha": "~7.0.0", - "ts-node": "~8.10.2" - } -} diff --git a/api-mobile/src/constants/misc.ts b/api-mobile/src/constants/misc.ts deleted file mode 100644 index 69b1ee0cc..000000000 --- a/api-mobile/src/constants/misc.ts +++ /dev/null @@ -1,125 +0,0 @@ -// Super user role -const ROLE_SUPER_USER = 'SUP'; -// Admin role -const ROLE_ADMIN = 'ADM'; -// Data editor role -const ROLE_DATA_EDITOR = 'DAE'; -// View only role -const ROLE_DATA_VIEWER = 'DAV'; - -// Array of all supported roles -export const ALL_ROLES = [ROLE_SUPER_USER, ROLE_ADMIN, ROLE_DATA_EDITOR, ROLE_DATA_VIEWER]; - -// Array of all roles with read and write capabilities -export const WRITE_ROLES = [ROLE_SUPER_USER, ROLE_ADMIN, ROLE_DATA_EDITOR]; - -/** - * Caching keys, for use with `memory-cache`. - * - * @export - * @enum {number} - */ -export enum CacheKeys { - ALL_CODE_CATEGORIES = 'all-code-categories', - ALL_CODE_HEADERS = 'all-code-headers', - ALL_CODES = 'all-codes' -} - -/** - * Supported activity types. - * - * @export - * @enum {number} - */ -export enum ActivityType { - OBSERVATION = 'Observation', - MONITOR = 'Monitor', - TREATMENT = 'Treatment' -} - -/** - * Supported activity sub types. - * - * @export - * @enum {number} - */ -export enum ActivitySubType { - TERRESTRIAL_PLANT = 'Terrestrial Plant', - AQUATIC_PLANT = 'Aquatic Plant', - AQUATIC_TERRESTRIAL_PLANT = 'Aquatic Terrestrial Plant', - TERRESTRIAL_ANIMAL = 'Terrestrial Animal', - AQUATIC_ANIMAL = 'Aquatic Animal', - AQUATIC_TERRESTRIAL_ANIMAL = 'Aquatic Terrestrial Animal' -} - -/** - * Some of the S3 ACL roles supported by default. - * - * Full list: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl - * - * @export - * @enum {number} - */ -export enum S3ACLRole { - AUTH_READ = 'authenticated-read' -} - -/** - * Root custom api-doc.json keys for any `x-...` fields. - * - * @export - * @enum {number} - */ -export enum X_API_DOC_KEYS { - /** - * specifies a field whose value is an object containing `x-enum-code...` fields (see `X_ENUM_CODE`) - */ - X_ENUM_CODE = 'x-enum-code' -} - -/** - * Nested keys in a `x-enum-code` field (see `X_API_DOC_KEYS.X_ENUM_CODE`) - * - * @export - * @enum {number} - */ -export enum X_ENUM_CODE { - /** - * The `code_category` name. - */ - CATEGORY_NAME = 'x-enum-code-category-name', - /** - * The `code_header` name. - */ - HEADER_NAME = 'x-enum-code-header-name', - /** - * The `code` column name that holds the unique code value. - */ - CODE_NAME = 'x-enum-code-name', - /** - * The `code` column name that holds the human readable name for the code value. - */ - CODE_TEXT = 'x-enum-code-text', - /** - * The `code` column name that defines the sort order. - */ - CODE_SORT_ORDER = 'x-enum-code-sort-order' -} - -/** - * The maximum number of records the search endpoint can return. - * - * @type {number} - */ -export const SEARCH_LIMIT_MAX = 100; - -/** - * Supported PSQL `ORDER BY` directions. - * - * @export - * @enum {number} - */ -export enum SORT_DIRECTION { - ASC = 'ASC', - DESC = 'DESC' -} diff --git a/api-mobile/src/database/db.ts b/api-mobile/src/database/db.ts deleted file mode 100644 index 075abe195..000000000 --- a/api-mobile/src/database/db.ts +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -import { Pool, PoolConfig, PoolClient } from 'pg'; - -import { getLogger } from '../utils/logger'; -const defaultLog = getLogger('db'); - -const DB_HOST: string = process.env.DB_HOST || 'localhost'; -const DB_PORT: number = Number(process.env.DB_PORT) || 5432; -const DB_USERNAME: string = process.env.DB_USER || 'hello'; -const DB_PASSWORD: string = process.env.DB_PASS || 'world'; -const DB_DATABASE: string = process.env.DB_DATABASE || 'lucy'; -const DB_SCHEMA: string = process.env.DB_SCHEMA || 'invasivesbc'; - -const poolConfig: PoolConfig = { - user: DB_USERNAME, - password: DB_PASSWORD, - database: DB_DATABASE, - port: DB_PORT, - host: DB_HOST, - max: 20, - connectionTimeoutMillis: 0, // default - idleTimeoutMillis: 10000 // default -}; - -defaultLog.debug({ label: 'create db pool', message: 'pool config', poolConfig }); - -let pool: Pool = null; - -try { - pool = new Pool(poolConfig); -} catch (error) { - defaultLog.error({ label: 'create db pool', message: 'failed to create pool', error, poolConfig }); - process.exit(1); -} - -/** - * Waits for availability, and returns a pool client from the existing `pool`. - * - * Note: Sets the initial `search_path` and `SCHEMA` based on the DB_SCHEMA env variable. - * Note: Callers should call `client.release()` when finished with the pool client. - * - * @returns {Promise} - */ -export const getDBConnection = async function (): Promise { - let client: PoolClient = null; - - try { - client = await pool.connect(); - - await client.query(`SET search_path TO ${client.escapeLiteral(DB_SCHEMA)}, public;`); - await client.query(`SET SCHEMA ${client.escapeLiteral(DB_SCHEMA)};`); - } catch (error) { - defaultLog.error({ label: 'getDBConnection', message: 'error', error }); - throw error; - } - - return client; -}; diff --git a/api-mobile/src/database/db_source/activity_common_data_view.sql b/api-mobile/src/database/db_source/activity_common_data_view.sql deleted file mode 100644 index c72f5cdb7..000000000 --- a/api-mobile/src/database/db_source/activity_common_data_view.sql +++ /dev/null @@ -1,23 +0,0 @@ -CREATE OR REPLACE VIEW activity_common_fields_view as ( -select -'banana' as activity_id, -'banana' as activity_type, -'banana' as activity_subtype, -'banana' as planned_activity_date_time, -'banana' as actual_activity_date_time, -'banana' as primary_user_first_name, -'banana' as primary_user_last_name, -'banana' as secondary_user_first_name, -'banana' as secondary_user_last_name, -'banana' as species, -'banana' as business_area, -'banana' as jurisdiction, -'banana' as agency -'banana' as created_at, -'banana' as updated_at, -'banana' as updated_by_user_id, -'banana' as created_by_user_id, - -from activity_incoming_data -) -COMMENT ON VIEW activity_common_fields_view IS 'View on fields common to all types of activities, with table activity_incoming_data as source.'; diff --git a/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql b/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql deleted file mode 100644 index 3df542d77..000000000 --- a/api-mobile/src/database/db_source/invasive_terrestrial_plant_observation.sql +++ /dev/null @@ -1,27 +0,0 @@ -CREATE OR REPLACE VIEW invasive_terrestrial_plant_observation_specific_fields_view as ( -select -'banana' as activity_id, -'banana' as species, -'banana' as distribution, -'banana' as density, -'banana' as soil_texture, -'banana' as slope, -'banana' as aspect, -'banana' as flowering, -'banana' as specific_use, -'banana' as proposed_action, -'banana' as seed_stage, -'banana' as plant_health, -'banana' as plant_life_stage, -'banana' as early_detection, -'banana' as research, -'banana' as well_on_site_ind, -'banana' as special_care_ind, -'banana' as biological_care_ind, -'banana' as legacy_site_ind, -'banana' as range_unit - -from activity_incoming_data -where activity_incoming_data.activity_type = 'Observation' and activity_incoming_data.activity_subtype = 'Terrestrial Plant Observation' -) -COMMENT ON VIEW invasive_terrestrial_plant_observation_specific_fields_view IS 'View on fields specific to invasive terrestrial plant of observations, with table activity_incoming_data as source.'; diff --git a/api-mobile/src/database/db_source/observation_common_data_view.sql b/api-mobile/src/database/db_source/observation_common_data_view.sql deleted file mode 100644 index 97a6667e9..000000000 --- a/api-mobile/src/database/db_source/observation_common_data_view.sql +++ /dev/null @@ -1,25 +0,0 @@ -CREATE OR REPLACE VIEW observation_common_fields_view as ( -select -id as activity_id, -activity_subtype as observation_type, -activity_payload::json->'negative_observation_ind' as negative_observation_ind, -activity_payload::json->'negative_observation_ind' as negative_observation_ind, -activity_payload::json->'aquatic_observation_ind' as aquatic_observation_ind, -activity_payload::json->'primary_user_last_name' as primary_user_last_name, -activity_payload::json->'secondary_user_first_name' as secondary_user_first_name, -activity_payload::json->'secondary_user_last_name' as secondary_user_last_name, -activity_payload::json->'species' as species, -activity_payload::json->'primary_file_id' as primary_file_id, -activity_payload::json->'secondary_file_id' as secondary_file_id, -activity_payload::json->'location_comment' as location_comment, -activity_payload::json->'general_observation_comment' as general_observation_comment, -activity_payload::json->'sample_taken_ind' as sample_taken_ind, -activity_payload::json-> 'sample_label_number' as sample_label_number - -from activity_incoming_data -where activity_incoming_data.activity_type = 'Observation' -) -COMMENT ON VIEW observation_common_fields_view IS 'View on fields common to all types of observations, with table activity_incoming_data as source.'; - - - diff --git a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts b/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts deleted file mode 100644 index ffee47ce4..000000000 --- a/api-mobile/src/database/migrations/20200811120312_activity_incoming_data.ts +++ /dev/null @@ -1,78 +0,0 @@ -import Knex from 'knex'; - -const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; - -export async function up(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - -- ### Creating Table: ${DB_SCHEMA}.activity_incoming_data ### -- - - CREATE SCHEMA IF NOT EXISTS ${DB_SCHEMA}; - - CREATE TABLE ${DB_SCHEMA}.activity_incoming_data (); - COMMENT ON TABLE ${DB_SCHEMA}.activity_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_incoming_data_id SERIAL PRIMARY KEY; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_incoming_data_id IS 'Auto generated primary key'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_id SERIAL ; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_id IS 'Unique record number. Can occur multiple times with record updates.'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN version INTEGER NULL; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_type VARCHAR(200) NULL; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_type IS 'Type of record'; - CREATE index type_idx on ${DB_SCHEMA}.activity_incoming_data (activity_type); - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_subtype VARCHAR(200) NULL; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_subtype IS 'Sub Type of record'; - CREATE index sub_type_idx on ${DB_SCHEMA}.activity_incoming_data (activity_subtype); - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN geom geometry(Geometry,3005) CHECK (st_isValid(geom)); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.geom IS 'Geometry in Albers projection.'; - CREATE index activity_incoming_data_gist on ${DB_SCHEMA}.activity_incoming_data using gist ("geom"); - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN geog geography(Geometry); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.geog IS 'Geography type containing a geometry.'; - CREATE index activity_incoming_data_gist2 on ${DB_SCHEMA}.activity_incoming_data using gist ("geog"); - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN activity_payload JSONB; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.activity_payload IS 'Raw data upload in compressed JSON format.'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN biogeoclimatic_zones varchar(30); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.biogeoclimatic_zones IS 'Biogeoclimatic Ecosystem Classification (BEC) Zone/Subzone/Variant/Phase'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN regional_invasive_species_organization_areas varchar(10); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.regional_invasive_species_organization_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC.'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN invasive_plant_management_areas varchar(50); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.invasive_plant_management_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC. Within several RISO areas, they subdivide the land area in smaller management areas (Invasive Plant Management Areas).'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN forest_cover_ownership varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.forest_cover_ownership IS 'This data product is a generalized description of the primary ownership of forest lands for use in strategic decision making such as Timber Supply Analysis. It is based upon the structure used in the Forest Inventory Planning (FIP/FC1) format. It is created and revised using information from Min of Agriculture and Lands Registries Branch.'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN regional_districts varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.regional_districts IS 'Regional districts of British Columbia: https://catalogue.data.gov.bc.ca/dataset/d1aff64e-dbfe-45a6-af97-582b7f6418b9'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN flnro_districts varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.flnro_districts IS 'Ministry of Forest Lands and Natural Resources districts'; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN moti_districts varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.moti_districts IS 'Ministry of Transportation and Infrastructure districts'; - `); -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - DROP TABLE IF EXISTS ${DB_SCHEMA}.activity_incoming_data; - `); -} diff --git a/api-mobile/src/database/migrations/20200819074819_activity_view.ts b/api-mobile/src/database/migrations/20200819074819_activity_view.ts deleted file mode 100644 index f7e52be6d..000000000 --- a/api-mobile/src/database/migrations/20200819074819_activity_view.ts +++ /dev/null @@ -1,35 +0,0 @@ -import Knex from 'knex'; - -const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; - -export async function up(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - -- ### Creating View: activity_common_fields_view ### -- - - CREATE OR REPLACE VIEW ${DB_SCHEMA}.activity_common_fields_view as ( - select - activity_id, - activity_type, - activity_subtype, - cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointX' as decimal) as anchor_point_x, - cast(activity_payload -> 'locationAndGeometry' ->> 'anchorPointY' as decimal) as anchor_point_y, - received_timestamp - - from ${DB_SCHEMA}.activity_incoming_data - ); - - COMMENT ON VIEW ${DB_SCHEMA}.activity_common_fields_view IS 'View on fields common to all types of activities, with table activity_incoming_data as source.'; - `); -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - DROP VIEW IF EXISTS activity_common_fields_view; - `); -} diff --git a/api-mobile/src/database/migrations/20200819083337_observation_view.ts b/api-mobile/src/database/migrations/20200819083337_observation_view.ts deleted file mode 100644 index 2219bce41..000000000 --- a/api-mobile/src/database/migrations/20200819083337_observation_view.ts +++ /dev/null @@ -1,44 +0,0 @@ -import Knex from 'knex'; - -const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; - -export async function up(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - -- ### Creating View: observation_common_fields_view ### -- - - CREATE OR REPLACE VIEW ${DB_SCHEMA}.observation_common_fields_view as ( - select activity_id, - activity_subtype as observation_type, - cast(activity_payload -> 'activityTypeData' ->> 'negative_observation_ind' as bool) as negative_observation_ind, - cast(activity_payload -> 'activityTypeData' ->> 'aquatic_observation_ind' as bool) as aquatic_observation_ind, - cast(activity_payload -> 'activityTypeData' ->> 'primary_user_first_name' as text) as primary_user_first_name, - cast(activity_payload -> 'activityTypeData' ->> 'primary_user_last_name' as text) as primary_user_last_name, - cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_first_name' as text) as secondary_user_first_name, - cast(activity_payload -> 'activityTypeData' ->> 'secondary_user_last_name' as text) as secondary_user_last_name, - cast(activity_payload -> 'activityTypeData' ->> 'species' as text) as species, - cast(activity_payload -> 'activityTypeData' ->> 'primary_file_id' as text) as primary_file_id, - cast(activity_payload -> 'activityTypeData' ->> 'secondary_file_id' as text) as secondary_file_id, - cast(activity_payload -> 'activityTypeData' ->> 'location_comment' as text) as location_comment, - cast(activity_payload -> 'activityTypeData' ->> 'general_observation_comment' as text) as general_observation_comment, - cast(activity_payload -> 'activityTypeData' ->> 'sample_taken_ind' as bool) as sample_taken_ind, - cast(activity_payload -> 'activityTypeData' ->> 'sample_label_number' as text) as sample_label_number - - from ${DB_SCHEMA}.activity_incoming_data - where ${DB_SCHEMA}.activity_incoming_data.activity_type = 'Observation' - ); - - COMMENT ON VIEW ${DB_SCHEMA}.observation_common_fields_view IS 'View on fields common to all types of observations, with table activity_incoming_data as source.'; - `); -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - DROP VIEW IF EXISTS ${DB_SCHEMA}.observation_common_fields_view; - `); -} diff --git a/api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts b/api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts deleted file mode 100644 index 0a404cbe5..000000000 --- a/api-mobile/src/database/migrations/20200901173212_add_media_keys_to_activity_table.ts +++ /dev/null @@ -1,36 +0,0 @@ -import Knex from 'knex'; - -const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; - -/** - * Adds a text array column `media_keys`. - * - * @export - * @param {Knex} knex - * @returns {Promise} - */ -export async function up(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - ALTER TABLE ${DB_SCHEMA}.activity_incoming_data ADD COLUMN media_keys text[]; - COMMENT ON COLUMN ${DB_SCHEMA}.activity_incoming_data.media_keys IS 'Array of keys used to fetch original files from external storage'; - `); -} - -/** - * Drops the column `media_keys`. - * - * @export - * @param {Knex} knex - * @returns {Promise} - */ -export async function down(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - ALTER TABLE IF EXISTS ${DB_SCHEMA}.activity_incoming_data DROP COLUMN media_keys; - `); -} diff --git a/api-mobile/src/database/migrations/20201102152915_point_of_interest.ts b/api-mobile/src/database/migrations/20201102152915_point_of_interest.ts deleted file mode 100644 index d8178ad4e..000000000 --- a/api-mobile/src/database/migrations/20201102152915_point_of_interest.ts +++ /dev/null @@ -1,81 +0,0 @@ -import Knex from 'knex'; - -const DB_SCHEMA = process.env.DB_SCHEMA || 'invasivesbc'; - -export async function up(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - -- ### Creating table: point of interest incoming data ### - - CREATE SCHEMA IF NOT EXISTS ${DB_SCHEMA}; - - CREATE TABLE ${DB_SCHEMA}.point_of_interest_incoming_data (); - COMMENT ON TABLE ${DB_SCHEMA}.point_of_interest_incoming_data IS 'Store all incoming data if valid. All mandatory columns must be preset (type & geometry). This is a staging area for further propagation and acts as a source of truth for all field data.'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_incoming_data_id SERIAL PRIMARY KEY; - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_incoming_data_id IS 'Auto generated primary key'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_id SERIAL ; - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_id IS 'Unique record number. Can occur multiple times with record updates.'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN version INTEGER NULL; - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.version IS 'Indicative of the version for each unique record. Calculated server side.'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_type VARCHAR(200) NULL; - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_type IS 'Type of record'; - CREATE index poi_type_idx on ${DB_SCHEMA}.point_of_interest_incoming_data (point_of_interest_type); - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_subtype VARCHAR(200) NULL; - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_subtype IS 'Sub Type of record'; - CREATE index poi_sub_type_idx on ${DB_SCHEMA}.point_of_interest_incoming_data (point_of_interest_subtype); - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN received_timestamp timestamp NOT NULL DEFAULT NOW(); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.received_timestamp IS 'The date and time data was received and inserted into the database.'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN geom geometry(Geometry,3005) CHECK (st_isValid(geom)); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.geom IS 'Geometry in Albers projection.'; - CREATE index point_of_interest_incoming_data_gist on ${DB_SCHEMA}.point_of_interest_incoming_data using gist ("geom"); - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN geog geography(Geometry); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.geog IS 'Geography type containing a geometry.'; - CREATE index point_of_interest_incoming_data_gist2 on ${DB_SCHEMA}.point_of_interest_incoming_data using gist ("geog"); - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN point_of_interest_payload JSONB; - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.point_of_interest_payload IS 'Raw data upload in compressed JSON format.'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN biogeoclimatic_zones varchar(30); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.biogeoclimatic_zones IS 'Biogeoclimatic Ecosystem Classification (BEC) Zone/Subzone/Variant/Phase'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN regional_invasive_species_organization_areas varchar(10); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.regional_invasive_species_organization_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC.'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN invasive_plant_management_areas varchar(50); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.invasive_plant_management_areas IS 'Regional Invasive Species Organizations (RISO) are non-profit societies in BC that provide invasive species education and management under the collective Invasive Species Council of BC. Within several RISO areas, they subdivide the land area in smaller management areas (Invasive Plant Management Areas).'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN forest_cover_ownership varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.forest_cover_ownership IS 'This data product is a generalized description of the primary ownership of forest lands for use in strategic decision making such as Timber Supply Analysis. It is based upon the structure used in the Forest Inventory Planning (FIP/FC1) format. It is created and revised using information from Min of Agriculture and Lands Registries Branch.'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN regional_districts varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.regional_districts IS 'Regional districts of British Columbia: https://catalogue.data.gov.bc.ca/dataset/d1aff64e-dbfe-45a6-af97-582b7f6418b9'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN flnro_districts varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.flnro_districts IS 'Ministry of Forest Lands and Natural Resources districts'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN moti_districts varchar(100); - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.moti_districts IS 'Ministry of Transportation and Infrastructure districts'; - - ALTER TABLE ${DB_SCHEMA}.point_of_interest_incoming_data ADD COLUMN media_keys text[]; - COMMENT ON COLUMN ${DB_SCHEMA}.point_of_interest_incoming_data.media_keys IS 'Array of keys used to fetch original files from external storage'; - - `); -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - set schema '${DB_SCHEMA}'; - set search_path = ${DB_SCHEMA},public; - - DROP TABLE IF EXISTS ${DB_SCHEMA}.point_of_interest_incoming_data; - `); -} diff --git a/api-mobile/src/models/activity.ts b/api-mobile/src/models/activity.ts deleted file mode 100644 index 2696606e3..000000000 --- a/api-mobile/src/models/activity.ts +++ /dev/null @@ -1,187 +0,0 @@ -import { SEARCH_LIMIT_MAX, SORT_DIRECTION } from '../constants/misc'; -import { parseBase64DataURLString } from './../utils/file-utils'; - -/** - * A single media item. - * - * @export - * @interface IMediaItem - */ -export interface IMediaItem { - media_date?: string; - description?: string; - file_name: string; - encoded_file: string; -} - -/** - * Media object for Data URL base64 encoded files. - * - * @export - * @class MediaBase64 - */ -export class MediaBase64 { - mediaName: string; - contentType: string; - contentString: string; - mediaBuffer: Buffer; - mediaDescription: string; - mediaDate: string; - - /** - * Creates an instance of MediaBase64. - * - * @param {IMediaItem} obj - * @memberof MediaBase64 - */ - constructor(obj: IMediaItem) { - if (!obj) { - throw new Error('media was null'); - } - - const base64StringParts = parseBase64DataURLString(obj.encoded_file); - - if (!base64StringParts) { - throw new Error('media encoded_file could not be parsed'); - } - - this.contentType = base64StringParts.contentType; - this.contentString = base64StringParts.contentType; - this.mediaName = obj.file_name; - this.mediaBuffer = Buffer.from(base64StringParts.contentString, 'base64'); - this.mediaDescription = obj.description || null; - this.mediaDate = obj.media_date || null; - } -} - -/** - * Activity post request body. - * - * @export - * @class ActivityPostRequestBody - */ -export class ActivityPostRequestBody { - activityPostBody: object; - activityResponseBody: object; - - activity_id: string; - - activity_type: string; - activity_subtype: string; - - activity_data: object; - activity_type_data: object; - activity_subtype_data: object; - - created_timestamp: string; // ISO string - received_timestamp: string; - deleted_timestamp: string; // ISO string - - geoJSONFeature: GeoJSON.Feature[]; - - mediaKeys: string[]; - - /** - * Creates an instance of ActivityPostRequestBody. - * - * @param {*} [obj] - * @memberof ActivityPostRequestBody - */ - constructor(obj?: any) { - // Add whole original object for auditing - this.activityPostBody = { - ...obj, - // Strip out any media base64 strings which would convolute the record - media: - (obj.media && - obj.media.map((item: IMediaItem) => { - delete item.encoded_file; - return item; - })) || - [] - }; - - this.activity_id = (obj && obj.activity_id) || null; - - this.activity_type = (obj && obj.activity_type) || null; - this.activity_subtype = (obj && obj.activity_subtype) || null; - - this.activity_data = (obj && obj.form_data && obj.form_data.activity_data) || null; - this.activity_type_data = (obj && obj.form_data && obj.form_data.activity_type_data) || null; - this.activity_subtype_data = (obj && obj.form_data && obj.form_data.activity_subtype_data) || null; - - this.created_timestamp = (obj && obj.created_timestamp) || null; - this.received_timestamp = new Date().toISOString(); - this.deleted_timestamp = (obj && obj.deleted_timestamp) || null; - - this.geoJSONFeature = (obj && obj.geometry) || []; - - this.mediaKeys = (obj && obj.mediaKeys) || null; - } -} - -/** - * Activity search filter criteria object. - * - * @export - * @class ActivitySearchCriteria - */ -export class ActivitySearchCriteria { - page: number; - limit: number; - sort_by: string; - sort_direction: string; - - activity_type: string[]; - activity_subtype: string[]; - - date_range_start: Date; - date_range_end: Date; - - search_feature: GeoJSON.Feature; - - column_names: string[]; - - /** - * Creates an instance of ActivitySearchCriteria. - * - * @param {*} [obj] - * @memberof ActivitySearchCriteria - */ - constructor(obj?: any) { - this.page = (obj && obj.page && this.setPage(obj.page)) || 0; - this.limit = (obj && obj.limit && this.setLimit(obj.limit)) || SEARCH_LIMIT_MAX; - this.sort_by = (obj && obj.sort_by) || ''; - this.sort_direction = (obj && obj.sort_direction) || SORT_DIRECTION.ASC; - - this.activity_type = (obj && obj.activity_type) || []; - this.activity_subtype = (obj && obj.activity_subtype) || []; - - this.date_range_start = (obj && obj.date_range_start) || null; - this.date_range_end = (obj && obj.date_range_end) || null; - - this.search_feature = (obj && obj.search_feature) || null; - - this.column_names = (obj && obj.column_names) || []; - } - - setPage(page: number): number { - if (!page || page < 0) { - return 0; - } - - return page; - } - - setLimit(limit: number): number { - if (!limit || limit < 0) { - return 25; - } - - if (limit > SEARCH_LIMIT_MAX) { - return SEARCH_LIMIT_MAX; - } - - return limit; - } -} diff --git a/api-mobile/src/models/observation-plant.ts b/api-mobile/src/models/observation-plant.ts deleted file mode 100644 index d5815521d..000000000 --- a/api-mobile/src/models/observation-plant.ts +++ /dev/null @@ -1,127 +0,0 @@ -/** - * Observation plant data model. - * - * @export - * @class ObservationPlant - */ -export class ObservationPlant { - observation_id: number; - observation_date: string; - access_description: string; - observer_first_name: string; - observer_last_name: string; - sample_identifier: string; - range_unit_number: string; - general_comment: string; - legacy_site_ind: boolean; - early_detection_rapid_resp_ind: boolean; - research_detection_ind: boolean; - sample_taken_ind: boolean; - well_ind: boolean; - special_care_ind: boolean; - biological_ind: boolean; - aquatic_ind: boolean; - species_id: number; - jurisdiction_code_id: number; - species_density_code_id: number; - species_distribution_code_id: number; - observation_type_code_id: number; - species_agency_code_id: number; - soil_texture_code_id: number; - specific_use_code_id: number; - observation_slope_code_id: number; - observation_aspect_code_id: number; - observation_proposed_action_code_id: number; - createdAt: string; - updateAt: string; - updated_by_user_id: number; - created_by_user_id: number; - space_geom_id: number; - hex_id: number; - hex_sub_id: number; - total_area: number; - negative_occurance_ind: boolean; - paper_id_primary: string; - paper_id_secondary: string; - elevation_meters: number; - well_proximity: number; - well_tag: number; - observation_geometry_code_id: number; - photo_indicator: boolean; - flowering: boolean; - bec_zone: string; - riso: string; - ipma: string; - ownership: string; - regional_district: string; - flnro_district: string; - moti_district: string; - raw_longitude: number; - raw_latitude: number; - raw_utm_zone: number; - raw_utm_easting: number; - raw_utm_northing: number; - raw_albers_x: number; - raw_albers_y: number; - - constructor(obj?: any) { - this.observation_id = (obj && obj.observation_id) || null; - this.observation_date = (obj && obj.observation_date) || null; - this.access_description = (obj && obj.access_description) || null; - this.observer_first_name = (obj && obj.observer_first_name) || null; - this.observer_last_name = (obj && obj.observer_last_name) || null; - this.sample_identifier = (obj && obj.sample_identifier) || null; - this.range_unit_number = (obj && obj.range_unit_number) || null; - this.general_comment = (obj && obj.general_comment) || null; - this.legacy_site_ind = (obj && obj.legacy_site_ind) || null; - this.early_detection_rapid_resp_ind = (obj && obj.early_detection_rapid_resp_ind) || null; - this.research_detection_ind = (obj && obj.research_detection_ind) || null; - this.sample_taken_ind = (obj && obj.sample_taken_ind) || null; - this.well_ind = (obj && obj.well_ind) || null; - this.special_care_ind = (obj && obj.special_care_ind) || null; - this.biological_ind = (obj && obj.biological_ind) || null; - this.aquatic_ind = (obj && obj.aquatic_ind) || null; - this.species_id = (obj && obj.species_id) || null; - this.jurisdiction_code_id = (obj && obj.jurisdiction_code_id) || null; - this.species_density_code_id = (obj && obj.species_density_code_id) || null; - this.species_distribution_code_id = (obj && obj.species_distribution_code_id) || null; - this.observation_type_code_id = (obj && obj.observation_type_code_id) || null; - this.species_agency_code_id = (obj && obj.species_agency_code_id) || null; - this.soil_texture_code_id = (obj && obj.soil_texture_code_id) || null; - this.specific_use_code_id = (obj && obj.specific_use_code_id) || null; - this.observation_slope_code_id = (obj && obj.observation_slope_code_id) || null; - this.observation_aspect_code_id = (obj && obj.observation_aspect_code_id) || null; - this.observation_proposed_action_code_id = (obj && obj.observation_proposed_action_code_id) || null; - this.updateAt = (obj && obj.updateAt) || null; - this.createdAt = (obj && obj.createdAt) || null; - this.updated_by_user_id = (obj && obj.updated_by_user_id) || null; - this.created_by_user_id = (obj && obj.created_by_user_id) || null; - this.space_geom_id = (obj && obj.space_geom_id) || null; - this.hex_id = (obj && obj.hex_id) || null; - this.hex_sub_id = (obj && obj.hex_sub_id) || null; - this.total_area = (obj && obj.total_area) || null; - this.negative_occurance_ind = (obj && obj.negative_occurance_ind) || null; - this.paper_id_primary = (obj && obj.paper_id_primary) || null; - this.paper_id_secondary = (obj && obj.paper_id_secondary) || null; - this.elevation_meters = (obj && obj.elevation_meters) || null; - this.well_proximity = (obj && obj.well_proximity) || null; - this.well_tag = (obj && obj.well_tag) || null; - this.observation_geometry_code_id = (obj && obj.observation_geometry_code_id) || null; - this.photo_indicator = (obj && obj.photo_indicator) || null; - this.flowering = (obj && obj.flowering) || null; - this.bec_zone = (obj && obj.bec_zone) || null; - this.riso = (obj && obj.riso) || null; - this.ipma = (obj && obj.ipma) || null; - this.ownership = (obj && obj.ownership) || null; - this.regional_district = (obj && obj.regional_district) || null; - this.flnro_district = (obj && obj.flnro_district) || null; - this.moti_district = (obj && obj.moti_district) || null; - this.raw_longitude = (obj && obj.raw_longitude) || null; - this.raw_latitude = (obj && obj.raw_latitude) || null; - this.raw_utm_zone = (obj && obj.raw_utm_zone) || null; - this.raw_utm_easting = (obj && obj.raw_utm_easting) || null; - this.raw_utm_northing = (obj && obj.raw_utm_northing) || null; - this.raw_albers_x = (obj && obj.raw_albers_x) || null; - this.raw_albers_y = (obj && obj.raw_albers_y) || null; - } -} diff --git a/api-mobile/src/models/point-of-interest.ts b/api-mobile/src/models/point-of-interest.ts deleted file mode 100644 index 8108e7a52..000000000 --- a/api-mobile/src/models/point-of-interest.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { SEARCH_LIMIT_MAX } from '../constants/misc'; -import { parseBase64DataURLString } from '../utils/file-utils'; - -/** - * A single media item. - * - * @export - * @interface IMediaItem - */ -export interface IMediaItem { - media_date?: string; - description?: string; - file_name: string; - encoded_file: string; -} - -/** - * Media object for Data URL base64 encoded files. - * - * @export - * @class MediaBase64 - */ -export class MediaBase64 { - mediaName: string; - contentType: string; - contentString: string; - mediaBuffer: Buffer; - mediaDescription: string; - mediaDate: string; - - /** - * Creates an instance of MediaBase64. - * - * @param {IMediaItem} obj - * @memberof MediaBase64 - */ - constructor(obj: IMediaItem) { - if (!obj) { - throw new Error('media was null'); - } - - const base64StringParts = parseBase64DataURLString(obj.encoded_file); - - if (!base64StringParts) { - throw new Error('media encoded_file could not be parsed'); - } - - this.contentType = base64StringParts.contentType; - this.contentString = base64StringParts.contentType; - this.mediaName = obj.file_name; - this.mediaBuffer = Buffer.from(base64StringParts.contentString, 'base64'); - this.mediaDescription = obj.description || null; - this.mediaDate = obj.media_date || null; - } -} - -/** - * PointOfInterest post request body. - * - * @export - * @class PointOfInterestPostRequestBody - */ -export class PointOfInterestPostRequestBody { - pontOfInterestPostBody: object; - pontOfInterestResponseBody: object; - - pontOfInterest_type: string; - pontOfInterest_subtype: string; - - pontOfInterest_data: object; - pontOfInterest_type_data: object; - pontOfInterest_subtype_data: object; - - received_timestamp: string; - - geoJSONFeature: GeoJSON.Feature[]; - - mediaKeys: string[]; - - /** - * Creates an instance of PointOfInterestPostRequestBody. - * - * @param {*} [obj] - * @memberof PointOfInterestPostRequestBody - */ - constructor(obj?: any) { - // Add whole original object for auditing - this.pontOfInterestPostBody = { - ...obj, - // Strip out any media base64 strings which would convolute the record - media: - (obj.media && - obj.media.map((item: IMediaItem) => { - delete item.encoded_file; - return item; - })) || - [] - }; - - this.pontOfInterest_type = (obj && obj.pontOfInterest_type) || null; - this.pontOfInterest_subtype = (obj && obj.pontOfInterest_subtype) || null; - - this.pontOfInterest_data = (obj && obj.form_data && obj.form_data.pontOfInterest_data) || null; - this.pontOfInterest_type_data = (obj && obj.form_data && obj.form_data.pontOfInterest_type_data) || null; - this.pontOfInterest_subtype_data = (obj && obj.form_data && obj.form_data.pontOfInterest_subtype_data) || null; - - this.received_timestamp = new Date().toISOString(); - - this.geoJSONFeature = (obj && obj.geometry) || []; - - this.mediaKeys = (obj && obj.mediaKeys) || null; - } -} - -/** - * PointOfInterest search filter criteria object. - * - * @export - * @class PointOfInterestSearchCriteria - */ -export class PointOfInterestSearchCriteria { - page: number; - limit: number; - - pontOfInterest_type: string; - pontOfInterest_subtype: string; - - date_range_start: Date; - date_range_end: Date; - - search_feature: GeoJSON.Feature; - - /** - * Creates an instance of PointOfInterestSearchCriteria. - * - * @param {*} [obj] - * @memberof PointOfInterestSearchCriteria - */ - constructor(obj?: any) { - this.page = (obj && obj.page && this.setPage(obj.page)) || 0; - this.limit = (obj && obj.limit && this.setLimit(obj.limit)) || SEARCH_LIMIT_MAX; - - this.pontOfInterest_type = (obj && obj.pontOfInterest_type) || null; - this.pontOfInterest_subtype = (obj && obj.pontOfInterest_subtype) || null; - - this.date_range_start = (obj && obj.date_range_start) || null; - this.date_range_end = (obj && obj.date_range_end) || null; - - this.search_feature = (obj && obj.search_feature) || null; - } - - setPage(page: number): number { - if (!page || page < 0) { - return 0; - } - - return page; - } - - setLimit(limit: number): number { - if (!limit || limit < 0) { - return 25; - } - - if (limit > SEARCH_LIMIT_MAX) { - return SEARCH_LIMIT_MAX; - } - - return limit; - } -} diff --git a/api-mobile/src/openapi/README.md b/api-mobile/src/openapi/README.md deleted file mode 100644 index 878d6aae7..000000000 --- a/api-mobile/src/openapi/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# JSON-Schema - -https://json-schema.org/ - -## geojson-feature-doc.json - -Spec copied from: - -- https://github.com/geojson/schema - -_Note: It was very slightly modified to remove the top level `$schema` and `$id` fields, which are only valid at the root level of the api spec._ diff --git a/api-mobile/src/openapi/api-doc.json b/api-mobile/src/openapi/api-doc.json deleted file mode 100644 index 75d636750..000000000 --- a/api-mobile/src/openapi/api-doc.json +++ /dev/null @@ -1,1572 +0,0 @@ -{ - "openapi": "3.0.0", - "info": { - "version": "0.0.0", - "title": "invasivesbc-api-mobile", - "description": "API for InvasivesBC mobile", - "license": { - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" - } - }, - "servers": [ - { - "url": "http://localhost:3002/api", - "description": "local api" - }, - { - "url": "http://localhost:7080/api", - "description": "local api via docker" - }, - { - "url": "https://api-mobile-dev-invasivesbc.pathfinder.gov.bc.ca", - "description": "deployed api in dev environment" - }, - { - "url": "https://api-mobile-test-invasivesbc.pathfinder.gov.bc.ca", - "description": "deployed api in test environment" - }, - { - "url": "https://api-mobile-invasivesbc.pathfinder.gov.bc.ca", - "description": "deployed api in prod environment" - } - ], - "tags": [ - { - "name": "misc", - "description": "Miscellaneous endpoints" - }, - { - "name": "activity", - "description": "Activity endpointsAn activity is a parent classification that contains Observations, Treatments, and Monitoring 'activities'" - }, - { - "name": "observation", - "description": "Observation activity endpoints" - }, - { - "name": "plant", - "description": "Plant endpoints" - }, - { - "name": "code", - "description": "Code endpoints" - }, - { - "name": "media", - "description": "Media endpoints" - } - ], - "externalDocs": { - "description": "Visit GitHub to find out more about this API", - "url": "https://github.com/bcgov/lucy-web.git" - }, - "paths": {}, - "components": { - "securitySchemes": { - "Bearer": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT", - "description": "To access the authenticated api routes, a valid JWT token must be present in the 'Authorization' header.The 'Authorization' header value must be of the form: `Bearer xxxxxx.yyyyyyy.zzzzzz`" - } - }, - "responses": { - "400": { - "description": "Bad request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "401": { - "description": "Unauthorized user", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "503": { - "description": "Service unavailable", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "default": { - "description": "Unexpected error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "schemas": { - "Error": { - "description": "Error response object", - "properties": { - "status": { - "type": "number" - }, - "message": { - "type": "string" - }, - "errors": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "Activity_Observation_PlantTerrestial": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Observation" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Observation_PlantTerrestial" - } - } - }, - "Activity_Observation_PlantAquatic": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Observation" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Observation_PlantAquatic" - } - } - }, - "Activity_Observation_AnimalTerrestrial": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Observation" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Observation_AnimalTerrestrial" - } - } - }, - "Activity_Observation_AnimalAquatic": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Observation" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Observation_AnimalAquatic" - } - } - }, - "Activity_Treatment_ChemicalPlant": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Treatment" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Treatment_ChemicalPlant" - } - } - }, - "Activity_Treatment_MechanicalPlant": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Treatment" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Treatment_MechanicalPlant" - } - } - }, - "Activity_Treatment_BiologicalPlant": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Treatment" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Treatment_BiologicalPlant" - } - } - }, - "Activity_Treatment_BiologicalDispersalPlant": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Treatment" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Treatment_BiologicalDispersalPlant" - } - } - }, - "Activity_Treatment_MechanicalTerrestrialAnimal": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Treatment" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Treatment_MechanicalTerrestrialAnimal" - } - } - }, - "Activity_Treatment_ChemicalTerrestrialAnimal": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Treatment" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Treatment_ChemicalTerrestrialAnimal" - } - } - }, - "Activity_Treatment_BiologicalTerrestrialAnimal": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Treatment" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Treatment_BiologicalTerrestrialAnimal" - } - } - }, - "Activity_Monitoring_ChemicalTerrestrialAquaticPlant": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Monitoring" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Monitoring_ChemicalTerrestrialAquaticPlant" - } - } - }, - "Activity_Monitoring_MechanicalTerrestrialAquaticPlant": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Monitoring" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Monitoring_MechanicalTerrestrialAquaticPlant" - } - } - }, - "Activity_Monitoring_BiologicalTerrestrialPlant": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Monitoring" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Monitoring_BiologicalTerrestrialPlant" - } - } - }, - "Activity_Monitoring_MechanicalTerrestrialAnimal": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Monitoring" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Monitoring_MechanicalTerrestrialAnimal" - } - } - }, - "Activity_Monitoring_ChemicalTerrestrialAnimal": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Monitoring" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Monitoring_ChemicalTerrestrialAnimal" - } - } - }, - "Activity_Monitoring_BiologicalTerrestrialAnimal": { - "type": "object", - "properties": { - "activity_data": { - "$ref": "#/components/schemas/Activity" - }, - "activity_type_data": { - "$ref": "#/components/schemas/Monitoring" - }, - "activity_subtype_data": { - "$ref": "#/components/schemas/Monitoring_BiologicalTerrestrialAnimal" - } - } - }, - "Activity": { - "title": "Basic Information", - "description": "Basic information captured for all activities", - "type": "object", - "required": [ - "species_agency_code", - "jurisdiction_code", - "activity_status", - "species_id", - "access_description", - "media_indicator", - "created_date_on_device", - "updated_date_on_device" - ], - "properties": { - "species_agency_code": { - "type": "string", - "title": "Agency", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "species_agency_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "jurisdiction_code": { - "type": "string", - "title": "Jurisdiction", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "jurisdiction_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "activity_status": { - "type": "string", - "title": "Activity status", - "enum": [ - "sync", - "done", - "pending", - "errors" - ] - }, - "species_id": { - "type": "string", - "title": "Species" - }, - "general_comment": { - "type": "string", - "title": "Comment", - "maximum": 300 - }, - "access_description": { - "type": "string", - "title": "Access Description", - "maximum": 300 - }, - "media_indicator": { - "type": "boolean", - "title": "Photo" - }, - "created_date_on_device": { - "type": "string", - "title": "Created date on device" - }, - "updated_date_on_device": { - "type": "string", - "title": "Updated date on device" - }, - "paper_file": { - "type": "array", - "title": "Paper file", - "items": { - "$ref": "#/components/schemas/PaperFile" - } - } - } - }, - "Observation": { - "title": "Observation Information", - "description": "Basic information captured for all observations", - "type": "object", - "required": [ - "observation_date", - "observation_time", - "observation_type", - "observer_first_name", - "observer_last_name", - "reported_area", - "sample_taken", - "negative_obs_ind" - ], - "properties": { - "observation_date": { - "type": "string", - "title": "Date" - }, - "observation_time": { - "type": "string", - "title": "Time" - }, - "observation_type": { - "type": "string", - "title": "Type" - }, - "observer_first_name": { - "type": "string", - "title": "First Name", - "maximum": 50 - }, - "observer_last_name": { - "type": "string", - "title": "Last Name", - "maximum": 50 - }, - "reported_area": { - "type": "number", - "title": "Area", - "minimum": 1, - "maximum": 100 - }, - "sample_taken": { - "type": "boolean", - "title": "Sample Taken" - }, - "sample_number": { - "type": "string", - "title": "Sample Number", - "maximum": 50 - }, - "negative_obs_ind": { - "type": "boolean", - "title": "Negative Observation" - } - } - }, - "Observation_PlantTerrestial": { - "title": "Terrestrial Plant Information", - "description": "Plant Observation Terrestrial", - "type": "object", - "required": [ - "species_density_code", - "species_distribution_code", - "soil_texture_code", - "specific_use_code", - "slope_code", - "aspect_code", - "proposed_action_code", - "flowering", - "plant_life_stage", - "plant_health", - "plant_seed_stage", - "legacy_site_ind", - "early_detection_rapid_resp_ind", - "research_detection_ind", - "well_ind", - "special_care_ind", - "biological_ind" - ], - "properties": { - "species_density_code": { - "type": "string", - "title": "Density", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "species_density_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "species_distribution_code": { - "type": "number", - "title": "Distribution", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "species_distribution_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "soil_texture_code": { - "type": "string", - "title": "Soil Texture", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "soil_texture_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "specific_use_code": { - "type": "string", - "title": "Specific Use", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "specific_use_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "slope_code": { - "type": "string", - "title": "Slope", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "observation_slope_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "aspect_code": { - "type": "string", - "title": "Aspect", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "observation_aspect_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "proposed_action_code": { - "type": "string", - "title": "Proposed Action", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "observation_proposed_action_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "flowering": { - "type": "boolean", - "title": "Flowering" - }, - "plant_life_stage": { - "type": "string", - "title": "Life Stage" - }, - "plant_health": { - "type": "string", - "title": "Health" - }, - "plant_seed_stage": { - "type": "string", - "title": "Seed Stage" - }, - "sample_identifier": { - "type": "string", - "title": "Sample ID" - }, - "range_unit_number": { - "type": "string", - "title": "Range Unit" - }, - "legacy_site_ind": { - "type": "boolean", - "title": "Legacy site" - }, - "early_detection_rapid_resp_ind": { - "type": "boolean", - "title": "Early Detection" - }, - "research_detection_ind": { - "type": "boolean", - "title": "Research Detection" - }, - "well_ind": { - "type": "boolean", - "title": "Visible well nearby" - }, - "special_care_ind": { - "type": "boolean", - "title": "Special Care" - }, - "biological_ind": { - "type": "boolean", - "title": "Biological" - } - } - }, - "Observation_PlantAquatic": { - "title": "Aquatic Plant Information", - "description": "Plant Observation Terrestrial", - "type": "object", - "required": [ - "specific_use_code", - "proposed_action_code", - "flowering", - "plant_life_stage", - "plant_health", - "plant_seed_stage", - "legacy_site_ind", - "early_detection_rapid_resp_ind", - "research_detection_ind", - "sample_taken", - "special_care_ind", - "biological_ind", - "secchi_depth", - "water_depth", - "voucher_submitted_ind" - ], - "properties": { - "specific_use_code": { - "type": "string", - "title": "Specific Use", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "specific_use_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "proposed_action_code": { - "type": "string", - "title": "Proposed Action" - }, - "flowering": { - "type": "boolean", - "title": "Flowering" - }, - "plant_life_stage": { - "type": "string", - "title": "Life Stage" - }, - "plant_health": { - "type": "string", - "title": "Health" - }, - "plant_seed_stage": { - "type": "string", - "title": "Seed Stage" - }, - "sample_identifier": { - "type": "string", - "title": "Sample ID" - }, - "range_unit_number": { - "type": "string", - "title": "Range Unit" - }, - "legacy_site_ind": { - "type": "boolean" - }, - "early_detection_rapid_resp_ind": { - "type": "boolean", - "title": "Early Detection" - }, - "research_detection_ind": { - "type": "boolean", - "title": "Research Detection" - }, - "sample_taken": { - "type": "boolean", - "title": "Sample Taken" - }, - "sample_point_number": { - "type": "string", - "title": "Sample Number" - }, - "special_care_ind": { - "type": "boolean", - "title": "Special Care" - }, - "biological_ind": { - "type": "boolean", - "title": "Biological" - }, - "secchi_depth": { - "type": "number", - "format": "float", - "title": "secchi depth" - }, - "water_depth": { - "type": "number", - "format": "float", - "title": "water depth" - }, - "voucher_submitted_ind": { - "type": "boolean", - "title": "Voucher submitted" - }, - "voucher_submission_detail": { - "type": "string", - "title": "Voucher submission details" - } - } - }, - "Observation_AnimalTerrestrial": { - "title": "Terrestrial Animal Information", - "description": "Animal Observation Terrestrial", - "type": "object", - "required": [ - "number_of_individuals_observed", - "life_stage_code", - "behaviour_code" - ], - "properties": { - "number_of_individuals_observed": { - "type": "number", - "title": "Number of individuals" - }, - "life_stage_code": { - "type": "string", - "title": "Life Stage", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "specieslife_stage_code_agency_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "behaviour_code": { - "type": "string", - "title": "Behaviour", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "behaviour_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - } - } - }, - "Observation_AnimalAquatic": { - "title": "Aquatic Animal Information", - "description": "Animal Observation Aquatic", - "type": "object", - "required": [ - "observation_details" - ], - "properties": { - "observation_details": { - "type": "string", - "title": "Aquatic animal observations" - } - } - }, - "Treatment": { - "title": "Treatment Information", - "description": "Basic information captured for all treatments", - "type": "object" - }, - "Treatment_ChemicalPlant": { - "title": "Chemical treatment for plants", - "description": "Chemical treament for plants", - "type": "object", - "required": [ - "primary_applicator_employee_code", - "secondary_applicator_employee_code", - "pesticide_employer_code", - "project_management_plan_PMP", - "chemical_treatment_method", - "temperature", - "humidity", - "mix_delivery_rate", - "application_rate", - "area_treated", - "herbicide" - ], - "properties": { - "primary_applicator_employee_code": { - "type": "string", - "title": "Primary Applicator employee code" - }, - "secondary_applicator_employee_code": { - "type": "string", - "title": "Secondary Applicator employee code" - }, - "pesticide_employer_code": { - "type": "string", - "title": "Pesticide employer code", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "pesticide_employer_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "project_management_plan_PMP": { - "type": "string", - "title": "Project Management Plan" - }, - "pesticide_use_permit_PUP": { - "type": "string", - "title": "Pesticide use permit" - }, - "chemical_treatment_method": { - "type": "string", - "title": "Chemical treatment method" - }, - "temperature": { - "type": "number", - "title": "Temperature", - "minimum": 10, - "maximum": 30 - }, - "wind_speed": { - "type": "number", - "title": "Wind speed" - }, - "wind_direction_code": { - "type": "string", - "title": "Wind direction", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "wind_direction_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "humidity": { - "type": "number", - "title": "Humidity", - "enum": [ - 0, - 10, - 20, - 30, - 40, - 50, - 60, - 70, - 80, - 90, - 100 - ] - }, - "mix_delivery_rate": { - "type": "number", - "format": "float", - "title": "Mix delivery rate" - }, - "application_rate": { - "type": "number", - "format": "float", - "title": "Application rate" - }, - "area_treated": { - "type": "number", - "format": "float", - "title": "Area treated" - }, - "herbicide": { - "type": "array", - "title": "Herbicide", - "items": { - "$ref": "#/components/schemas/Herbicide" - } - } - } - }, - "Treatment_MechanicalPlant": { - "title": "Mechanical treatment for plants", - "description": "Mechanical treament for plants", - "type": "object", - "required": [ - "applicator1_first_name", - "applicator1_last_name", - "treatment_contractor", - "mechanical_method_code", - "mechanical_disposal_method_code", - "mechanical_root_removal_code", - "mechanical_soil_disturbance_code", - "signage_on_site" - ], - "properties": { - "applicator1_first_name": { - "type": "string", - "title": "Applicator 1 first name" - }, - "applicator1_last_name": { - "type": "string", - "title": "Applicator 1 last name" - }, - "applicator2_first_name": { - "type": "string", - "title": "Applicator 1 first name" - }, - "applicator2_last_name": { - "type": "string", - "title": "Applicator 1 last name" - }, - "treatment_contractor": { - "type": "string", - "title": "Treatment contractor" - }, - "mechanical_method_code": { - "type": "string", - "title": "Mechanical method", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "mechanical_method_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "mechanical_disposal_method_code": { - "type": "string", - "title": "Mechanical disposal method", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "mechanical_disposal_method_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "mechanical_root_removal_code": { - "type": "string", - "title": "Mechanical root removal code", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "mechanical_root_removal_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "mechanical_soil_disturbance_code": { - "type": "string", - "title": "Mechanical soil disturbance code", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "mechanical_soil_disturbance_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "signage_on_site": { - "type": "boolean", - "title": "Signage on site" - } - } - }, - "Treatment_BiologicalPlant": { - "title": "Biological treament for plants", - "description": "Biological treament for plants", - "type": "object", - "required": [ - "applicator1_first_name", - "applicator1_last_name", - "treatment_contractor", - "classified_area", - "release_quantity", - "agent_source", - "biological_agent", - "biological_agent_stage", - "bioagent_maturity_status" - ], - "properties": { - "applicator1_first_name": { - "type": "string", - "title": "Applicator 1 first name" - }, - "applicator1_last_name": { - "type": "string", - "title": "Applicator 1 last name" - }, - "applicator2_first_name": { - "type": "string", - "title": "Applicator 1 first name" - }, - "applicator2_last_name": { - "type": "string", - "title": "Applicator 1 last name" - }, - "treatment_contractor": { - "type": "string", - "title": "Treatment contractor" - }, - "classified_area": { - "type": "string", - "title": "Classified area" - }, - "release_quantity": { - "type": "number", - "title": "Release quantity" - }, - "agent_source": { - "type": "string", - "title": "Agent source" - }, - "biological_agent": { - "type": "string", - "title": "Biological agent" - }, - "biological_agent_stage": { - "type": "string", - "title": "Biological agent stage" - }, - "bioagent_maturity_status": { - "type": "string", - "title": "Bioagent maturity status" - } - } - }, - "Treatment_BiologicalDispersalPlant": { - "title": "Biological dispersal treament for plants", - "description": "Biological dispersal treament for plants", - "type": "object", - "required": [ - "applicator1_first_name", - "applicator1_last_name", - "treatment_contractor", - "duration_of_count", - "biological_agent", - "plant_count", - "biological_agent_count", - "biological_agent_presence" - ], - "properties": { - "applicator1_first_name": { - "type": "string", - "title": "Applicator 1 first name" - }, - "applicator1_last_name": { - "type": "string", - "title": "Applicator 1 last name" - }, - "applicator2_first_name": { - "type": "string", - "title": "Applicator 2 first name" - }, - "applicator2_last_name": { - "type": "string", - "title": "Applicator 2 last name" - }, - "treatment_contractor": { - "type": "string", - "title": "Treatment contractor" - }, - "duration_of_count": { - "type": "number", - "title": "Duration of count" - }, - "biological_agent": { - "type": "string", - "title": "Biological agent" - }, - "plant_count": { - "type": "number", - "title": "Plant count" - }, - "biological_agent_count": { - "type": "number", - "title": "Biological agent count" - }, - "biological_agent_presence": { - "type": "string", - "title": "Biological agent presence" - } - } - }, - "Treatment_MechanicalTerrestrialAnimal": { - "title": "Mechanical treatment for terrestrial animals", - "description": "Mechanical treament for terrestrial animals", - "type": "object", - "required": [ - "treatment_details" - ], - "properties": { - "treatment_details": { - "type": "string", - "title": "Treatment details" - } - } - }, - "Treatment_ChemicalTerrestrialAnimal": { - "title": "Chemical treatment for terrestrial animals", - "description": "Chemical treament for terrestrial animals", - "type": "object", - "required": [ - "treatment_details" - ], - "properties": { - "treatment_details": { - "type": "string", - "title": "Treatment details" - } - } - }, - "Treatment_BiologicalTerrestrialAnimal": { - "title": "Biological treatment for terrestrial animals", - "description": "Biological treament for terrestrial animals", - "type": "object", - "required": [ - "treatment_details" - ], - "properties": { - "treatment_details": { - "type": "string", - "title": "Treatment details" - } - } - }, - "Monitoring": { - "title": "Monitoring Information", - "description": "Basic information captured for all monitorings", - "type": "object", - "required": [ - "activity_id", - "observer_first_name", - "observer_last_name", - "efficacy_rating_code" - ], - "properties": { - "activity_id": { - "type": "number", - "title": "Treatment id" - }, - "observer_first_name": { - "type": "string", - "title": "First Name" - }, - "observer_last_name": { - "type": "string", - "title": "Last Name" - }, - "efficacy_rating_code": { - "type": "string", - "title": "Efficacy rating", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "efficacy_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - } - } - }, - "Monitoring_ChemicalTerrestrialAquaticPlant": { - "title": "Monitoring a chemical treament for terrestrial and aquatic plants", - "description": "Chemical monitoring for terrestrial plants", - "type": "object", - "required": [ - "monitoring_details" - ], - "properties": { - "monitoring_details": { - "type": "string", - "title": "Monitoring details" - } - } - }, - "Monitoring_MechanicalTerrestrialAquaticPlant": { - "title": "Monitoring a mechanical treatment for terrestrial and aquatic plants", - "description": "Mechanical monitoring for terrestrial plants", - "type": "object", - "required": [ - "monitoring_details" - ], - "properties": { - "monitoring_details": { - "type": "string", - "title": "Monitoring details" - } - } - }, - "Monitoring_BiologicalTerrestrialPlant": { - "title": "Monitoring a biological treatment for terrestrial plants", - "description": "Biological monitoring for terrestrial plants", - "type": "object", - "required": [ - "plant_count", - "agent_count", - "count_duration", - "agent_destroyed_ind", - "legacy_presence_ind", - "foliar_feeding_damage_ind", - "root_feeding_damage_ind", - "oviposition_marks_ind", - "eggs_present_ind", - "larvae_present_ind", - "pupae_present_ind", - "adults_present_ind", - "tunnels_present_ind" - ], - "properties": { - "plant_count": { - "type": "number", - "title": "Plant count" - }, - "agent_count": { - "type": "number", - "title": "Agent count" - }, - "count_duration": { - "type": "number", - "title": "Count duration" - }, - "agent_destroyed_ind": { - "type": "boolean", - "title": "Agent destroyed" - }, - "legacy_presence_ind": { - "type": "boolean", - "title": "Legacy presence" - }, - "foliar_feeding_damage_ind": { - "type": "boolean", - "title": "Foliar feeding damage" - }, - "root_feeding_damage_ind": { - "type": "boolean", - "title": "Root feeding damage" - }, - "oviposition_marks_ind": { - "type": "boolean", - "title": "Oviposition marks" - }, - "eggs_present_ind": { - "type": "boolean", - "title": "Eggs present" - }, - "larvae_present_ind": { - "type": "boolean", - "title": "Larvae present" - }, - "pupae_present_ind": { - "type": "boolean", - "title": "Pupae present" - }, - "adults_present_ind": { - "type": "boolean", - "title": "Adults present" - }, - "tunnels_present_ind": { - "type": "boolean", - "title": "Tunnels present" - }, - "biological_agent_spread": { - "type": "string", - "title": "Biological agent spread" - } - } - }, - "Monitoring_MechanicalTerrestrialAnimal": { - "title": "Monitoring a mechanical treatment for a terrestrial animal", - "description": "Mechanical monitoring for terrestrial plants", - "type": "object", - "required": [ - "monitoring_details" - ], - "properties": { - "monitoring_details": { - "type": "string", - "title": "Monitoring details" - } - } - }, - "Monitoring_ChemicalTerrestrialAnimal": { - "title": "Monitoring a chemical treatment for a terrestrial animal", - "description": "Chemical monitoring for terrestrial plants", - "type": "object", - "required": [ - "monitoring_details" - ], - "properties": { - "monitoring_details": { - "type": "string", - "title": "Monitoring details" - } - } - }, - "Monitoring_BiologicalTerrestrialAnimal": { - "title": "Monitoring a biological treatment for a terrestrial animal", - "description": "Biological monitoring for terrestrial plants", - "type": "object", - "required": [ - "monitoring_details" - ], - "properties": { - "monitoring_details": { - "type": "string", - "title": "Monitoring details" - } - } - }, - "Media": { - "title": "Media", - "description": "List of Media", - "type": "object", - "properties": { - "media_date": { - "type": "string", - "title": "Date" - }, - "description": { - "type": "string", - "title": "Description" - }, - "file_name": { - "type": "string", - "title": "File Name" - }, - "encoded_file": { - "type": "string", - "format": "base64", - "description": "A Data URL base64 encoded image", - "example": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REy..." - } - } - }, - "PaperFile": { - "title": "Paper file", - "description": "Paper files", - "type": "object", - "required": [ - "description" - ], - "properties": { - "description": { - "type": "string", - "title": "Description", - "maximum": 50 - } - } - }, - "Herbicide": { - "title": "Herbicide", - "description": "herbicide", - "type": "object", - "required": [ - "herbicide_name", - "herbicide_amount" - ], - "properties": { - "herbicide_name": { - "type": "string", - "title": "herbicide name" - }, - "herbicide_amount": { - "type": "number", - "title": "herbicide amount", - "format": "float" - } - } - }, - "PointOfInterest_IAPP_Site": { - "type": "object", - "properties": { - "point_of_interest_data": { - "$ref": "#/components/schemas/Point_Of_Interest" - }, - "point_of_interest_type_data": { - "$ref": "#/components/schemas/IAPP_Site" - } - } - }, - "Point_Of_Interest": { - "title": "Basic Information", - "description": "Basic information captured for all points of interest", - "type": "object", - "required": [ - "species_agency_code", - "jurisdiction_code", - "point_of_interest_status", - "access_description", - "media_indicator", - "created_date_on_device", - "updated_date_on_device" - ], - "properties": { - "jurisdiction_code": { - "type": "string", - "title": "Jurisdiction", - "x-enum-code": { - "x-enum-code-category-name": "invasives", - "x-enum-code-header-name": "jurisdiction_code", - "x-enum-code-name": "code_name", - "x-enum-code-text": "code_description", - "x-enum-code-sort-order": "code_sort_order" - } - }, - "point_of_interest_status": { - "type": "string", - "title": "Point of interest status", - "enum": [ - "sync", - "done", - "pending", - "errors" - ] - }, - "general_comment": { - "type": "string", - "title": "Comment", - "maximum": 300 - }, - "access_description": { - "type": "string", - "title": "Access Description", - "maximum": 300 - }, - "media_indicator": { - "type": "boolean", - "title": "Photo" - }, - "created_date_on_device": { - "type": "string", - "title": "Created date on device" - }, - "updated_date_on_device": { - "type": "string", - "title": "Updated date on device" - }, - "paper_file": { - "type": "array", - "title": "Paper file", - "items": { - "$ref": "#/components/schemas/PaperFile" - } - } - } - }, - "IAPP_Site": { - "title": "IAPP Site", - "description": "IAPP Site", - "type": "object", - "required": [ - "site_id", - "created_date", - "aspect", - "original_bec_id", - "map_sheet", - "specific_use", - "soil_texture", - "comments", - "species" - ], - "properties": { - "site_id": { - "type": "string", - "title": "Site ID", - "maximum": 30 - }, - "species": { - "type": "array", - "items": { - "type": "string" - } - }, - "created_date": { - "type": "string", - "title": "", - "maximum": 30 - }, - "aspect": { - "type": "string", - "title": "", - "maximum": 30 - }, - "original_bec_id": { - "type": "string", - "title": "", - "maximum": 30 - }, - "map_sheet": { - "type": "string", - "title": "", - "maximum": 30 - }, - "specific_use": { - "type": "string", - "title": "", - "maximum": 30 - }, - "soil_texture": { - "type": "string", - "title": "", - "maximum": 30 - }, - "comments": { - "type": "string", - "title": "", - "maximum": 300 - } - } - } - } - } -} diff --git a/api-mobile/src/openapi/geojson-feature-doc.json b/api-mobile/src/openapi/geojson-feature-doc.json deleted file mode 100644 index db48c4962..000000000 --- a/api-mobile/src/openapi/geojson-feature-doc.json +++ /dev/null @@ -1,493 +0,0 @@ -{ - "title": "GeoJSON Feature", - "type": "object", - "required": [ - "type", - "properties", - "geometry" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feature" - ] - }, - "properties": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "geometry": { - "oneOf": [ - { - "type": "null" - }, - { - "title": "GeoJSON Point", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Point" - ] - }, - "coordinates": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON LineString", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "LineString" - ] - }, - "coordinates": { - "type": "array", - "minItems": 2, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON Polygon", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Polygon" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 4, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiPoint", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MultiPoint" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiLineString", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MultiLineString" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiPolygon", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MultiPolygon" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "array", - "minItems": 4, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON GeometryCollection", - "type": "object", - "required": [ - "type", - "geometries" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "GeometryCollection" - ] - }, - "geometries": { - "type": "array", - "items": { - "oneOf": [ - { - "title": "GeoJSON Point", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Point" - ] - }, - "coordinates": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON LineString", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "LineString" - ] - }, - "coordinates": { - "type": "array", - "minItems": 2, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON Polygon", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Polygon" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 4, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiPoint", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MultiPoint" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiLineString", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MultiLineString" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - }, - { - "title": "GeoJSON MultiPolygon", - "type": "object", - "required": [ - "type", - "coordinates" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MultiPolygon" - ] - }, - "coordinates": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "array", - "minItems": 4, - "items": { - "type": "array", - "minItems": 2, - "items": { - "type": "number" - } - } - } - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - } - ] - } - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } - } - ] - }, - "bbox": { - "type": "array", - "minItems": 4, - "items": { - "type": "number" - } - } - } -} diff --git a/api-mobile/src/paths/activities.ts b/api-mobile/src/paths/activities.ts deleted file mode 100644 index ba99a4681..000000000 --- a/api-mobile/src/paths/activities.ts +++ /dev/null @@ -1,175 +0,0 @@ -'use strict'; - -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { SQLStatement } from 'sql-template-strings'; -import { ALL_ROLES } from '../constants/misc'; -import { getDBConnection } from '../database/db'; -import { ActivitySearchCriteria } from '../models/activity'; -import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; -import { getActivitiesSQL } from '../queries/activity-queries'; -import { getLogger } from '../utils/logger'; - -const defaultLog = getLogger('activity'); - -export const POST: Operation = [getActivitiesBySearchFilterCriteria()]; - -POST.apiDoc = { - description: 'Fetches all activities based on search criteria.', - tags: ['activity'], - security: [ - { - Bearer: ALL_ROLES - } - ], - requestBody: { - description: 'Activities search filter criteria object.', - content: { - 'application/json': { - schema: { - properties: { - page: { - type: 'number', - default: 0, - minimum: 0 - }, - limit: { - type: 'number', - default: 25, - minimum: 0, - maximum: 100 - }, - sort_by: { - type: 'string' - }, - sort_direction: { - type: 'string', - enum: ['ASC', 'DESC'] - }, - activity_type: { - type: 'array', - items: { - type: 'string' - } - }, - activity_subtype: { - type: 'array', - items: { - type: 'string' - } - }, - date_range_start: { - type: 'string', - description: 'Date range start, in YYYY-MM-DD format. Defaults time to start of day.', - example: '2020-07-30' - }, - date_range_end: { - type: 'string', - description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', - example: '2020-08-30' - }, - search_feature: { - ...geoJSON_Feature_Schema - }, - column_names: { - type: 'array', - items: { - type: 'string' - } - } - } - } - } - } - }, - responses: { - 200: { - description: 'Activity get response object array.', - content: { - 'application/json': { - schema: { - type: 'array', - items: { - type: 'object', - properties: { - rows: { - type: 'array', - items: { - type: 'object', - properties: { - // Don't specify exact object properties, as it will vary, and is not currently enforced anyways - // Eventually this could be updated to be a oneOf list, similar to the Post request below. - } - } - }, - count: { - type: 'number' - } - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - -/** - * Fetches all activity records based on request search filter criteria. - * - * @return {RequestHandler} - */ -function getActivitiesBySearchFilterCriteria(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'getActivitiesBySearchFilterCriteria', body: req.body }); - - const sanitizedSearchCriteria = new ActivitySearchCriteria(req.body); - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatement: SQLStatement = getActivitiesSQL(sanitizedSearchCriteria); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - // parse the rows from the response - const rows = { rows: (response && response.rows) || [] }; - - // parse the count from the response - const count = { count: rows.rows.length && rows.rows[0]['total_rows_count'] } || {}; - - // build the return object - const result = { ...rows, ...count }; - - return res.status(200).json(result); - } catch (error) { - defaultLog.debug({ label: 'getActivitiesBySearchFilterCriteria', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - }; -} diff --git a/api-mobile/src/paths/activity.ts b/api-mobile/src/paths/activity.ts deleted file mode 100644 index dda18b2e2..000000000 --- a/api-mobile/src/paths/activity.ts +++ /dev/null @@ -1,293 +0,0 @@ -'use strict'; - -import { ManagedUpload } from 'aws-sdk/clients/s3'; -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { SQLStatement } from 'sql-template-strings'; -import { WRITE_ROLES } from '../constants/misc'; -import { getDBConnection } from '../database/db'; -import { ActivityPostRequestBody, IMediaItem, MediaBase64 } from '../models/activity'; -import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; -import { IPutActivitySQL, postActivitySQL, putActivitySQL } from '../queries/activity-queries'; -import { uploadFileToS3 } from '../utils/file-utils'; -import { getLogger } from '../utils/logger'; - -const defaultLog = getLogger('activity'); - -export const POST: Operation = [uploadMedia(), createActivity()]; - -export const PUT: Operation = [uploadMedia(), updateActivity()]; - -const post_put_apiDoc = { - description: 'Create a new activity.', - tags: ['activity'], - security: [ - { - Bearer: WRITE_ROLES - } - ], - requestBody: { - description: 'Activity post request object.', - content: { - 'application/json': { - schema: { - required: ['activity_type', 'activity_subtype'], - properties: { - activity_id: { - type: 'string', - format: 'uuid', - example: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d', - description: 'An RFC4122 UUID' - }, - created_timestamp: { - type: 'string', - format: 'date-time', - example: '2018-11-13T20:20:39+00:00', - description: 'Date created on user device. Must be in ISO8601 format.' - }, - activity_type: { - type: 'string', - title: 'Activity type' - }, - activity_subtype: { - type: 'string', - title: 'Activity subtype' - }, - media: { - type: 'array', - title: 'Media', - items: { - $ref: '#/components/schemas/Media' - } - }, - geometry: { - type: 'array', - title: 'Geometries', - items: { - ...geoJSON_Feature_Schema - }, - description: 'An array of GeoJSON Features' - }, - form_data: { - oneOf: [ - { $ref: '#/components/schemas/Activity_Observation_PlantTerrestial' }, - { $ref: '#/components/schemas/Activity_Observation_PlantAquatic' }, - { $ref: '#/components/schemas/Activity_Observation_AnimalTerrestrial' }, - { $ref: '#/components/schemas/Activity_Observation_AnimalAquatic' }, - { $ref: '#/components/schemas/Activity_Treatment_ChemicalPlant' }, - { $ref: '#/components/schemas/Activity_Treatment_MechanicalPlant' }, - { $ref: '#/components/schemas/Activity_Treatment_BiologicalPlant' }, - { $ref: '#/components/schemas/Activity_Treatment_BiologicalDispersalPlant' }, - { $ref: '#/components/schemas/Activity_Treatment_MechanicalTerrestrialAnimal' }, - { $ref: '#/components/schemas/Activity_Treatment_ChemicalTerrestrialAnimal' }, - { $ref: '#/components/schemas/Activity_Treatment_BiologicalTerrestrialAnimal' }, - { $ref: '#/components/schemas/Activity_Monitoring_ChemicalTerrestrialAquaticPlant' }, - { $ref: '#/components/schemas/Activity_Monitoring_MechanicalTerrestrialAquaticPlant' }, - { $ref: '#/components/schemas/Activity_Monitoring_BiologicalTerrestrialPlant' }, - { $ref: '#/components/schemas/Activity_Monitoring_MechanicalTerrestrialAnimal' }, - { $ref: '#/components/schemas/Activity_Monitoring_ChemicalTerrestrialAnimal' }, - { $ref: '#/components/schemas/Activity_Monitoring_BiologicalTerrestrialAnimal' } - ] - } - } - } - } - } - }, - responses: { - 200: { - description: 'Activity post response object.', - content: { - 'application/json': { - schema: { - required: ['activity_incoming_data_id'], - properties: { - activity_incoming_data_id: { - type: 'number' - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - -POST.apiDoc = { - ...post_put_apiDoc -}; - -PUT.apiDoc = { - ...post_put_apiDoc -}; - -/** - * Uploads any media in the request to S3, adding their keys to the request, and calling next(). - * - * Does nothing if no media is present in the request. - * - * @returns {RequestHandler} - */ -function uploadMedia(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'uploadMedia', body: req.body }); - - if (!req.body.media || !req.body.media.length) { - // no media objects included, skipping media upload step - return next(); - } - - const rawMediaArray: IMediaItem[] = req.body.media; - - const s3UploadPromises: Promise[] = []; - - rawMediaArray.forEach((rawMedia: IMediaItem) => { - if (!rawMedia) { - return; - } - - let media: MediaBase64; - try { - media = new MediaBase64(rawMedia); - } catch (error) { - defaultLog.debug({ label: 'uploadMedia', message: 'error', error }); - throw { - status: 400, - message: 'Included media was invalid/encoded incorrectly' - }; - } - - const metadata = { - filename: media.mediaName || '', - description: media.mediaDescription || '', - date: media.mediaDate || '', - username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', - email: (req['auth_payload'] && req['auth_payload'].email) || '' - }; - - s3UploadPromises.push(uploadFileToS3(media, metadata)); - }); - - const results = await Promise.all(s3UploadPromises); - - req['mediaKeys'] = results.map(result => result.Key); - - next(); - }; -} - -/** - * Creates a new activity record. - * - * @returns {RequestHandler} - */ -function createActivity(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'createActivity', body: req.params }); - - const data = { ...req.body, mediaKeys: req['mediaKeys'] }; - - const sanitizedActivityData = new ActivityPostRequestBody(data); - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatement: SQLStatement = postActivitySQL(sanitizedActivityData); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - const result = (response && response.rows && response.rows[0]) || null; - - return res.status(200).json(result); - } catch (error) { - defaultLog.debug({ label: 'createActivity', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - }; -} - -/** - * Updates an activity record. - * - * Note: An update consists of marking the existing record as 'deleted' and creating a new record with the updated data. - * - * @returns {RequestHandler} - */ -function updateActivity(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: 'activity', message: 'updateActivity', body: req.params }); - - const data = { ...req.body, mediaKeys: req['mediaKeys'] }; - - const sanitizedActivityData = new ActivityPostRequestBody(data); - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatements: IPutActivitySQL = putActivitySQL(sanitizedActivityData); - - if (!sqlStatements || !sqlStatements.updateSQL || !sqlStatements.createSQL) { - throw { - status: 400, - message: 'Failed to build SQL statements' - }; - } - - let createResponse = null; - - try { - // Perform both update and create operations as a single transaction - await connection.query('BEGIN'); - - await connection.query(sqlStatements.updateSQL.text, sqlStatements.updateSQL.values); - createResponse = await connection.query(sqlStatements.createSQL.text, sqlStatements.createSQL.values); - - await connection.query('COMMIT'); - } catch (error) { - await connection.query('ROLLBACK'); - throw error; - } - - const result = (createResponse && createResponse.rows && createResponse.rows[0]) || null; - - return res.status(200).json(result); - } catch (error) { - defaultLog.debug({ label: 'updateActivity', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - }; -} diff --git a/api-mobile/src/paths/activity/{activityId}.ts b/api-mobile/src/paths/activity/{activityId}.ts deleted file mode 100644 index 51dcf13c8..000000000 --- a/api-mobile/src/paths/activity/{activityId}.ts +++ /dev/null @@ -1,158 +0,0 @@ -'use strict'; - -import { GetObjectOutput } from 'aws-sdk/clients/s3'; -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { SQLStatement } from 'sql-template-strings'; -import { ALL_ROLES } from './../../constants/misc'; -import { getDBConnection } from './../../database/db'; -import { IMediaItem } from './../../models/activity'; -import { getActivitySQL } from './../../queries/activity-queries'; -import { getFileFromS3 } from './../../utils/file-utils'; -import { getLogger } from './../../utils/logger'; - -const defaultLog = getLogger('activity/{activityId}'); - -export const GET: Operation = [getActivity(), getMedia(), returnActivity()]; - -GET.apiDoc = { - description: 'Fetches a single activity based on its primary key.', - tags: ['activity'], - security: [ - { - Bearer: ALL_ROLES - } - ], - parameters: [ - { - in: 'path', - name: 'activityId', - required: true - } - ], - responses: { - 200: { - description: 'Activity get response object array.', - content: { - 'application/json': { - schema: { - type: 'object', - properties: { - // Don't specify exact response, as it will vary, and is not currently enforced anyways - // Eventually this could be updated to be a oneOf list, similar to the Post request below. - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - -/** - * Fetches a single activity record based on its primary key. - * - * @return {RequestHandler} - */ -function getActivity(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: '{activityId}', message: 'getActivity', body: req.params }); - - const activityId = req.params.activityId; - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatement: SQLStatement = getActivitySQL(activityId); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - const result = (response && response.rows && response.rows[0]) || null; - - req['activity'] = result; - } catch (error) { - defaultLog.debug({ label: 'getActivity', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - - return next(); - }; -} - -function getMedia(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: '{activityId}', message: 'getMedia', body: req.body }); - - const activity = req['activity']; - - if (!activity || !activity.media_keys || !activity.media_keys.length) { - // No media keys found, skipping get media step - return next(); - } - - const s3GetPromises: Promise[] = []; - - activity['media_keys'].forEach((key: string) => { - s3GetPromises.push(getFileFromS3(key)); - }); - - const response = await Promise.all(s3GetPromises); - - const result: IMediaItem[] = response.map((s3Object: GetObjectOutput) => { - // Encode image buffer as base64 - const contentString = Buffer.from(s3Object.Body).toString('base64'); - - // Append DATA Url string - const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; - - const mediaItem: IMediaItem = { - file_name: (s3Object && s3Object.Metadata && s3Object.Metadata.filename) || null, - encoded_file: encodedFile, - description: (s3Object && s3Object.Metadata && s3Object.Metadata.description) || null, - media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.date) || null - }; - - return mediaItem; - }); - - // Add encoded media to activity - req['activity'].media = result; - - return next(); - }; -} - -/** - * Sends a 200 response with JSON contents of `rew.activity`. - * - * @return {RequestHandler} - */ -function returnActivity(): RequestHandler { - return async (req, res, next) => { - return res.status(200).json(req['activity']); - }; -} diff --git a/api-mobile/src/paths/context/databc/{wfs}.ts b/api-mobile/src/paths/context/databc/{wfs}.ts deleted file mode 100644 index 2a0bf84c6..000000000 --- a/api-mobile/src/paths/context/databc/{wfs}.ts +++ /dev/null @@ -1,102 +0,0 @@ -'use strict'; - -import axios from 'axios'; -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { ALL_ROLES } from '../../../constants/misc'; -import { getLogger } from '../../../utils/logger'; - -const defaultLog = getLogger('activity'); - -export const GET: Operation = [getDataBC()]; - -GET.apiDoc = { - description: 'Fetches a single feature of a DataBC WFS layer from a geographic point location.', - tags: ['activity','databc'], - security: [ - { - Bearer: ALL_ROLES - } - ], - parameters: [ - { - in: 'query', - name: 'lon', - required: true - }, - { - in: 'query', - name: 'lat', - required: true - }, - { - in: 'path', - name: 'wfs', - required: true - } - ], - responses: { - 200: { - description: 'GeoJSON feature from DataBC Layer', - content: { - 'application/json': { - schema: { - type: 'object', - properties: { - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - - -/** - * Fetches a single feature of a DataBC WFS layer from a geographic point location. - * - * @return {RequestHandler} - */ -function getDataBC(): RequestHandler { - return async (req, res, next) => { - - // Grab coordinates from the query string - const {lon,lat} = req.query; - - // Grab the wfs target from the url path - const wfs = req.params.wfs; - - // Error if no coordinates - if (!lon || !lat) { - throw { - status: 400, - message: 'Did not supply valid coordinates' - } - } - - defaultLog.debug({ label: 'dataBC', message: 'getElevation', body: req.body }); - - // Convert point coordinates into a bounding box - const coords = `${lon},${lat},${parseFloat(lon as string) + 0.00001},${parseFloat(lat as string) + 0.00001}` - - // Formulate the url. - const url = `https://openmaps.gov.bc.ca/geo/pub/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=pub:${wfs}&outputFormat=json&maxFeatures=1&srsName=epsg:4326&bbox=${coords},epsg:4326`; - - axios.get(url) - .then((response) => { - return res.status(200).json({target: response.data?.features[0]?.properties}); - }) - .catch((error) => { - return defaultLog.debug({ label: 'getDataBC', message: 'error', error }); - }); - }; -} diff --git a/api-mobile/src/paths/context/elevation.ts b/api-mobile/src/paths/context/elevation.ts deleted file mode 100644 index 5ab65eeac..000000000 --- a/api-mobile/src/paths/context/elevation.ts +++ /dev/null @@ -1,93 +0,0 @@ -'use strict'; - -import axios from 'axios'; -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { ALL_ROLES } from '../../constants/misc'; -import { getLogger } from '../../utils/logger'; - -const defaultLog = getLogger('activity'); - -export const GET: Operation = [getElevation()]; - -GET.apiDoc = { - description: 'Fetches elevation for a single point', - tags: ['activity','elevation'], - security: [ - { - Bearer: ALL_ROLES - } - ], - parameters: [ - { - in: 'query', - name: 'lon', - required: true - }, - { - in: 'query', - name: 'lat', - required: true - } - ], - responses: { - 200: { - description: 'Elevation value', - content: { - 'application/json': { - schema: { - type: 'object', - properties: { - elevation: { - type: 'integer' - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - - -/** - * Fetches all activity records based on request search filter criteria. - * - * @return {RequestHandler} - */ -function getElevation(): RequestHandler { - return async (req, res, next) => { - - // Grab coordinates from the query string - const {lon,lat} = req.query; - - // Error if no coordinates - if (!lon || !lat) { - throw { - status: 400, - message: 'Did not supply valid coordinates' - } - } - - defaultLog.debug({ label: 'elevation', message: 'getElevation', body: req.body }); - - var url = `https://geogratis.gc.ca/services/elevation/cdem/altitude?lat=${lat}&lon=${lon}`; - - axios.get(url) - .then((response) => { - return res.status(200).json({elevation: response.data?.altitude}); - }) - .catch((error) => { - return defaultLog.debug({ label: 'getElevation', message: 'error', error }); - }); - }; -} diff --git a/api-mobile/src/paths/context/internal/{target}.ts b/api-mobile/src/paths/context/internal/{target}.ts deleted file mode 100644 index 2244fc109..000000000 --- a/api-mobile/src/paths/context/internal/{target}.ts +++ /dev/null @@ -1,158 +0,0 @@ -'use strict'; - -import { RequestHandler, Response } from 'express'; -import { Operation } from 'express-openapi'; -import { ALL_ROLES } from '../../../constants/misc'; -import { getLogger } from '../../../utils/logger'; -import { getDBConnection } from '../../../database/db'; - -const defaultLog = getLogger('activity'); - -export const GET: Operation = [getContext()]; - -GET.apiDoc = { - description: 'Fetch internal contextual data for a single point.', - tags: ['activity','RISO','IPMA'], - security: [ - { - Bearer: ALL_ROLES - } - ], - parameters: [ - { - in: 'query', - name: 'lon', - required: true - }, - { - in: 'query', - name: 'lat', - required: true - }, - { - in: 'path', - name: 'target', - required: true - } - ], - responses: { - 200: { - description: 'Target value', - content: { - 'application/json': { - schema: { - type: 'object', - properties: { - target: { - type: 'string' - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - - -/** - * ## getPlanningArea - * Get the Invasive Plant Management Area - * @param lon {float} Longitude - * @param lat {float} Latitude - * @param res {object} Express response object - * @param attr {string} The postgres table attribute to target - * @param table {string} The postgres table to target - */ -const getPlanningArea = async ( - lon: any, - lat: any, - res: Response, - attr: string, - table: string -) => { - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - const sql = ` - select - target.${attr} "target" - from - public.${table} "target" - where - public.st_intersects( - public.geography( - public.st_setSrid( - public.st_point(${lon},${lat}) - ,4326) - ),target.geog - ) - `; - - try { - const response = await connection.query(sql); - const payload = {target: response.rows[0].target}; - res.status(200).json(payload); - } catch (error) { - defaultLog.debug({ label: 'getContext', message: 'error', error }); - throw error; - } finally { - connection.release(); - } -}; - -/** - * ## getContext - * Relay function for all context functions - * - */ -function getContext(): RequestHandler { - return async (req, res) => { - - // Grab coordinates from the query string - const {lon,lat} = req.query; - - // Error if no coordinates - if (!lon || !lat) { - throw { - status: 400, - message: 'Did not supply valid coordinates' - } - } - - const target = req.params.target; - - switch(target) { - case 'ipma': - getPlanningArea(lon,lat,res,'ipma','invasive_plant_management_areas'); - break; - case 'riso': - getPlanningArea(lon,lat,res,'agency','regional_invasive_species_organization_areas'); - break; - case 'utm': - getPlanningArea(lon,lat,res,'utm_zone','utm_zones'); - break; - default: - res.status(401).send('Please specify a target dataset'); - } - - - defaultLog.debug({ label: 'context', message: 'getContext', body: req.body }); - - }; -} diff --git a/api-mobile/src/paths/context/transform.ts b/api-mobile/src/paths/context/transform.ts deleted file mode 100644 index 5da1e5844..000000000 --- a/api-mobile/src/paths/context/transform.ts +++ /dev/null @@ -1,130 +0,0 @@ -'use strict'; - -import { RequestHandler, Response } from 'express'; -import { Operation } from 'express-openapi'; -import { ALL_ROLES } from '../../constants/misc'; -import { getLogger } from '../../utils/logger'; -import { getDBConnection } from '../../database/db'; - -const defaultLog = getLogger('activity'); - -export const GET: Operation = [getContext()]; - -GET.apiDoc = { - description: 'Transform from geographic coordinates to any EPSG codded coordinate', - tags: ['activity','transform','projection'], - security: [ - { - Bearer: ALL_ROLES - } - ], - parameters: [ - { - in: 'query', - name: 'lon', - required: true - }, - { - in: 'query', - name: 'lat', - required: true - }, - { - in: 'query', - name: 'epsg', - description: 'The EPSG integer code for the destination projection.', - required: true - } - ], - responses: { - 200: { - description: 'An array of transformed coordinates: x & y', - content: { - 'application/json': { - schema: { - type: 'object', - properties: { - x: { - type: 'number' - }, - y: { - type: 'number' - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - - -/** - * ## getContext - * Relay function for all context functions - * - */ -function getContext(): RequestHandler { - return async (req, res) => { - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - // Grab coordinates and epsg from the query string - const {lon,lat,epsg} = req.query; - - // Error if no coordinates - if (!lon || !lat || !epsg) { - throw { - status: 400, - message: 'Did not supply valid coordinates or epsg code' - } - } - - const sql = ` - select - public.st_x( - public.st_transform( - public.st_setSrid( - public.st_point(${lon},${lat}) - ,4326) - ,${epsg}) - ) "x", - public.st_y( - public.st_transform( - public.st_setSrid( - public.st_point(${lon},${lat}) - ,4326) - ,${epsg}) - ) "y" - `; - - try { - const response = await connection.query(sql); - const payload = {target: response.rows[0]}; - res.status(200).json(payload); - } catch (error) { - defaultLog.debug({ label: 'getContext', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - - defaultLog.debug({ label: 'context', message: 'getContext', body: req.body }); - - }; -} diff --git a/api-mobile/src/paths/media.ts b/api-mobile/src/paths/media.ts deleted file mode 100644 index e162d828b..000000000 --- a/api-mobile/src/paths/media.ts +++ /dev/null @@ -1,96 +0,0 @@ -'use strict'; - -import { GetObjectOutput } from 'aws-sdk/clients/s3'; -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { IMediaItem } from '../models/activity'; -import { ALL_ROLES } from '../constants/misc'; -import { getFileFromS3 } from '../utils/file-utils'; - -/** - * GET api/media?key=123;key=456;key=789 - */ -export const GET: Operation = [getMedia()]; - -GET.apiDoc = { - description: 'Fetches a signed url for a single media item based on its key.', - tags: ['media'], - security: [ - { - Bearer: ALL_ROLES - } - ], - parameters: [ - { - in: 'query', - name: 'key', - required: true - } - ], - responses: { - 200: { - description: 'Activity get response object array.', - content: { - 'application/json': { - schema: { - type: 'array', - items: { - type: 'object', - properties: { - // Don't specify exact response, as it will vary, and is not currently enforced anyways - // Eventually this could be updated to be a oneOf list, similar to the Post request below. - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - -function getMedia(): RequestHandler { - return async (req, res, next) => { - const keys = req.query.key as string[]; - - if (!keys || !keys.length) { - // No media keys found, skipping get media step - return next(); - } - - const s3GetPromises: Promise[] = []; - - keys.forEach((key: string) => { - s3GetPromises.push(getFileFromS3(key)); - }); - - const response = await Promise.all(s3GetPromises); - - const mediaItems: IMediaItem[] = response.map((s3Object: GetObjectOutput) => { - // Encode image buffer as base64 - const contentString = Buffer.from(s3Object.Body).toString('base64'); - - // Append DATA Url string - const encodedFile = `data:${s3Object.ContentType};base64,${contentString}`; - - const mediaItem: IMediaItem = { - file_name: (s3Object && s3Object.Metadata && s3Object.Metadata.filename) || null, - encoded_file: encodedFile, - description: (s3Object && s3Object.Metadata && s3Object.Metadata.description) || null, - media_date: (s3Object && s3Object.Metadata && s3Object.Metadata.date) || null - }; - - return mediaItem; - }); - - return res.status(200).json(mediaItems); - }; -} diff --git a/api-mobile/src/paths/media/{key}.ts b/api-mobile/src/paths/media/{key}.ts deleted file mode 100644 index d77a9fab9..000000000 --- a/api-mobile/src/paths/media/{key}.ts +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { ALL_ROLES } from '../../constants/misc'; -import { getS3SignedURL } from '../../utils/file-utils'; - -export const GET: Operation = [getSignedURL()]; - -GET.apiDoc = { - description: 'Fetches a signed url for a single media item based on its key.', - tags: ['media'], - security: [ - { - Bearer: ALL_ROLES - } - ], - parameters: [ - { - in: 'path', - name: 'key', - required: true - } - ], - responses: { - 200: { - description: 'Activity get response object array.', - content: { - 'text/plain': { - schema: { - type: 'string', - description: 'A signed url' - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - -function getSignedURL(): RequestHandler { - return async (req, res, next) => { - if (!req.params.key) { - throw { - status: 400, - message: 'Missing required path param `key`' - }; - } - - const result = await getS3SignedURL(req.params.key); - - return res.status(200).json(result); - }; -} diff --git a/api-mobile/src/paths/misc/version.ts b/api-mobile/src/paths/misc/version.ts deleted file mode 100644 index 52692bade..000000000 --- a/api-mobile/src/paths/misc/version.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Operation } from 'express-openapi'; -import { getLogger } from '../../utils/logger'; - -const defaultLog = getLogger('misc/version'); - -export const GET: Operation = [ - (req, res, next) => { - defaultLog.debug({ label: 'misc-version-get' }); - - const versionInfo = { - version: process.env.VERSION || '0', - environment: process.env.environment || process.env.NODE_ENV || 'localhost' - }; - - res.status(200).json(versionInfo); - } -]; - -GET.apiDoc = { - description: 'Get all observation plant code values.', - tags: ['misc'], - responses: { - 200: { - description: 'Code values for a plant observation', - content: { - 'application/json': { - schema: { - type: 'object', - properties: { - version: { - description: 'api version', - type: 'number' - }, - environment: { - description: 'api environment', - type: 'string' - } - } - } - } - } - }, - default: { - $ref: '#/components/responses/default' - } - } -}; diff --git a/api-mobile/src/paths/point-of-interest.ts b/api-mobile/src/paths/point-of-interest.ts deleted file mode 100644 index c93b15a6e..000000000 --- a/api-mobile/src/paths/point-of-interest.ts +++ /dev/null @@ -1,193 +0,0 @@ -'use strict'; - -import { ManagedUpload } from 'aws-sdk/clients/s3'; -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { SQLStatement } from 'sql-template-strings'; -import { WRITE_ROLES } from '../constants/misc'; -import { getDBConnection } from '../database/db'; -import { IMediaItem, MediaBase64, PointOfInterestPostRequestBody } from '../models/point-of-interest'; -import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; -import { postPointOfInterestSQL } from '../queries/point-of-interest-queries'; -import { uploadFileToS3 } from '../utils/file-utils'; -import { getLogger } from '../utils/logger'; - -const defaultLog = getLogger('point-of-interest'); - -export const POST: Operation = [uploadMedia(), createPointOfInterest()]; - -POST.apiDoc = { - description: 'Create a new point of interest.', - tags: ['point-of-interest'], - security: [ - { - Bearer: WRITE_ROLES - } - ], - requestBody: { - description: 'Point of interest post request object.', - content: { - 'application/json': { - schema: { - required: ['point_of_interest_type', 'point_of_interest_subtype'], - properties: { - point_of_interest_type: { - type: 'string', - title: 'Point of Interest type' - }, - point_of_interest_subtype: { - type: 'string', - title: 'Point of Interest subtype' - }, - media: { - type: 'array', - title: 'Media', - items: { - $ref: '#/components/schemas/Media' - } - }, - geometry: { - type: 'array', - title: 'Geometries', - items: { - ...geoJSON_Feature_Schema - } - }, - form_data: { - oneOf: [{ $ref: '#/components/schemas/PointOfInterest_IAPP_Site' }] - } - } - } - } - } - }, - responses: { - 200: { - description: 'Point of Interest post response object.', - content: { - 'application/json': { - schema: { - required: ['point_of_interest_incoming_data_id'], - properties: { - point_of_interest_incoming_data_id: { - type: 'number' - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - -/** - * Uploads any media in the request to S3, adding their keys to the request, and calling next(). - * - * Does nothing if no media is present in the request. - * - * TODO: make media handling an extension that can be added to different endpoints/record types - * - * @returns {RequestHandler} - */ -function uploadMedia(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: 'point-of-interest', message: 'uploadMedia', body: req.body }); - - if (!req.body.media || !req.body.media.length) { - // no media objects included, skipping media upload step - return next(); - } - - const rawMediaArray: IMediaItem[] = req.body.media; - - const s3UploadPromises: Promise[] = []; - - rawMediaArray.forEach((rawMedia: IMediaItem) => { - if (!rawMedia) { - return; - } - - let media: MediaBase64; - try { - media = new MediaBase64(rawMedia); - } catch (error) { - defaultLog.debug({ label: 'uploadMedia', message: 'error', error }); - throw { - status: 400, - message: 'Included media was invalid/encoded incorrectly' - }; - } - - const metadata = { - filename: media.mediaName || '', - description: media.mediaDescription || '', - date: media.mediaDate || '', - username: (req['auth_payload'] && req['auth_payload'].preferred_username) || '', - email: (req['auth_payload'] && req['auth_payload'].email) || '' - }; - - s3UploadPromises.push(uploadFileToS3(media, metadata)); - }); - - const results = await Promise.all(s3UploadPromises); - - req['mediaKeys'] = results.map(result => result.Key); - - next(); - }; -} - -/** - * Creates a new point of interest record. - * - * @returns {RequestHandler} - */ -function createPointOfInterest(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ label: 'point-of-interest', message: 'createPointOfInterest', body: req.params }); - - const data = { ...req.body, mediaKeys: req['mediaKeys'] }; - - const sanitizedPointOfInterestData = new PointOfInterestPostRequestBody(data); - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatement: SQLStatement = postPointOfInterestSQL(sanitizedPointOfInterestData); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - const result = (response && response.rows && response.rows[0]) || null; - - return res.status(200).json(result); - } catch (error) { - defaultLog.debug({ label: 'createPointOfInterest', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - }; -} diff --git a/api-mobile/src/paths/points-of-interest.ts b/api-mobile/src/paths/points-of-interest.ts deleted file mode 100644 index 75d5fd647..000000000 --- a/api-mobile/src/paths/points-of-interest.ts +++ /dev/null @@ -1,142 +0,0 @@ -'use strict'; - -import { RequestHandler } from 'express'; -import { Operation } from 'express-openapi'; -import { SQLStatement } from 'sql-template-strings'; -import { ALL_ROLES } from '../constants/misc'; -import { getDBConnection } from '../database/db'; -import { PointOfInterestSearchCriteria } from '../models/point-of-interest'; -import geoJSON_Feature_Schema from '../openapi/geojson-feature-doc.json'; -import { getPointOfInterestSQL, getPointsOfInterestSQL } from '../queries/point-of-interest-queries'; -import { getLogger } from '../utils/logger'; - -const defaultLog = getLogger('point-of-interest'); - -export const POST: Operation = [getPointsOfInterestBySearchFilterCriteria()]; - -POST.apiDoc = { - description: 'Fetches all ponts of interest based on search criteria.', - tags: ['point-of-interest'], - security: [ - { - Bearer: ALL_ROLES - } - ], - requestBody: { - description: 'Points Of Interest search filter criteria object.', - content: { - 'application/json': { - schema: { - properties: { - page: { - type: 'number', - default: 0, - minimum: 0 - }, - limit: { - type: 'number', - default: 25, - minimum: 0, - maximum: 100 - }, - point_of_interest_type: { - type: 'string' - }, - point_of_interest_subtype: { - type: 'string' - }, - date_range_start: { - type: 'string', - description: 'Date range start, in YYYY-MM-DD format. Defaults time to start of day.', - example: '2020-07-30' - }, - date_range_end: { - type: 'string', - description: 'Date range end, in YYYY-MM-DD format. Defaults time to end of day.', - example: '2020-08-30' - }, - search_feature: { - ...geoJSON_Feature_Schema - } - } - } - } - } - }, - responses: { - 200: { - description: 'Point Of Interest get response object array.', - content: { - 'application/json': { - schema: { - type: 'array', - items: { - type: 'object', - properties: { - // Don't specify exact response, as it will vary, and is not currently enforced anyways - // Eventually this could be updated to be a oneOf list, similar to the Post request below. - } - } - } - } - } - }, - 401: { - $ref: '#/components/responses/401' - }, - 503: { - $ref: '#/components/responses/503' - }, - default: { - $ref: '#/components/responses/default' - } - } -}; - -/** - * Fetches all point-of-interest records based on request search filter criteria. - * - * @return {RequestHandler} - */ -function getPointsOfInterestBySearchFilterCriteria(): RequestHandler { - return async (req, res, next) => { - defaultLog.debug({ - label: 'point-of-interest', - message: 'getPointsOfInterestBySearchFilterCriteria', - body: req.body - }); - - const sanitizedSearchCriteria = new PointOfInterestSearchCriteria(req.body); - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatement: SQLStatement = getPointsOfInterestSQL(sanitizedSearchCriteria); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - const result = (response && response.rows) || null; - - return res.status(200).json(result); - } catch (error) { - defaultLog.debug({ label: 'getPointsOfInterestBySearchFilterCriteria', message: 'error', error }); - throw error; - } finally { - connection.release(); - } - }; -} diff --git a/api-mobile/src/queries/activity-queries.ts b/api-mobile/src/queries/activity-queries.ts deleted file mode 100644 index 814903dff..000000000 --- a/api-mobile/src/queries/activity-queries.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { SQL, SQLStatement } from 'sql-template-strings'; -import { ActivityPostRequestBody, ActivitySearchCriteria } from './../models/activity'; - -/** - * SQL query to insert a new activity, and return the inserted record. - * - * @param {ActivityPostRequestBody} activity - * @returns {SQLStatement} sql query object - */ -export const postActivitySQL = (activity: ActivityPostRequestBody): SQLStatement => { - if (!activity) { - return null; - } - - const sqlStatement: SQLStatement = SQL` - INSERT INTO activity_incoming_data ( - activity_id, - activity_type, - activity_subtype, - created_timestamp, - received_timestamp, - activity_payload, - geog, - media_keys - ) VALUES ( - ${activity.activity_id}, - ${activity.activity_type}, - ${activity.activity_subtype}, - ${activity.created_timestamp}, - ${activity.received_timestamp}, - ${activity.activityPostBody} - `; - - if (activity.geoJSONFeature && activity.geoJSONFeature.length) { - // Note: this is only saving the `geometry` part of the feature, and not any assocaited `properties`. - const geometry = JSON.stringify(activity.geoJSONFeature[0].geometry); - - sqlStatement.append(SQL` - ,public.geography( - public.ST_Force2D( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${geometry}), - 4326 - ) - ) - ) - `); - } else { - sqlStatement.append(SQL` - ,null - `); - } - - if (activity.mediaKeys) { - sqlStatement.append(SQL` - ,${activity.mediaKeys} - `); - } else { - sqlStatement.append(SQL` - ,null - `); - } - - sqlStatement.append(SQL` - ) - RETURNING - activity_incoming_data_id; - `); - - return sqlStatement; -}; - -export interface IPutActivitySQL { - updateSQL: SQLStatement; - createSQL: SQLStatement; -} - -/** - * SQL queries to update an existing activity record and mark it as `deleted` and to create a new activity record. - * - * @param {ActivityPostRequestBody} activity - * @return {*} {IPutActivitySQL} array of sql query objects - */ -export const putActivitySQL = (activity: ActivityPostRequestBody): IPutActivitySQL => { - if (!activity) { - return null; - } - - // update existing activity record - const updateSQLStatement: SQLStatement = SQL` - UPDATE activity_incoming_data - SET deleted_timestamp = ${new Date().toISOString()} - WHERE activity_id = ${activity.activity_id} - AND deleted_timestamp IS NULL; - `; - - // create new activity record - const createSQLStatement: SQLStatement = postActivitySQL(activity); - - return { updateSQL: updateSQLStatement, createSQL: createSQLStatement }; -}; - -/** - * SQL query to fetch activity records based on search criteria. - * - * @param {ActivitySearchCriteria} searchCriteria - * @returns {SQLStatement} sql query object - */ -export const getActivitiesSQL = (searchCriteria: ActivitySearchCriteria): SQLStatement => { - const sqlStatement: SQLStatement = SQL`SELECT`; - - if (searchCriteria.column_names && searchCriteria.column_names.length) { - // do not include the `SQL` template string prefix, as column names can not be parameterized - sqlStatement.append(` ${searchCriteria.column_names.join(', ')}`); - } else { - // if no column_names specified, select all - sqlStatement.append(SQL` *`); - } - - // include the total count of results that would be returned if the limit and offset constraints weren't applied - sqlStatement.append(SQL`, COUNT(*) OVER() AS total_rows_count`); - - sqlStatement.append(SQL` FROM activity_incoming_data WHERE 1 = 1`); - - // don't include deleted or out-dated records - sqlStatement.append(SQL` AND deleted_timestamp IS NULL`); - - if (searchCriteria.activity_subtype && searchCriteria.activity_type.length) { - sqlStatement.append(SQL` AND activity_type IN (`); - - // add the first activity type, which does not get a comma prefix - sqlStatement.append(SQL`${searchCriteria.activity_type[0]}`); - - for (let idx = 1; idx < searchCriteria.activity_type.length; idx++) { - // add all subsequent activity types, which do get a comma prefix - sqlStatement.append(SQL`, ${searchCriteria.activity_type[idx]}`); - } - - sqlStatement.append(SQL`)`); - } - - if (searchCriteria.activity_subtype && searchCriteria.activity_subtype.length) { - sqlStatement.append(SQL` AND activity_subtype IN (`); - - // add the first activity subtype, which does not get a comma prefix - sqlStatement.append(SQL`${searchCriteria.activity_subtype[0]}`); - - for (let idx = 1; idx < searchCriteria.activity_subtype.length; idx++) { - // add all subsequent activity subtypes, which do get a comma prefix - sqlStatement.append(SQL`, ${searchCriteria.activity_subtype[idx]}`); - } - - sqlStatement.append(SQL`)`); - } - - if (searchCriteria.date_range_start) { - sqlStatement.append(SQL` AND received_timestamp >= ${searchCriteria.date_range_start}::DATE`); - } - - if (searchCriteria.date_range_end) { - sqlStatement.append(SQL` AND received_timestamp <= ${searchCriteria.date_range_end}::DATE`); - } - - if (searchCriteria.search_feature) { - sqlStatement.append(SQL` - AND public.ST_INTERSECTS( - geog, - public.geography( - public.ST_Force2D( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${searchCriteria.search_feature.geometry}), - 4326 - ) - ) - ) - ) - `); - } - - if (searchCriteria.sort_by) { - // do not include the `SQL` template string prefix, as column names and sort direction can not be parameterized - sqlStatement.append(` ORDER BY ${searchCriteria.sort_by} ${searchCriteria.sort_direction}`); - } - - if (searchCriteria.limit) { - sqlStatement.append(SQL` LIMIT ${searchCriteria.limit}`); - } - - if (searchCriteria.page && searchCriteria.limit) { - sqlStatement.append(SQL` OFFSET ${searchCriteria.page * searchCriteria.limit}`); - } - - sqlStatement.append(SQL`;`); - - return sqlStatement; -}; - -/** - * SQL query to fetch a single activity record based on its `activity_id` and `deleted_timestamp` fields. - * - * Note: An activity record with a non-null `deleted_timestamp` indicates it has either been deleted or is an out-dated - * version. The latest version should have a null `deleted_timestamp`. - * - * @param {string} activityId - * @returns {SQLStatement} sql query object - */ -export const getActivitySQL = (activityId: string): SQLStatement => { - return SQL` - SELECT * FROM activity_incoming_data - WHERE activity_id = ${activityId} - AND deleted_timestamp IS NULL; - `; -}; diff --git a/api-mobile/src/queries/code-queries.ts b/api-mobile/src/queries/code-queries.ts deleted file mode 100644 index 8e7e8a063..000000000 --- a/api-mobile/src/queries/code-queries.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { SQL, SQLStatement } from 'sql-template-strings'; - -/** - * SQL query to fetch code categories. - * - * @returns {SQLStatement} sql query object - */ -export const getCodeCategoriesSQL = (): SQLStatement => - SQL`SELECT code_category_id, code_category_name FROM code_category WHERE valid_to IS NULL;`; - -/** - * SQL query to fetch code headers. - * - * @returns {SQLStatement} sql query object - */ -export const getCodeHeadersSQL = (): SQLStatement => - SQL`SELECT code_header_id, code_category_id, code_header_name FROM code_header WHERE valid_to IS NULL;`; - -/** - * SQL query to fetch codes. - * - * @returns {SQLStatement} sql query object - */ -export const getCodesSQL = (): SQLStatement => - SQL`SELECT code_id, code_header_id, code_name, code_description, code_sort_order FROM code WHERE valid_to IS NULL;`; diff --git a/api-mobile/src/queries/point-of-interest-queries.ts b/api-mobile/src/queries/point-of-interest-queries.ts deleted file mode 100644 index 4fe4fc789..000000000 --- a/api-mobile/src/queries/point-of-interest-queries.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { SQL, SQLStatement } from 'sql-template-strings'; -import { PointOfInterestPostRequestBody, PointOfInterestSearchCriteria } from '../models/point-of-interest'; - -/** - * SQL query to insert a new point_of_interest, and return the inserted record. - * - * @param {PointOfInterestPostRequestBody} point_of_interest - * @returns {SQLStatement} sql query object - */ -export const postPointOfInterestSQL = (point_of_interest: PointOfInterestPostRequestBody): SQLStatement => { - if (!point_of_interest) { - return null; - } - - const sqlStatement: SQLStatement = SQL` - INSERT INTO point_of_interest_incoming_data ( - point_of_interest_type, - point_of_interest_subtype, - received_timestamp, - point_of_interest_payload, - geog, - media_keys - ) VALUES ( - ${point_of_interest.pontOfInterest_type}, - ${point_of_interest.pontOfInterest_subtype}, - ${point_of_interest.received_timestamp}, - ${point_of_interest.pontOfInterestPostBody} - `; - - if (point_of_interest.geoJSONFeature && point_of_interest.geoJSONFeature.length) { - // Note: this is only saving the `geometry` part of the feature, and not any assocaited `properties`. - const geometry = JSON.stringify(point_of_interest.geoJSONFeature[0].geometry); - - sqlStatement.append(SQL` - ,public.geography( - public.ST_Force2D( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${geometry}), - 4326 - ) - ) - ) - `); - } else { - sqlStatement.append(SQL` - ,null - `); - } - - if (point_of_interest.mediaKeys) { - sqlStatement.append(SQL` - ,${point_of_interest.mediaKeys} - `); - } else { - sqlStatement.append(SQL` - ,null - `); - } - - sqlStatement.append(SQL` - ) - RETURNING - point_of_interest_incoming_data_id; - `); - - return sqlStatement; -}; - -/** - * SQL query to fetch point_of_interest records based on search criteria. - * - * @param {PointOfInterestSearchCriteria} searchCriteria - * @returns {SQLStatement} sql query object - */ -export const getPointsOfInterestSQL = (searchCriteria: PointOfInterestSearchCriteria): SQLStatement => { - const sqlStatement: SQLStatement = SQL`SELECT * FROM point_of_interest_incoming_data WHERE 1 = 1`; - - if (searchCriteria.pontOfInterest_type) { - sqlStatement.append(SQL` AND point_of_interest_type = ${searchCriteria.pontOfInterest_type}`); - } - - if (searchCriteria.pontOfInterest_subtype) { - sqlStatement.append(SQL` AND point_of_interest_subtype = ${searchCriteria.pontOfInterest_subtype}`); - } - - if (searchCriteria.date_range_start) { - sqlStatement.append(SQL` AND received_timestamp >= ${searchCriteria.date_range_start}::DATE`); - } - - if (searchCriteria.date_range_end) { - sqlStatement.append(SQL` AND received_timestamp <= ${searchCriteria.date_range_end}::DATE`); - } - - if (searchCriteria.search_feature) { - sqlStatement.append(SQL` - AND public.ST_INTERSECTS( - geog, - public.geography( - public.ST_Force2D( - public.ST_SetSRID( - public.ST_GeomFromGeoJSON(${searchCriteria.search_feature.geometry}), - 4326 - ) - ) - ) - ) - `); - } - - if (searchCriteria.limit) { - sqlStatement.append(SQL` LIMIT ${searchCriteria.limit}`); - } - - if (searchCriteria.page && searchCriteria.limit) { - sqlStatement.append(SQL` OFFSET ${searchCriteria.page * searchCriteria.limit}`); - } - - sqlStatement.append(SQL`;`); - - return sqlStatement; -}; - -/** - * SQL query to fetch a single point_of_interest record based on its primary key. - * - * @param {number} point_of_interestId - * @returns {SQLStatement} sql query object - */ -export const getPointOfInterestSQL = (point_of_interestId: number): SQLStatement => { - return SQL`SELECT * FROM point_of_interest_incoming_data where point_of_interest_incoming_data_id = ${point_of_interestId}`; -}; diff --git a/api-mobile/src/queries/user-queries.ts b/api-mobile/src/queries/user-queries.ts deleted file mode 100644 index 1fa495983..000000000 --- a/api-mobile/src/queries/user-queries.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { SQL, SQLStatement } from 'sql-template-strings'; - -/** - * SQL query to fetch a user and their associated role. - * - * @param {string} email user email - * @returns {SQLStatement} sql query object - */ -export const getUserWithRolesSQL = (email: string): SQLStatement => { - if (!email) { - return null; - } - - return SQL` - SELECT * FROM application_user au - LEFT JOIN user_role ur - USING (user_id) - LEFT JOIN code cc - ON cc.code_id = ur.role_code_id - WHERE au.email = ${email.toLowerCase()}; - `; -}; diff --git a/api-mobile/src/utils/api-doc-security-filter.ts b/api-mobile/src/utils/api-doc-security-filter.ts deleted file mode 100644 index 3206cf146..000000000 --- a/api-mobile/src/utils/api-doc-security-filter.ts +++ /dev/null @@ -1,157 +0,0 @@ -import jsonpatch from 'fast-json-patch'; -import traverse from 'json-schema-traverse'; -import { CacheKeys, X_API_DOC_KEYS, X_ENUM_CODE } from '../constants/misc'; -import { getAllCodeEntities, IAllCodeEntities } from './code-utils'; -import { getLogger } from './logger'; -import { cached } from './utils'; - -const defaultLog = getLogger('api-doc-security-filter'); - -/** - * Apply updates/filters to req.apiDoc. - * - * @export - * @param {*} req - * @return {*} req - */ -export async function applyApiDocSecurityFilters(req: any) { - try { - const allCodeEntities: IAllCodeEntities = await cached(CacheKeys.ALL_CODE_CATEGORIES, 3600000, () => - getAllCodeEntities() - )(); - - if (!allCodeEntities) { - return req; - } - - // the apiDoc that updates will be applied to - const apiDoc = req['apiDoc']; - - let initialPass = true; - - // traverses the apiDoc object, calling the `cb` function for each level of the schema, the first being the entire - // (root) schema. - traverse(apiDoc, { - allKeys: true, - cb: (schema, jsonPtr) => { - if (initialPass) { - // first pass is always the entire (root) schema, which we can skip (for a minor efficiency improvement) - initialPass = false; - return; - } - - // apply code enum filters, if a matching `x-...` field exists - if (Object.keys(schema).includes(X_API_DOC_KEYS.X_ENUM_CODE)) { - // apply code enum filtering to this piece of schema - const updatedSchema = applyCodeEnumFilter(schema, allCodeEntities); - - // update apiDoc, replacing the old schema part with the updated schema part - jsonpatch.applyPatch(apiDoc, [{ op: 'replace', path: jsonPtr, value: updatedSchema }]); - } - } - }); - - // re-assign the updated apiDoc to the req - req['apiDoc'] = apiDoc; - } catch (error) { - defaultLog.debug({ label: 'applyApiDocSecurityFilters', message: 'error', error }); - throw error; - } - - return req; -} - -/** - * Updates an object to include code enum json spec. - * - * @export - * @param {object} obj the schema object to apply updates to - * @param {IAllCodeEntities} allCodeEntities an object containing all of the code categories, headers, and codes - * @return {*} {object} the updated object - */ -export function applyCodeEnumFilter(obj: object, allCodeEntities: IAllCodeEntities): object { - // prase the `x-enum-code` object - const xEnumCodeObj = obj[X_API_DOC_KEYS.X_ENUM_CODE]; - - const codeCategoryName = xEnumCodeObj[X_ENUM_CODE.CATEGORY_NAME]; - const codeHeaderName = xEnumCodeObj[X_ENUM_CODE.HEADER_NAME]; - const codeName = xEnumCodeObj[X_ENUM_CODE.CODE_NAME]; - const codeText = xEnumCodeObj[X_ENUM_CODE.CODE_TEXT]; - const codeSortOrder = xEnumCodeObj[X_ENUM_CODE.CODE_SORT_ORDER] || []; - - if (!codeCategoryName || !codeHeaderName || !codeName || !codeText) { - return obj; - } - - // Get the matching code category row - const codeCategoryRow = allCodeEntities.categories.find(item => { - return item['code_category_name'] === codeCategoryName; - }); - - if (!codeCategoryRow) { - return obj; - } - - // Get the matching code header row - const codeHeaderRow = allCodeEntities.headers.find(item => { - return ( - item['code_category_id'] === codeCategoryRow['code_category_id'] && item['code_header_name'] === codeHeaderName - ); - }); - - if (!codeHeaderRow) { - return obj; - } - - // Get all of the matching code rows - const codeRows = allCodeEntities.codes.filter(item => { - return item['code_header_id'] === codeHeaderRow['code_header_id']; - }); - - if (!codeRows || !codeRows.length) { - return obj; - } - - // update the object, adding an `anyOf` field whose value is an array of enum objects - obj = { - ...obj, - anyOf: codeRows - .map(codeRow => { - return { - // the `type` specified by the parent object that contains this enum object (their types must match) - type: obj['type'], - // the column that contains the unique value for this code - enum: [codeRow[codeName]], - // the column that contains the human readable name of this code - title: codeRow[codeText] - }; - }) - // sort by code sort order, and secondarily by title - .sort(getAscObjectSorter([codeSortOrder, 'title'])) - }; - - return obj; -} - -/** - * Returns a comparator function that sorts objects in ascending order. - * - * @param {string[]} fields An array of ordered field names to sort on. - * If the the fields[0] comparison results in a tie, then the fields[1] comparison will run, etc. - * @return {*} - */ -function getAscObjectSorter(fields: string[]) { - return (a: object, b: object) => { - for (const field of fields) { - if (a[field] < b[field]) { - return -1; - } - - if (a[field] > b[field]) { - return 1; - } - } - - return 0; - }; -} diff --git a/api-mobile/src/utils/auth-utils.ts b/api-mobile/src/utils/auth-utils.ts deleted file mode 100644 index cd2cb2cae..000000000 --- a/api-mobile/src/utils/auth-utils.ts +++ /dev/null @@ -1,295 +0,0 @@ -'use strict'; - -import { decode, verify } from 'jsonwebtoken'; -import JwksRsa, { JwksClient } from 'jwks-rsa'; -import { SQLStatement } from 'sql-template-strings'; -import { promisify } from 'util'; -import { getDBConnection } from '../database/db'; -import { getUserWithRolesSQL } from '../queries/user-queries'; -import { getLogger } from './logger'; - -const defaultLog = getLogger('auth-utils'); - -const APP_CERTIFICATE_URL = - process.env.APP_CERTIFICATE_URL || - 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs'; - -const TOKEN_IGNORE_EXPIRATION: boolean = - process.env.TOKEN_IGNORE_EXPIRATION === 'true' || - process.env.NODE_ENV === 'dev' || - process.env.DB_HOST === 'localhost' || - false; - -/** - * Authenticate the current user against the current route. - * - * @param {*} req - * @param {*} authOrSecDef - * @param {*} token - * @param {*} callback - * @returns {*} - */ -export const authenticate = async function (req: any, scopes: string[]): Promise { - try { - defaultLog.debug({ label: 'authenticate', message: 'authenticating user', scopes }); - - if (!req.headers || !req.headers.authorization) { - defaultLog.warn({ label: 'authenticate', message: 'token was null' }); - throw { - status: 401, - message: 'Access Denied' - }; - } - - const token = req.headers.authorization; - - defaultLog.debug({ label: 'authenticate', message: 'authenticating user', token }); - - if (token.indexOf('Bearer ') !== 0) { - defaultLog.warn({ label: 'authenticate', message: 'token did not have a bearer' }); - throw { - status: 401, - message: 'Access Denied' - }; - } - - // Validate the 'Authorization' header. - // Authorization header should be a string with format: Bearer xxxxxx.yyyyyyy.zzzzzz - const tokenString = token.split(' ')[1]; - - if (!tokenString) { - defaultLog.warn({ label: 'authenticate', message: 'token string was null' }); - throw { - status: 401, - message: 'Access Denied' - }; - } - - // Decode token without verifying signature - const decodedToken = decode(tokenString, { complete: true, json: true }); - - if (!decodedToken) { - defaultLog.warn({ label: 'authenticate', message: 'decoded token was null' }); - throw { - status: 401, - message: 'Access Denied' - }; - } - - // Get token header kid - const kid = decodedToken.header && decodedToken.header.kid; - - if (!decodedToken) { - defaultLog.warn({ label: 'authenticate', message: 'decoded token header kid was null' }); - throw { - status: 401, - message: 'Access Denied' - }; - } - - const jwksClient: JwksClient = JwksRsa({ jwksUri: APP_CERTIFICATE_URL }); - - const getSigningKeyAsync = promisify(jwksClient.getSigningKey); - - // Get signing key from certificate issuer - const key = await getSigningKeyAsync(kid); - - if (!key) { - defaultLog.warn({ label: 'authenticate', message: 'get signing key' }); - throw { - status: 401, - message: 'Access Denied' - }; - } - - const signingKey = key['publicKey'] || key['rsaPublicKey']; - - // Verify token using signing key - const verifiedToken = verifyToken(tokenString, signingKey); - - if (!verifiedToken) { - throw { - status: 401, - message: 'Access Denied' - }; - } - - // Add the verified token to the request for future use, if needed - req.auth_payload = verifiedToken; - - // Verify user - const verifiedUser = await verifyUser(req, scopes); - - if (!verifiedUser) { - throw { - status: 401, - message: 'Access Denied' - }; - } - - // Add the user to the request for future use, if needed - req.auth_user = verifiedUser; - - return true; - } catch (error) { - defaultLog.warn({ label: 'authenticate', message: `unexpected error - ${error.message}`, error }); - throw { - status: 401, - message: 'Access Denied' - }; - } -}; - -/** - * Verify jwt token. - * - * @param {*} tokenString - * @param {*} secretOrPublicKey - * @returns {*} verifiedToken - */ -const verifyToken = function (tokenString: any, secretOrPublicKey: any): any { - return verify(tokenString, secretOrPublicKey, { ignoreExpiration: TOKEN_IGNORE_EXPIRATION }, function ( - verificationError: any, - verifiedToken: any - ): any { - if (verificationError) { - defaultLog.warn({ label: 'verifyToken', message: 'jwt verification error', verificationError }); - return null; - } - - defaultLog.debug({ label: 'verifyToken', message: 'verifiedToken', verifiedToken }); - - // Verify that the token came from the expected issuer - // Example: when running in prod, only accept tokens from `sso.pathfinder...` and not `sso-dev.pathfinder...`, etc - if (!APP_CERTIFICATE_URL.includes(verifiedToken.iss)) { - defaultLog.warn({ - label: 'verifyToken', - message: 'jwt verification error: issuer mismatch', - 'found token issuer': verifiedToken.iss, - 'expected to be a substring of': APP_CERTIFICATE_URL - }); - return null; - } - - defaultLog.debug({ label: 'verifyToken', message: 'jwt verification success' }); - - return verifiedToken; - }); -}; - -/** - * Verify the user. - * - * - Fetches the matching user and their assigned roles based on the users email - * - Checks that the user has at least one of the required roles for the current route - * - * @param {*} req - * @returns - */ -export const verifyUser = async function (req: any, scopes: string[]) { - // get user and their role - const response = await getUserWithRoles(req.auth_payload.email); - - if (!response) { - defaultLog.warn({ - label: 'verifyUser', - message: 'failed to find user with matching email', - email: req.auth_payload.email, - response - }); - return null; - } - - const userHasRole = verifyUserRoles(scopes, response['code_name']); - - if (!userHasRole) { - defaultLog.warn({ label: 'verifyUser', message: 'user verification error: insufficient roles' }); - defaultLog.debug({ - label: 'verifyUser', - message: 'user verification error: insufficient roles', - userRoles: response['role_code'], - requiredRoles: scopes - }); - return null; - } - - defaultLog.debug({ label: 'verifyUser', message: 'user verification success' }); - - // return verified user - return response; -}; - -/** - * Checks if at least one of the the userRoles matches one of the allowedRoles. - * - * @param {(string[] | string)} allowedRoles allowed user roles - * @param {(string[] | string)} userRoles roles possessed by the user. - * @returns {boolean} true if userRoles contains at least one of the allowdRoles, false otherwise. - */ -export const verifyUserRoles = function (allowedRoles: string[] | string, userRoles: string[] | string): boolean { - if (!Array.isArray(allowedRoles)) { - allowedRoles = [allowedRoles]; - } - - if (!Array.isArray(userRoles)) { - userRoles = [userRoles]; - } - - for (const allowedRole of allowedRoles) { - // if the user contains at least one of the allowedRoles, then return true - if (userRoles.includes(allowedRole)) { - return true; - } - } - - // user contains none of the allowedRoles, return false - return false; -}; - -/** - * Finds a single user based on their email. - * - * @param {string} email - * @returns user - */ -export const getUserWithRoles = async function (email: string) { - defaultLog.debug({ label: 'getUserWithRoles', message: 'email', email }); - - if (!email) { - throw { - status: 503, - message: 'Missing required email' - }; - } - - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const sqlStatement: SQLStatement = getUserWithRolesSQL(email); - - if (!sqlStatement) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const response = await connection.query(sqlStatement.text, sqlStatement.values); - - const result = (response && response.rowCount && response.rows[0]) || null; - - return result; - } catch (error) { - defaultLog.debug({ label: 'getUserWithRoles', message: 'error', error }); - throw error; - } finally { - connection.release(); - } -}; diff --git a/api-mobile/src/utils/code-utils.ts b/api-mobile/src/utils/code-utils.ts deleted file mode 100644 index 29a6163c0..000000000 --- a/api-mobile/src/utils/code-utils.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { QueryResult, QueryResultRow } from 'pg'; -import { SQLStatement } from 'sql-template-strings'; -import { getDBConnection } from '../database/db'; -import { getCodeCategoriesSQL, getCodeHeadersSQL, getCodesSQL } from '../queries/code-queries'; -import { getLogger } from './logger'; - -const defaultLog = getLogger('code-utils'); - -export interface IAllCodeEntities { - categories: QueryResultRow[]; - headers: QueryResultRow[]; - codes: QueryResultRow[]; -} - -export async function getAllCodeEntities(): Promise { - const connection = await getDBConnection(); - - if (!connection) { - throw { - status: 503, - message: 'Failed to establish database connection' - }; - } - - try { - const codeCategoriesSQL: SQLStatement = getCodeCategoriesSQL(); - const codeHeadersSQL: SQLStatement = getCodeHeadersSQL(); - const codesSQL: SQLStatement = getCodesSQL(); - - if (!codeCategoriesSQL || !codeHeadersSQL || !codesSQL) { - throw { - status: 400, - message: 'Failed to build SQL statement' - }; - } - - const promises = []; - - promises.push(connection.query(codeCategoriesSQL.text, codeCategoriesSQL.values)); - promises.push(connection.query(codeHeadersSQL.text, codeHeadersSQL.values)); - promises.push(connection.query(codesSQL.text, codesSQL.values)); - - const responses: QueryResult[] = await Promise.all(promises); - - if (!responses || responses.length !== 3) { - return null; - } - - return { - categories: responses[0].rows, - headers: responses[1].rows, - codes: responses[2].rows - }; - } catch (error) { - defaultLog.debug({ label: 'getAllCodeEntities', message: 'error', error }); - throw error; - } finally { - connection.release(); - } -} diff --git a/api-mobile/src/utils/file-utils.ts b/api-mobile/src/utils/file-utils.ts deleted file mode 100644 index 1ed4e87b4..000000000 --- a/api-mobile/src/utils/file-utils.ts +++ /dev/null @@ -1,105 +0,0 @@ -'use strict'; - -import AWS from 'aws-sdk'; -import { GetObjectOutput, ManagedUpload, Metadata } from 'aws-sdk/clients/s3'; -import { v4 as uuidv4 } from 'uuid'; -import { S3ACLRole } from '../constants/misc'; -import { MediaBase64 } from '../models/activity'; - -const OBJECT_STORE_BUCKET_NAME = process.env.OBJECT_STORE_BUCKET_NAME; -// const OBJECT_STORE_URL = process.env.OBJECT_STORE_URL || 'nrs.objectstore.gov.bc.ca'; -// const AWS_ENDPOINT = new AWS.Endpoint(OBJECT_STORE_URL); -const S3 = new AWS.S3({ - // endpoint: AWS_ENDPOINT.href, - accessKeyId: process.env.OBJECT_STORE_ACCESS_KEY_ID, - secretAccessKey: process.env.OBJECT_STORE_SECRET_KEY_ID, - signatureVersion: 'v4', - s3ForcePathStyle: true, - region: 'ca-central-1' -}); - -/** - * Fetch a file from S3, based on its key. - * - * @export - * @param {string} key the unique key assigned to the file in S3 when it was originally uploaded - * @returns {Promise} the response from S3 or null if required parameters are null - */ -export async function getFileFromS3(key: string): Promise { - if (!key) { - return null; - } - - return S3.getObject({ Bucket: OBJECT_STORE_BUCKET_NAME, Key: key }).promise(); -} - -/** - * Upload a file to S3. - * - * Note: Assigns the `authenticated-read` permission. - * - * @export - * @param {MediaBase64} media an object containing information about a single piece of media - * @param {Metadata} [metadata={}] A metadata object to store additional information with the file - * @returns {Promise} the response from S3 or null if required parameters are null - */ -export async function uploadFileToS3(media: MediaBase64, metadata: Metadata = {}): Promise { - if (!media) { - return null; - } - - const key = `${uuidv4()}-${media.mediaName}`; - - return S3.upload({ - Bucket: OBJECT_STORE_BUCKET_NAME, - Body: media.mediaBuffer, - ContentType: media.contentType, - Key: key, - ACL: S3ACLRole.AUTH_READ, - Metadata: metadata - }).promise(); -} - -/** - * Get an s3 signed url. - * - * @param {string} key S3 object key - * @returns {Promise} the response from S3 or null if required parameters are null - */ -export async function getS3SignedURL(key: string): Promise { - if (!key) { - return null; - } - - return S3.getSignedUrl('getObject', { - Bucket: OBJECT_STORE_BUCKET_NAME, - Key: key, - Expires: 300000 // 5 minutes - }); -} - -// Regex matches a Data URL base64 encoded string, and has matching groups for the content type and raw encoded string -const base64DataURLRegex = new RegExp(/^data:(\w+\/\w+);base64,(.*)/); - -/** - * Takes a Data URL base64 encoded string, and parses out the contentType (`image/jpeg`, `file/png`, etc) and the - * base64 contentString. - * - * @export - * @param {string} base64String - * @return {{ contenType: string; contentString: string }} returns an object with the Data URL encoded strings - * contentType and contentString, or null if string is invalid or encoded incorrectly. - */ -export function parseBase64DataURLString(base64String: string): { contentType: string; contentString: string } { - if (!base64String) { - return null; - } - - const matches = base64String.match(base64DataURLRegex); - - if (!matches || matches.length !== 3) { - return null; - } - - return { contentType: matches[1], contentString: matches[2] }; -} diff --git a/api-mobile/src/utils/logger.ts b/api-mobile/src/utils/logger.ts deleted file mode 100644 index 9dea7c9e6..000000000 --- a/api-mobile/src/utils/logger.ts +++ /dev/null @@ -1,83 +0,0 @@ -'use strict'; - -import winston from 'winston'; - -/** - * Logger input. - * - * @export - * @interface ILoggerMessage - * @extends {winston.Logform.TransformableInfo} - */ -export interface ILoggerMessage extends winston.Logform.TransformableInfo { - timestamp?: string; // Optionally overwrite the default timestamp - label: string; // Add a label to this message (generally the name of the parent function) - error?: Error; // An optional error to display -} - -/** - * Get or create a logger for the given logLabel. - * - * Centralized logger that uses Winston 3.x. - * - * Initializing the logger: - * - * import { getLogger } from './logger'; - * const defaultLog = getLogger('class-or-file-name'); - * - * Usage: - * - * log.info({ label: 'functionName', message: 'Some info!' }) - * - * log.error({ label: 'functionName', message: 'An error!:', error }) - * - * log.debug({ label: 'functionName', message: 'A debug message!:', debugInfo1, debugInfo2 }) - * - * ...etc - * - * Example Output: - * - * [15-09-2019 14:44:30] [info] (class-or-file-name): functionName - Some info! - * - * [02-12-2019 14:45:02] [error] (class-or-file-name): functionName - An error! - * { - * error: 404 Not Found - * } - * - * [02-12-2019 14:46:15] [error] (class-or-file-name): functionName - A debug message! - * { - * debugInfo1: 'someDebugInfo1' - * } - * { - * debugInfo2: 'someDebugInfo2' - * } - * - * ...etc - * - * Valid `LOG_LEVEL` values (from least logging to most logging) (default: info): - * error, warn, info, debug - * - * @param {string} logLabel common label for the instance of the logger. - * @returns - */ -export const getLogger = function (logLabel: string) { - return winston.loggers.get(logLabel || 'default', { - transports: [ - new winston.transports.Console({ - level: process.env.LOG_LEVEL || 'info', - format: winston.format.combine( - winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), - winston.format.errors({ stack: true }), - winston.format.colorize(), - winston.format.printf(({ timestamp, level, label, message, error, ...other }: ILoggerMessage) => { - const optionalLabel = (label && ` ${label} -`) || ''; - const optionalError = (error && `\n${error}`) || ''; - const optionalOther = - (other && Object.keys(other).length && `\n${JSON.stringify(other, undefined, 2)}`) || ''; - return `[${timestamp}] (${level}) (${logLabel}):${optionalLabel} ${message} ${optionalError} ${optionalOther}`; - }) - ) - }) - ] - }); -}; diff --git a/api-mobile/src/utils/utils.ts b/api-mobile/src/utils/utils.ts deleted file mode 100644 index ade8bc770..000000000 --- a/api-mobile/src/utils/utils.ts +++ /dev/null @@ -1,79 +0,0 @@ -import cache from 'memory-cache'; - -/** - * Wraps a function in a debounce function, which prevents it from being called until a delay period has elapsed. - * Repeated calls within the delay period will reset the delay. - * - * @param {number} delay delay in milliseconds between calls that must elapse before the function will be executed - * @param {(...args: any) => any} fn function to debounce - * @returns {(...args: any) => any} - */ -export const debounced = function (delay: number, fn: (...args: any) => any): (...args: any) => any { - let timerId: NodeJS.Timeout; - - return (...args) => { - if (timerId) { - clearTimeout(timerId); - } - - timerId = setTimeout(() => { - fn(...args); - timerId = null; - }, delay); - }; -}; - -/** - * Wraps a function in a throttle function, which prevents it from being called again until a delay period has - * elapsed. Repeated calls within the delay period will be ignored. - * - * @param {number} delay delay in milliseconds between calls that must elapse before the function will be executed again - * @param {(...args: any) => any} fn function to throttle - * @returns {(...args: any) => any} - */ -export const throttled = function (delay: number, fn: (...args: any) => any): (...args: any) => any { - let lastCall = 0; - - return (...args) => { - const now = new Date().getTime(); - - if (now - lastCall < delay) { - return; - } - - lastCall = now; - - return fn(...args); - }; -}; - -/** - * Wraps a function in a cache function. If the cache is unset or has expired, the original function will be called and - * the response will be stored in the cache for use in subsequent calls. Repeated calls within the expiration period - * will return the last cached value. - * - * @param {string} key key to store the cached value against - * @param {number} expiration time to maintain the cache, in milliseconds - * @param {((...args: any) => any | Promise)} fn function to cache - * @returns {(...args: any) => Promise} original function wrapped in an async function that provides caching - */ -export const cached = function ( - key: string, - expiration: number, - fn: (...args: any) => any | Promise -): (...args: any) => Promise { - return async (...args) => { - // Get a cached copy, if available - const cachedResult = cache.get(key); - - // Set the result using the non-null cached copy, or else fetch a new copy - const result = cachedResult || (await fn(...args)); - - // If the cached copy was null, then set the cache - if (!cachedResult) { - cache.put(key, result, expiration); - } - - return result; - }; -}; diff --git a/api-mobile/test/activity-with-files.json b/api-mobile/test/activity-with-files.json deleted file mode 100644 index 75ef7281c..000000000 --- a/api-mobile/test/activity-with-files.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "activity_type": "observation", - "activity_subtype": "plant", - "date": "2020-08-30", - "geometry": [ - { - "type": "Feature", - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [ - -126.6, - 49.3 - ], - [ - -125.6, - 48.3 - ], - [ - -125.6, - 49.3 - ], - [ - -126.6, - 49.3 - ] - ] - ] - }, - "properties": {} - } - ], - "locationAndGeometry": { - "anchorPointY": 48.3, - "anchorPointX": -125.6, - "area": 0, - }, - "activity_type_data": { - "pokiness": 17 - }, - "activity_subtype_data": { - "density": "hard", - "colour": "green" - }, - "media": [ - { - "file_name": "BunnyPNG.png", - "encoded_file": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAJwCAYAAAB/H5PZAACAAElEQVR42uy9CYhkaZX3/TIMItKIiAzDICIiIiIyyCDDICKDiIjIICIiMoiI+InfTOunbdm2vVV3V1dVV9deWXtWVu57Ru77HrnvkZGRkZEZkZGx7/ty497n/t9znhvZXeM3M7zzvu/MWN33wOHeWLJyqSee3/M/zznn+R//wzTTTDPNNNNMM80000wzzTTT2AD8Gfmfk3+A/INP+Aeqz/+Z+VcyzTTTTDPNtD9tmP95Fd7PkH+U/C/I/7J6/Wj1+Q+aYDfNNNNMM820P21V/kwV3p8i/wJQ+RKg/p1xrfw1PffpKuCfqSp2E+qmmWaaaaaZ9iemyj9C/gnyvwG0b0Ir/SMqxV8INf8rVHK/oMc/glb+lgH30ier7zehbppppplmmml/Iqr8Q+Qfq6pyUuPaD6Fkz4h8/KrIRupFLtQqsuF6UYzfhJo+AyXzfaD4t+Qfr37tn5t/TdNMM80000z77wM5q/IPk/8V+efIv0ow/7Eo58+L9EmrnnRP6QnPpp7y2JHxbuq5wIwohuuhxF+AlvoOkPt8VaWbQDfNNNNMM820/waYf+AJkH+W/Mvk34WoPCuKmet6zD2kR/a29YjNR57QE/spPe1O6LkTr14IWoUSf4BK8udQs6Tmc39RXRiYYXfT/tXB9mfm4DDNNNNM+09T5R+tJrf9LSnyf0Cl/AuhFM+LfLxeix3N6KEtlx5ci+mB1YIe2VT1+J6qp44UAnpKL4UduhLvhEg+DzX/NaDwV9Wwuzlnm/b/G2wf+KN6xyf9yedM8Jtmmmmm/cdU+eleOavyv4dW+bEoZF4R2Widng6QKt9f1/0bHt27lNK91pLuX1L16JbQ43boqQMV2eOcXvAf6eXYANTUi1Az3wBKnzD30U371wbbM9X9mI9Wrx+uPvdM9f4jTzz/oT9udGDC3TTTTDPt35xfP1wtN+O98m9AVH4u8onLWuy4Wwu5VjUfqfLj5ZB+bM3o7hlF984JPbQKPbYDPWEHUgcCGU9BL/qPUI6aQDft31XmNCCyHzMGR/kz5J8m/5ThMjT0OaMmUvpnq9mYH6/WS37kj5sdmHA3zTTTzLn1nQx2nic/U81g/y6EckYUUg/0iGtC9a07KofzMc01ndMPJxX9cFw1YL4GPWqDHt8Fkg5S6E5Vz5FCL4dcuhrrhkifMUPupv07q8fix6EkPodK/EtQk1+GmvsK+d9DK3wTWu670PI/gKb8UA5IqLQyxFeMekkJ+09UV59Pwt1sU2iaaaa9H+fVJ+vKWfj8tawrr5R/KpTc6yKXaNYih1bNs3JU2R9PVOwDJeEYVIVzWOhHU9CDy9Ajm6TOt8kJ6ok96JlDVS/4UrpClK+kGyFSz0LNftlMinv/gvvP/pV98dO98Y9Ida4kvwA19lUo8X+g+x/SwPkZRPaMUOLnRDl6WZQTV4WSPg+RewGV/LPQSj8xAA9aKeJLVfX+iX9FuX/AVO6mmWba+1SVf5/U9BmRiddocV+fGnSsV44Wver+WEq19ZY0m0UIxwD0owngxEpAX4VU6JEtCAZ6ck8Q0Et63hfTlcgytOQdaNkfkzr/YnWL9APmX//9p8I/9K/shVc9Q4MiWQV6+muk0n9EUD8jynECeKJZV+Ijej4wo2f9c3Sd0IvhPlGKtYpy7B4B/iJE8TmgwnD/jkz2MODONZKfrCr3jz7RqtBU7aaZZtp7dZ59pjrnfQFQv45K6SeilD9XSQZa1eDeXOV4zVlxzUcqe2O5yu6AwjDXHYPQDyegu6ehe+cB3zIQIoUe3YEeZ6A7VD3r5oQ4n16JjAmVRBWK3wOUz1XncHP//H22WvxYFa6koJUvGM6hcrlfXt0rz9JrmS/Ryu9bEJlnhZa+qSvRPhpEm3re7yGQh/ScL6JnvQE94/HomWMnssfbesY7pxcCfbQYqBOVzFWohRcgyr8guP8jfY9vG80S8MXqavU0LP8hE+6mmWbae2iuPQ2xf1IKGo1UuZI/o2Vj99SYe0w9XrepB3OByt5oprzTp5Q3LULZ6YGwkzI/nCSYz0oXx/PQ/aTOwztAYh9IOWlaPlZpDk7p5YhTV1Odcv8c+W8YuU5yAWEC/X2yWqw2L6CVnFr6KrTCPxh74fkfQit+H6DHKH9DRflrdP268bjwEyHy56Cl26HEVnlViNxJBjlfQeR9JZE7Kenp4xzSRxmkjmJ6+tDHcNdzJ+vIh2b0QsQiivF6UU7fFGrhLMH9V9AqPyLAf8uou5R77h+vLjLMk4NMM820p32ePRVNn5G5RZryQ1HKvq6lQ81q6GBOcS24SvbhWNk+UlBsA0p5q0eUNrpRsfVBHJAyP5qBIJhrR3NQ3QvQfGsQYRuQdEFPu0GiSdELwZiuxG1C7p9nfwVVAv0z1UWEuYf+Hh5kf/4vV4uVL6Jc+DbKyV+IUuKsKCcuoxy/LiqpS0JNvy73w2XIPP8c39NzF2nQtOqVpBXlyJGe96WQPVHIBalzQeqcnFaMaXaPQgOuQI8zyHpjSB/7yJ26bFPot+rZwJDIR5tRTN4USu4ViMpP6Wf6TjWh7gvV1exfPFEKZ6p200wz7WlS5acd34wQO81xopw9r8a8FsW7vVo+mPeWt/pSpMpLBHOh7g6iskMw3+qCau+H5hqHOJyB6ppExTkOxTUH7WSVFPouKXQGugc6zb96MRTTKwmb0DKtcs7Wit9DpfA31Sz3D5uHtLx3Yf7EalGl1WLxB1AzL0BJ1RLUh3QlYdVL0UW9HJrTS5EJ8iG9ELboxUi3Xo5b9HJsjFaD6zLMnvUlCNYKMm5Bihx68oAGGF0zx+Qe4z51KOh5VU+6FCQOSnrMkdEjewk97gzRax5S8DaC/iIY7qVELdTyeQj1V/IAAuDrTyTTfdw879c000x7CkD+ZOLbace370FVnhO5eI0a8QyVXEv20u5ISNm25JSNTrWybRGVnV6o5MpGBwG9A6rNAnW3H8reEMr2QZR3Bwjqk9COlyBCW6C51JhjGeiFcIbm7iO9kpoQpfQdFNO/pjn9O1DyX6huZZqla+9BmFcTMpTPQyt/k1ZyPxdK8qJeiHbq2fCqngsf6cVYSC/FInoxHCJoB0hpe0XSdUQAdukJuqbdXj3ji9DzGT0lFbgBcwPeQNoNZE54kEFwOIghH9+DHqUVZXRX6JFtVQ9vKXp4u6RHdwr0fEqPOyKI2Y/0xMEm0idTKETaUU7XQC29ACF+Jj8MRjLdF5847/fDJthNM820PzGYP9mH3ShHE2WpykUm3KoF9+YU54yruNGTqKx3ltTtbqHt9Ahtt4cATr5dVeek0pXtHvA+urI3jMr+qAFzzwKEf90AepTrzznkfiKQCZT0XCSm5sIOLRuZ0LLhByKf+DUJpK9X50zzkJb3IMxpkFX+Wp6Zq6Z/LcrxGlLjA3o2tC0SnoAWP8pocXdJJI/JvSU97SnpSXeBgJvTwzsZEdrIacHNghbeLWkxUt0pj9DTXt7DMTx9LMNAnKyhx9lpwMV2jWzMCA3AMDkPxOAGDUouvdgUCG+qCG+VENrMcX9iBNa9iOzakfJYkQ1ZRClVK5T8RfpQ/LqaSPfN6l77p59IojPBbppppv13w/zJM8u/JEt21aJU5XrSNyQC9s3K/rS3vN6VKq20KJWNDqERxNlF9aoSwNVdUup7A9AcI1D3x6AdTkNzz0F4SZkHGeR2Y35NcjTURx4ksAdVLREslOO+CLmjkgqMqbnoVRmB5TnfiMqaYff3CMw/aMCPYV74BwlzJV6r58NTetbv0BOeiBZzFSoRp6qEHEIJ7ZHvi0p4X6jRA1WLOlU1tKuqwU1VPVlWy0cLKB1aUT5eRyXkAC0EaHB5IHiAxUiNhzchAgRs7yL0k1NfgO6ZBWS25pyRsXlE9555HqhCnKyo+smyonutBXpvSg9tBGhB4NQSh6t66ngCtLoV5cx1COUF+qD8pAr2L5mK3TTTTPsTmWNPD1X5O2jaDzkvSKSC8kAV4dt0as7pSGWrJ1dZayWYtwuVlfhWJ7StDmikzDV+TFexNyiT4cTRDM2T89B9S1IE6WFuJEMgT3kABnk2QB6GlgqiEj9BKexWi4GDQjHgDClR76aWiTSiUvgZzft/W50jTaC/R1aNH5NJGVrxO1CSz6MYq9fzwWVS1x6ROEqokf2SGrKrZb9NlE+2UTzZQMmzirJ3A0rADgK7dDW0hwoNLMWzhPLBHAr708g5ZlA8XIRysgk1aIMIsW8T0EmFM8Td0zQwp+k6Q9dJGqjDEK4xI3NTAt1qlGHwgPWtAaENIUPywbUSQT2jR20xPbLr02NOhx53LeopX5/IJ2qFWnoFED+tlr797R+VvZlgN8000/4r5tcna8s//27iW+aynjyx6Cdb6+Jw3qvuDWXU7S5F3WgT5NB2OiXMK3TPSXCqrY8Uei/BnJT54ZQhenwrRmQztguRcJBoOk2C80PPRyByEVSSfgL5EQq+fWSPd5H32tRyYC+lRo+cejrcjXL2VzJXyshBMrPdn/IB94HqqvEzsixMzT4nSvE6GhBWWuV5CeYZNeJUKkECuXcNRc8a8keryLuWUDiwouhapOfWUfLboAQJ5hGCesRJUN9BxbtOYF8mpb6AgnOe3k+q3U2LAFoQVIK70MIOiIidw+oEbFLrfhqcpNpBal12OwoRwCO75DbZk1hwX2IOJXGiBw/e2J5AYFWlr1H4mEDhX0npgbWQPDow6ljV08cD3O8Yauksgf1nT4D9s6ZiN8000/6LxNJpiP2LskJHlH9Fc2yNHveMiJM1u7Y/GdK2e3IEcbWy1iIq661gZa7tGPvlcs+c72390Hb7CehD0F1TwDF3hFs3tiyTTqM8LXtiqPJcGIKUuZoMoBA8JJDbkDncIt9E7nhHlAKOXCXmOdIzoQGa888Q0L9W/RnNxLinPAz0TPU/8ssyAa4Uu6fnAjMEwyMRP8hokX2lwuF1/xap7CXk9ueR3psln0PWYUXeSU5Qz7vXUfRuoXSyg7LfjhKp9rJ/F2XfNsqeFRQJ6Nm9aWTsU/R1s8gfLMrFgRLYoQXAPg1Kp7GvTi6iO4BcddqN8DxdBe+1s0d2jAVAqLrXfrIE3UsD+9gqxOGEqrvGS8I9m6GVa4RUvEuP7C3rGVLsDHZRehHgsjdZz/6l6gExZsmbaaaZ9p8F849VQ+xfpnnnByQuXhT5eK0ed0+J4xWn2B+PCVtPQdtoV9X1NkhnmO/2yv1ybaf73SS4bXps74fuHJVRSxDMwXMlwzx7TBAnVZ4NShccYo95UQwcSJAn95bIF5F2riLn3hIlv71QiRx59UxwDEruRZmYZ8yHz5jz39MdCjJC7VC+CyVxEbmTEVLmTj1xlJAwD9uFErChxOqcgJ51zCC5M4nk1hgSOxME9hl6bl4COn+wTHBfkV7g+0NS8qTei+4VlBj6+7QQsI0jszWC9PYYwX2a3rdI//YWyoFdVEixawR2QQCXAzW6a2S/R7aNZDmpzu1yIOsnKwxx2SFJHE7T/QIEgV24p4VwEdiPZkuk1jN6kBS7f9WpR+wE9hOLKCTvENh5j/1H1f7xp1nxf/VHHejMQW2aaab9n8L83XPLS+lzejbSrkUOFjX30pFmH05oW10lsdWhattdEARvCXFS4QxuLk+rbFvIOdxOgN8nkPMWpHtRJgyDI5ccYueKIQlzP5DyQ0ucoBLxoHDiQPpgA0n7ApK2OaR255HZX0HucFOUfLslNXIQ0NKBGf65aD78h+qWpNkG9ikedB8y1Ln69xDFZ0Ux3Iq01yYSrhhBtaQFd0TFz3vlDGorcg4G8iQSm6NIrA8jtjpo+NowEhujEvIpej1NoGYVntufI18gFV+F/cES3S/Qc7ME86rTgiCzR+p932q873AF5ZNNaL4NqN5luq5C8D4Rq3AP76cvEMyXDaCTOufEEM0xCM05JpPndN8yBIP+aFrAPa3Cu6AQ7HPieDmm+zeP9PDuqp70DIgSg119UTaq0eThMF99olHNx8y+8aaZZtr/ZtTztL7883Kbj0PsnMUed48I/45DdU6F1M2unLrapGhrjULbbIVu6ybvNTLY7UPkA8ae+d4IzXGTEuTaEQmWY54Tl2VbVz1xIKuG9DQBPeWFFj+GEnYbICdVnthbRnzHitjmDPkUCbAZeo7mcdcqSsc7pUpoP6KlvMuimLpKc+APqj+vWbr2FA+8jxhtVLXvCoVWj7nAhJ5ye0VsP6eFtlSGKSe3FQ4IuPYpUuakykldx9cGEVkdQGSpH5EFCyKLvYgu9yO+OoT4+ggBfxzpXQY1LQDsvAjgr51AansSqS26srKXrxthewZ6xj5Hz80hs2uAvuC0ony4hAqtRitHc7IsQ2Z1Erg15wRUvromq1meMzKpTnWOy+cFJ4zI52kBcDgtdNckKfYZBb5lDsWHyJ16lEd2vJtWp/dEOXmewP4s/S2+X61l/0J1G8I8EMY000z7XxVIpzCvJr9p35QladnwAz16MKW6l5yqYzRW2WgvqMuPVHKhrTdAbDZD3+mA2O40Qux7g6jsDdN1CMI1ZZSkHc1Do7lYIzEjgkZukYjuQ4u6oMZcKAf3kffakXFtIWVfRnRrFpG1SYRXxxBeGkZkeYjE1zDiNDfzvFs8XFYqgd2YSB6vk7ipgVb5R6MmXs55JtCf0pDQX8ryCdnUIHFPz5ys68mjmBbbI3W+KSq0Giy5SGXbJ2WYPL7aT+AmeC/1EsQtCJNHrD0IzXUhNN8t4R4luMdXBpHcGJPgThG40/YZqdxT2+NISXU/hCQp/OQ63W+MI7k9jbRU6UvI7i0Q1Kcl2FnNK551qMcrUHlAH0zRAJ8kkNMgd44aqpzD7e55CFbr7jmo+8ME/rF3s+MZ7Acj0F2jQifFrnvmCuQp3bsY0EM2hxY/WtZjh2Mi4683atnfAftXnjjtzVTspplm2r81lz6ZyV5tFoNv0bz6rMhEarWQbYaA7FJt/YnKalOpslgr1MWH0JbroK7UQaySbzRA22qVQOeQO3d/k33a96vChcPs3J89sCWrhNTgLirBPSgE8lLAgaxnG+n9VVLhpMjXpwjiQwgtDiC4OCivoYU+EmB9JLgGSThNskhTlJPNhIgdbotS4h5vCVS3H02gP6Xq/BkjCYIz23Mv6sWIRU97XXriMCOieyopdFS8yyg6Z5CzjSC5SvBe6CBwdyJs7ap6t+HzXVU37mNz3YjR4EkQ2BOk2FPbE0Yonp0gL5X+Jil5GlwM/8QqLwBG6T0EfxLOWYY778s7OIueFhXH61COjWiB7ILEdZcEbO5fLPfOjxflClZ4eA/dqMvk0JSsz2Sgs/PRgqzcXeOk2EdUUvUF3WtN6f6ViB7Y8Oq+1W094ZkQ+VijqOQvGWDXvi+3I95V7E+C3YS6aaaZMD9V5R9995Q0xWgWk0880Hw2q+ac8qg7vanKerOizN8XytwdMNDVxQeoLD2AtlILbb0e2ma7DLlze9fKRpfcP1f3WKCQkOFWroFNaKFd2deDK4rKgT0UTmzIHm0i6ViR4fXoxjTCy8MI0fwbJnHFIA/P9yI434PwAoktmmtTtgkUnHOK4t1IiMjBtij8C6B/zAT60zcQT5Phvgit9GMuodBSx1YRc4a0KKnz8I6oBDYIosv8H48MAZiBHpprgX+qAf7JBvgmmxCYaUdwtpOe75SgD9F9cKaVnmuj+y5Erb2ILQ8gvjaE1AYtCjbp3yGFzio9yY83DKgn1gYk1BP8vnXeiyfos5on+Bsh+HnkHAvIHy6h7F5GhRS7OOG99ap7GejGaUMS9p5F6N4lI2mOAX9EMHcO0WqXPhx01Q8GCewjhmL3zivimFS7eyZB7/fSYsamx47mRDLQKveWVOW5ave5r1cH/CerH94PmWrdNNPe16LotCTt43LRr6pfQ4Xn0+zrIhlq1nxb1opt0KttdGXUlQZFXXhAML+FsvQ7KM7fQYWgrq09JqA3Qd3qkDBXNrmlK8HcMU7qfJrmM5rLCOaCYK4SzLnfRznoIJjvSpizMk/uLiCxPYcYAT2yNobwSlWhW/tobiagz7H46pER1jTN54ZCJ6DHjkihp+4BJtCf5lXlB6uhoa9AzT8nMoFWPXpgE+GdlBrcUFX/GpSTFXC3t/z+DAGdw+0WWum1IjBRD+9QLdwDD+AefITjkXqcTDTDP02vTfHrjYaPNSA02YrIHIF9yYK4VOwDRrh9YxjJNVoprhoeX6KVo3wP+XK/fF+c37s6IBV+gsP3Wwz3GeS5lv2QoO5Zgepbg8Y9i30EeM88VFLsmpsVvNVoVCOVOanyg1Ej7H4wTlBnsA+wUifnkP2E0I/GSbFPKnTN6a4JAvucTz9esenR/SnurSwqOQJ78dfVxJGvVjNX/8I8R9g00963MD9NfPuMLEnTtO+hnH9WzSWuakm/RfWurys7/d7KcmOmsvyIlPkdgvlNKDPXUZi6iuIMQd16l4D+EJWVelTWmlDZ7ISy04cyueqclNuMqnsRqncVqn8TlYDR60MhmHOYPc/q3LWO9N4ykjYG+rzcNw+SQmeQ+2e6cDLZTt4qPTjThthiDwF9HMUDq1KRIfcq0E2F/lQD/Zmq0vymUHKv62nfiIjaj3T/Wq5CQr1CQCwfWek/fV52eUvbxqSKji6QCp9pxsnwI7j77+HIcpv8DjwE95PRx/BPNBDMyek+QND3D5OPPEZoqglhUu0RUvHx5T5S+8YeempjFGlW7Jwhz5AngLMnVvqrkO+VAzC60C1Bn5Lh+0lZA5/bt6LAe+wuK/ksKs4JlPdGoDhGoB1MQrgm5H47AZrU+Qgp82Hjnl9zDMtuS/r+iFTsYs8C3dFPjwdU7HYrsHcX6D4hjia9un+TFLtrRiSPm1HOXqS/2S+qNZtfqK7MzWMHTTPt/QXz04NVjK5vlcLPSJWfE9l4fTngmlAOl+zKdm+ovPAoV5mtUcoz10Vp6grK0+xXJdBLczVQrPcJ6vegLDyCstosD1qpOEZpPpuUZ5pXyNWjJagnBHTeN+cunKF9lPx25NzbSO2vIE4Q5zB7bGOWrjMILY/Bb+2Hf7Ybvul2eMebSHQ9gnekDoHJRsRoDueIa9G1oFR8p3vo/0Khm3voT+mA5JXld4Sau6ynvTMiuhvQ/asl1TMvFNcUio4J5GwE3C2Gbx9iS90Iz7UhONsC/xir9IfwEsi9gw9wTO5jeDPI6TX24CgNIB5Ew3UIEtSDBPogDajQTCtB2oIEAVpCfWtc7qvz/nqGPFvdZ09zyJ3VeRXwrNp5IRDnTM1VVvicVDeCDL0vuz2K/PYAijsDKO0OQSGwV5xTMolO47K2/WFojl4CeT/5IMF7yDjoYKMF6kYz1LV6CM423WqFvtUq9K1moW83K/p2S0HYe1LiYNQnvAs2PbQ7IfKRWgjlefrbfU8mFBo17GYI3jTT3vtC6APVEPsnZe9zuVeePyNSoQdq+Gik7LVtFreHvaXFhkRh+nYpP3pZLYxcEMXRiyhNXJIwr8zeRGn2Fooccp+7TTCvhcqd4QjmKokSjSt6PARyzhfyLkP4N6CF7SAlDTXiQjmwj/zRFlK2eYL4FCKr43LP3D/bg5OpThxPtME90oTDwTq4Bmpx0PcQrt57UnSx4IotdtGcOcqNvmTIXY0ebHOljwn0px/oHDb+vihnbmpJ96IW2gmJwJqi+VZIoc+jRIMrvzNIEOVEtxYEpurhG38M3wRdxx7jeOA+PL2kzvvuENjvITD4EH4GOz3vH3qAICl03wA/Zyj1AEN9lEBPsA8T1KPWHgPSMpxOUN+ekJ7hzHh6nNoek3vtho/LPXip0BnkHI4npc9hfFbxDPzUWj/SG4MEdhqsu+Ok1CdROZiRe1CyVp1UuGbnpg103e2D4Ot6M7SVx3IfS114AG35EcRyHfTVxwT4eqGvPRb6+mNF32go6LaehHCOe/ST1VU95WsXSvF89QCYr/1RK1mz45xppr23QP5k4tun5LZbpfQjuVeeCbdWTrYXy/vzR7n1/lhu5kEuO3JZSfefE2nLq8gNniOYX5ahdpVgXp5hoN8mZf6A5p064+AV+4Asx1UPpqG6aM46nDXOMw9uQUQc0CIHUEiZF707SDuWCOQTCC8NIrQwgCC5j2B+PNKIw/5agvd9OC134ey8gf32a9hrvULXqziy1OCERFbE2k7z6SAKjhlFOV5JCAl0U6E/7UD/yDtAL6VrtLhrUQtshNTjJUX1Lgt5sAoNrIKdQ+IEzcUOBGeaaIVXDz9DfeQRjvvuwt1zk/wGjntv4aT3Nrx9t+Gjq7+fnEB/TIPIw959C17LHQL8A1LstQiNNyA01YzoXLsMqbMKl7DeHHvXOet9/RTidL82IhPm+DErdanaWeXzooDL5Ng5W361H9mNYRRsYyjZp6A46UPCYXbniIS6utMlDzrQtrpJmdPKeKVB7mFpK/ThWriHytwtVOZr6P4uNOsdaIt3CfC1Ql99pOg7bRl9fzCgexa29dhRnyjmrlfL3LiV7N/80XGtZja8aaa9N1T56cEqn5UwF+KnIp+6pCV93eqJbb2wNeDLLbZl0pMPSsmBi2rKchbJ7heR7nkJZYI5q3KV989nr5PXGIlw600Qm+0kLPiwlWGojlGo+xNGVNEzD82/RkC3ySS4ss+OvHsL6b1FWUfO/T+Cs93wT3XAO9YC92A9DnvuGQBvfgu7Dedgk/4mdhvPw9F6CQfdN2UkNTTbRHNoHwp7E0rFvZQQkX2zbO09otA55P5dUclc1ZMeqwhtBNSj2VLFNS2UAw65jyNrG0Zmk8C5xBnszQiM18vQOg8MDwPdcgPu7muk1AnqFgb7DQL7Teleyy3jue7r8HRcJb8CT9d1es9dub8eon8rPNmI8HQTYtYOxBd6JKAl3CWYB96BdqIK7RTvvXM2PKnzxJJF7q3HFrqM/XaGO+/Brxivpeg+Q2DP2SbodyG1zkkmjmGjLIRPMNrsgLLWTDBvgLJcT3BvhsqZpsu1kJmoU1dQnHybVtTXCOr3IVYfCbHZqOo77aTWuyP64bRdDzsmRD5aC4jnSa3/EFC/UT385XPV/fWPmKcXmWbaU6/KP2nAjnNnxM94Ia+GDwbU443t8s5wKDv7IJcavaXELG+KaPsLBPOXJNCzfa+jNH1dOoO8PHcbFSuxc+WR3O7TqzXnlb1BqHbO/Zk2knq5gofUuRbcheK3oejZRta5iqRtFlESNdGlAUTmLQT0NniG6nBIivyg4zr2Wgjmj9/A9sOXsf3oFezUv05APwd7E0G9/TLc/XcQnG5Aer1XAr3kWaoq9OQdUug/MoH+9A7Wd5Pi1Pw5PX0ypkf2vLQqLKnE9oprCqW9UWRJnSdXCJgLrQReUudD9wjeN3HYfYX8GtxdV+DufAvujosE60sE78sE8ms4sVyFt+cKvPT4uPNt8svwdV2Fj77mpIfUfE8NAv0E9uGHCI89QnSqkbwJ0ZkWROfb6Pt1SygnFul7L3aSM7S76Wfpl7A3wu38OvlCJ2LzpPStnUb4neHO99VFQooWA7mtMRQcsyi7rNAOZ2TjGdUxAnV3iHwAKql1Zb0ZpaUmlJcI8Et1BPF78oNYnKIV9swNQ7Ev3Ye+RmBfe1QSGw0pfW/AS2p9XU/5LUIr1Qi18AoqxX+C9k79+ueryTPPnJ7qZo5A00x7KlT5HyW+lX4MpfCiKKQfqMGDGWVv0lne6o9l5x6VEgNvqaH2lxBu+T0SXS8i0/8GcoPnkRt+C9nxt1GYIXVOIC/N3YWycB8qb+lxZziHocwr+zQfuWYJ5HxE9DaEbwuV4w2U3SvyrAvu7JbYnkBsbRThxX6E5zsJzB3wjBLM++/TXFwDZ/tVAvol7BG89xoY4hckyFmp79a/Rq/RHD1wG5G5FqS3+lHcn6yG3F2bKGXvVM+2MDvFPaUD9kPVwfpVTvDSc2GLFnO6tMBGruJZIoU+jTIBPbdFane1i1RwC6npOlLWd+HrvwVv73VyUuN9rMRZedNg6byAY4L6CT0+IZgz1E8Y7j0EcnI/qXV/D30NKXYf3/fVyNB8cPAewiO1iBDYI+N1iEzVI0qqPT7XijiBOr7AmfE9BPNeA+akwJOcKc9wZwW/1COBH6NBHrPy4qNDQj7JCwB6PrnYjTSp9dzOOPK7pNbt4yjbR1HeHaHrCCr2EdmVSdi4mUMHQb0BxfmH9MG7R0r9Lq2o70qFri7ehVh+CLFCan3prhArtYq+1ZrTdzpD+sGEQ486rXo2PCCy4XpRTF6UYDcOPPib6uLpL8wwvGmmPRUw/8g7TWKgfUeU87/W0tGbatzXrYQOFst7057ScmuiMFtbSg1fFmGCeaD5DGIdf0DScha5sUsoTFxFfuKKVOXK0iMoXJ5G8wdHAcVul9wC5B7t3KZaNsXyEcxDO9ACDPM1lA75MKs5ZLjLJgmS2Aqr8h4EpttxMtYAD4Hc2XUDjo6rco98v/1tw9suS3e0vS0VO0Pd3nwBrq5r8NEcG1tsp3l9ECXnjNFYJna0Kcom0J/2gfvBKmD+FhDPEoCa1dihXfOtZpTDWVVxjkvY5bf7CIaskttJQdcjMFiDk16CNAGdwR4cukOQJx+4RX5DXoP0nsAQwZquwQFyep+fwB8g9/fQoCJ17yfAB0npB/vpdQJ7cPgeQsP3CewPCOy1iE4+pu/XgBgp9sRsm4R0cqlHQvwU5OlVVuv0eLlXQl6G4Xk/nhU9LwJI5Sc5jM+Qn++QCj+z2ov8Rh+Km70oSbeguNaO4kozyuutqKy30weuHcpyI62o79KK+g7K81wrep/U+QMZKtM3GqFzRvziPUGAV+m+pG+1pOTeun/DpQd3N/Xo0Qj3b4YqT3X7IdR3us2dNqUxz2A3zbQ/PZh/sPr5/LTR+ln7R6HkXtSSwcayzz5Tci3ZC7ujvoK1IZOdrFHSI1dFrOcNBEmZR9oJ5j2vINX3GnKT11CYvilhrq7zVl4LqXKuommDvtsDmisgXOME80nonADnWYRG6lwjkFfcqygdraLoWkKWYJ7cGpdnZHCLbf9EM7zDdXD33iFFfplg/SYp8Nex0/CGEVZvJYXewiC/bMC8+aKE+UHnVRwP3EWQ5lSeH3PbQygdvAt0lJMm0J/ywXvaKe5v5J5QIVUnEu5tLbiT0rwrqnI4A2V/HAXbELKbrIx7JNQjpNJDw3cl2IN0lS6hXoPQ4C2E6RoeNl4LjT6g996j1zm0bgA7yNnvpMgDBPFA7y0J9JBU6Xfo6+8hwj72EJGJOsR48M00E9SbCOoEdqnWu6vQtkiVnpKA73sH9EkOwy8ZKj02124ofIY5eWyW7ufa5L+T5kG91o3yRhc5qfKVFhSXGkmd16NMMC8v1xPQicdLtVAJ4txvuUKrbI1crDVAt3WBIE73BPi1OiMTfr2+JHY6MvreUEw/XnTpvq1FPR3sFGr5EtTir6ApP6iG4T/3REa8mQ1vmml/Osr8FOZ/z6cwimL6oprwd6rHttX8zoQ3u9yTyMw9LqRHb6ipoSsi2fsmYt2vItb5Einz16Q6zwxfRHbqOnIEdFbl8khUcsHHozoI5M5BAvoQqfNx2S+Ds9pVzzL5CsqkyovOReQcVlnlw903j0fr4Rl4iENLDSnwK8Y+eQOBvP512B6/Zlwl0C/AXn1+59Gr2Hl8Frv19HzjOQI6ibChhwhON5Kw6UR2Z5yAPq9UfE8CvWIC/SkewKeZ7l+AVvmJKMQfiPjRuhrcTaj+DbXiNbrEFRwz9J8/gvQGKeK1XlLFliosmwmSBNvpBoTHCNQjtwnIrMhvIkQeZKU+dFuq9eDgbQl4qeQHeTFAkCeIS6AT2MMDdxCm50K0guRrhBYCscl6xKcaJdRPPT7TJIGcnOeQejfipLwT812GEq/CPSVV+4B8nCBFnmCok8qPkcpPMMytHXJfPrncQ2rdghyp9cJmP0obFpTWO1EimJcWH8uwe2m5STZ7ULm/8kabdLHVDn2TVtm00hYbTfJABZ19lcvdaoW+/FDoK3WKvtOV0e29If1wxq4nTmb0XKRdFKLXIZTnoGnfqSbOfboaJfmwqdhNM+1PAuafkWWoovwLkY3cKQccY4WDBXt+cyiSmmksJEfvqqmRGyI1cg1xgnmi61VS5WeRsryB9MB5pAYvIDtxTcK8wAlwa42y+5u61QONT05zDKGya4Fi60eZ+2VwZrtzFoprASXHrCzZTa4PyT4dwYlGWTXElUSHXdfgbCP13fwm9kiR2xjYD1/C1sMXsVX7MrbrzsJW9wq2H72EnbqXsPv4FfLXsdf4pgzDH1pu42SkFmHOcKd5j0/OLLusVaCbjWXeS0D/vAwrldI1asS1XDnZiCnuRYVhXnbNE9Cnkd0aQmK5WyanpeSVgD7fRt4swR6ZrpfKPTz+kFQ5gXnkjlTx4SGG/E0E+m+QIr8m99Z91f10X9fb8He/jaDlKiL9t8hJqffRYoCukaF7iHLYfeKx9Bh5fIoAP9tMACegL3RVVXq3BHuS7jnsniKlLkPwp2p9mRPmugyIz/O1k67G/nqK3p9ZG6TfbQR57prEJW47A1Dog6eQalfW21Fea0N5tYXuO+iD2QpluUGGzwQDfbuDG9CQOq83gE4uVlmtk6+SYl+rU8V6fUHbbEpo+5NePWiz8fGJIhduFErhrPHhkRnxT5a6mWA3zbT/Hph/5B1lLiOW8ZsV3+5EfnfamV3piaVn6krRwRtqYui6SA5eIZifR7TjJQL6K6TKX0e67xxyo5eQm7iCwkwNStb7UJZqad4gQWDrhbY/LpPfFNsAilsW8j6UbAz0MSj70yjuzSC/O4X0FpfoDsi5LTrVDN/QA3h778HdfQvO9ktwNJ/HXhNBnTPX617FNkF988EfsEXO9zuPXiaV/jr2Wy/ioP0yXJ3XcUhf6+67Bz/nKRHQ+UyOHH2v0iEB3b+R0BOk0EumQn8vAL3aXEbj5jJX1fihtXK8HCm75pTSwYws9crbSJ2v95EKbkeUBkNstgXRudaqt8jnojON0iMzpNanHiMy8Qjh0bukzDmkfgP+3mvw912Fv/8K3ZNbLpMTzHuvkjq/gRi9L8rKnh/TeyME9qgE+x1ERu4hNl5LQH9cVeqNpLhbkeDw+Uy7DKMnF43GMjJpTibO8f76IEHbghQnxxHIk/PkpNalSpfXjqrS75ILggx9XZ5+z9L2AK2gh6HYh6Hah+jD2C8z4CtrLaisNEKlFbdYb5Eqnc8x5kx4beEexFod9PXHdH0sQ/H6Zj0p9QeqWLqrkHrP6Y7hmPCuefSAbVXPhixCK5BaL52Bxh8iCfYvPaHYzY5zppn2XwvzT1b3zH8iyrnLWsQ1UrKPO9PW1lhi8mEp3n9NhLvOIzFwGbG+84i0vYBQy2+lOs8MvIl072vIDp+XQC8tPISy2iTnDHWLk9+4tnwOFcc4ijv95IME8xGaY8ZB30POsZywm94cI+HUg+h8u+zR4R+tw3EvKfTOm3B1kEJvPU+wfg32x69i99ErsD0ghX7/DxLom6TUd0ip7xLMHa1v4aCLQN5zS2a/uxjovXfg52oimrcTNM/lWKEfLSpqYCchEu5NUU7XVA+gMoH+FAP9GQMinMWZvagl3VOqdzWgHEyXSntjtGIcRmad96o7ELe2EEzrSIHfJ39I96SY51tJoRPkCeRSodPrvPfNSj08UgX6wHUEBq6+48HBa/I5Vu6hfg7N30CEHxPwQ6Tgw+QRy3VEe1m1E9hJ6cfGHkiPjtxHZPgegf4BIoMPDR+pQ2yyidR7q9wbl5ntDPU17hzHdet9yBDgMysDUpVzxntKeg/SBPoUO31dilR8boVWzjv0QdubNLrM0epZc47TB3IcmmPY6ObETSB2+6DvWoyyE1LllQVuRHMTgpPmGPArDyC2m0i1E+TXOAxfI8RyrSJsfTn6tyJ6cNuBTGhOz0U6RSlZAyX3Am97cAlhNeT1V2Z/eNNM+y+D+afk4Sqi8lM1n7msxLwDJafVkbY2J6JDN0vRvisi1PEaQp1nEe95A7HOVxBt/S1i7X9AfvA8CsMXkLa8RmB/A/nJqyiTKtd2eqFud5MoGJTd35QDK80rpIrtpNL3JlDaM6pt8jvDMgKa2eDOl72ITjcjOPIQvgFS5T3X4Wq7iH1S43sS5GexS84qfJtV+b3fkf+eoP4CKXQCOil2Oyn4/Y4rEugH3Tfg6qmR5234hh7KPu4RmusSa33I26dROV5VtPBeTKS866KSuU4c+EG1zPYj5rzzdA7oD1VXpt8SSu6snvQMacENr3q8UCCoC4Z6bpv7p/cgscRqmAYEwVomrXEW+gzvo7eQUiaFTkBnqEelkq43Ho/fR3j4NkKcJDd4XbpMnBusQXjoVnWvnZ5nmPdfJZVuqHXpDHNS6jF6b2zoNqJ8JY8OEdT7byPcQwuCHlbypOIJ+lECfpy+J4fl41YatIukwBc7ZdlaarlHhuNlWH6ZM9+rIJfKvYOATk5KPUMqP785gsLWMF05NDaIslxJj6KyNwp1j8vbBiEco3IvTOz1S7BL5wS51XoJeHXpPtT5OxDL90m110Jfugt94Zagq8qJc/reQEr3rgX00L5TT3iW9UygT+Ri96AWXjAS5+T++ierHywT6qaZ9p8L86/IPKJc/LoS2B8p7i84MkudscggPWx/TQTaXsFJw+8QbX8JsY6XEGx8DpHW58BtXfPDF5EbuiBVen7kLRlm571yOVfY+qQoUFzzKBPQy44ZlPbZ56RzX4wCgTXH51aQ+OC5KjpZLyt+AoN3cNJXA3fXVRy0vmkAvY5U+cPnCeJnsHn3DDbu/NZwuudwu+wI13ZZtnxloLMyP7LchZeEj4/P2JhsQGiWhBlX+uzPouJdL2lhR0RLnyyikr1EQP9eNWH3w+ac83QO6g9Wu5l9DaL0vJ4NdIuI7Ujzr+XU4yVVObSisMeHpYwjQ6vI1EqPDLFHJLwfy7r08OQjuuf6cVLN47UGzKdJscswfIMBdt5XJ6iHhm4SyG/KTPgIgT4sVTopdstlhPsuE9CvSZjHh6pQJ4DH6b2xAUOtn4biw5YbCLS9jWDHZbn3Hq0CPTZRa0Cdowf0vZME9+R8K5Lcu5jBzmVvS10yDC9hzqF3WpQkZ5rkfcrahfRCNzL0vgyXuLGTas/RB6Cw0Qtlux+V7V75QeUVOPeCF/ZeeZKb7hgwylG4vnS3E2KzsbqnTip9mYFeA33xDrvQV2sVfburoB9MpfTj5RBCDifC+1YkvO2imD5XDX19uTrZmErdNNP+7857p9HJTxifM+1HIp+5RDAfIsjasyudkcTY3VKo600RbH0JgabfI9j8POIdLyLc9Fv4Hv0c0ZbnkB18E7mRS8iSZ4bfQmG6BpqtB+o+QXxvWIoAZX8KZYJ3keBdJKBLiO/NkDqfRn6X5lY+r2J9QEYVObqYmGmVQD/uuYbD9rdw0EKQbiaF3viGodBrX8LOgxekb0v/A2yPXpatXh0tb8PRegWO9qsS6kc9d+Teubv/Pjx8xgZ35qR5LrkxiAIBXfGslNSgLaQlvVah5M9Xe2Z8xgT6071K/ctquOmfRD7RrMddDj28k9H866riXpIrybx9CjmGOg0+bhmYXGwzQvDzTQhPPUKYlfjoHYRHOCHuvkyI49B8dKJWhumjBPwoA3+EID5MEB80wuzh/sukst9CsPsiXS8i0vs2wfs6EvS++NhdJMfvyWucFX0vLQR6SMn3XEGw9SJ8j88h0HKBHl+jhQAtAkbuIjbK++33CeoPyR8hOfWYYF1PCryFYN1GIG839tOtvH9OMJ8mNU8LkwQtAhJTjfLDlJql99GgT9N70rQIyC5bpEuob5Fq32bVPkBwZ7Az0EmlH0xAd00R2Ieh79Nj1xABnlT7DtecdkDfboW+8oD8obyK+Zus2oW+2aTott4SfW1KHM76dLd1U48cWPgYxieg/kkT6qaZ9n9t3jtt5/qX1byVHxLMzqkRt6Vgn7Hnljsiycl7hXDPBRFoJjXezHvlvyd1/nvEWn+LUP0/I1D7c8TaziA7fAH5sbdRmLqO/NRNlFcaoTl4y24UqmMcZQ6r707IErEsqfDs9jhyW9x9k7cyB2TEkBtiRWdbZfvrSLUaJ0JK2kcK/bD9bTjrz8L+6EUD4vefJ6C/SI9fwR6H1+k17gjnIGXO/dv3WrmZzBXss0LnY60J5oe9d+Gy3MHxcC2C062IcZRya1gmO5ePFkuqfzugJU9moJbOVs+j+HR1sWPONU/p4P6o3LfVtB9zP1/OeNRjjoQI7XBbQBT3pwnmI8hsDshjVDNbgxLqXL6WYrivdMtwvFHCRmqclLIRZr9Niv0eQZ1L0IyktjjBNTH9iJQ0wX6EVTfvmV8iIF9GfPgaqfHr5DcJzrelJ0bJh29JyPPeeriHlHzX2wg3n4dfAv28fC42cIO+/rZcMERH7iBB3zMxxUCvI6A/JkA3EdSbSaETqEmhs2eWu43rQge9TiAnJc/XNNeo03MZCfM+5NYHkeNQ/Co3oxkiJ6AT2MucocpJc3ajfWyFFTufse4aIR+FOCDFbu8ksJNq57PWN5uMhjSbnEh3G2LmMqn1W5xMJ/SNJlW3dRfEbk+EwG6Xh76U85eqJ7mdKvWPmj3hTTPt/1jEnHbI5L7sPxAlgnnsuLu4P7ednm+MJUdrShHLedXf/Hv4Gn6LYNMZgvfvESGYB+v+CaHHv0CEoB7vfBGZIQL65DWUF2uNJDhbPyr7BHJW5Q4SQTs0b24MIbUxbPjagOyTwaW33OY6wsdJjxFohx/IUt6T/tvwdF/HYecVuHgfvP0y9mmuczS9IcvQ7LUvw1H/GvabztHzpNrpNW4ms9d8UYL8oOsmeQ2cPTU46L0DV99dHJE69/IJl7RQiPL3pp8hTcIsvzctSoeLBdVn8+mpwIQQyivVHJ5PVf9G5jzzlAL9w9V9k++JSu4yAd0qwraICG6VVN+qLF3L2yeR3hyQJ/RkNgZlAkd63ahLT67wgSpGv/WEtVXus8cI3rLT2zSXmnHteBPBvl5CP7nQiuRcgwF1gnCMwc1qfPIB4uOkxknpG1nv1xEbukVAr5FQl48HbiJqIZXe8AZ8dWdp9XweEQJ9bPCmBLoMz9PXJsbu0cLhIVIzdaS4SaHTz5Sm752m751eJOW91CnVt4T7YmfVO4zwPK2SU7MtSNOHTibLzXciQ6qeE+gyC13IL/agSL93aZ2b0vTQh3hQto6tkGrXOImO1Do3jNAPSbUfjhtqfZ+AbiOVvt0iFbvYofulOxBWAjpd6V6ItcdCbDWVxE53RHfP2ZD0DKCSv8qJOtVmNJ+tZsCbZW2mmfa/B/MPVpX5F2QicKnwihr1dZYPljYzi82h+NCNUqTnvBpofRH+ut/g5NGvEKz/JeJtv0W48VcIPP5/6f4MEh2/R8ryKrKjl1DivuxbHbSw7ydlPkIgH0fJwfvio0jzPEmeIWXO6jyzNoTEQo9M4I3yfvbIfQL5Lfj6bsoW2cckVo7aLsDV8jqB+1UjvE4uy9BIvDhbLuCgjcvR3pY16dza1SGvxr45K/P9Dr4S2EmVe4Ye4WSyGYHZDoSt3QbQSZikNkeQZaAfLRXUAAE9TUBXSybQ3yOD/Jnqf+K3oBbO6infhIjYfCKwXtC8y6JyZEXJOUsqfUwOTrnXs2KRdempVS4Ts8h9ae7Ollzkem+j2cxpI5jEXAuS1jYJ84SV7hd5r7pVhsLjrNylen9o+MQ9xMbuSJBH+q/JJDmGdIIgz54k9R3rv45Q4+vw3X8RQRrorNgjvVelSpf77wT2BC0WkqTQGejJabpO1yI9+xiZ+UaCM8Ha2kSAb5LKPTnXbCh0/jkJ5slpWnRMNxn37LOngG+lr+9A1tqFwlIPeSeKyx0EdQuUnQEJdIY715ry8Ye6ex7wWOk6C/1oDLrTYqj1/V4D8Ltcw/4Q+ir7feicQCc7ztUXdHtPRPfM2/WEZ0jkEwz1n1dL2z7/RD94E+qmmfYfg/nHqn03aK5TntMSoebS0epqdqUrEBu+kQt3n1dD7a/A1/g7mlt+S1D/Z0Safy0BHmr4JaItv0G843kku182kuCmbpAyb6DPvUXCnLtqyhK03TFkNgdJ8JDoIYWe4aOg14Zp/utBbI4rhroRJ3EQm6W5kquCJNhr5KFW7g7eN38TzgZS4gR1Drfv1b2Mvcdn4Wh8owr0y+RXsM+92lsvyM5xe61vS8Af8N557114hgnmE83wTbXBP91OCr0TkQUCOp+BwSdQ2qdROlwoqf4dn570TQm1cBpy/5QZcn/6B/rHjVaH5V9zjbQe3T/SA5s57XhJrRzOonwwTSp9HLntYTlIk8vc0KVDNpiJM8y50cxCOz3ulv3WE1Ktt0uFy3vVqQVDFSdYnS+2Ga8RQBMcgp86BfoDCXTeM48N3ZRAD8vM92v03G0kJwjoDPaBGoRoteq79wL8D/6AYAtD/QKicv/9mgzZy1A9qfQk/ZtJqdQfIk1wz8wR1BcI5gscgjeAnqIPVZqhLcHeRu9pl1cD5MaVAZ+eNcLxrNZzHI5f6CSod6G82oPyOin2DfItgrqdOz9NQnPNQHgWoZ8sk1sB94Sh1qViZ6h3ATtNBPMHgOwydw9i4Tb0xdt8kltBt3VGdNeUQw/vjXCTC1SKz9JE9O1qP3izrM000/5jc9xpF7hv0AL5WS0df1A6XFvMrfd6E5P3M8GuN1V/MynzxufhbzpDc8zvSDj8CsnOF6RHWn8j982jbQT03teQGbwg98251lzZsaC4PYDsugW5zQHZJ533yNMsfGg+5K5v4ek2hEYfSw9zcpr0BnJ+3IgQXX2DD3DYSVBuegOOulewX/cqQf01OEnA7EvAvwYHh9tbL5JCvyivDnI+iMXZcQ1HPbdx3H8fx4O1cA8+wiEpdPdIPYG9iYDeQUDvRZzLdznkvj9LQF8qKSfbATV6NCcUmbfzbXMP/ekf7B+oqr4vAeKnohivF4lDmx6xJwjqSsW9AOWAMzMn5ECVA7bqfE56eqOPVp8WA+rzLdL5YBRurcrlYkkOb1f3rXkhkOIrKfTEHCn4qTqZwJYgoHOIPD55n6BOKpwAHuO986EbEtDJybsE9LuIj9xCtO8ygs1v4PjuGXjvnEGg8SxCHW8iYnmL1PsVJIfp/SM1SPIigIDOKj09W0dXUumk1DPWZmQXSW2TSme1nrG2EagJ1gx0a7OMHsj72UaZ/c4Jc7IOfrKWfs7HBPcGZAjyDPTcSi8KvLdOv2eRr2vcmGYUimOKoD4N9XAO4mQFenADun+V1Po0gbyvuq/eDX2nmVQ5gXzuKjTrTeli7jq0ueuClHtJbDSm9F3LkR60zYlsrF4ouVeMY1nxd2ZZm2mm/S/Nbx+qKvPPvgvz6IPCwepcdrndlxy/k4v0XCSYv0xzye8Qbn1BHoEaajwjM9ljrQT3xv+PlPkL8iS1VP+byAxfQHLgHDIE9OJqGwobXcisdsnzLrK0qM+S8MlyqH2tV1YGcafK6GQTIgzwsXq6PpanSwYH78JvuQl312UckTI/6rgEV/slHHKHt9a3sE+KXIKcgO6ke2fzBThJkcsOcF2k5i01BPB7OB56CO9wLU5GHsEz8EAmwblIpbvp+RP6nsEZDrlbEFnqR3x9GMkdmss56/5wsVT2rofU6KFVKMXz9Pc5zXI3gf4UD/rTxLjPVzvG1WgJ97KIOiJ6eEfRfKuoHC2gtD8tw0mZ9T4arOQEc06Qy+yMIcu+xf3ejTATh+R5b52hzqBPLVaT0Za5DKxbJqTxc0kOeU/XGclr048k1BNTDE8C+/gdw8dqSG1zKdsNqcLDXecQaHoZx3eeg6fmN/DV/QH+FoJ65zl6/RJig9dIod9CapyBfg+paYb6IwI0O6l0UuYcek/P1Ve9QT6flOBvMEDP7+HnZwjgUwRyjhzQgsJItuPFQaNcBGQY6uR5WrSUeF+dfu8Cw53AzjXsXL9edkzIxhLieJHcCnHAJW69MhseHHrfboKwXkVl8jy0mSvvQF1fqBFi/ZGirzekdOeoR4/sLevZUKcoZc5WM+C/Ug2PmVA3zbR/P8z+2Xf7syfulI42JmgucqUn72YilgtKsP01EWx9mWD+e8TbX0SE1Hmk+Tnpvkf/hMDjZ5Hofhkpy2vIj19BbvwakkMXkZm5i+wSzRWrNJ+tdEt48xyY2RyW/dLTq9xeul92r+SW09EJUuJ8OFX/bZxYbuC4+wqOOy/hqP0CAfxNHDST+mZ13shJbxdx0PYWDhjgpMIZ9K6uKzjsuQlP3114Gdak9r0E8RNS4t6hWulcosbZ7Z7hx1KZG+H2boRJnUf56OmtMaS4XI7L5w7mSyXPWqgS9ViFWjaB/h4a+B+uhlq+DbV4UU8HZkTswCdC2wXNvy7U42UoBPW8YxoZPqRllWFtrEhTBK/0+oDM5uQ+xGkaMBny9NawAXge1CvGQSjG1ajxlslpC+0y1J3kmnGC5zsqffweEuMEUFLZcVLcsaEriA28TcB+C+HON2gl/RIp9N/Afe1ZeG7/Bif1BHWCfKjjDcQI6okh+sCN3SSo35LKnsGenD4NvxtwT889kso9PXt6rUOWYb5Iqn2hmUDdgpzVUPIMfd6DT7HP0CJgvkVmx+cI3nn6nYpb/bJlbHHNgiJ3m2O40yqdO85x6UppZ0hmv4qjeeh8XKJzEILL2w4GjbI2VunzV6BOXoQ6fRk6KXbpi7eFvnxf0TeaMvrhlE+POjf1tL9TlLlmFD+WZ9mbGfCmmfZvRR4/WoX511Gp/FzkjP7sJCqcyYl7icTgFSXS+boItp9FuO1lREmFc0g91Pgbuv4Ogfpfwn3/ZwT455DiFq/cFW76JnJTN5CZvE5Av4e0leaGU6DzXLfFme3DEuKGsOmVCcPcrjrKYfaRhwj23cJJ19twE8g5Ce6o9TwOmwnoUpG/LvfLnQ3n4Gq5KNX6YccVHHVdh8dyCx5S5AxwP/1bflL9XFvu56YxdA1ONsjnfaTK/VMtCMwwzLtInfcgtjSAxOaoVOdJ26QB9b2ZUvFwOaTGjueEWjpXBboZcn+PhKU+UW0w86KeDw3pSbdHjzpymn9VVDyL4Jr04oEVxT2jv3tuc0hmucuBvNYjy9i45ztnwzP0M+uDcmBnt0eR2+GOc3TdHESWwb7MXdk6kWXFTurWKCdrk9nvyelaqdITEuwE9NHbsqQtNsBNZN5CqOtNBJpfhu/hc3Bf+QU81/8ZvscvSNUeaHlVQj3efwnJkavSE/S1ydEbSE3eRUaq9VrpGQJ5drZWAj1rfUzeIEPxOfo5sgT13GIbQZ18sZ2cnrc2SgWfnq03QvX0Gpe35STQB1He5brTcVLlYyjbhgniwyjaJ0ihT6PimJKtZFVyzUlAPxgjhT5AYB8w9tM59L7xEPr8NVQmLkiw63OXoFuvE+jJF7nDXGNBd89F9Oj+tp486hOV/GXeIqlC/TNVJWJC3TRzPvuXh618nZW5lo7erHh3Jgqb/S4SCol4/9ulWM9FEe06R8r8ZdkFLtr2ewQbfiVD7DGCuPveTwno/w8iBPek5VVkht5CfpJPUSNlPs/bdzQfrHQZ4fVtmhNtEyRkCJoEdt5e5KObQwza4VqEhx+QOn+I0DABffA+gr01BPVr8HConWFe/zqcj16F49Er2CeguxrfJKDTa+1X4O4mVW65DS8fsEIqnHu8n4wRtFmBTzUjRIsFbhgTme9AmDw01ykhHrGSKl8eQIzm4QT9XKzOpW+MIMkLD/tUqXC4ElBj3hmhKq+bdejvrdDUX8qWo6L8rF6ItOsJt0OPHaREaEdVj1dQPphBiWAuux090bawYBtHnmFNijRHYGPPShVvkX3U0+wEfi53y5/uwfP7eP+dVrbp5Q7pqWXeZ29/ImGtnlR7rdxfT04R3Dn7ffiG3EMPd56nD90rOLn9axzf/KUEup9UO4M+1Poqoj1vIjH4NvllJGgREB+6jNREDa2o7yM9Qyp9mq8P6PFDZObqCNb1BO8m5JdaUaCfJU8/R14CvdkAOwN9kffN2VvJ24zEuCVjUVLY4Jax9PvxKUb0O+XX+1HcqCp1+n1L9EEv780YPeL3uLSN1PrBKHQXl7aNAVynvtMEsXwH2vQlAjpBffotCLoXUxcI7tcgFmpUfa2hpB9MRHTPgkOP7E+Q4qiBqPxC7g0apYcm1E17v89nT7Z0/So3zNLSkTtFz+ZUbs1ylJq4nYpazpciXW+ISM95hNtfRbj5eURbSJE//qUMsXPNOe+fex/+AsHGXyPM2e09ryI7fhX52bvILzxGfoUW/hu9yNLnPkdqt7g3K0vTUvQ4Q/MhHxAVmST1bLkGL0H7uPUSvK1v46TzKj2+jOO2S/AQsN3NpM4bz+Go6bz0g8Y3Dad7ZxOp947rOLbcxUn/ffgHCeakzo8HH8rz0XnPXPZnn2sjeHcjSgDnTPbIUh+iK4NIrI8gtT2JtG2GfApxUuhxDrvzMdNbIyJjny4Q0H2V2MnUE3XonzTL1t4bH4KPGSftaD8RpUQtqcB1Pbwb04JbqurfEJUq1IukQPOkPAt7U/Ks9MLetNGP2D4l99LznBDCNepyT8li9E7ndqukZE/33rPVpDp+nGF1v0wqnWDJoewUq/S5x0b9ONeR8x77dK0MxUdHaxDtv45Iz0WE295AsO4l+G6fgf/RHxBofBnBFsMj3a8jPvgWAf0SXQnsDPSx60hP3CS/hfTkbaSn7pIT2EmlZwno+cVGAnkbAb1TQr1AUM8tkVJfaq169X6lgyDeYcB88V3nEDwn2PECIE+Lk/yaBQXZD36I1DofxMALomkCO6n1g2mormkCOyt2UuuOPuh7XRDbDdBX7kKQMlcn34JGYK+MvQFt/IJMnCOo81nrJd3eH4N71qkHdiZkBjzEKdQ/a0LdtPfxPHbaV+MTRuKo9mOtkLpe9trGsmv9zvTkg0Ss96ISaT8roh2vIUbqPNRMqrz+OfjrSBzUPotAPYfbXyCgnyGQ/w7RzhdJvf8Bid43kJsidW4lAbBMn/HNXhIzozT3TcgSMG7hml4bQGqDc4lIBa8OIDrdhGB/Dfydb+OYoO2ufRnuulfhrj+Lo4bXyF/HISnzQ7oetVwgtX4Fni5S41034CY/JD/uJZhzL3aC+cnAA6nSj9kZ8MN1CE21IDrfiehSL2IrA4gTyONrQ0hu0KJiewrp3VmkdmeQ2pkmZT6MJB8vvdbH3eIELUQI6MteNX4yQkB/XkYzTKC/pz4IxlGqldx1PXU8p0ftATWwrlS8K4Jcht3LB/MEJoK5fVK2hJVOoMoy1G2TMuyU22Koc0JInxGK571zUqus3DO0qs2snz6uJtjxvjordGurkV0+XWcocwJ5apo7vj2Ue+rx4Rqj3rzvCkH7LYSaXoPvzu/gu3cGwYYXabV9FpHO1xGzkEIfIKAPv40kwZzVenL4MvnbSI1cIbjfQHr8FjKTd2RJW2aePqQLjQTxFvI2FOkDy/f5pUap2vPLpNhXOgnSpMZpAZKjnzVL4Galzoo9Y219516qelbxi/z+Xgl0Vucl5zzKrkUoh/Q3dM6hvD8D1Tklz0mWh7zYOqHvtpFSb4FYf8SZ7u8AXRl9jZT6RYL6NW4by+esE9R7E/rhlAvxwzHj6MPKP1U/kE+G380jEE17P81hH6qW4H7ptAtcOegcyO2MOUgcxBKDV0vhztdEpOt1mideI1i/gmDTr0mV/xInj+hKYA83/44U+vOItJBK7/iDBHq86xWkR95CgdR5keeE1Q76TI9Boc9xyTErzxbPyHPM+5Bc6UOCFDLXe8et/5O9946N7EzPfP+5MAxjYBjGwBgYxv6xWBiGsTCMxcAwjIFhLAxjdmY8HkszytIojaRRVktqpVZLrc45N5vdbMYm2cw5s1gki5ks5pxzqpzr1KlT777P+51itxf34uLeu7vXI1UBH05VsViM5/y+5w3PW077lvsMdFbkeSdoJfsYH4/TCq9lBvpy4SlaLjpLyw/OMNB5lZyn5QpW5NXptFbLIK/LkClp6/UMcob5et1dBXbk0Jvu03bbA9rtKidHv1m9PtpC7rFW8mLYy5iFPKzKPeNWfr5VwuwuwHywWkzB/JOtRmSxJxDfHFuS4VCG/pGZvvuzlCD4doTdk3n0n8BkIOHbrEvsTS7Ft0dC+tqgEV1CDr2LQvxPjBWc66TwnHocMP+podADvGvFOEBAHWF4qHFYxSplrlZg9GHrm4SsGPTYAPhRaNdTZPaEoxitgHydZl695Y54vAPo+1UK6NsFJxnon9N62mHazj1Ke6WnGeYM8poL5EYeveGKqHN3HYOcoe6sP2/C/Sp5mq+ThxW7py2NPFZW7J0Z5AfYu3MpyHAP9OQK1MMD5RQZBMgr+ERm9T5YzquClXoJK/kSVTzHEPejHa67QGAeQNjeXiXe75HxJgojLTFaz6tJLgDaEm+OGO4omEPfemyqQYY6JCZKlO/7UI7Yw+qdVwXoscYTFGs9TUbHBUrwc4n+e8oHfrLSk1juWkjsz1qNkOcuWnIeCb+n5qqnbt8lmH/P9Gf4G4rHnzMigZPR3cUKFhlTHlv+nqv+WmS/8pSCOTplHnzF14/PaTPvI1boH/N9gPwI7RWg//wjVu6f0G7xl3xNYaDXnGQBcJECnWkU6X9AGtwhF2ykQdxg8Mp0p6h03yhC7azMuypYncOTvYB2Geg7tQzikiu8LvK6QKvFZ2il6AzD/LQCOd9fLD7LQL/AQL9G6wzzDVblyJcL0M212ZhN2+gptxTSTlsx7XdXiSJ3j7SQb7xN4I3QOkCuHjPUEWbnTYYDg6nMoj0IsNjqoG7sTPkS7qWFRMBRYQqCH5m/wxTQvwUnxe8/HNQSfd8I7hYmXAsTBga1bA3rsdV+VpkdAmwfw9rHoEKYPYhcejKnjoK5sSYpEgHQgxMtYoEYYrAHx+opNN4g88ZDWPyxMD5fcvAMf/4cP3Lt/ZXKlrUHlqslYvqCfnVXSwYDnVV6Hav0qqu0X36JT7rTtJn5FUP9CG1lfcW76lPkqDhPztpLapnhdlfdRXLUnqf9mvOs7i/wpuACv89FeR4K3tN8TcLxvvY75O+8R34bCuWyKDJQxDAvMZU7Lyh3hrgAfhAV7qUU6mUFjxw7gx159yBvAAKDVeQf4NVXIUWAweEGGckaHsPvAj97G18I1EjFGP9OtclG0karZHpbYqKUFXoWGf13SO+6Ie1sestJ0ltPsWJnlc6q3ei8rKa2jRRqxlSVJ7HQvpTYQq/67j3+2x2SbgVJnxwY0KTsYlO3bzvMf/DQn51hvrNS5p9oH3N3FTj26q5FdkqPGzvFR2m7+BhtFh5hNf6JhNcRbt97wCAv+ZKvJ5+yWn+H1Tov/tgKq3Z4uu+WH+dryTm+Ptzic/8B6TMtFJvvpOgcVheF+VwOznazsOkmL6thB6vmfesD6Tnfacyl7aZc2qzLlJ7zzfLLtFF2ntbKLtBK6TlaKTlHy7jPz69VXqX1GoxNZaDXZtBWYxZtNUGNoxAum7Zac2nLykDHZoE3DQ70lQ81MdDbeFnIbW/m1SSFb1DqHhTo2RvIhVTASAOrcouIsthKP+mbw7qxN+1LuJbmKLRfwkB/2/S3+EGqDfbbcWL83sNBLbGXjYgrPeHb6Dccsy5jZ0yLbwwZ6EePzrZReLJViuEC462y4/OjwlPUuUVGAob4GMI/j5ljD8tzrFQnm+Vzw5MtAnuE7eVjDH1R9FIsx+p+sJahzmDvKiNPZxG5rPfJZckmVyt6wrPI3cLHhtvkrLrGJyKDPf8Mbeccp90CVujlDO+aSwzviwJvF6tzt6jzC/wcw7zqrITkndXneOfNir3mHL/XRfK2XCNf2y3yt99W/aW2TAr33pcQW6g3j1cBwxzh92IBengI/ebJYyWF7Hy011AYaYUBVvC9peTn5etjwA/VMsibRaljhRDB4J8TtQfRhR7SGOpR2MaOwxK2mhLTqvId7nHxjmsUb78k6jxuZZhbL5JhOUsGP5fou2skRgsiickaT2LeugKoUxBQ1w7z3/GXfJL+DVH0Pz5iF5s6UVO3b1NU8VFl/leq7VY7qu2vlvgm2u2urgc7+03poe3S08ZG/he0IS5wRxjWnzLMP6HN3A8Z6B+JkQx60LfyDtHqvTdpNes9Wsx4n+bvvksr8HRHnr38BHkstyg8yJv88TrSplrl+haY7GBQdpCPl3uklZy9VTJ4Zacpkzaq02gNefFihnUVPNvTGOpXaZvXZuUVWuclEK++zh+7RZvoT8fn8Npglb6FnvXWHHGR27Hw5sCaLxXte8iZ98CBrlpBHXnz/joJ87vgFw+g83XGA6hL6L2NfEiJzrRLRDXK13F9dUg3tic9mK5pBB1FfK14U4qi1bUidZ34lux0VR49Hv+loXnPJ/xbloRrcYt3chFjc9jQV1Q/urbIYF/oVuGmyTZR2FDhcEhCmD0IVQ6vYP54BHkm2AzyPz9WGPdn1Wzg8HSHKqybscnrpVp+hDcH/A8qQOflw2K17jWLzrxi1ZqvjGgwhIXB7uATYrfoPJ+cJ/nkPEP7lYD5RQY2g7xO5c9djVf48UUFdMCcl4OBjqOr7rzk172tN8jHJy1WwJrOav0uBWxZvDJZgedRsE+p8PAAjGQY5nZYPtZSGGNVeYWGq2QF+GOB/jLJq2MojB9LwF5NQcCdN0Gi1LEmrazUe2S3D6UeY6gbc+b41dH7ZPRmkNF9h4+3GO4IuV+muOUcxZpOMOSvMdQRfi/SErONnsSyjZX6GCv1vTxDR9Vq/Dki/Z/4ZP3rR5zlUuG01O3bAPPfM69Xf2ZGo35OZHwUc+7m+6d7+p22oo295vTARtlZfTX/CC3nHKbV3E8F0Ks5H9KGrA+k53y34DDD/QNaufcOrWS8wzB/l2bvvE0LfJy/+x4tZX9MO5WnyduWLgVxsHgNTjSTl69VHrvy39jvqWDo3qdtVtK7sHhFiLziBq0/OEsrLDhWS87TBguQrbo0Xrdps4YhDrjX3qSten7Mz2/W3OZNwC2ZurZZzzBHi5uFgW7h92u7L+NV97vL5Gvt95TTPm8eHH0Mcdi5Msg99kZW5S3kBcBZSPmmsNHoJD9SAkiL8nUXqdIIiwh9za7Htyc8hnNxioL7hXyNeM0cJ5sC+rfoJHmkH107nAjslBj7cwvGDsLuQ7q+0kvRxS6KzCtAayj04iX3ocSnWW2zAof6Dk9bFcx5hWdMgAPk2ATMqdwTws7huR55HJzkHST/M/qHG3ipecEoqgME/QOVFLBXs3KvZNVbwqAskHy1FMthUhsmrQHqBadoK/MY7d4/zkqdQQ0r2IYb5G6+xesmw/8qK3WGe8MVs1iOoV+HvPoFBXQUzDVdJm8zq/WWmxRgtR5gqAe7MinUnU3h7lw+3me1XsgqvZQiDPPoeD1Fx+rkfmS0Rnm6o3gOlbDdhRQQ17l8VTCHivjuEnGXC/DPhvY2pBlC45jQZCMNv8fJZtInqskYLyVjNJ8S9lyGeTrF+zDEJYviPTfFfEZvPctgZ5XeeZ2MnruUGCvRjUWLL7FkW0us2+0J90aNEQ3wi0Ofx2ORFxns//jIxLY/SBXMpW6/w9eppDf7f5QwMXLmrMxjnr08/0THoIthvtuQFlgtPqkvZH1qzGd8QFO33qSZtDdpLv1NWkh/i5Yz3mKgHxKYr7Ein7/9ugL4nXdpjtfivQ9ojtcibwS2yk6Qs+k6OVlEOOEQiS4eBjla0wB1WF1vN96lLb4GbVVepvVyXmVXaKP4Aqv7s7TJMN8sv8gfZ4DXM9DrbwrQN2tv0DYLEvlc2MAyyDfq0hnu/Bh9601ZrMrzGOQFtGsDzEslAuDqryJnXyWvKqmmd2PwCy+E+72TKFC2UWC6S+57J9qlbQ0KXal0FlYsxmIrA5qxOepJ7M9PGGFHHgP9ZZWykILaVHruW7TrVb7u8diraj76wkh8e8QR3xjQ9OUeQ5tjUE8jdJzMhbcyxNtUSxbUNyq6Z9oF3gjvROa7JG8jIJ9VVaGRJOB5BwmFGhyHWY3lwIAGxWMBLBTMSXtbnZmDZ/U/UkvBYcwpZ7jDBAZFc20ZDOR0clReZZifop3sr2mv8BQ/Ri/6DYb0bXI3wT72GjkbGeoMbOTNAXUUyjkY6E6GuxTM1V1ksF8lvzWNYX6HAX6PIr25vHIY6FkUYqUe7i+kMIA+XEnaSBVFGeTRsRp1xBqplj50KaBDTzur8+CgcpULDlSJBzzC8MER/nlGeQPDR0A9zL8L/O5i0y2kj1eQgfnpw/cZ6pihzjBnpR7HyFVAvPOGKHS5336VVXwaQ71Up8X2AC117CQ2hmcSjlVbwrNdZgT2r6vhLgcT236QmtiWuv0Ow/z7ZjfHPyA9qAe9Z3XnZklwrrffY8vf2K2/6VstOqHP3vvQmL79Hk0wzCduvEbTN16mmesv01zaG7Sa+S5t5X3IyvwQw/0dmmfQA/zzGYdo4d6HtMQgXyvi6wjSdnw92G/l6wuGSfVXMMTrxQXTba8nR28F7WEUauMd2mZIb1VcpPViVuT5J2glR1W1b5aep+2qK7RTd4N2GOY7rMi3626KKt9uSOd1V+ahb9YyzBFqr8+gnZYc2rWaqhzjVruKWZWzOu8tl6+pYF7PqrxJFqDu4WuIn6+/ARZK/mmbKpBjyKPKHUVyPoY7Ph5e6KXYml0zdiZdCdfKiBHxZZl20n+dBHrqv+3bE3b/I1UlHf8l6cGzCd+mzXDMbrBKD+nrg4a2aJM+6siMVRW4oWqdARtk8CIXrnLkrNJ5+ZErn7RQcMYqRXMSoodKl9515M75Y6MqzB4cVXDDAJjgmOpnD6Lwblw9L2H9cXONocCMAc/wDAyUqalpGJ7SdIchfo32Ck7TTu5xUezOyssCdWfdNT5eJy8rb+TKfW1pfP+GQDzZs+5m9e5hyPtab7A6T2dlfpfCvfco2pcrUIdSD3ZlU5ChDrBH+vIpOlgkc9G10WrSGOqaKHZW6nYzx458u121r4XNincJtY+3SMohOtfNmxub3FebnQ6KLXSSPguooze9iIyRAlnx3gzSbTeUQm+7THGA3MZAtyK/fhlK3UhMVuu00B6iJZsnsdq3kdgcn0jsLViM4P49w2Cox6M/e6RgLpVXT91+F2FuerPHXtMDrsvRrbma8LRtxN9burHXcCuwWnRSn844ZEymvU0TN9+i4Uuv0MTVV2jy6ks0dvEFmrvFQL/3nqz1rEO0lv0hrWR/zBD/jJZzPmcQf0IbKJSrOicuk27LbXJ25iq7a9hZwzhmuJEc3WUSDhco19+ibVbom+VQ5af5/Y7SUuYXtJJ7jDZKz/LHLjPQbwrIdxB2R386jqzMtxvu0VZDhrnuqbA9DGMY5nsdhbTbzkdbiYTbH8K8TmDtGbVImD0ZavcizM7XER8D3TfFRyj2SYY8X2NQuBea76bo8gDpm+OasTfjMNxLdiPivYtiQnOz/8cpoH87w+7Jcao1CefSgrE744tvjejx9SHSlntVqH3aStGpFtWaNabaz9CeJeod9rAA8phyiAtKkVwyd86bARTO8T8koI77yEkJuHlB8auCOXysUd4zYLa3YfOABf90qPXQkGp386HdjXfQHguDvZ5306WXab/wHDlL4RZ340Cpe2EBa8VKJ68VUL/O6v6KWmhxa7xM3tZrFGy/TREGeqQXCh159Lvkb78r/s3BLlbqrNbDPTkM+zzShkpZqVcwyFmtj9cqoCP0zuo9MoJjjYxWhUVsOJk/580PagZQQBhBpALGMzOIZHRLPl2ft5I+00jGFHLphSr0PpRLsa6bpLWdp3D9NxRtOKmgzipdt1zi+9coMZBDickqIzHfqidm6kOJ+XZXYnNkIeFYtBkhx13S/Ycprj3Gf98fEoX/LDWGNXX7HREaf2BGD/9SHM2M2NuxgPt6cG26KTjROuXtKtzZq7+pYJ75iTF647c0fPlV6jj2DHUc/SWNXniBRs/zuvAizd56nWZvvEprGW/RFuaeFx6htfyjtHr/K1ov+Iq2i47SfuVJcjZcInfrLRYMOWJx7YanBl+ffKyE0XOOeeZ7zRm0zdeXHV67vLYqL9EaC4mVrK9piaG+UniSNsrP0RYrdCj47Rp+bQ3y5ukCcITVt1mNiyK35Emb254lnyFeQLudD0yoo0WtXMawYvwplLlb8uWtao0gn88qHLlzhNkRXkehHgPdzwvh9+BcD8Ocr9tLAxRbtRvxrfEIX9P3ZBBX1HeTgf6E+bv9oxTQv51h9x/CaYki7pyEe2XE2J9zxLfHtfimnWRYy2I3aSiwwPCR6VZ1FAC3STuaMp5haE8pxa4sYzuVsxxDzI+pRHbMDm4SJR6EEh9X7W1iEYvCOuTiUR2P++MNYhfrZ9Xr55MraIIdC3loya/3lUtlubezQMDubrhDrqqbrNKvKahjrGrrHYb6XVke3nlDpUtPetM1ZTrDSyreLVcp3JnG4M4QpQ74S8Fc221W73coZLvHQM8WoEf7C1ipF5M2XEbRUYTgAfVaVuy8UBHLPxNAD7CHEY7H40mLpCmg1GUTI+19zbK5gZtcbKaVgd6sqt5ZqSdGWamPPqB4XxbpHdcp0nCCAlVHKMRHnUGutV6gaPN5infdMqFeYxhL7YYxXaMl5iy+xObYWsK13GsE9guNiOc4aUEUzP0dUSQ1hjV1+/d+TUpWssPJ8heGFvk07nNmBZfHrd7BmgVPV65rr/5aZCn/mD519yPDfv0t6j3/Klm+fIqq3v8ZtX/xGA2fe57svCauvETjl1+kqesv0nr2IdpiJb5VfFwmNm4Vn6S9ilO0X3VKGVFhbHP7PZkz4bFXyXRJP5+nHnstOW1FtN+WS7stmbTbfI92G9MZ6AzqisviCrd6/yStF5+jzYpLKncOmEOdN7AqN/PmO62sxJNFb+hXxzQ2Vua71gIBucNWSg4GuYtBDoc3RAUE3nCB4yU5c6hzfs4z0kJOO1YzubD446i6R2+6qHTYdKPmaamfr98jhq6AvpXwrNvUXIiDSWt/mLoOfDvD7ghrPcZ/7Kvk4z/6/twWAz3CCt3QV/qk0l1b6JKBJGhHC02iDc0qoePwgSVsm6pun+2SykoxokFlO0Pfz/+EfnuDmSdX3u5BVIpLyL1e5cwRWpcwdbMJ9gb1Gihdvh9CVIAhCVOaEC+YufgHysjXxSdgO6v1tmxy10GtXxHF7uITzt3MQLdkKNtXKytuC6v01pui1L2t/KNarvO6xo8Rer8mbWz+doZ5K3+8+YocA223KIRwPELxADofo/2FCuqs1qP2Ssmla+aKSZtLI0O8iSITDbwaeeF+s2yCMMBFg+EMb3iiszZx44vN21ild5A+1UL6ZB0ZkyiUq2Cwlwiw9e7bFG06S8G6kxRpuSCQjzadp4hA/TYlhvIpAVvZuWaD4a4lFtp8xjZD3bE4KGNYQ26W94B67G/NiMwfpnLqqdu/0zD7AcxJj3wac27nhdemu10DNUuOlgzPXsMtbeXBcWP09vvUd/F16jj9MrV9/TxVffAvVHvon8n21a8E6OOXX6Kpa69K2H325qu0mv0xbWFsatkp2inhVXGWnHWXVT0Nhjsx0GXkcl+psqsWD44Gcg1UsjovJldXCUOX1bM1n/ZaWWEjD15+VQxk1osvsDK/JCDfqbulVn0a7TDId5t4A9CSxUocGwKo8+yHrWlQ6Ax05MxRbOfqrSQ3qthRhDeKnnMGNYarQKGj73yoSQriHP31tI8RqT1mKxva1+Aehw3AWItEFSR/LiH3ISO2MRHSt2c24p4NqzkL/SdmkWFqMMu3dEcM5faPhh45lvBv10m1+9ZoIL42ZGjSj84QmsUUMQX04Hi9hM2TUA+ZrWlSzY62rMVeKZBDLl0q2pE/5yW5ZFbi0uo20Wr2uCMkDWhjalmz9K1HJk21DhDya9TjZgX1YTP8LsVyVRTAFLeeEuUNj9716jRyFl8iZwmgfos8Lay4eefta88gPyt1f1u62a52k/wwmGkD3K8I3OHf7LfeYMBflSp4AD1ovc1Az1Aw779P0d4cXgx3vq8NPqCYvZRiI5W8KkjjozZewzBvVAYyU00yJx3V7OhlFZjzRkfjTY+Gk006B2zyXIw3TDpvnPRZC8Una0kfLVVqfZyPIw+kSC7acomilityX+9kyDdfZLV+iYF/l+LDRVDqlBgrMxJjpQL1xObQRsK1NJKAmUTEd4zi2lMM9R8Shf40Vf2euv07hPn3VY85w5yVecy9mxdZm+gPjrau7Dbd8WxXXNDWi08ZY7cPke3My9Ty9XPUcOQ5qjv8Kyp756fU+sXjNHj2WRpjVT5+5WWauPqqgH3m5mu0lvc57ZaeYlV+lnZKT0r3C2yh4STparpGzlbeyGPOA9rUoM4Z6phzjgpzV3+tuMJJxXlnEUM6i2F+ndX5KVp9cI7Wyy5Jr/lWLVT5bVHw2413BOZ7rQx0qPPWJMxNoFvzaFfa0wrJ0YWK9gqxkoU5jBcAN9vk3OaAFRfsZftqFMB5AeowlpGcumn/6kUxHKxpsaTKHXPQe4zw4kAouj6+prvWm+AMmvJx/3afTL9/UO1uxN41ws58w7U0Ft8Zd8XXBvXYYrco8xCrzvAkwsV1EiZXuWG0rbUpQxmZyGZVC4Vx8ICfVvniIKrbJ62qX90smFP96Z1q7GgS2ii8G1XFcKLUAfepVhPyFvM1Sq0HR2ErWystbvBRx2hTuM35eMfrqcsgV+l1cpbfIFcNQ72Jd98WKPS74ukOpS5qnGEtBjNtKIy7Kbn0QPstAbqv+SoFAH1W7OLr3J0pINdkMdT7GfADhazSTaWO3Lq9nLSxalbjdarPnDckMVi+znWICo8t9FBsZYi01RE+DpO+aid9ZZBg4oPfc2ypl4xlhvoMbwRGSiluL2KlXknGRIUUyuk96aRZr1Gs/QbFOtNItzHIbXco3nNPiuiMgXy1CRguNFjha4mZxkBi0bbFSt1uBB38zfqOUjz8hOpVD/4gBfXU7d8ZzP9CwuyizDfzIovDvYHRpg2XNTuwXnpaWy08Zkzd+ZC6Tr9EHceepfrPnqHqj5+k8vf+hare/Sn1nXqaJq+/QhPXf0Mjl1+h4YsvCdzn775DO8UY5HSGdstP0z5D3cMAd7Xe5pVGbitv+m3ZYvHsH6lR9tTDtSbQGbRD9RLqdvWzIm4vpI2Ka7TCMF/OO0mrxWf58VXarmNFztcZhOT3WtCGllTnfJ8VukC9Lc8sgCuk3U4Gua2IHKYyx2ZB+suHG8lrLg9/XTda1QZq1RHLrlrWlIFMJ/lnTOe66S61Zmyizv0omMPcjdlOI7zQE4htji/FvZt1ZESOPOLjngL6tzjsjmr354yo53rCs9ad2J3c0df7NX2529BZnUenm2Vpkwgjo+q8Vk1PG6ggv71G4I48eMgEMYrkpBBszIQ+8jqmogfQo9LWptreUEUv4WfAHqH7iValzAF7BiLeD5EBAD0y0SLh6wOwJ1vb0L+O3m9bMSvyAvI2Z5Or4ia5yq+RuzaNT2AT6tZMXqzWOzMpgNXBzwncb6lwO6t0r5lb97dBwTPsWdFjlCKUerQ3kyK9gHs2aSiSG3jAcC8SuEf5fmykjGKjVazUaxno9Uqlz7RJiB2qPLZip9jaOOmbU+aaIH2d4b7cLxaT+gKDn1V6dKScv8592TDo/J768AMyxkrIsOczwDNYlQPkDPQe9KyjiC6PjP5MFabHBmCsjIypaj0xXhFIzLVvJfYW+g3fjoI6ab9QUA/9aaqlLXX7//n68+g8838kXTsc9+zksKrsDQxVbbjbsgPblef1hdwvjNnMT6j37CvUdvRpXs9Q2Xu/oNJ3/4XK3vopWT5/nCZYlU+zGh+5/DK/7nmyn4c6f4PW8+DV/hXtlp2kfQxzQsqtM0uGNTnb7pHLmkPurvvkwWTFoVqZOYEx0K6+cgZuKe0hJM4K2sVq3dFRzAo8i7Zg7VoNxze0oymQ71uyeGXL2mvJZKhDnWfRnvSXF8r77LPocHaXkqunRN7fzSAXZT5YwxuIehPqTSpfjnD7oII67qtcegur8TbyjrRIkRza1aQHHd7ufK31YUGhS0ubDZXuRmSp36dtT8/FvdsVprPk36V83L8TYff4z2RYi3+7LrE3tRRfHwjpSzYdRVvRqWZR6pjxHZ3BUooZY0MxTU1NVFO+7lDY0lM+BGtU5MtbBOjhKVXRHjHhhvyxTCNDwZ1MJetU/e0m6KO8ARCFLgB/NBfdbLa1NUg1eUigjn7vSpl85uWdr8eaT56Ge+SpvEWuyptSNOe1IPSeTb6ObAp25VEIs9ExpKWTnwfQUQzHih3tbN6GK+RvvSaheIA9wB8LdqAantU6K+JITxZFUfnef1/a3LS++wz0AmltQ8FcbKxS7F0x3AGbIG2ySf3+kL7Az77UT9rygCh2fW0E9oy8BhnsfRSfb6cYQvcDRfy1+P37WZ2zWo8PF7NS5zWUz/DOErAbfdmU6GegjxZLaD4xVICwOyt1Pnen6wxjqlZnte4zYEKzO9NrBLbzSQ+j+t2EulS/H7S0pU7w1O1/s5j43iMjUF+N+x3pkeXhDr52rLjasnw7VZf0lfyjNH33A0I1e+uRJ6j5s8ep+qPHqOjtn1HVB/9MzZ88RsPnf01TrM7t51+gvjPPUd/ZF1itv0ZL996ntTxV3b5XyTCvvcib+5vk5/Pf3QGnt7u038abf0x/HFSTIQFzzxCMZBrJx8vDsHX31yi49teTs6uSQX2fQZ6loN2cyUo8g/ZaM6V4bp+V+J4lR+Xa+bjbfp/2WZFLf7m5nL2l8r4eu+pz9wwn1Tly9xYBMx4j3C7T3IbqzfvVkgZAGx2q4ff7qsjBzyEk7x7gI75X5NNNsPtnOvTo4oAntjU9Zfj2i8yhTgcucan/wm9vyAsh2L/HH9wIuwoTjoWpxNawL77Wr8cWGLCT6K1GmxqvSahOK8VMGAPUGNSi+sebVQ4KlaKYjd5TLlXuMJOJoEUNoXMo8TlVPBdhuAFw2lwS7iq/rJ6zKfU+BbWuwu+y4BPPXycClT5ap1Q6euPHeEMxVEV+2Md2PiAPn1jeJt6JV6WTm6HuqWOot2awgs9itZ0nTnBBXoGuXGlR83Xclgp3GeDSeJX8lhuSU5fVhuNNCqEa3sZwt2VIGD7SlyUmNBKOZ6Br6FVH+F1UerUJ80YBOtR6jKEeNaGuLfaqaWxoL4FCxyCFlQGKL/VSHP3pUw38XiWs0lmZ8wYhPlJC+iAr9AEGeN89inXcoFj7TdI775AxXIgWNgG7wWo+PlFFcRTWTTcYial6LTHf6kms9K3E9+a6jaAzi7QgoP5LlVMH1D1Jq9gU2FO3/53XnT8xB608YeiR09GNmabAcP2c25rt2a25oq0WHDNm7nxEo9d+y5B+kRo/+yXVffyvVPbuz6ni/X+m1i9+RT3Hn6HxSy/S0NnnqPfE0zR07kUav/YaLdx5RzzaF7MO0Ubhl6zOL8hyNvE5bssnR3sOORjmmPro5euGz17DQGWBgq6ckSY1JhpKd0IpYoDSNdDAQK1jQJfRblsBq+98VuR5SpUD4pZcAflOc7asbTjASbg9lxwYPtVtKnOGr5shDvc5caKz16sQO0xjMIRlsFZ60GH9usfXs90kwPm411XK71XC30OJzEdX1fHl8r4uyfkz2O11rOabEX7XI0t9Ln1nbswIe/KIjDcecYlLAf1bHPb6Y7O69EUj6kuLu1b645sjjvjakCa+7nPtEnKPTCK/3SBKGS1XUdMhTpu3HRR6hc0wOSrXA/Z6MZIRdzSE5AF8hONRECc59XYpEosJyNVUsqj5PhKO5/cC0LUpy0GeXWAu1eMwnWk4CL8L3JFP768Q21WvrZC8HYXk4ZPMzWrdW8NAb7jLUM8kP+/OAzaGetd9MZDxdbBK78hgaKeLFSyq4VE850eO3Qpr2Bus3q8J3IMdN3mlURi5dRuvrgzeHGSKw5zWn29WwfNCwdxELcWSQOcVm7HI7xI/K+ala6zUYwD60iAsGhnsfQL3OC+dwa7PtbHKr+P3wNjVGjImGOwDeaR13ZE8eqTxHAWrv6Fw0wWKdd2j+FChqPMEbwaMqTpzNbBSb9ASsy0+MaDZX+w1fLuFRsR3PB4Xq9gfEUX/XIXgBezfexTuqTMkdftfAPPfeyTVh7z5Ed2zXRKYbJvCPPO92muR1QfHjKn098h++Tc0cP5lsp14jhoPP0bV7/+cSt76GdV8+AvqZpiPXX6JJq68Ql1fP0m9J5+T/Pns7TdpXoD+Pi1nfaRGqJacpF0AvTldAIzJjhjfDBMZL/rOh2qkGA4hdwX3eik488GBDUNRemtor4MBa6tksFYqVzeo8dYsaWmDWgfAkwtFcLtYfP3Zby9gZQ+Yo/ititV5tRzd/RUCYicWnOHQg96DYyntI7zf8YB2+Bq2g8lrbYW8McDjYv4eyuV7cPYpdQ6I7/cw6HvLVD4eG4XxNgNADy92O7SdGbsR8t6T9uSUqcx3JvTFF/X4Y6zeTic8qxZ9Y2grttQT0pa6DUwJi0w3m5XnqgpdVDOMY5JDWKbVUBYoUDyOwlgG8OaTBNDF6xF2jpjT2NTnm61cc7ZHgN5jVoPze0GhT7epwjmzne3R0HvErIpXffH8/SFKwF8vaEdevYoCfJIA7n7ezXqa88hdk8HrDt9neLcD6qzOOzMVzBnqqIT3trJSb72lxqxCmbep6ne0uPnRytZ+S7zfAfVQhwrFBzvTGewIxedIz3qklxfDHepaKuDR1sYbodhMG8X49xOb62SI90tOXULvALiE3AeUcuel84ov2ig+3yYWsbGpRjLQnjZZSXpvJmm2dIparlOo4RyF6k5TuOE8RVuvUrw/h9V8Gb+2lRKLHWQstKGtzeDFSr0tkNga3Ui4VgcT/t0K3rVfpFjoNYqHfkKx8N+QFvhLiqBfPfAnjwx4SeXYU7f/2debP0x212CEc9y3kxWY7+/1dhXvOBtuhjaKThgz6R+Q/dIr1H/uBV4vkvXrZ6j+8ONU+d7PqezNn1LDx7+gvpPP0sTVl1mdv0CdXz9FfadfoOFLLwnQFzI+EJiv535C22hZqzhDroZr5GpJZ5jfI3dnPnngZcEg92Hk6EQrL4tMlUTY3ZvMa/NyokWsixWzCXOBLqxaLXkqtN6qFLmYxbTlC8BRQOfoKJDiNyhzZw9y52Xk7is38+cM8/6kslYq28mK3Nmr3n+f3x+FdDutvFpyabslV/Wvi/lMBb+mUgxoMI0Nj5MKHhsPtLK5R5oM72iLFpyx7Wnbs/1GxJtu2r6mTGW+AzvmfzusxbtREd+0L8QWu3zafLuumYVxYsE6VClL+sQZUsoprlF6zIMj9QJW8XtHLhxGM1DVyMEDzlCnUiRmVaof8AewAXY5tqkwu7kkl56E+pRS69GpNokOiMmNGYJX7W0WaYVD4RzAjmI5DHvxA+o2PnH5RPM08olcdZuhDqMZBnlbFnnbM1nJZzH0s6RgDkBHS4tH+tVvHCh1r+TTFdCDJtCh1gH7AIM/xM+FEIoXI5oss9WtQIrltMESMaIRMJtV74B2bFnl0OPrw7zsFN8Y5cdDB5XvOtZCh2pn4wUDGmOmnozxEob6PYpaGehNF3ldppj1pih1PKf35fBrqhnkDPWVbkqsD+Bo0GKHnljrDxCMJtyrY/x3bjDCbv6E4GGK+V+kqP/npHv+nmLBv06NY03d/hfB/A/MoqwfyvjmsOd6bGvKwqp4ab/hVmCj9JS+kH2YRq6+Rn1nnqe+s89Tz6nnqfmLJ6n+k19R5aFfUO2hfyHrF7+kwdOsyC/8mvr52MHA7zv1a1bsr9BM2m8F6LB53bj/Ge2VnVTjlRuvkrs1jbyd2eTtKZTCXj9mLKB3G54ZqB5HL/dooyzktl0MyP1OBmYHA7MLippVMYPXwcp5H/BG2B334fTGqh196/sIr/N9qHIU1j0KbQVzhN0ryMPXJ1Hr2Dwgb28Wxkm7Gqtud1+1hN6h3rHcfN+DqnfJl6t2NkAdNrGOvgo1CY6/x10GvLO/yvCONGmRhZ6t+N68jX/PV02XuKSpTAro3/IQ2A9UwUQcM9LvGntTdn21dy86Y4kwNA0YpQRHMBGthLzd2N0Wk2+wQsxe/DjyP5Svv1Kq3oPiZ94s1q4AcYQVKeaBYxRrFDPB51EYx8/NQ9F3SE4+ykpbDFmmmiS0L8ep5gM1rrGil9dBuUu+vcMEe5u0vwHqUamSb5ZQvITg4T3PSt3P//A+Prl8UgGfy0C/S+7au6zUs8hjzeETPId8UOsMdlTDo60lGXZHm9vD8DtgjiI5PqJQju9Dtfta0ObGsGe1HupAKD6DIt1Q6jCjyafYYDHpo+VS+S4qfaFbFLi21CcKXV8dhk0j6Qz0+NYEGZsjhFQHXiNgn2tjkLdQfLqRVz3DvYYSU7xB6E6nYON58ladokDdeQrWn6cIfz9Q6YlRFXqHSk9s2Cmx2kuJhXZKLNn0xPpQILE7s4MZyQnfbgvv3vONGJ/wmucoRd1vslJ/iiH/j6QF/8osnEs5zKVu/zOuM8kWtf8sofZI4HjcuV4VmumZcrVlujaKT2pLOZ8a07ffpqHzL1HvqWdpkIFu++ZZgXnLF6zSP/0VK/V/pZ5vnpK8OVzhrEefIMsXT9DopRdp5ubrNJ32tgxeWeWNwVbhl7RXfor2ay7I0CYPHOF6H4iJTHCkRnlhYKQzOnGQM0cx2biFAhhwwoDHQBRXXx3DuJahWi1hcSf81tsZ5NJLrlS4GM/gKFBnoEvxW5kMeXEztAFuABzK3N3HIB+qk8I770iyer1Vvq53rJ08423i/IYJajJsRZ5vkWI5+Hr4UfQ2jo1Hs6qAR588X+ec/N57pg+8z15nhKeskdjK4FrcudpiaMHTavSsREa+lwL6t/9k+0OzfeQnhqEdS3i3GoztsaX4ck9Am7EYMIDxDzMcR6spYC9noBfxicFQh2MbQ97H9zHLXFrZBquklQzqGHlt6SUHgAF0BlQE/e0C9E5VEIew/ZQqgIuikt5skwPgVZi/UUAYnbdJWP6hMUuXbBZkSc7dKhX5aKsLjzWpPLsMeWng77lGbTq6+Hu05JO7PpOhzquJd+utrNDbcwToPus9UerS3oZZ6QzyQFuaqnSXcHsyFK/u+wFyVvJBKGQJvWdQtCuTj5kU6cqSKvgocuv2QtJGKyk2Wc8bE4ukGSTsvoy2tUE+qjw6etP1NYa7WO8Oqpw7Ihz8ew/2FVIEYfyxcjKmahnYNWSMFJHWyd9b3TkK1JyhUOMlinbcJX2gkOKs0o3ZFgX15R5W6VhdxCrdSGyNRhK7E56Ea3klEdgfS0Tc3YmIo8HQAHffVYq4PyXN9wzpkb9ntf6fzLxbCuqp2/8X0ZB0pvwJGfrhmGO9KDzXM+bsyN9bLzsXWbn/pTF/532auPwbsl9AoRtsXF+gdlbfrV8+Te3HnqfGz5+ghk8eZ9g/Jx/rOf40tX76GA2wSp++8TrN8GZg7u4hWsn6lFZzeN0/Qlswlam7Sg60r9oK+HpVKblyVcujum+C08qMxT8FlW5RLWETNvKMWFgRs1JHhTtmkqPwjK9zAPZ+R77k0h2mk5xaJSrEnoQ5IM4w94lpTIOydhWYN6s2M2lRa5bCO2lXQ1vamFWObrkP0xiLyucjijDZQcFZm5p7jvnnsHsdb5MNAaDvh8X0hAWDsfTIrC0QWx+bi/t3ysyWtf+aaln7bu2e8cf+WyLjTVFt+3Nj+vqQI7bcr0FRSxuZrGZxeAuMMOAHy8jfz6q9r4TccG3rLWGYVyjP9e5S8vM/P6rPUf0ekty7xQyptx2E0yU0j0I7UeH8/KxaUOTS6oVWN6hybALMFrfIbIfk6uWI3H1ymTl3Cc1PqQgBvq4Mfhkyoc4nncdyn6GeRa7ae+RpyiRvWx4DPZf8nazU2xns7ZlSLOdnOGK8qoxYxcx0hqcKu6tjACF3XqGOWxRBXrs7Q/LpIcAcYMd8dVbqITjN2UtIH6s2e9RbVS59cYC0tRGKbU5iMtLDNraNYYqvMdwXuyQ6gXnsYWycunJlAlzM/oDik5XKKna0lOIDBazY+Wvx9xRtv00af/04fz2DNxDGvFXBfH2QEptDZGwN83HYSGyPa7Q/60t41h0J/94Grzkj6rQnIi4LzGiMsPM0Rfwvkx74B4oK1FMDXlK3/zfXlv/jEVfKfyAj9qYRcKdHNsa7/QNVG+uVlwML2V/qc3ffp6mbv5WpacMXXhZgD539NXWeeJ66eKEwznL0KbJ+/TQNn3+RBhjqls8ep44vn6IRfv3Ujd/S3J0PaDn7M4b5Z7Sed4TWC4+J1et+/TUG+l1ysLJ2s9DAfAmfOR7VZ4bdvebQE785W9w70cWPuxiiNoZqhxqMAvjKjHTlHoeFfnIBfW+FGV5nkPezCkfhG8LqyMkn29NQ0W4u91Cd6kNHeJ2P0poGRzjk0VH0JkNaapS5DdraRptUakBmnitHOD82Hib0sQnx87UvAKCjZW3e5tG3JkeMoDMHv3OzZe37qXP4u5Pf+mOzaOIJIxa6Hnes2vT1kS19ZSASXegxEO5OzkgPi6Nbo4S2A0MIt7NS7y5mVV4iU9H8qDbnEyfQC8VeLaF5+LEHx+rk8xBGVxPcGqVwDjl5eV6K59qk113l2ztUVTiK5ha6ZFCM5NwRZseSoTFtarLbZJtU04sBzZSZl0cYXgr5GsUbPogimJ5y8vLO2oO8elMOK/UMcjdksXLPIW8Hg70zT4Hdlm2a0NyTyWtBG+7fFae5QEe6uMgFTNUeZKCrqve7DPF7AnW0tIW7MK0tl8J96FN/QJrdLJSDoxx/7xrvtmOLfRRbZZBvTZKxPS1hd31jjAyBOqv2pR4F9dEagXqgM1s2C/rgfYZ2AWm9mRTjx9HuPH4+m2HOj/vus3qvIGO8luLTrNLhRMeKP7E1Rom9aT6O4r6R2J3RE86lSMK9GmKw+xK+7b1EcG+FgW5PBBwVDPWzFAu+wEr9RxSJ/AdTZf1Bqlgudft/cF35g0dSei8YYd9FbW+5ITTVubTbcs8zn3tUn04/ZEBhj115heyXXmagv0iDZ56jQQZ6H9YZtXpPP0+DAvrnyPr546LOexn0Yxdf4c3AW7Rw7zCt3/+c1vIY6vlHaaP4BO1WXyJHM8O8LUcq0x2YAdFXRh6GrvSdo+ccg6QwhnTKxkdW5gA4K3TfZA8/10NeBjtC4T5W7L5hVtOwXh1i1Y2QN4B74OqWNIqpkUltB0dZdWaFe7LKPRmCV0oemwMHCtxY6e91FEloHxsF1a/eqNrczNC7z1TsotqT6h2FfagfGms0ItPtWmSh26HvLfSaU9aeU9a6qfz5d2knndxF/xNMZuLu9Yb4xsiSttAdYiVsIKSNvLYaqlKnzF0m1CASjDkNsRIPDVYrRS6T0arJh6I0/qeEYsfzAXulsmwFwNF2JvnuellRsw1N1oT6GKra0bYWlUI6KPUOipne8qiaV0rfzNWbTnIR0wdeYJ4snJNNSJMJ9WrpV/d0FJIbJjSNWQJ1Vw2K4gD1fIZ6PvlZDcuy5VCAV5ABH7RlCdSxwgA9nOYk/J4mkE8qeYTeFdizpfpdqt55RfqVAU10qIx/Xlbq09i0oO++WwbhQJ3H1kdJXx+j+CavDVbUCMUvdKufG0q9r5BCHXeldS7en0VaxzUKNZ4lb/UpclWcIH/deYrw5kMfKiV9uIz00baCHwQAAIAASURBVCrSx2ooPmclY81OrMx5jSq4Y+3PGgnXMpaecDHcvZuBRGB/h4E+xqq9zAh5T1I88hzFwn9LUf+fm5Gcgyr41NmTuv3fRP7+xITJLw0tdFJzrFZEFu0T7q4S19KDk9pk2nvG5LU3aPLSSwLyUT6i2G3g1LNkP/9rGmQ1PsQKfPgyw56fB8y7j7FSZ3WOdrUhhjzC9DNp79JCxiFazT1Mqwz19eKTtFPFMG9KI5c1i1y8WXd1ma1qAxUCc/9oM8OQle005oj3kH8G8O4kN8LeE53k4aPb3iwDUjwCcQbrkFLXAnLcF7/1SrNYrdrMmdcctKeJD3xfpQlytUTZmzl1VSjHQMfzA6ZJzABy7jX8terE3x298QjJJ2GuivispmK3UsC03paW4ckWIzLTziKsbyfmXLcaehRDWR4zC+JSQ1m+Qydg0mTmb9FOYvi2Co3N0QltvsMTnmzUROUybP3D1eTtL5UV4PvK2KX+AMZyX3rDGyg4XCsqHvns6KQJXExag28yTGHQYsZL4I2c+aTKeatVLyCGko+Jmm03od6piuLMArvIvLKS1cyFSnkodg0bkKQP/ITpF4+qe4wxtdcK1DGxzdv+gDzN2eSpuSMV8J4Wvt+GnDqDvOu+uXJZpQPsgPo9Ueshvo+q9mA7g9x6WxY84gH0iFS8ozguVwEduXRWzVDrUizXX8JqvZKhXidQ1+H1Lqtb+tHjq3aKA+x8RPHcv6l6n25mlV+u3td2h6LtVyjacp6CVcfInf8R7ed9QJ7yr8hXy8+1ppFuL2eoo4+9kYylbjI27USbDPTtCUpsjvDi+/tzxEAnAbtnTU94t0IJ3y5Dfd+eCLlKjEjwNMVCr6pKeP/fEWl/8UgVfArqqdv/FczNIjji/xvt87hnryS8NDritTfsbNZcj4ynf2AgxA6AjzCoRxjgoxdfVEcG+bAA/dc0dvU3UsEOmA+eeZ66WZV3n3iWBs4+L68fv/IbmroFhf4BLWZ9TGv3j9Bu5XlyNd7k8zuDPGhP7c4XkPtgICOV7E1SdIbwum8aeeleBnsfA7KXId8tYXZlwVpnWrM2ihL3ALb9D+GcvK8gXmv2mitV7h5Sil29VlW1o1VOIgODVRKO99nrTWBjYlqzOkKRw7td1HmT9MMLwKc6eePR9TCPjrw/ivl4BTE7AwV+Mx1GaKYzFF0eWou7d+rI0ODh/uPUUJbv3kmYNJn5KzGZCbtvxrenu7WFjp3oFAN9vN6QwSgym7xCCuHcPQ+U21JvKflkfnntQ6tWcY5rFLDLc1OWgzY1QAyqG/7taDdDPj0JamlXk2iAxcy5t6tqeOTSJaferlS52eom7mvT6nOk3Q15+WmLGZpvkzC+spBVxjTSr44q+P5KlRLo5u/dVky+tkLy1t8jNy+4zCEE7+u8zx/Pp0BPvlhGilpnsAcZ1EGGc6ibAQ/FnoR6G/rT00U9Q8WHWKGHu3NU6B05bgAePu3wgB8qp6iMXG0R9Y0BLTEMbEFh3OqwKpCT+3bSl3vVYiDH563KtGaohKKY1d55gzTrFYq1XKRgDUP9wUfkKjhErkI+Fn1BwZbrpPUVsFqvojh/LWOlnxIbUOgTUOdKse+Y95PLuaAz2APk3d5I+PcHE2FPlRH23STNd4Qi3leld520vzQ3gKlBL6nb/wjz3zPDu38uE76M2Psx335WeH2qn4G14eh8EFh8cMrou/Aa9Zx8lvqOP0kDJ5+RqvYRVunjDG9MTRs494IUyE3feE1Go/ad4tece5Fh/jT18esB/snLr9LE1ddoOv0dhvlHtJb7Ke2UfEMO3tCiBdXbfpc87Znksj2QPnCvXVWYK7WbHHTSzVDvljC7d1wpc6k+H1WFa3If88hR3AbVLKH1WvN+rQDcN9wgdrHy3qhA5w2DZwTjUBslh+6FYY0dtrL1ajMxovLiaJXzH4TMWxS8za8JK1gUvcGxLgBgA+IA+nSn5NIlhw7/9ok2U7lbGPIdemS+xxddH19I+PdKWJx9ZA5lSRXEfQfzXd8z5+X+3NAjxxOu1Yb4av+KNtsWiEw26LBahbVrwFyocvd2F5LHdp/crGg9CFX3lUlYW+XG1dhThNlRSJe0cY2aQ1lk+toMCt2U45wMagGQGeTSjiZFcmYx3IzZx24W1D3cHPD7TSZD7UnjGdWnrnLopid8Mo8OsxuMYeUdMqCOJWrdViLDXTwtueRpyOKVSV5rDoM8nwHOUO8G0LMlDA8/eEA9xFAPdGbIkBeZ3mZRVfEYvYrwO2xig12ZB2AHWLWBIooNllIUa7hSTWfDZLb5LoY2fN1HHk5jg+kMetXX8PwAxVd6yVjspPhME8XHKig2kE9hONdhvGrzBV7nKFB5lNxFn5Arn6Ge9x45Cz6iQMMl2Uzog+UU479DnNV+Ann6PYa3Y4Fof56hPkXG9qQC/N60kXAsauRe8SU8GxuGf28iEfR0sFrHjPXrFPa8T3r0xybUv5+6UKRu/yfXkT8TS2ky3oiHvDcjW3Mdwbm+FWdPuW+vOVMfT/9YDGNsXz9BXV/+UlrRehnu9gsv0SQrcniz97MaxyjUiauvUP/Jp0WhD0Ch82vtp5+liYsv0cy112g27V2av/sRreSYMC8/Rc6a88rKmRU6nOFQhY4wtm+4USDtH7dKe1pgpksmlyF/rorhOmQIim9EDTzxjyl/dVHOJtA9Zp5cgD5UrxY2CliwdQXQobrF4hXgNuEtAG+WueXJ95QcPl6HwjkGvgfwF6A3y9dWX1+BXfLlSBPw692mx7vLLKhD/zo+jxW7Fl7s90Q3pqYM3x4K4t5Qxc7Kwz11nn73wmRQXT/iE/FtvnjnGOsjY/qsxaNNNWsIpftRtTmAohKGYD+rcsAa4XOYziAM319OgYFy8vNSRjRV0hMeGmt46PKGYrZZs69cFHmbhMglbA4FPmcOcVnoIS0Zjl58ZKgLNgJQ9HxUyt1q5tGbD8L0UdOJTtrZ8PUQ0jdTAyjGi4wpsIcR8h9QcA/0VbACZ8XeypuU+myZ3OZrZ5Vug00sVDoAn22G4FE4l6VmrlsxnjWN/LJuSxheQvHtd6Q3PcRQ13hDAKDHoM4BczsDGQ5yMj+9WVzk8PNJiH1liOLrALld5dUZ7OIiN9smBjPxadi71lBioor0/jyKoSiv6RyFao9TuPYbClZ9Rd7iw+Rlle7Of4/V+scM9csUacfUuHyK8UZC501Rgt9bAO6YJ4PBbiD0vjulntudZaizUncuhwzPuksq4UPOqUTYaTVCjrsU9b3NUP8nZR0rkZ0U1FPXkEeL4H6IIjg97L8YWp9tCs0PLfgnOjyO9gJto+Ky0XP2VWo78hQD/Snq/OxfqeubJ6kHefOLL0sefYAV+bDAnYHOj8fN0HzvsV9Rz5eP0SiDffraq7Rw+y1avPcxreQeoa3ib2iv4hTtlR0nZ9VZcjdeJ2crhrDkkNNWJDavYibDUBU1O2kVFe7FUJQJjB/tFrgHprBsvDqV4Qz6xaX4rUZC7qrwrUrUuVTMDzfI3Arc90sFfSM/bpTNgwqfK7D7xhXMAWaBs0xJQwtbE39fTSqnj+9ttNnMmaNLx/rI65tlEJbPrgrwXH1VB5X1KLrDa4LT7Vpwvmcvsj3Xb0QD1/lv8IxZw5CyfP2OnpB/ZP4DPGXEApfje7M2ba51JzpRGwmPVBt+DDPAdCL0oPfBPrFSvNsfeq23SIhd3OT4ny8EB7lx1VMuXvAMsOQEt2jS8Q0fZ+Ajzy7h+BkVkke7nMYg15aUJSpyzOIdb/avq7x6h4TrYwjLTym1Lu89q6IAsZlO5Qdv2sdKMZ/k+c3CO1btEZncBttYhOKrWI2XUcBaSF5W6wJ15NTbzZY2tLN1ZkmhnB/T2jruytGf9INnuAPqvrbb8jiEhUI5G+xhcynSl8+rQCaqob88hhw6/xy6bGJsyknODL+jMA6qGcVxcJCTPn1YyaLYbaRMhrCgbc3ozyat/RqF6s9QoOYEhetOUrDyS/I8+Ji8RYfJmfcuuR58SsGmqxTp5NcOFFOENxWIDBjrw6zIZ1UeHcu5KKrd2J1Wjx0LhuGY1xKutRBD3ZEI7S8kgvsMded1ioXeYKj/o+kslzKgSQmCJMyRtpMiuOjOchWDciIw2elgsGk7jXeNqczPqe2rZ6jj6FPU/sXj1PnFYzQg4fQXaJiBDk/20SuvijqfvvEqzdz8DY1dVDDv/PwXNHzqSZq/8Rtauv0OrWR/RJv5X9F20XHaKT1OuwxzR+UZctZdov26G7TflE5OPnfd6MJBsS5qe9CvjWIyhiXC7n4GeGiun8LzdgovDlNoflCgLuNKxcDFhPKgAqkX0yQBUIAYJi94v3EYv7SI+Yuo8ZEGpczHmuSxtJ09AnNlYIMeeNVbHppWOXAxuplEkVsHhTHMiheOIb7eBWfwMSj1ZqkFkMK5gSrZqEDd80bC8I61hAKzPWvRvVWLoUeOSd+/irqmCuK+oydlMuz+YzL0zxPejbr4ctcSAz0QGq7UvTCV6SpgmBeRX+YIV0ihHIrcYAELUxcBvDnIRc04t5i+600KuFNqPfRkV3PQZZIbgzmGHnK8bqZVzFVimBVuFo1pC2Yb25wJdBkOY1M5+KRV7IzqX5ej9KY3iSqXqvpxNcwlLEV3plo3l+TXB6sp2FNOQRtfAKz5DPUcWT4rgJ4jY1j9HWhhyxIveMA8INXvmQee8D4LcurpqhqdV7BD9aZLPt0sjItg7Cpa2cZqVCoBPyNAnnSPWxuW0LtYw26O8nGIdPzsE6zoRyopwlAO9xfKpDe9P5diXemkWa5SoPY0rxMUqP6afKWfMtQP8fqIof4+uUuOUKj1Fmn8t0MePzJQQnHeNLEaJwLI92ZUGN61wiDnx84lVu6Lot4TjiU94d6IMNRdiaBjJuHfrzOC4gf/qrS10UFbW2pq23dbmf8VxeM/x6jemHunMDA/YPeNtu54B+tDrp5yY7P6Bg3deE/mmnd8+QR1MMx7jj1JQ2deoCET6BPXX6fJG6/T7K03aC7tNZl3Pnjqaer96nGyn3iSFm68TGt336bVe4doPe8z2i9hmD/4ktcX5KhimNdfJkfDdXI03SY3wxw+GbhGwZMCEyLDSUhOA5Q9FF4YoOjSCEUWRyg4PyA5df9kp1TAK7e2VhXqHmlSIXtMZBtrUUBm+GKh2lxy4ehpx+v4WugxQ+1qNQvsERWQNW6G09Eyx9fHAGAvjnFtB0APoQhOnOzMwrdp9Vg2DbCmfaQ4T/rhB6p010ijz7/Qv6C7d6r4+n1IpT0k/ZGKoH1Hgf57ZgHF3/F60wi7C/Xt8anYXLsnPFqt+zBPmGHmYYXq7WLg9RSIN7IHloo9xbyKxGBGQu52hNt58TE0XGtWuyuooxhMVLM5cEUmqyEnPmMxB5m0SYj5oQq3mT3pnRKqjyBEbc5XBwxl+tuMCuGrqnf+2HSHqH3k2aWXG19vrE4UuYbvAUpeWttazDx8o6QPpP2ut4z8tgcCdR+g3pSj2tqs2bwAb2UXC7hDsUvPejvDvY2VugUQv8tqGO1lGZJLD8FwpjubV46YzaDqHX7v2nApf23+fuas4qYnc9LXx0nfnKA4etPXRxTkV8xRq/jd8EZEoN5XKJuEaHeWTGHT4F5Xd4Z81cfJV3mM/FXfkLfiS14qr+5gqHvLj/FG4x5//SJpxQt35/MGyqLy53tzZOzMsDIHzJdNoC+YQF9UVfDezUjCt+tI+HfR1lYlverS1hYyx7FKMdTBYJfUReQ7A/M/MWH+M4qGD8W9znuh1fFe/0T7hnuwNuDsKtV3LXm0XHqR+i6/SVYGeufRJ6nzy19R7/GnpRhuCNXtV1+jqZtv0MytN2nh9ps0fuUlcY0bPv0sjZ15hqavvkALaa/S+r13aCvvE9p9cJR2i47SdsFntMsbVkf1WXLUXSUnK3MPb8DhYAmxEUZxLDwr+PoQ5utDSEY597Eq76XwXA8FWaEHZrspMNdLwYUhU6kP8PM96vkZG0O1neGrlH0gCXKY0fDzPn7fgBkel3y7QLzVnHHeYj42W88kD96ocu6onIeXO0L1/HyQ3yOIIjgAf1QVyiWVPZzhAHT/uEoDuKX//SHUvfZ6nV/jiqyOTcQCjnwi4zWV+kjNQP+un6DIt/znONEzYjKzN9+rrw7uxObbI8GRCsPHEPfYcsXXXcLuPQ8Y7vfJC8jjeVbwfga73wQ8jlC9YRSkQbWLzavFHLpiOsYdWL+2mgNcOhXkDoa5YMCLVX0MOXfTWU4z29dgDQtVHptRHvHwipeQveTcVW5eMyvsVSSgnXQJ05swN3PskbFa6asPo2++t5ShXsiq+z75GrOlCt7TmEEe2MV2AO78uM20imWw4wigy+rIkPa2ICv4kC1TitJC3Xni9Aagozc9OsAKe6iY4VwuPeZS5AdbWFjBotJ9Y5xBO8VgH5PCuPgqP7/ULYNeoOwxMz3M74cWOoT1ZUhMyxVR6b7qEwx1VunlX5LzwWFy5n9IrqKPRaX7ay6QjxWMr/kmf85d0npZ5fPvIL4xQsauKpQTlY7lVmBXR7S2rTDUtyIJ784OA30sEWCoR1zHKR5+Qqa2PZzY9ofmhT4Vhv9OKPPYX1Nc+6Wh+T+P+fZztO25bu+4Zc3ZVxNw9lToDob5WsUVmsk7RsNpH5Ht2HNi3drzzZM0wOp7GD3mF19hZf4Wzd5+h+bT36Kp66/SAIN8+OyzNHXpeZq+9BzNMdCX0l6hzUwA/SPaKviEtvI/o+0HR2i39DjtVV0gV/MtcrdlkQ+RxP5SCvE5LRv3abPIdr6HQgxugBoKHT3ogVkG+Xw/hQDypVEKY/H98PwgK/hBhns/BZFfF6Cj6lyBPHmU+5MKxj4zPy6KGzAfaZT8O/rVlcNcpekmVy3hez9y7gjXs1oPHqj3Fql2D0y0mord9Jufsv6bHLxECCbk40Zk3hbRVuw7+t5CvxHxpSFtmpqwljpJH612/4lUuzuXWmKrQyvRuc5AaKLOCAyWk9/0c5fhLFgDZRToL2II8mKIB/uKKYDn+GMyp7ynQpnMYIALwC55a14I0UuFevMj7nBqAIs2azrGyRzxThPyD6vdBe4CetXypiHELqH79oNBLpppFwugK1MaMzxvAl7C/5IGMNMBk8pHHv3yKJgL9JVTgKHus+SQpy6dvLwE6i0A+z3yWhjobSiMY6C335Owu/jBI/xuy5IiOsxdDzHQw733KdynDGZkCdBR7V4uE9mQU0dIXb536UkfEJMZndWzsTPBcFdgx9Q2baxa8vDynnCxa0tjQF8nf9NVCtSpXLqv8ih5yz6VNrb9nHfJlf8BuYs/I1/VafJWniJHCfrVL/Hn55I+Vkdx/r0jIiA5ddcqkXedyA2wLymom4qdP6Ybns2Q4dnaMrw7diPIakAPfkpa+DHpU9f8f2GG4L+fmtj2XciZa6zMoz9niByJe7fzte3F7sjy6Mp+T7Vvt7NE2+94YGzXptHSg5M0eucwjaV/JPPLMQIV7WdDZ56jkYuszq+9TlOszGdvv0Vzaa/TxJVf08j552jywrM0fv5pmrn4LC3dfJGWbyPk/ltay3qP1nM+pM38z2mr8IhUuO9XXyB3yy3ydfI5xxvV8GCxcmZEa+yMGvUcnO6SkDq80QMz3Qx0XnyEIg8vjlB4eYzCa+MUWR4XsIcW7PyaXtUuNqHayKTvGyF7M3wfZCEhJi9Q7Y9WxqPKfcjsX0cvuvSjV0qfuhTTSW5dgTxo5s8B9oCp1AXm/D1jqZx6h5jIHDwv+XUbhee6jMhCbyi2PrwWd6xYDC18nv82PzNndKTy56kTVcLuP0IPacK/U6Jvjk0wOD3B0Todu17k0t0ItaMXHcNZUOEOgCNf1QOwM+z5vgB9sIyCsITtLVOtYiikQ3U8XOMQDhtvUHCdNUGMJWq6xQS27WAJtJFbT4bmkypdNgAqvB6b7Th4Lymgw+fhvvSqq7GssWQbnFTYW8wiPcvDNdmsDHJQpY9IQ8d98rZmkrfhLnlq75K7jo8tmM6WwVBniLeiKI4h3p4EOkLx2cqMBlBHz3p3Dl9k7jPIi6SwDWHzKBYUxES9Osp9c4Y8nPEwxGV1SMarGpu8MGp1pZd0jGMdqeCNQSFFWaVHOjMo0HKD/I2XKVB/nlX4CfJL2P0r8pd9Ts5chnou2tg+IE/Z1xTg1zkffE77+YfJw4CPdOVSjDdWcbGJtfPXGheAA+jk3aCEZ41V+mrSgEZB3bniM1zrawnPVocR8rDUDx5mpf4URbz/lWKh/2IOdvnBIz7wKcvYb1dq7vuiAOPRn1DUfyju3s7TtuZ6w0sjK6G5QQ9gvtdeZGw33qONyss0m/sVjd/5mMZvvUe9rLx7TzxD/aeeZWi/ROPXXqPxG2/Q9K3f8gLM+bmLz9PExRdo/NxTDPWnaOHq87TIQF+6+RKtpL/BQH+fgX6Y1flR2kGFe7nKn3vRPsqb6fDAA94kV0rXSxhuagiJSwicoYw1yaqa1TnUN1R4eHmEIisM8tUJBvoERZaGGeR9DOseaW8LTnUehL2Rfw/PqLbbMAMVQA/MmIo92WImVewtqudcRqRWm/PWqyTErirbW5TiNjcKBxsGMxKAo4A82eY7i02EVdIG4bluYohTZL6HwvPdDPQeGciS8CF/LoYy/2Dmz1OGMt/xE/ZRk5nnjIg3Lb43160td+2EJxoinr5iw9WVT+7uAgG6lwGOqWvBoTJR7jCdAbyh5GFEg9GroWFYw1ZSGBPYUJQGG1P0pqPqfbrlYY/5dKtZKKfC4BIqQ15citzMcat4PYDGCj4mRXPdZtFc1yO5drXwvGZOaQPcpaBulpecjMqQRkLx0reeVOgtyn4WFfFwwuNddaC7RHLqPmueVL576u7JjHVvM0O+iQHefJcCVlUYpwa7ZJr59UxToeeo1aMGrCioszJH6Bw5caQQ0I8uGwz++acfphRQFKjDGpYVO4rj4qus3OfbZXobqt1jCNv35VEI/e+tN8lff4FV+mkK1p6gUM03FKw4In3pyKE78t4l5/1DDPyz5Ks5Q3s579Fu7vsUaLompjcR3mwhAqDz7ym+igr4eYb5OiV8W7y2ee3w4w0GPeC+oiUcS564Y2kh7t2yGAEXQz10ROarh9w/Y7X+I1ZvcAr7D+b/U8oH/tsB8983w7j/SbocooG3DZ8jTd9lZb5kXwvO9PmCM/3aVluBgbz5dv0tWi89RxPpH9Nk+mGyX36DeliZ2449IU5wk9ffoDFW52NXX5MK9+FLL5H97LM0fPoJsp94nCbPP0nzV56h6Uus0q88S5MXn6O5m6/SSub7tFlwhHbLTtNuxRnar7lEnqabcv4FWJ0H7RUUHENLWYOyUB1igI60CtTFsGWKIT3HQGSQRwHx9UkFc1boIaj0hSFTmdsYojaBOlrZgqKUbQ+L62D4Yha7IcfuM1vMfEnvdYB7uP5gSaubvV5a2/wjZrGdLDWFDSBXVe5d/N5dB19HloC+9SH0J1UoPjLXqWsLPS5ja3rMCDrzWIi9/Uj+PFUQlwq7H3i7/5h3e0f5Il4TX7MvsAJGtbvhgzK33eeVR57OXCmMgxIPSAFcjZpHjgIzCa2zErdDldew4lV96wi5Y6G6PDrVqPLYqHyX8aktEgKXKvTJhoeh8KR/Oyvx2BwvhppUvS91qz5tc4CLgnvvAcyj5vzxGGaQL/WIiQv80w9c5qYsD5W6FMk1mRX5rVJIF8HPIWmDUoG6l6HuabhH7uo7vG6Tp/oWP04jL0LvMq3NBHpnssWNF8Mc7nLBHuUWh4EtoT4GaP8D3uQw2EeqJI+uhrZ0yHhYaWNb7JLqdh1gx8ImBY5xizaKIyUxWk36WCXFh4so1p9N4Y47DOer5K89L1D3VX5FgaovyV/yMbnvv0POnLdpL/stctz/gMItNwXq+/n8sRpW6bz5CHVkyEbDmGuXrxlfGVI5deeyVLwnPJuU8O+ZYF83WLVrDHaX4VxdiEOpB5z5RsR/0gh73qWg5wXS/L9QY1gF7H+aHBCRusD8TufMvy+jUAHzWPRtI+S9GXduWGKbkyvBmW5fYLpH80/YjI3GLNptyaKdujRaKTpF0xmHaeL2Ieo89jR1nXiW+jD2NO0tVuRv0hhDvJ9Ve9fJZ2ngzHPU+/W/UN/nP6XBIz+lsRP/SsPHH6PBbx5nyD9FE+efp6Xbr9Na9oe0kf8l7ZSeJkfVBXLWXSZncxq52rPJ1VUkHuooOsP4UgV1M7wtFqq9osojy6O8GN44St4cIXaVOw/NDUiuPTTXI3ANTyoFrtrI+LFpwxqeajcr3JO57RbTTEb1lXtHGsgnk90a5XFw3MyNm6FzcYkzP1cUOQA9rTYN0saGSnhsEDCpDdayCNvLYJdyvl9BAVxHp9u12GLvXnxvsfuRgSx/kcqfp27/42CFv1UmM84cfWtiRJttd0XG6vRAfzGh4h2FcJ7ObHIzDAB3X1+x5NNFpfeXKJU+xDvlIcxHrzKHuKhBLgJ3mM6I37tS64A6pq1FTbUuFepi+YrQu5lLB7illY2VOSvX2Ar8zs0+dQFhtwnzLrMKvufgObz+wKxG3Ona1YxyVNkfgL3NVO2qfS6Cnno+cUJ9pQzmZPidf+56/pkrGeiVaZJf9yGnbs0yW9tyeGWbUM9UE9u6swXsUOgSeu8rUErdXk4aAz2KvPh4rRjNSGphzvwZF7rVgBb+2aHM9QUs3LeSDpU+UUO6vViAHu26Q5H2GxRuRi79HHnKvyZX8WHylx0mT+H7DPTf0m7Ga7SX9Sb5K09RuO0OuSpO8sbkLIWt6bxuiwc9HOX0WdUjj2I8mM4Y+6h4R4EcK3bvtqnaNw3Dtx1JuLcchmdzLuHbsxkRXyFMLWQEa9D5KUW9ryHHShT7oRkC/F4K6r9z14PkJv8HanOm/5hioTcp7Lme8O406LsLM5GVYRerWS2y0G/4x9poqzGTdhru0FrJeVq4f4zXVzR6813q/OZZGrr8uoL57bdElSOXbj36K+o59WtxjbN+9GPq+uS/Ue8XDPWvf0EDX/+rtKyNn1fqfDnjXVrO/JjW81EMB6CfF4XuaLxFTisGsRSTs7f0wB3OL21jrMpZbYeRK19Az7ldVHgI4XY8Xvjv7H0JbFzneS1QBEUQBEEQFEURFEVRFEVQFEVRFEFRFEURFO/1tanjOI7rOIl3y7ssybIsy7IWS7K1Wvu+kBRJkRLFXSLFfd93DvedHG6z73Nn5t473/vO998hGTd9z03ivj6UA/y4M0NyZkjO3POf7zvfOX281By6MHMGcojmIiKeaxbWHJZedpMCdD6naAB7fA1z4tYsucy4D9WqXvigAuMQs3TMqUOxLgzcepzoRqYvvXI1ix7B5gFAPljJLP6h8n5vKyAv0uKYWPhhJoPc9dZ7vGkpMqO2R1psotWedM/X8EbrhBXI8kebeQubl4278W+qcAXjaTMRPm24ZhriU60r0cGHWqjrvhmUWXRe7bkUbOPFIB/uVrawwfYCmVOXvnonHOTuiYNcGD311nwKwrylDbeLFGMfeKiEaeIiZwF3Sqk+pUbTFJBbUarWTHqCmWp8DaRb1kvu1vco4G6RJaA+1bahDN+khHVS7q9RffUxNc8uqnvxpC8Xhq7x69R4YwJgD7XmMajfJX/NHQF1T9FV8pQosZy/Jl3m1RWgZ1CoMUP10C1hHEruYRlfQ1b6bQH2KExmeq2wFmucLoHXI4xc/d4Jq8IgDB1/l1Hlfhe3PSBjqJRXMSW6slScaguDeu05CpcdI3/hAXLn7iRv7ruKpWe+Rc6018lx83VyZb4jQB6ouEAePiGGa68IqMMMB054sT5+XEunADGe6ZjgNSnAjrJ7Msig7p3HdWbq9ggvBvWlyWTI3ZLUAhXJqLfQDDhzzIjzPGne3aKEV6D+7U1Q//8OzDeo2XlzlohuM0Puy7yxq9Id08PG4qhDm+rUIhPtJnrPwd4KWqm4oXrnaXto8vZ+ZufvUsOBZ6hm71N8fTuN39guiWrth39CTft/TM3M3FsOPUu1O/+ZGt/7X9S691+oYx8zdV5tHzGgf/KvNHL6eRq7uIUmrm2l6Vu7GNAP0ApK7vz+XX1wToxkXAzoKn60UKxUoRhXIjIGzfEWBvKUcl2xcIA62LnGoM6vn4G8nQG6XSngIZYDOx9T4Ktm19UxqsRocjtsCddkTtxSvEtP3JpRT20G1gRulshNbuNrQ2ojEFkzl6m1AB199jIV6MLn1EDLfTkKQ2/h3xE5FO33TSZFkfh0xzw2V2TGU4Yym/3zzcsvfJC/tqHsvhdiC2Ohbzo+UhWK9hToAPCgpWSH0QyEcnCQg91rEB7uvQ+lhy6xqczUpZeOYJSeUgb7IgrzBw59dWHpAHWbSl2DNSyAHD1xfc1Qpml9WV9TgG31ynGf5bSWmGgV4I7PtItZi87XdTD3saY1VzlxlhtRwjgR1o0pRiziOVQIUmNszJi1/lK1ZKytnKLdpRTmXXKggXfL1Znke3CTAfEqeUuvka8Corj0NZYebsqkaEsWA3f22thauFUBupTe27JF2BbvVHawGpTuCGyxHPDEWEdK761qDl1+p1Zm5/w7QBzY/4Bi3fclgU3vY5benU16ZyYlmq9QpOw4BYsPkD/vfVG6+/N2kidrKzlvvSGA7k5ncL+9jbzFTKSrr1Co5uoaqMPGNgxXOf6fYWOj88ZHxtowp746oUbaRCy3oMbZYDzjmo6Y7hmP4V6YN/0r48mIZzgZcvXxSabODDmyTc130AL1v9gMdvn/jpl/W4F59EmKB3ebAUea4ZlvMFanJhMLw67E/JCmTXWbYLqR8S7yd5aQo+omLeQfp/H0vTRycw/1fvYaNX70FLUd/ikNXniTBs6/Su2f/EzAvGHvj/j4NDXufZLqdvxPavngMQbxH1AH1oeP8fEJGjj6E7Kd+hnZPnuZxi6/TTNp79P07Q/JnvcprZScpeXSC7RaflVyzz1MGFCaDjGYAyAFfPm8EJvpofjcAMXmBvl6v/TPUW6PTg9YbL1TVO0aWDzm1Jmdp5i0hp72SOOa4lzWmGLYkQ0ubyEpoVtl9JRxjMyt16+r1ccsVo6NBsxkwNxhViOOc1aJXURz5RTmFeqHb3yx2G0Hu+DWWSzpccHuIor2lppMBELGXNe0EsTpu/n/9b3NQJbNy+c/0L+9oez+Brzd9UWbDSYzsYFSHcITPwOWvzlT5tK9DSi9p8tMekAYO7PZzmKldIdaHL1oLAB4D4CynGKDFWsGM9G13rXqo4st7HDVBptYNVIWR4QoeuiTFtChLz7TpsJMGPD0FJsFGwcrF3V8rZTVMboGm1UBTCu5TTH0eisAps4qwVfKEiMc2yPF1CHiG+DrfeUU6eCNSzMz9cZc8tVkkffhLemn+x9ep2BVqux+m0LwgW/NVjnmOFpL0traMuV+OLbFpOT+gOKDD+U5E2DpslFpUiN3wtRb+PfrEJMZHXa4/Dqj2Gh0F/Dj3FV2sjCraWMgbrlBWvVpCpYcpED+Hmbo74m/uyd7G4P5a7R64zUpu7vT36SVW2+Rr/Q4RZsyKNJ4i6Loozfz9QZllqN158vr0THWBgX8Cqxip6259Bmrvz5NhmPSNBwTccM5GTLdsz7TvwxXORcFV2eTgdUOM+S8K4ltRvzxz4H65gnnv26VLgXmf4k5c9IC+xjMs3nT1sb/7/nEwpAvNt0Tj0/3mRrAkEEQwSeuprvkqLxFs7mHhaHbLu+gns+2UM/JF2nw9MsSiQpBXBsA/cBTVL/3CWo6+DQ1ffQkNX7wA/FrBytv3/s4g/u/UOe+H9Lgpz+hEQSyXHiNGfo2mmJAt985SCtFJ8jx8CI5Hl3hTcQNsXoNICQK47HMdFEO15gYxKa7SJvtU33z6V4F4Px6w8LGO/nYqfrmMJYR9t7GANy0pmgHeMuY2gZQD1uiuKg4u1kKeFuNrFBKub7B7jU1bpbaEGgS+awYu5pBr5LyfJDPMSi1w6oWsc8R3iREhqrlOu7D14J8HpUJoeEqPTHeGNDtvaNGYDUHk0kqj2PTUGbz8m8/0N+yMo2fMWOhs/rSSBszx5W47ZEW6bpvoofurWcwa0gjjxzTBeQDzdm8csVxDYAOlbsC9FKV1ibiOCjdq9aNZlJMOTVfLqEqlmgO5Xj02THeNVwu7DQhPfVmKbmrknSHsHIpwYPVgokzSMt4GxTkMJORMn2q7L7OyNE/l+8VBl8nAJaaSV8rvfeCqTMj5g+ThmCatvsS5uKvyyFfZYZkqvuKr1Cg/Iao4QONdyjYdIfBO0dmYiMAb4jg2nJ43SGtPVfsW6OdOeKtrjEblk2DCOMaZWOiz3arasOECqFRXu+tsnHB746qAUxwIm15qnzfykBcf42i9VcpWnuBoo+OU7jkELPz3VJ29/ByZ7wtYL56fQuzdQb3m6+SI3M7haqZofP/Mcz/xxhvOhAmA1c5gLpusXQB9cVBXjYxvTGR1CYMfUr12J0C6rrpmtIN93TcgLNcyOVjQEc5sM0MOjMoGtypeuoilNtMa/uvXaFTYA6PgXhkzy+A+epEgNluPD7VZcbBchnQoQiHAMxZk0ELhadpMnM/jd7aQ0NX3qX+c6/T8OW3aFDA/CXq5NX2yXPUuP9pmUvHfS2Hn6GW/U9SGwN5MwN5w/vfp+bd36euj39MQyefp9GzW2js0ts0eVOV29E/dxSfImfZRXJWMjuvvsGk4jYFEec8WKnK4BCvoR8uhjLKVAbsW4F5q2Shh0fb1RrrUP3z0VYptQsjH06xcSWEi2zoe4fFdU4Bsup914mILQzRm61uzRo2nAJ7WUr4Fh1TwjfN2iQIgwfgS7m9Wh4HZjj4/rUyvYjkqkW9jyRLxFPHhqr1+ESLT18e6TMjvpv8/4JD3Hc3A1k2L7/sQ71mMgO1u+GcqEhMNE7Hhx6FIv0lJkRwvsYMctfdJHftTfLUMajXp6lVl0a+unT+uhLLiQWslXgGX/VwLxTw5RLekvJ2V8Cuktikh46SsxjMYPa8Sq0Rq888plzfVB+8wTKUSRnQWKpwKLX5tp4a/ZpSwriUKA6l+DXQH21QC6NsQ8oqFuxcAB2WsbwZERc5iPgwhtet2gah5nsC3gFYw5bfJH9ZGgWZtQfrsymISNnmrPXIVZTe27MFyGMd94Sdiy97O7zV70vJXZMEtiqpLEiM6kI/6fO90j6ITzUr5TsqEgB8bGowAgj9QkuG8olvvElhlMxrII77jKLlRylU9BF5cnaQN2cnubOYpae9TktXX6LFyy/QyrWXyJnxJnmLPqFg9RXyPTwj4A7TG4juoi2ZUlXQ+X8DoZzBmwlxrsMYHebjAeaeOcXaBdT59uoE6bCSdc+YSd9KPOlf9Zm+5VnDt9LETP06xcJWBOtmWtt/0c/9+uiqEX/cDPt3m0F3puGxtyUcU/M6g3liaTTOgM5g3kPx2QHFahmYvK2FtFpxi+wFn9FU9sc0nX2Ixm7uptFr22n8OgP7mVcZyJ+npo9/Tk37fyIiuK4TyDn/GbUeZnDf9wNq2vW/qOn9fxZ23v7R49T36TM09NlLNHTuVRq5+BbNMjtfyj0oCvfVYhXE4qq4xOz8hnhiwH1NStcMjpIXDrvWkUaZO49OdKiSOnrnIoZD77xbAD003MK/A0AbgN7CINqkfNX5HBFBv3y8RZTtmhWoErGAPJoC3JGU8UuNBegAZOUfj5/XxpvVDLnYV6vHSW0GwmtiuDqVkz64zvKV2QyAvFolxiHKGq1NkKWB8nhsssXFG+kOMxY4bync/3xT4b55+fc+2L9nld23mEFHpjnX1RcbeuSK9hXHQ135DOp55Ie6HX10eLs33xYL2AADuR+BJnwU+9feEgFz5cxWy2yb10AlRQXUH1n3qxzzlK87RtQ0HGX2vFoBu2UNmwpowew2/MgBOGDtMemxtyjWjr5zqvQO1i7l9iZhmpJBbjFyYb9YKUCH4t2yhV1j6IMPrQhWtcQEhnfJiF+NiPd7HjNzBvYq3sA8ymBQz6RQwx0pvYebbgugK3OZTOUYJwydgbwjj2IM7HEZXyuRzQ02J1Jyn1L+7nFmxfqyTfrYEqcqQS7t0kvXx6vJGHlEel+h2MnGILpDfGv1eQF09NLFOa5gj6SvYSbdgf552mu0fO1lBvXnaJWvr2bvJG/5WQb1q+QrPUH+yotSzoctLCoMmFHX+W8Cpo7nNmYZ0Pm1mPYB9NClr76mhBdQHxMhXdI9aya9i3HTvxww/YvTqqfuumqB+v9gpv6dTab+X64y9w21kTf+CYZBpneZwXyJmfm0XV8eDekr4/H4gs1MzA/xhtPGgN5HsakecTdzN96lxQcXyV50hmZyP6XZ3KM0kXmAptJ3Uy+Dcguz8YZ9PxGBXOfxF2QGvfvUC5K41n3kaRHDtX/IrHz/D6iLwbznMMD8RRo6/TLZ+Hunrm+nhdsA9P0iiHOUnGRAP0eOStU/dzfnyciap72UfN2PyNeH3PEq8gPgwboZzGVNKlGciOBg+zrOi9l6RIRwLXzeaVln6JYrXGTtuN4zT62UPWtqNl1d39hvbxbf+Cj84sHsU/12gHRfpZpLx6ibAHa5jLmFmexgRaxwqTATC7QSUO0MyYRQqRkbroro0+12/t/UIOGO/2ePWQ5xm+2szcsv/XB/0/IEftzUo6cM10xdYrJpPtZXFAm3ZZsBjK61ZKteeS+z1q77FMbIGgM8MtIxqiYz51aEKlg62LksRJbKCFvpBrDfYC5jMWTcn5Axtiopna9bwaZS1xqUMG5KieT0lLmMNfalBHYMflNqBEytZtWHn7CEdmDyFugrz/g6mUUX5bm1UsltMj9v9daFsfc8oHBrETPyXAowkAcqeCNTwRsZPsEE6jIo3MjsPMXUW9UcuoSr8FFm0i0HOQjcUAkQsxlUDWR0DRnpzNAZOHUGdmSlJ2bVRgWvVwCWNzrGMP/MQBHFe1JGM5coXHGKIg+PUuTBEQoV7xdQ9917j5y33yYXQP3W68zQX6bVmy9LGd51/wBvBK7xa79IvgenmeVf49fEoA49QU8hP34Zb54qpZ2hKh5tYnSDcBexhU0FugDQoYqHgM4l/XYo4eOmb8nHgD6ZDDpqzIjnKkxJdAXqf7ppgvFvNtO/9Z8dcLNhZFVlmpuJLVCzG46pJmNlfJZZeUhfHNb1xRETIJ6Y6yeAuj43KGXsQM8jctVl0UrZZVotv0L2/JM0m3ecFgs/o+FLW6n5wI+pmRl566fPMyt/mbpPviTiuIEzfJ3Zeef+H1LbB/9E3fseoy5m6j2HnqKRC6/SxNWtNHLpTRq7/BYtpL9Li3f20NLdjxnQjzKgM0Mv5+ervE6Omtu0ys/v5M+hCyrwjlIJMfHx6wrC85xfo8YbD22qWxb65aJ2n+yUloF4t4sgroNBuGXd3AXiuDF1G+Cu1rpiPcXWAdQo8YPJg5FjtE0FwLQoQB9ViniZV0dAS5eKYpUs9V4+F2K8bQDVhUdiiR2xVaoeOpIgAehMJADqSI3EuVH1z+tDxnz3dDKwCIe4XZYg7g82P0ubl/9TL+0PVBSfuSsZ8eTr8z3DcVuZL9adpweZfXpqbkgP3dcCQVyOjKmFmXVGMH/eUwIlpmK4wnIhjCtRtqqYSYd7HPrSAEiksFkGL1HbI8WI0TcXMZxl+TquVO4Cxhaoq4hVa1wN89pSbldJbVJaB4BbJXdVdm8TdinldyuCVT1GkyrVj1ne8CMbZtSHVWpbYsRi73hd1mZDMtU7Uzax2cLOg5VYtyVPXQRyDekUgh1sc6bymUb/XBZYugLzWE++WuLvjrn0crVQuQC4IyfdjjjVHiWQE0CvV05zmGHvLxJjmER3HmktNylSDStYBvSHRyhaxqBecpB8+e+TW9Tuanxt6cpLtHT1RQb1LeS+8x4FH52TgBl34THyPTxNkcYMSgyUC5jHeorFzAZ/A5mNRysDbB2vCYwcQJ6KXQVbd4ypSFYkuHlmTdO3AFD3JKGCF1D3nmdQf0OV3wXU/9uX3zeoy397w/rK50H+ywD7DRv4P5bplnjkUNJtL2XgHk3MDXgS9uF4YmHI1Of7GRDbKT7DG80FZunzg8JQocB2Vd8kT/UNcj66QkuFp2m5+Dwt3PuUek4xO2cwbzn0NPWfe5MGz79J3SdeINvZV6n32M+p8+MfU8dHj1HnR9+n7v2PU+9hjKm9zGD+Do1hXXmbpq69Rfbbu2jlHrPzvCO0nH+MFvNP0ELxWVp8yM/36CatVKWTo/6OzKH7e8rI31uhYkkB0JMdAuSx6R5L5T7At3uVyYykrPUo9j7WrkB9QvXbo1bfPYqS/dr8uJpHj41b8+gAcJTV+Wc03oRHUwuPIfas6nsiYiFbK6r2IKJY++Bi90CyzQPweMcUUD8TBP7cK0CvXAd0kCGcawbLLAJUpTOh8fHff9iMejMhXlbVVNmQbWYobF5+6Yc85dsMZfLLZix0PWEf7GJgdmldBfFIe54JUHdXXSFH+XlyVl0jb2MWBRnYIwB2XtHOe2KegjQzADvEXzGAe7/qS6to1WoBc21UpSJpAOQxlNvBjB8pa9Y1z/c6BfAoxacy0y2r1xTQKyOWBquUXmONpjWupbCBXUpZXsbi1Fy6KsvXq970GMCy0SrD169XCPj16eN1KvUMt5HiBNbehZ76fWUT23iPgvW5FKxmhl51W1i6ADpm06X8rkbZFEO/JywYojgxl0FQC3LS8bfi61pvkYzNyaYGwr4ZZuZzqtyNzYkxidfIrNn2QNnJIpCiK5cSHZkUa7xCkcrPKFj6CbN0Xg8/Yaa+j7w575I7k1n67XcY0F+lpUsvSPnddXsr+Ys/pWDtVfI+OEWu/CNSgo+25vJj8+vpyKc4VO/8/0AVRJ4fvfwZxdINsHIrfhWldwH0lWEyVkYF5A33tGl65rWkb9lFAed4MuSoMCNuBvXAG6r8HvsjC1D+24K6BapftTbSX9uQWveVX7J+YyC/gZ1j3Om7BiVehMhKXx7riE91rCRm+zUBcwHwPgZzBkYGdt0+THEGyCh61e2FvLlnQOdzgKvyGjnA1EvO0sjV7aJw7z35PLUefIqGr+yg4cvv0MBnL9LgZy9Rx8EnqevAjxjMHxMw7zvyNA3z18YvIXltB01e205zN7fT/K1tZM/aTfbsvTSfdZBmcg7TRPYRmrp3nGYKeeNQyuegmnQxlgHrRR8bISzB4Sar3M5gO82vG6Nr/Lpji8Ok8e8Tg3e72L32qjI8eujiJtcum4DohAXqG8bYVE+9eY2Jb7wu3yvAbv1sKqbVEtVJ6X5IKeKD2HRgZr4VhlwFDOxFomAPw9CK2TnakbJs6hgZLJev4XtCfQ/i0ZFqV3zB1sPnZSSspfrnm4K4zcv/taeGXfsTZjx8LLFkq4r2Fs37mzIivsZ0M8Ag5WOG7i4/R86ys+SquirCONjCwkkOX4903CeNGV5UjGTKhKkDzFNWsJjx1tQYhgpnscRxEMkJQ5aRMrUE3G3KYU6VphutWfRGq08OP/JGBbxjSuWuj9YJUIv/O3rPUqZvUNaq4iKnDGj0tRI9s/kxlO9b1HWwfAF8tUGQBXEegB0MGhsT/jBG24skLjbYfJ+BPFcAPVh9i0ESEatpzNIxzpYh5i3IIxe23plHUQFubHpK1ELmOQxn+pW6HmX+hKV0x9ialN2nlUOe/L6jVWTaiimBknsnxtcyKN58g7Ta8xQpO0bBkiMUfsBM/cFhCuR/wKCO2fQPmK2/y2C+hRYu/pyWrr1EruxdFCg7TYHyM+S6f5i8D89RsOYGv15sQPIo1gZwL5bSuzHdSiZ66QD1hR4G9REG9XFLKDctSW3SR4cinr8mfXXnpGm6ZxnUwdQdk0n/ao0Zcl2mRGgr6drfW6Eu/y2Z+gbdCoO4jzc2gW9ZG5xvWALVFMB/dcP6PJP/D2fRf04IBzOpJ3Q9ctBwL1Qk5vomY2NNgcRMl66jvL48xiDOoM6giFaQPs/giHI1vMubc2TSRSp2NWkM5mdoNusjZuRbRN3ec/IF6vjkWZq49SFN3thJwxdeo07YvTKIdx/4AYP5D2iAmfnQyedo9NwrNHr5TZq6vo1mb+7gtZ2mr22lKb4+desDmkznx8g6QDN3j5G98Awtl18iVy2qhAiLKhTWmxKXicpcZtHbZWQtxq85wis6hzVIkek+Ck90izguMtaxxtAxiidMXcC4RSnch61gFquEDuGclppHlxJ8KrSlWdnGYvzN+tmU+E2MY1Be733Ir7OENx8lFOYNs7LLVlodMPIUmKPMHupVwS5BJg5BPs8EuotMBvQInx/t+upEnalrn/L/Dv3zP0lZLG+i1+bl/1R2x879H0iP7056ZvMTYzWjweaMgLvyku4sO0+rEKaUnCJnKTO7iovkqWWmXmcp33n5UHbGCFdXPkUY2OHvHhaleAGF2vPFEhZgj1EslXduATrc28QBDixaOb8J05b58ZQ9bK0F3ADXCpkh1zE7DbDHuBWMURjIDQZwwwJzWbBQtXrBeko8BzAXQ5pWyUw3pFyvSvSwQTUApBOp8bYa1Vu38XNixA0fRozkISoWjniNdyVPPViVzqCexqw9g+/LpIgAeQ4D/x1m6zCcyaJoR66I0DRUMgYt1ziwclQzoHyXcbb1ONmEpdiXwBlsYpAih5G+/kJm6Dkyj55ovUWxpmuk1ZyTWFVv/kcUKPyQQoUQyL1HgbzdAurOjG20dPkFUb470t8mb+HHFKy4IIp3D5+UPY/Okb/yMjP1O/LaNX7tqCpgQyPiuLluVTVY6BVGjnE2cZRD7Cqu4z6JgWVQV4BvJj1zmulfdiX9K6PJwGqFGfWdp4T2IhG83/97gvo6OweYh36XwuHfo2j099cW8W0K/o76emrh5O1JAf7XNwD+F3bi+8X8Bv17lIhtNYPutIR9qC8x3uyIDddqzNJNlNb1lXFh5TqDYZzZLkYrUXYGIPn5vS0TLrU3yfHwPC3e+4RmM/bQ6MXXeL1J/adfoYGzr9Jkxj4G9Q9o4Mxr1PzhE9Iv7/34ceo//AQNwq/99Is0xmA/dfVtmrz6Jk0wsI/z9YkrW3kj8C7NZe6j+dzDZL9/jFZLz5Lz0WVyM5h7mu+Qty1fQBJpZiFRt9dbzLld5aCPtlFgrJUCI80UGG6h4Eg7s/c2NY+Osrqkr3Vao22tVrk9tVqFpUtZfUIlnWlScm9RJjMyWrZu5Sq+8SMIdbHc4GTWvFbZwYqGqJQZujBtYd6aREk/kjajIj3WRBBU7V2F5Odzili/MqCH+8tMbbg6lJjpnE56Fx+Sqe/Z0D/fFMRtXr5Q2f27onaPuK4bSwNdWm+hy19zVXM9PG2uFKKf9Qkt83H1wVk1RlJxmVxQTePDhhG2eijgsyjQCsvY+xRsy+PbOQz22aKED6Fk3VloWcFiRr1GjBdUfGqLuMDpkwhiUbPkiRSwpwAdpfXRKgF2mVWHH/m41VMfUwzdALgLwNeRafXelUiudZ2dA+BxH/9sCtBlLpyXkTKwmWGQxwhZyrQG/XVsRNA+wIgbNihthQzY9ynMwB6qy6ZwA29oWvJI6yhgVl4ozDwCUAegYz69875i6hKjagXEoAVhGcvELS2AaACm1euANW7M+jugnx+3MagPPqBE731KdGZRvOWmsPRoxQkKlB4hf9HHFCo5TMHiQwzuBylcdpwij86QP/9j8hfsJ2/eXvIXf0Khmiv8mq9TgP+PgeorEg8bQaugOVPiVqN4zV15UgUxZrvInO+m5Jx1BHivjloleGbojlG+z0bmkk1AXVLc3DOm6UX5fdFh+paHk0HnQzPmPUaJyIsbmPo3/1/0Av9fiNI2sOSvC2hr3j+gWPBPKB7+c4r4/4oSge/K9RhG/bQ/EIDX+IgViXxbwB+bAGH1AvBfCNQ/l93wV2QYz/Lm6pTumKmKT7XPxkYaQomxJh0ldn3BRsbiCB/7hZ3HZ7qIAUU+pyEGGU8dfCluk6fqOi3lHaX57P00eW0bjV54lUavbKeRqzto/MZ7NJV5gMbhHnfiJWr98HHq2PsDKbXDt7370I9p8JQCdAD52MXXxRlu/Oo2fqx3aTZ9Ny3mfkzL+UdppfgUOcoukqPyGrn4/OLl8wnyxtGHFgMWcWqrY/BGvGkT+RngfYO8bLXkH8Q4WyMDfquwcvTP0UfXrF65zKGjxA4h3YTqp2tg+Az2qgffp46T7QLuayV58X+3GLuI6lJqeWUeE4an/GAVs+5KBuVHMk8uM+UC6I+UcFjK6mXqa92lyh0O1q983vAz+Qkyo9ds6J83ehLzfTZYLBMl3rDmz9E//+omam1evkjZ/TtSdtcjR5h9VSSmmua13oJQsCFd9/JJ31N9mbw1V8ldeYXcVZf59lVm6jcYsHnnXnebF3/o6i03uRY4zWXzrj6bfI04ZpGfvy/QlCtCOWG8I3Uq5lRsW5sVgwZjH65VanexcFWlbyWYs0JNUIIGmPN9AHNZ1miaMHWEjvDRFHFd81rZPWU1i6OBCNGJFqtP3KbEXylAn+0QdbcovOd5IUdcHrdWHfFaMMuOVgJ/ILWuEop18uookhG3KH8wtc58NXsOVg6dQdtduS/aWyIKeoTEIAkulmpBWAJACZQRQ502a3PRptT9/Lw4IcCJL8q7ea3rHgPvLQrDYKbqM4qUM6AXHWSWvldYuSvrXXLc3krOrB3kubeH10f8tY/5uI/c+YcozIAebbpFET76y88zuN9kEM9RbnctWaLSR7sAvX7ZKOFvAM/3+S5lPrOM3jnAe1KMZ5JOBvildVBXI23TzNRnI0nPvCOpQL3UDHtOMahvUaCu/eGGPPXf+k8E8q98XpD2nwjo3xCAjru/wyD+1xQL/CNFA0+TFvgZxUNPMKD/AyWif8338Qr+jVxP+P+Sv/anDO789+KfVaX6r32Rv5v1PZYQzvg+f7b3Gb7F/MTCoE1jwODPXZw30GZsCr4DQwzowxKtGxcjpy5+H7aLixn6v576O+TjDau78oYw89n092nqxnYG860M4Ltpjln1VMZemsw8yOC+i3qOv0BtH/2IQf0xan7/n6l5z79Q7yfP0Mi5LQzkrzGQK2Y+dXMnzaZ9QHPpe2ju9geyUVi4yww9/xgtl56nVX4+d8MdCSzxduSTv7tIWG9w4JGKMZWZ9HrVSwdjBuiOw8+9Rynbx5W/u1K4KyYOwZuU1ddAvZ031rymOpR+AL14COwY4DHXjusaxHVTvPgxYtYGQMxsLJOaVM455sojg9UUsVUpUO8rk744FsbRglZuOqxehZU33eVzZC752+4LuPP3mbzZj/O5bsVYHu4wNe9Va/78z6zK1qZD3OblCwtm/lasYMPuNH2uayA2UuViVhkPteWK9StK7J6a6wzs16T05mtIl146jGa8tWkM2JnMxPMozGAW7ipQSWZwlGvN5ZUtK8I7UzGLWcsybxH3NG3UGiUbttaI1cu2WHp80ipHo8+MkjoEbGOqxy5MHX300Xq5blrfk5pNl/n0FFPnxzDGU0DfbAnsGOBRhp9uk95xquQNwDeZJZsSa9rMm4RGSsqxWTYNuvTZaxjs+TGGGKQB8J3FFMempaeIYl1KaAbr1mhHthpf6ytRffmxhvV5dGuJRa1lhwtWruN5IZSb4t9pkv9mwwzqCJJBb745jaL1lylSe5YiVScpXHqImfge8t3dRe7b28iZ9oaYzDhuvUYrSGG79Qatpr1Ni9dfJ+e9/eR78BmFeGMWrLwgIrlg/U3po8MQJy5Ws7z54o1IHEEu2MzMtCpAX+hjUB+SUntydZzXmFoovS8OkIGZeseYVZafMhnYmakvuJK+peFkYKWc31tnGdRfJtL/xiohfqk9wc8B+VfV80k5+1vWc3/1y+5Jrn/GGIw13x8KYEd8j1Mi9Iap+RFJe8qMeA7J/D5aE2Hf80bE8zJpwecp6nuCQr6/Z1D/M2HvXxDQN7TTEOTxN2TG3sLn2lid7IhPdS/Fhmq1+FiTiYpYnIFMSu1LI5TgDVtirkfsVNETxuiVr+keg+slclWn09L9owzE79AEM+qhC2/S0MV3aCbrENnvH6fp7AM0kfUx9Z9/k/pPvkDtB56k1r0/ZFD/IXUf/gkNn32FJq4wkPOaQP88bRctZH5EC1n7aPb2hzRx630puS/dO2IxdH7OmgzyMBFAbCoEcS6krbUXSuSoADosWBnMMXMeXVOzw+K1m+/rkDn0qDW6pkbaOgSMRczG5wO5X77WJaI6OeL7wNCnIRAc5IUWRK+sGH89Nmk9hgC6VY4fUSY0Gv/N+G/LbFyNpYX6lF87zGICko1RIMuPhRZCW57kZkT6VH9ds5WbTGIiibmOecMzV2XGo8f4//f9zYS1zct/lKWnrGCfgAjDWB2rSUzUzWqDD0LhnhIdyvZAYwb50DdHNGcVs3VewtSrLkoJ3ld9nb+exkCfxqz8trB19N78sI3lDUGw+Q5FekqEnSfWEtNahaGLgxx6xQDgCStx7RdG0trEdEWfalesGmAogF4vjFtEbWP11u1GdX3EKplDOCeg3irM3ODvNawROLURsNi+gHzj2gy7bBYwly1z7I3SowewGhPr5X1xWRtFVaCJTGwoIPJj9hBj4FWAXsDX80WhrnXm8jFPRsQwCQDbW5mzx+8z103GwoAckYuuT6jXoX53ADr0AhWUsJWK4h1e8dGWDIo2XmXGfZoiZZ9SsOBDcjMrd2dtJ0fGVjl6eC1ff4lWriul+8rN1xnYt5IrZy+58iGMO0Oeok/JVcg/X58uyXPxnvu8CckVUxy81sRQhbQxDH49Br82c76H2Tgz9VWI4YYFzJN8lPsY1FGWT6Kfjh679NRF/e5I+pdtwtSj3k+tMJe//LJ93zcw8q8rMGSWG4v9Ea8/tqoEv/tlnyjXAT34OxQPfkeYecT7hhkLnkpGfHnJoOdhMuTONyO+62YiesqM+k+YAedpM+g+xoC+g8H8SWHs8prRZ/9CgL4uhDOMJ8yY/1gSQrjF4en4ZEdAs1XrsdFGZpv8GYSiHeV2gLodgN4r7DWAsauuB+SquM4M/Ag5H92gOWbQ48zK4eo2cP41msz4iBYLTtFC3nGaunOERq7DZGYLtR/+KTUxkLd99CR1HHya+o4/T2OX3qLJ6zto8sYOmk/fRfbMD2meAX2OwXw6/QOaAlPn2wD01dLTtFp2mRwV18RuViWtMbBjZK0L419V4i0fgNJ9tIXBW5nKANgVkHeuz6CPK0U7mHZ0sk0J6ISRd66NucVmBxRw4zjLID4/RPG5Ib5fhb0A3GMA9JleGelTKvcWYfoQzsn0DgB9qEblV0DwZgWwRCw71yDSKruLKNDJoA7FO4RwUL33PbCWTAbpsaHKUGKue5Q/L4VWIMvfW4Rrs3++efnCJ5yvb5hJf8sMuXLMhZ6BmO2RK9RVEA+0ZklOehBmM/B2r1Zg7qu5Sv6ay+SvvkJ+vj8Iv/em25KnLkfeBGD0LcQ/H2m/K57v8HiXMvtatnlKELeeeS5fs3rbYhoDFjttgbscWyy1e4OAM/rhYNkG3w/g0VPpa3Cb4wXQT/LuPDndwV9vFQCWWW8Bd2VYAxYvm4W1nPIW9X1Qv0uvvlb692KTCu/zaTxOg5phH66WUThD5sf5NQHYeYceR5m9K1+xcwAkA2UEI22d9yS4Baw7YQnhYAdrzPeSYe+VoySwWa0CQ1oLlbxpeEjmCLPm/gJm0jliNAOmHi4/TqHig4qh33mXXJnbyZnxNrkz32Egf5uB/FVySGDLG8zYX6WVjO20kr2HnPePkK/4OLnyDpKz8CiDehqDeBElECoD69qOe3Jbt5XzBqaGf79aSs60URIiuaUBEcQll0cUqDM7T/JrTy7289fWhXJJJZSLJP1LK6Z/qc8MrDL19+8iI/Z9y9joW19G6f0Xe9cA8+jvS/k66v4uaaG/k5J2HG52kW9/maD+C4CeCP8FRUNPmyH3IQbxPCPs6kiGPMPJANLrHA3JaKA0GfWVJgOrD5OelXwz7DtLsehWigW/L3126afLa/13Wwb/xmMiwezc78jWVyf6EvYhR3yiXdOG6k0RpcoUwwAlGMxFGGe38eeuU6m2B6rJ31FC9rxjNH8XyWcXaJSZ+Sg812+8J2p0e95RWi4+R/P3T9JM7lEavrqTOo6+QDXv/Qs17HqMOg48RT1HnyPbmS0ydz5zayfNpr9H8xnvM5jvpvnbuxnEP+Dre2k6Yw8D+4e0cJcZeskZWim9wIB+ndz1meRtRNn9vuSHY6OB+fPgcAOFRppVFCpsX4Vl96j5c2vBbCYF4CKKG1cWscK0UVoH8waAWys2x79/ajG4A8Clp55aAPVpBegaRHTi1w5r1xprrtxyfUOJva9sfaFnzue+IJ8PIOwLiWiuRKWrteeTvyVXYqkjPcU6n3N9ibmBPjPszbDmz//K0jltlts3L/8hcdy3rBPsE8wUTvOJuE6faLBHuu9H/M23TYSzBJszFbC33qFQe64EkwhAiZI7T5TcMo7Vi15vvoirwPpk3hqiMrBwnEgsZbsCdJV1nso4V4w9lZCmfN1F+LYWpdooY2kCxCh/Sx9cRZBKDxwLpXF+LHOiWS2A4iTEbu1qUyDg3S4CNDnKZkD11GVTIEdUBJqVX7xYsVoz63BUk1J7/dr36+Oq3K8P14nFLExhhMHDUhUjeDCX6b4n/u4aolUF1O8K20YSGzYB4hBn9fH1+W5ZYgdrme3oY+jfl5Lel09GXy7pvXcpwSuO8JbaCxQuO0phWMHmf8jMfAcD+lu0ijjVOzvIg/l0JLIxqC9ff4UB/k1aytzFoM6svvAIue4fpOXs95mpHxGTHOS4YxMiffW2O2KIEx8CqFeTOdVAyfkuBnVm6gD2xUFh6LKW+gTQk2DquB+9djjNeab1pHsuZHrtdglzCbmuw02OdO171oz6N37TJ6wN7aRvUCj0uxTz/5EI0MKefyS/8ymKep4iPfw/GNT/XKnMv5zy+xrAAowT0e9SIvIafn/Dt9yUDLvnkVyXDDpXGMRnkyHvaDLiHU4GHcP89a5k1FtsJgKnKOLfomuh7ynhXChVVfjq5zdCG9oLll+78TQYv+GcrUssj80zUITiE216jN+nYJQJBm+MqelzfbISvGRUy1bLwFRD7rpsmkj/iAH2PC0Xnqaxa9sYzLfTQs5BAd6FguO0UnaV7EXnaS7vJA1c2k41u39ENTv/hdoP/isNHHtewHz80ps0efVtmk3byaC+g2ZubKO59HcZ0N9ToJ61j+b5Me25h2kp71NaLjpOzofnyVV9XfQ5vuY7zGrvK+U4HNbg4DYK4ZvqnauQli7JPRe71wmLnUtGeqfqgQtjb1f9cTBuZuSx6QHSAORg5Ji7x8L1DSCvlmLv2AgoVX2LCnEZrlWhKv0VMh8fsHrkUKsHOosl7zzQ80BK72ExkamweuvlzNZLJZba33qX/M3ZFES7srdE04arVvTlkSYzGjpLZDxjnZM3x9U2L7/CSUf13P4epZ5kcAXOcaNxW1kg1J6j+5v4g9Vwixl6mgS3BFpzKNiSRSEEk3Qw++7EyhNb2DBGt9qRypZLYew84SAnoxoVslCakp4xQlcA8DiusfMWK8O8Xo1sWZnmiY2Wr+IS16zY+rQCcl3GrLrUgrDMAmlTRHBNwrbVJkCV8M0ZC8x54Trmrs05HNully4K+Bl+jNl26SFLJUBK+grYUYqGwA+MXfXZeQOBx0UFAGx9TJX/0XuXnjtG1DB/jo1P1z1hwCjFw0EOjyOl/mn1nCKIm2mzctLbRPEuc/YA1b77pHdnkd55mxLtGRRrvkWxxmsUrjrDgH6EgoUfytgaAlucGVtplVk58tHdWe+I6QzK8q47u8iRs4eWMnaRk9m5v/QUufP20Wrme+QuOUmRVhUyA0DH6J20DQZLKTH8iMyxKkpO8yaJX5s512WxdZvqqy/1C9DLEcAOBg81vHPCTDom48zUA0mffToZWK4yo56zlAim+um//5tmyf9WXa79IYPpXwnbDTpfpMDKW6T5nqd1i9ovZZzOAtiviXpdD/0d6dEdZtiTY/qWBhjYXXw9wmAeYVAPmP5VD+5LhlwO07diN8LuLgb5QtPvOsGv9Vn+2b+RlgE2KEoL8PWNG5G151J/z++RGdth+peyzZUxGzNwT3ymKy7hIcwqZbpktofiaPUsqNlz9IejSAFDmAiDlJMZ8kTGXnI8uEBL+ScYjN+jxTv7aCX/GNkZ0BcZ5B2V6bSQf4bGbu6hpo+fpdr3f0htB1SZfQjM/PLbNHXlbZq5tlUAfS7tXbIzmM/e2k5TN7fTLLP1hZz9DORHGNA/5sc9xBsIBvRHDOhVV2SKxo0eels+M/QHFOivJH9/Ffnh486bDpTdQ6OKqSNlTRYYOcRwAugda71xsHLphQug2xQjT4H50ogY0oiPPeby7SOyEgLwqFz0Wf3zNhXmAkC3nOFCvQzQYvcK5g0F+wNR5KOUDuc3bUhlWSinzArZmASQe47F58dAay4F2u6ZoZ6SiDbWOG+4Zsp5s3vI6p//ofU/3QT0zct/+ORnOcdhhM1z3Vi0dcRGq13RvqJ4uCPXDDbfJm/tDfmgufmIiFV/Y5paDbekvB5A/7whXY6BJgb8FgB9gTWjXqyOAHjxNq9QEaijKs9cRrimrRhUgDgEcWCmYKmpUJZpi2WLk1mHzEtjVlrfcBQmbjH+dY/3Vot1W7Ppwtbb124rcG9bZ+oA+YVeCU4B2KfU8AB9NdaGefJHDHIVItKTvvqEVXYfriGT7zNRKYBJC/9sEv3nKQB9FSVsD8VhL97HzLevSIBazaI3qB46fofZdnW0XO9QmZA8d9jAduVSvCOTEm031Tx6wxWK1pxVLL14vyyVl/4uA/prAuqOtDfJmfYKuTPeJHfOLnIzK1/N3k2rdz4k/0MYzpym1aydzNo/oAD/fzHKhpE7DQlyXXfFGlZnUNf59zVRep9uoiRvPpLznZTkv1HS3q/AfaGbr/coQAewiyJ+FO5ypglQ9y54pJ8echWaEe8RikefZED98y/D8/0XxXAMgiixg+kCHIOOnRR27aB4+Ge8qfg768T5jd+0+n1N4Y4NhaZ9T0JRwq67Sf+qzQy6fMmgK86ArjMrjyd9q3HTv6KZIScA3mf6JJ62y/Su8ofIvZfikccpkfhLigX+mKKe31ds3ffNDaNsKWX7d5jdPQmzKMM9X5FYHJqPz3RGoGpHmRi93xg+A3M90kPHUce4GsRi/N4VdXtHMTnK4Nt+glyV1xnQj9Icgy+sWdHnXkQiGrPzlbJrNMYsvvPkK1T9/hPUsPuH1Lr/xxLKMnT6JZq4hDG115mhv0XTN7YyO3+HZm9uYzDfJmx9IfMDWsxF7/wQzd2Byv1jKbmrUJZb5GrOJTdU7nBd6yoR21exVh2wRtcQnjLWukH41rth9VB0usvqf/fz6vmFUjuc5ATUFwDowxQTUB/h66OkL49TYnlMwF6B+oD6WfGGb1MMPRWJOlBJEd4AgYXLEge4SgFvzVZpZVhUSbQ0DGT8rXnkh1FO233JePe3QxxXqEcGK0L8v0AmQh6Tqp3W/Pm3N/3bNy+/6snPco4z4Bz3adI5WZEYr53V+ksika58Pdh6V5TtnvqbkpUOsRvAPNicTuHWTPEvx1LmKpkM5lkyg42Su2YZqWi2Msv3vXitFC+q9nFl3RqX3rrlkpZyhJtqWiupp0A9kTKE4ZOROduletBzvWKIIQ5nk21rI2syppaaQ18D9PWvry1xpKtTNrFjKt1NPYeyZFXjbW0K8KVXX7/mLCcmNHB9G2SA5w+1wfeBnQPUkxj94sdIzjGwL6ijIYz7kbJ2BaAD5IfK+PetljK/PA9/n1QMZDOhhID4myGqVeO/r96aTnrbDYrXX6RY7TnSqj8jrfw4aY+Oic97sACgzkz99lZyifr9NXLeRGgLH7N20UrWe8zSd5Cn4IiMs3kKDtNiOn9f/iGKNFyncP0NijSlSYpcvCefdJTecRwBqNfz79VIydk2C8D7lGDOGnFL8pGkp96n+utwlVsZ0ZPumUjSt7REgdUuM+rKpphvB7Pkf7AcC7/xJbD0r6yBKlhyIvKXAoxh1zYKru6hqG8bGdhUiEhvrZ/+mziBbij7f0tAGKNp8eAuYeghp01AO+hiMHeaDOrE4G0y0JvM1M1k2KPiaT2Ls4Z3qcmMuC9SIrRFKgoo3Yd9fyEiO2gD1m11v2ZtjOAr8Zqp+W8azpkuY8Hm0qc64omRehPVMRimxKbahaFLQBA+P/PMQNFjRj+4/xG567NoueS8sHNXBQN30XGxZrXfOcBM+hAt5h8nR8Utmr53nAavbKfmI89R3Z4nqfnDHwmgD5x4lsYvvEjj51+msQuv0OjFV/j4Ik1ceZ2mGNRn0hjMs97nx/yQ5mH5yo87zwx9kdm/GMrUZZCnMYeBvID83cWyUL5GclkIY2KjagY9iLlw9MenlMpdsfKuNYV7BKxaWHk/abN9pDGwSxld2PmggLkAOYN4HPHAK5OUWBlfXwzqCf6agD+YvjB+MPUWSV2LjNTx36yWQbxaRtZCg8g8rxS/9vBAhdVDL5MSe7CjSCnd2/LV2BqOYOnM2CMDlXp8rMlnLo7YeKOL/vlrln/77272zzcvv87J5/dETGMmtkqsqr1nID5c4Qn3FMYDLbCAzJCMdGf1dfJAFNeAefQbhHQ2hLdEegqlb44scDimaV2FFIOhjC2VulZhRZhWqHENBnYJREEeuoSkVKte+4TqnSuDmbo1oVxCmHiXWhCRLQwIgCiA71bCshnkeiuQF0a/ls5mldKnVYleVoqloxw/ZqWzjTVuKPerUBco5cHwMZsOtq3EeGqMTcbkxNGtlnRmNzp/kGNdvFlhRhHvfajYujB1/tlFZrBLvWrOfb5DjYQB4KfRJ6+WXrlEp+LxGcTh6W5MoXxfJ6I0WMEm4AnfCV/3LDLa0yneqGbSZT06wYtBveI4hUuZqRfuJc/d9xnU3yFn+mvkYpbuuPYCLV95hVxZO2jp1lZyMEsPVFygUPUlcubuoZXMnRSsOM+AzqBed50ivGFD71/vL6REVw4ZvflkjjwS1b850yKvn98nzM6xuepQbQoAPTYxYOwAdajgl2wmbxL1pM8eSnoX55OBFQDVZTGdSST++stiIxsqUN8UpozSdSL4PLP0XRRa3ctgu5WMyGMWqP/+b6LEuWEz8TX5TEGQFwv8E+nhXRT25yQDzj4GcQ8zcj0ZcBCzczJ9y3xcIdO7RArYnZrpWfAk3fZhKOH5MfbJOBvm1oOux/SQ/3sitFsH9d+x2PljiNxM+pcfGktDk4mZrlBivMnU+HMIpihCVHxG5vr5M9BjAXu3Gr9iQA/1PCRnxTVhyssFJ8hdfpFWi0/SLNg0M+nFvGNkLzhFSw+v0HjGfhq8xIB+6Dlq+OAJatn7I+r8GAEsDOYXXqZRBvPBz56lwdPP0fjlV2n82lvSh59B+Z0ZP1TumD+35ygwd5SdJw+fX8SoCgZVXRaQg90isQwmLmPKIS7VJ4cYLmIBuSqv91isvE8U7FCrazMDa8K3NWYO33cA+fIog/cY6Y5JXjOUcEyRzuAOQMfXYgtDSt0+pUbc4mD9fC6JWS5yqdI7ABwMXcxvkLSGnjoDOGb4fc25zMrvCjsPWuNrKY93iOhiw7XxBPLPV0a6zJj/Iv8Pn7VyNjbzzzcvvxZL/6YVBPC0GY+eYEZVp081LzGzjoQ77pv+ljvi7QzDGE+9xdIbrAVVOwRzCG9B/5w3AOE2BnYAvOSmP1RhJMNKXCb+792Wt/ngA15lAvxQjYuyPKVWF9GYykIXIF/oFzBPgTLK7ok1YxhVPsSJSol9+uW2sJAZazMgxi0dcluc2fC4Mgqnnk/G1SyPeAjcdIuFy3Ur5S0F6DLOBdCF6h1fg/IeLQKo3HnnrXUUU4JB3cCIG29aANoGwA4gh3Ev5xglHVCKA/B6VQkbTB5AiZI2wHGyXsrcGF8zxjGDD7HdAwFYo+cuJVquU6zmDGk1p0kDqFeeYsZ+hmKVJyViNVh0kDw575Ercyu5b79FrltbyH7xWVq59RotI5mNWToCW0LVlylQdopW7+wid/GnCtCZqUdb0iXnPdGHGNc8infcIdNWSkmU3vm1ofQOIBdgx3VUJdBjn2mTjYv01cHWUYJfHTHJMxdPeuc8Sf/iKErvFA/sIyP+uNXL/uaXqHpXanNktUNlHwu8ZQZWD5lB5xFc5/ses977v3b5fwOgf10AF4wa8+fxyL5kxJ3HrNzGQO4xfUu66V2kpNfOgL6klnuBmJnzfSs6H0NJj33eCDoazFjoqglQj4V3Usi51Qi7n+XrEPb9maVq/2Mi/W8pEXtN5s5XJjqMud6V+GSLlhitN2MoA2MCQ8rtmKbol02vzp8ZzKQLoNuqRdDlqLxBzrJLZL/7CbkeXSF73ie0cOcgLdw7zEyaQb3oHK1WpNNE2kfU+9mr1HLop9S09wlq3fcU9R39GY2efYmGePWffI76jv+cRi5uoYlr78gM+lQafNvfpem0XeIJb7/7MS3x468WnyLPo4vkY0APtN4TQJTxL+SH82YfbFhc3kT8ppaU2qFuZ/COA6hRIl9Y74ULgAuQKzDH1+KLI0rZvzSqWPgqs3IGcIPBXJc1ISuxMiHldyWWU8r3+EyPmO/EYDsLcd5wnRIRMqhHZAa9iln5QxlNA5B7G7PJXZfGS9lkw3QrgJAZKNt5wwLPjtjAAzMxWqOZs51LSc80n3zCmD9/wjL8+sZmuX3z8uuK4/5Q/N3J3JkMOfL1ue7x+FB5INxxV/c1ZyrVKd6QLdmieg8BxAHgzMqVxelDGcuKduRRhO8HW8cIVLS7gEG8WMJaJIOcP6wIKIn2l8jPwN9cBGLioNZEyviiVfrdYBQ6SuoAcmblhn1AjXfNqnI4rCpT4jiU3eVEJcc+OXnhujmrGDyAHArfuKjcOyxLWKvknjKpEfC2TGwggsMmQwxt6gTsxT8epXdsIqaVyM5Ej93qw69tDPgDnmB2EePNS4J/b/SgYWErc+0M1skVG5FnipKuMQH15CrU4Zjn7lcAv8isdw5st1WxYQF3fv5R3hwMPZARNr37LumtaczUL5FWfYYilaeFrWs155mpnxLGHi45TL57u8mXu5N8d7ZLXrr98nO0ePVFmrvyKi1nfUD+8rMUrr1CvpKj5Lz3EbP2cwzo1yjEoK61ZolaP8HsPN6RI2p7k1+DMV4lrwk9dWgEzJkmtRmZxettVkzd3m0x9V71O0Ikh9K7d24p6VtsIWSoJyJvfM5F7jfdy14HWDi2CUsPP8vPvY9B9KwZdhwT5T0Z/2SdSH+tcboNz/cNMYWBO5zme1bmz8Pe8iRS6fyrATB0wz3D4L0AVs7HRQb0OTJds3y0m8zWNcM172LmPpzU/OWmFsg2Nf9107d63uTXLoxdpgWkuvA3vDF6ytRCzM6Xys3FoUl+XwcSI7W6pAdKKZjfxzOqxA7fA10qWT0CUBoDEsq/vpb75K5OI8eDcwrQkYGed5SvH6aZjD00l31QlO0rD6/R0OW3JS6149OfM5gzOz/8E7J99gLZTj1P3Z/+lHo++SkNnnqBhs9vkVCW8WvbaPz6Dpq4wYCevptm7xxgxn+EnKUnyc3vP0/1FSW6ZQaL0S5YpYaRIc7MXACU2Xkqm1yFsiBlrV+xaCtpDalr8Q1jZii3xy0B3JrYDaAO/3qwcQZxwznLn8F5BvVpuc+Qpcrv8aUx+X55DMyuo+QOdj5sATrMZVD6R+mdWTpmzP2t98nXlKMsc+tuihd+oBFTQrl87rzH50xeHdAW8fly8IEeH60O8blkNulZKCczvldibtcFcZuAvnn5tUqTYCh8gjCe55PGVWPJ1pUYr3fE+ks0ZuCms+o6uXh5am/xjvO2sPFI5z1RuWsouVuRoVG+DhCXHHArF1yDcYlErlopbOihD62X20UkB1MYiUS1yuzIZ7bbSIc9JX9w9VlVKjTmB2Qh9lEBuSr3GlaPXUCdNwJxqMWtHrxuKeHl+6fb18E85fNuKeJllAye7wDlDa8LC4Cv1PNW1OhUCtiVYl7Ed2PKmEYU9nisYbUpECOaSaWKV4yeH4tPrMmVIT6hwB99mAFvhE8wmOMeUkCP4yqDvL1LABKgKYx9vIYMBLcgWrU1nZn6TUo0XqEoQJ2BPFJ1jpn6JYrVX2LWfpp8RfvJf2+XBLh4sraKixyCW2bO/ZxmL77MzHw3BcvPMEs/S668j8hXepTCdVcoVHuZNGbpa4DexRuIvgJ+7lIyR8oY2NFTr2G2XkdJjLUBzAHkWFKS7xANgbB13qBgE5N0TepJz0yAQX1SwCcWOEUJ7fkE+sMbVO9fjkgu8C1VAo8wSw/uMEMr503fwk0z7DmhNhb631vuXN/8NUFdVbzEzCb8DxT1bMN8cTLib2OGbje8i9ATmKYTCXYM6N5lPjIzdzOw8H0GA7vhteumay5kYo4/5B5mdt9hhDwNhjjvOTN4k7DPMHhjQqguGM9QPLzbDLoyeVPQw5veFd58avz5MvH+lRwBGDvJ56JLWk+J6S5l9crvUaQj+phBYsEBcqXopHi3rxR9RrPZ+5lN87q9V45LxRdoufQiDV1U+eetHz/NgP4k9Z94lgYZ0HuZpWMNfvY8DZ99WQB9hAF95Mo7NHbtXZpMe18MZWbv7BdAd5WdJm8Vs/P6m8o6mgmDvyOfAr0lFISKvL9K3OsApCqUpVWBuRjD9Fkz4z1ynyjbrfI7zGPENMYC9IQF5kiXM50M5C7Fyg1soADoDOxq8f3M3CGOi/PPyM8yy4/LHHo7qWmBRpnZj0pkarWMrvlbC8TS1cPM3Nt0hzcnWfw7ZahwGywwdEQxI7mxHUr3gvX589muUTPgvMtEaqtszlQLajP/fPPyGxPH/ZMZDx00nOPlxnTrZHykKhDpLTRhHOOuvkZOKFF54ToS2MQRruW2iOIA8FF4mAvA8+opIK0LTP2OqKfDSGhrw5x6kYoRFXFctcxxqwSyehHHxcDSU/OyC4OUWLAppo4ACYl5HFQua2DtKCGilDjTafXUe9Wa7bbYeudauT01smak1PIzHeuCuUnlLa9bS+xdx60+OU6Iow0SvwpmnrDMaaCsh5pd9dnbVfwoHm9cjcpJuMl8r1QJsKmQGW5LQW9aqnaDvwfGMiZA3TWulhve6Hz0wDt9RDF49OCZsSdnmhWAjjFL7i8ivTObjK47ZHSkkVZ/kSI15yQ3Xau7QPHmqxStOEaBogMUuLuLfNkYadtCi5eeI/vF52jh8su0cP01cguQHyffg2N85O+vOEshrOqLpLVlUqI7jxKdd/h4l8yBAkqOlIjZjQL1an499UTTzQrMUYHg10izrUoRz+Ce5I2PMPZl6adrSe+8y/TZh5PB1VIzHjzBgPQMs83v/qZH2X5xjA3sm0FW1/4WDNeMek6Yfnu26V3IZlA/LZ7ztAbqvzJTX29hxb9D8eDjZsh7JBnyVCQjXt7EOHymbzluoLzunFJ58645/l8vCKCjhwuwEbbumdEN73wkGXJ5+OdXjIBjnkF7OBl21yHb3NQjB8mM7eTP6hGAedK/2GYsj9r1qfZQYrhSF/8EMPShavXeBoBPpt7rbfwZa2FgqqIA/NIZcIItd/gzfZOB/JSU2pcLjtPS3UM0n/MxzaR/yOB+UObP5+4dp77Tr1LbJz+j5n1PUcfH/0qDxxjIP32G10+p/+TzNHLuVRph0B9mJo81enWb2LxOpO2mMYB65l4BdMeDs3wuuULumlsMfFm8MsjHr8PbmkdusN3uUgqhpA2HNvSv4Tk/q9zbUo5w2pjl1y655Wr+XCxc5ywR3IIqs6OcbgiYLwiQ66vomU9Tgo9Sfl+ZlN56qr8et0r4sdQs+mjT2vw5BG+wyA20F5GvOY+8DTnkqc/kv6OqYvqZkSPnwlVzg7w1t1S2RXMOM/U7EmaF4KpoX0lcG652JZaGusxY8Orn8883AX3z8psQx31bVJZm4g0z6MwwlwZ6EuO1jgiz9FB7rinldv7A+ZoyBczd4h53jTx1N8QpLpSaRefvk9V2h4+ZkhcebsniZTnIAfy7CsTLWPLQR1Nz5y1SbscYGwA9bmU06/YBZVEJxm4fkmXI0cbHQZUctaCAXVg8euoSA7oO6AD8NWBHKR5AK+XHlNFMm1LGg6mPNjKI18uKIzxmpEGOsvi1pnr8OoO8zLqnTGv48Ux+biSWQaAHH/QkvNAh2oPxin1QhGKiAF+0WQ5rg2qtwGltUNzYpL8Olg5A9/KJ3z1K5GTGvtInjD0Jto6y92g5mbYS0nvv87JAty2DWXsaJZquUoIBPVaH0TYG6YJ95M3ZTq6MN2jhArPz008zoL9I9ptvkytnN3kLD5P/wQkKlH8m+enBhyeYuZ+icA2z/dYMindkUbzttgJ1WxGZQwzqo9aMugXqyalGBeD8+ggbD9l8NIqgEAw+KVWJYfi9o/S+Qt75PumnM+MkI/7kBmvYX1sk929m0pWI7E+gFjdgrar59lLYzZTKXpr0L+eZUe8JFfkq42x/9KsGyaybvMT/lOKhp8yA61Qy6GpKhl32ZMARYkDXTQ/K68zGnZN8nFGldtxeGROWLkDv5qN7Xje9S3H+uYjpXw0ww18yQx7+m7mLzVjouhmLXObHv2t4FppM5+Q0s71AYqw+zmBuStww8hKwpIXF733MoSPdcEKlGyImFQCDUVMEK608uECO0jPC0gG2K4UnaCn/uJTeVx6cp6XSCzSe9gG1H3mGGvf+iNoPPUP9x35OthPomT9LXQzyvSeeJ9u5LTR06W2yXdpKQ5ffoeFrO2j4+rs0cm07//x7NJdzgJb4sZeLT8vjOiqukKv6BjmrbpCrHjPoULrnUwjGLBi5A5jz51ObahOjGAXgKv5UxtckOa1DRtjiULTPDamxtEUo2cdUOZ03TjrYODZTvGHSUQ3BfY5pSwg3RrHFUZlNF0BHeX7WJo8bGW4UJXswpVzvLCF/W4G0KfzMvAWsW3jxRiSAsTT8TVsUgAdb7lKYSYz6O2dLDz3Sx/vY4ZqIPt1u5/93A3RLm/nnm5cvSxynUtji0WNJz2y5MdcxGR+qCDDr1kPt9+SN6W8GqMO7HU5yWVKCh6McGHi4I1dAPNTMAM9AHmlBPCevjhwZbxNv8677zN6LhaHHrOCStVI7VOrok8/1iosVVtwSuyUA4iidLSLti5cd5XibeFIzO5E4SIMZvTHfp/rmoohn0OQl9wFscd9cn9yW+xes0auFbhlV0y2r2JRgTkB8qI7ithpeGFWr4tvMfoZwf81aOV4CYaZUgpti4F1WD79TNhMmNhtzmNkeULapvGh5QMruJgAermsilOPfwRLOmQg9QUneOWqxdz6u8vcuYeOAEJk6BvZKYcrG0EMyBhncBxhs+wrI7L1HBoxoWpV4LlzO7LvgIwb1XeImN3fmJ2RnYF+49jqtZr9PPgZ0X+lJCj46I+w8WHaKAg8+4dunxGoW6vpYeybF2rJ483CPmXo+g/oDBvRK2VwkJ63yO2bV0VufblAgP9mgloB9h9rEOCd08kyHyD21xKDeYwZXMzHaRYbxfev992uL5DZsUn9HAlLinj/lDcNfiIAMI2yxILPbYAYFV2uYJTcxqOebUf+nZCSetUqfv1K1YANDZ0CPPgX2D6c8BvUlXlrSu2gmASaOSZUnLx74YOt83/I4A/qUBN3IfcLW501sAgzvipb0r7qYjY8no37+wESKk5r/IbP7NtMxOW0sD/v4fRtnIDehBUEVSYyaJiw/B4koblbaFL6NMjxiUsEqkb+AdhrA2/XwAjnLL5Gz7AKz9JO0UszAXnaZVsqviKnMGINz44c/pLpdP6CeT58lGzPyAQbz3mPPUg+D+cDpl2iQGfrgxbdo8NI2Gry8nfoubKV+Bvjhawh2gX3sEWb6R2nm7qc0z8+xVHqOn4Ofs+omuVCubrNywqEg589eBFarvMJQl4tjXJNEm2qSntahZs1To2nzNssBTo2lgXmjnK47Gbzdi2R4l8jw2KW1YaLNIeX3KbWYseup0TX87Gy/pK3BdCc8WMPsXGWfw8Y13K3MZOR6TwlFe0sliAoLnhshvi/SUcAEJ4/XPSY3dxncYbpViLajGR9tCPE5aBpTCVb/fDP/fPPypYjjvq3Smsw3zIj7prE60qFPtTpiwxVapLfIDPIb01ObTi6U3auuSQKbWMOCkSMbHUlronTPUV7uzNIjbdkSLgKxnCYBIAWSQpYSyiFtDNav2InHRbzTTwmU1KWHjphHBvKlYUvcMsrXAd6jirEvDCrGvqjuA9DLzyypn5O1jI2AEtUhOQzl+oQFsLoo5LuEzZv8vFiG1WsXv3WJeW2Q8bQ4f6BjvFMHsMehHMaCA95Q6j6M5lVJqRMleumvo6Q+Y/XZobDH88AiFY5qqwzQULxL6AkDu4tP5O5JuS33OayvA9ydI+ug78CMN9h/OzNfAGidKM+VKt6aFZ+qpeQInyv6FbDrrbco1nCFgg+Okj9/Pzkz3rH66Vto8cZb5Mk/xIz8LAUY0CO1lylUfYECpUcpUonbFykOdzpeiHGFIM/sZ0AfLJIKAcbZkuMVagHY5fkbpN8vhjQAdvTbp5pEKCd+8GINOx1KuibtSe98C0yNmD2/ZZW9/2BDMtpv/QoseeP42LehCNeD3r+lWPgfReluxJ8xMRsedWcmg46WpM8+bLpne5K+5UIzGmRQR3zl2oz6f+gE+wsldyP6pJkInzJ8yy2mb2UpGXAyoC/BbIdMBg1zdUzSzgw+Im8+wewQPVzE0ZqrvJFzoc+O8rvdZGYZZzDyMUufTUZDPQzobeRf7kuuTMwaq+M+0z4YZxA3RXw5btkk432I9++UZdw0qcyVcF+YAQhCV4ykBpqzJYscjNzBQA7fCTcD/HLhKVopAdheYdC9TLN3jlDfZ69Q1Xvfp+Z9PybbZy+S7TTc4V7m48s0wMf+M6+Q7fybzNC3ke3yDllDV3cIOx+7+S6Np39AY7c/pJH0vTSZc4RmeROxDJZem0ZOBnMX+tAwYekuYkb8kIL9jyhoU710sHW4tYGVa1Je71ZjavODStUOxfuiNV+OWXII4ETNzmCNHrlnUcYEZTGw899VpgsMZu7SW8f4WmoOHWI7iOugqB/n57NS1jRJWmuQKGhtFGlrdZK2hrwKyUAfKKMI4lOZsITA1ltylZi41VK4dyP/vEKPTzT7+Jw2DMMhq3/+17+p6tTmZfPyS3rp9BjvHPcl/UuFxkL3ZGKsOhDrf6hHOu5Jupqn4hK5ys6Su+ICeSovSQKbt/a69NQDMqaRI6UmDarODpSdsgmuc2F4hcN4RpTvZQrUGQgxdy79czG/6LYSoRSgJ5aGhJ0nII5bwHFQjaCkAJ/B3uCTocEfRGNpzAJ26zruX0Rp3iYzuMbcgNzGY8goHAB9xhpjm+60zGqseXUIiHAyhPoecakM6PHBGqsMX2/125tUeZ5POhAg4ffREIs4WKEEcfCVB3NPhclAYT/foyoE4okOARzGZ8alBMtAZ4H8qLitgZ2b7jEF9HL/kGLpDPCEEj3K8ItdwtqTK/3Sq8asO8bgCGyZWbOU5vvuU5KZtc4sW8NoWsUZZuwHxEHOkbmTXLl7hJ0HK89RpO4qs/Lr5C06zCz9KEXrLlGs6bq408UarvJj3GZAz2NAL6TkUJE6YvMwWkbJsUcWW69Xm4xJjLlBzFetRt5kfI9fpxNagWmd2Wgg6ZlhprJUYcYCp5khP6/CKRAdSl84C/zfVbcL0078lRHxPWYEXS/LpkF6z8ETyYi70AyuDphBhz3pnrEnPbN9SLwyteARwzCetGaCU+lwX9nwuF/5ZX3ODV//pniwG/HHJfXMu9hkeGaXTO+yZjBD580DGQB0MHLoQJA5vzIi72VT3scw5BmzeuyzABuTmbtueBYiZmDVkdSC07zGk845e3JxyMPvZ82Y6TL10WpKDD6QPAGk5YmoE/bJeP9KW6tZhSSN1lG0v1RARkrDzNKXiz8TRu4QP/VbArL2+yfEaGa14jrN55+ikes7qPOTn1HLwX+lvpMv0Mj5LTR+5Q0au/y2+Lf3n3qRQR3l9ndoiJl595m3qJfZ+ditnQLmQ8zu+y5upaHr79Fk1gGyF5ygxdIztProCjmrb5KnIYu8fN7w8TkDNqohZuiRlCiOV1gYuQpb0aZTrHxgPTltzrbm+paASh0CN8e0Eru55hjQMeu/IvP/OIKtC7CDqTumZIxNfg5kAT14iO7Q+uONkIa8CStMSsbXJqzbDOqweIU7XJTPZ5G+B8r2uqeI2Xg+gzrYeZ5cj/Amijf9ZmK8Mc6be4exOtmF6QUi48XN/PPNy5fZS/895TxFL/JJ9jKzh474VPNKzFamRbvzTZTUfXXXyP3oHLnLT5MHoydQrFacJ1/tNfLDUY53/ijHI2MbmwDF1nNlrE3rLiCtP8XQFaONW97ucQA6mDPAFn3zNXa+YS2mlk2V2RnI9dVxYTlyolwD89QaEkA3pRzfr5TylqAuVYqXGXYxp1EjcTKvPq/637qlYI/LbpwXH9cYOq6j1z5i9dhhpCMOcuWWir/e6snXCWsyJ9vWQ2JQ/kdK2TLK7KPC0AHoAt7uKbU8U3zSAVObJQLYY0E0J0K5PhHLiYoc42EQzi2gd28BOnrYAHQGU3OoVARtRl8BJTpzSGu6yaB+mnzM1t1395CLl7f4UwpCDFd1XkDdzwzdW3CQwlVnmaFf53VDyu+wntW7ssnovUvJwQIpvydtxZSEAh4LbYBxVYLHHL302GXhvkZlFYtqg3vaNF1TcV4uZqIDzJbzIciEa6GI5CSYRN6L3/iCeeBf+dyyAJ3fy/Ho0wyovGtxnTBjkYumFshJar4mfs7JpMfu4dcSSLqmlvjYY/pX7pp6dJc1zvanVoTpVzesr20ISvntX/K83xTLWQvQGcSb+HdcMj0LmsmAzsDMgD0h7101udErbRfRhICxoxWE94RzUoxPDLy3V8ZNwzWtmf5lX1LzO8T7fXXIZ851abwB1XmzaBpDj0jvzafEwIO1qGEBdJnUqFabZoA7Az2AJ9SZLzkM7pqbNH/vE1rgtVp6llZ4zd89QjM5h2ip+CwD7jWauXeMbBffoN7jz1LfqZdokIF75OLrNHWTGfj51xjMX1oDc9vlbdR34R3qOvMmDfBt9M8B5oNg69d20mTmR2RnZr5adolWyy+Ts5LPJXW3yYceNGJG8doGFSsPDzcodi7jay0ihFOOcMpMRgF7n3ivJ6xSu4ybyTnB6p3L5ADK7WDnK8LQpewOkAdzR7nd6qOjSiJkgQE9gY3CXK/oef43e28aG1eaXQn+azQMo9EYGMbAMBqDRqN/DAyjYTQa/cNoGIZhGB5vUyiXy7VkZVVmZWUq97VUWcpFykWpfaX2XaIoiRIpiqJ2SqS47/u+70uQjH198eKbc873BaUyZuafy1UACXx4wYhgRPC9eO/cc++558pURtenBq2kA/YUAZ1OfLR+7aqg2A0svMzEW26q3zzO2ecE9uZSpeOTvQ/89GB10ptsmcHxrPYz0X34vnxno36+8fOvzdL5Bfsbnyw9PHc/O9Mxlup/GE103PRiqqWzzQUs7hHnoh8VmK+B3YU4YpV9pZUnZBbB8apxgHiCvZdciF5l/4qLjmXnlXKGY8o9hQtOarjGsvTxNts3S0BHxMxUezY/w3l2wN3fbWvqDtCZxrTMZ9AuB+gKCGa7XMtbh+rYqmW7rU29d64r5ln7zuQ945mOp7McBXOsR5Lh9D9VTZ1ROU9mpt3TvM2FEzvVUWFSbbfB6HFh7XlgH++n8xzHr9bZ1xqxk9ZU41cGAe9NcRxZeWCUKmcwiUmA+IQDc65xLQK+YW2dafoZAAJFchN1zxnU1ApIfceM2V5GARtBN8vJbW3FWNdsXdwNeQnf2SU2Hq7YCVDfb5JPwdIfHzGRih24fwdY/VGTrjuF+8HSa8nSzxmv7RKY+lXL1ntugq2XY902ubxYTrX1x3Y7/NACOj8Pe+wpDlQAM+7nloaiANIZsPQGP7Zy3hjvA/ZWm2Twz5zn+x/+/4H6cwK433HP+113+3dtQJD570qzRxa3+8HZixxXmo2v1uQSoYFcbGUptzIVz9H4JjAa9ldGZ8CGG/xI4Ljvp1gC+HM7l5zsiR7qHMsqgP/fnr3X8u8+956/Y+egp/+IQj9mArKrUzXe0vAcmHYSIOKzXc0niLD0M9bkZgjkA81OK+ZEwMq0O5m6xHJzgz6Ax8uF5pO56Eo0tzYd9adakv7oU88brfZlK9xWYtsLe+5ogBBdFzkPgMK4tH5/rPkJ/J4SbGItpYbWzoF7R83kte1m+vo3Zv7mfrN8+4CZuLzVzIJBM+U+f7vAjF3+AgD+qmnb8QPT8g1Afe9LZgAAP3T8XdOx72XTc+hnAHww8iNg8QffMs1g5x2H3jStB14HuG8yXRLHvW/GL35m5vC6ixTg3QUzf3DSrDw+Z4I1VwTmHDsa00hSADpAna1hCQfoMfaBDzVoilry+bnmqpu79rTpflv/XhyxzJzse+25VHs+3Z5vE2SqXZqGMesUx7+lwp3BwXS3Btlk1OPeIg8LemMwg5imDwZBfuCpym3JTgvmdMGkoRZtruME9uYyebeH629oNnqi+66fGayJZ2e6x3KhqQp1Kxjz18/VzzcAfePnX42l/08NbYmsnPcX+zsyw9VLSdrB1hf6kYbLJsSZ6XWX1fISBhsnIw9z5GreRY5OSQD1KB7nlzxFAJd/OZ3hAHT9D23bmoaUVK3brqadkEfpcLq+TQHo8kycKXixbcu6yeJVa1+vt/dZ1q41aLdkPlOd6yI51dLJ0Kc7nllhqu2t2ZnVWFtZDXNRi5vrX6dH/LhVsGcBzlLBSwn/ZD1KT3dhsfe38671eeftjjtgTfdtHb7Xsno51DE4YCscFfEznVLFs61NHukLZOxg6GsA9LXxdTAX2BPMqYKneI4snQA5WuVMXuoRqLRo3Kluj9asu87l2GbGlDj7yLut45wHUE9UHQeQ7zIRgHrk3l4TewSG/uiwiT0+rDGt4YpvTOzuLjDz4wJ2btN1p0226bzx2y6bXOtlsPTrYui5vtuOqVfg/e4+q60P37fMne12bLuji9x8n60TL/V7ucBwOBecncgGwWbTsbMIJLea+NqrJkV7Vs2H/sP/NwbzKyNTNeeco1llVPO/O9D9fQQFfyTWn4xsz4UWbuQigaZcZHkkFw8Ecpx8FpznVDgfYM5sQdhfGpkCyFf68eAhk02+jNf7X3jd/6IyAEeypiL/Vb/TUpbqefrFxzVj/fftoqlM4n/gb3/gZ2IHwAbrAMpz2aWRJMDDV+8zbUcZsDqbYoomJdDk99IFelkFor0KTqkbwefycyv4nGuzHj3y/bE6H8fVzw1zbO89O8CnFYEaAN2KNR+r9VJzEphyZ2kL5xxbRmMIsqPNxSb09IJY+dT1nWb25h6zWHEIoL7HTF75wiyVHzRzAPi50n1mBuy99/BPTcNn3zKNX37XdO7+sekCqPcdfkvg3rEfj+36qVh5O8C8Zc8rpmX3y7j9U9N79A0zcvoDM3Zhi519fnOf3mcJ7DzALpmqC2atttiOIG27JYZOp7iEBpxUymBGavfhBvWYJyet+E0DVKacop2smsE9NTT0Z3dguQ07/AAAgABJREFUThc+pdi1Fp6rn8/iuzdtlC1Zsa1sFCRmaAnLoGDKTVtjq9xYi237o1sc2HmKn4Pe+GDnHMZCO+sYwJpMPC4RXLFEcNQU2ZQ723lLTQL7PdX70MuM1AX9hV6Wei4aP8X6+Z9u1M83fn5NivfsP5h0bAcYVGV2onEi3Xsnmmi55searmo+ulScTCvRLCGfZpKne5GJUxxXy3a1Qusc11Jq56d331kHdBnLsNebzIFqdzeBTWNECbSTjrnwZOVFkCx8Pl8b71dtXYAtQO9X/dxHpK66OgBdgQBBXiK5HrF6CZEkkut0qfdux8ztiZt5rsVNHvBjebtZgKQU9BTOtVmWrZok+9XxudlPz4sQgDzZeUemHWTrSr8T7NkT3G/r7xkH6gpeOMddYN7l2trYvoYLuURwAw7AbSvTOqBT+U5jGlqr0j99zLWIEcA58U1DYqiEr1U9NdtzD+s2FsCWavi26ybdeMn6tGOlak6ZeOUhgPlBMfMEzWUeHhSoM+Ueu7dbYJ54UoAA4IiYfaYeoN5ySaAuQM/X03tKAei3EDjcFaj7/beNP4D3HWSN/b4Fddrbsid/iYEJp7IN0xo2iDUGsAXlTF71E8EDJrH6Hn3K/7/sWZ9llDiEJfbfTJLjSiN/6urf/8kJ22iP+hfGi232QwtFubXZtlxoaQZAHgXjTeciS77PC/visKbDAXiD3uLIQC44V+4n1nYAmF9QOxtfn4Newiv/A4D9P00GzJ/Ked4fXfsjCeEI9Pw9Ff4rP5V4A//H8dzaXINPQF8YSuK1ybRtyp3dFtRo0KGQZR3+Tg0HxZQKPK3gkxkmikSzZOxsa1vC55xq81m+yA5WamZ9mkZODYUmRb9/jr3FuUVzpKwzS0prmJBzawR7jGoUcqFZfXBc6e+xwq1m9PI2s3zvuOrps6Vk0QfA2ncC1PeZqcufmY5d3zeNdIb76numY/ePlGLvKXjbtO152TQDzJv3vGq68XvnwU0AeDx26FUw+LfM2LmPzGTh52by6pd4rx1g/fsURCw+OKFRqTRj4SQyOsVRNU5RWVKGOI+t8IzjliXqA6ByRCrNZVg7n7asPD1rRXDp+SHHzG1LmmXm9Mmfd575Fsxp5MOtHqf9LlPyYunDFtB5rZnusV02YxbIBeYEcgYWnC1PBz462rWXS+gWw7WPKvZw9XkTfMK++tMiNSQ5tMJOtJbajOTA46Q30bSUDYzW+CkEjCab7z/f8G/f+PlXV7z/oaJHP/OOH10sBIvsyAw8CqTaS9Lx5qs+7V8pdOOKkqGDiYdcG1vI3RfHc2LsRa85Y6JYidrzJtlYJAe5VOctpd41yCXv+U5Qdx7uOpFGm6zJDFPwbFHLK9nn8q1r/XbNPZdmz7e15RXvTF/O91m1vER0FtgF5kq7O0Cn1exEvp7eZFPtcpSrt+I41dXbLbOivey4s9Hkc5hKd+NZpQfosy5dZENk7AR61tiliO96oMczgzV2QAz94SddbzwFYxS7sZWNPelk6/NWNOUvuzYngjtr6QEnlCO7lw1tnTVzIaDTKrb/vga7aMgLPeWZGem9I6c5trmlWUuvt73l9GpP1Z8ziafHTbQSzLzqGAD8GAD8sIk+2KfUe+LxIZOqPioDGwJ7uuaEFPS59qvGb79ich3XjN95XSvXWyahXI5MvfeW+x0MfsCyeA55kWc9HeQWFJz4YOlJBC2rcpJLhJtMIljuh5cK5OTG1Le1xfzdfyFQ+x07UjT9Rx5ANBteesHEgi84j/Y/cT3lWBkAcOoVE109jgt6TS68OAWgjeYC40xjGz+0aFPb8/1+dnEwmZ3vW/AXBzuywfliPxn+IptNf09Tz7zon5tY6C9NbPWvPC/2V7gPK/ZXXmzlL2wggffxPDwefBEMf6ufQWASXOzw54eWsvMDSW9+yLduZMN2/gDbySheI6jTgGjcjvRl26NsiyXe7LLeCWLpw9a3gK2QI1U4lg8khEu6aXwEdI3p1XyEhxrxS2auyYcI6rilu2NY4tXzJnDviBm/vNUMnfvYjGEbeGgBfgHsfPH2QfWKz9/ca0bPfGjat/+zafnyn0zr198zbew/P/wm1lumFUy8eedPTef+TabzwGum+9BrsnsdOf2+mTi/2UwVfmKmi7aZuZJvwPr3mWWy84rD6j1fY5dMHfuzrylNzamMdt2xJS2eMxTxIShJUJxGJ7iJTvWJp3G8CMBpp2anAM4T655RvzmXp9szVtG+Ou3a1SZ1m2l3X8zcptu9Jduy5int3mNbZTmURTXzWg1mSfU/lYaG53ECQTqDj2hLOVh4CQD8oglWnjKrj05q5DT3MadPsuNHgN5zz0cQH8/OdE3h+1fhe8mtbv75f3bf6w12vvHzrwbq/86lLP9PDW3JxPblVqcq6T2c7r4dT7ZeB6AXmlAVTsoHhzRgIXD3ENZBRP0Fro5+Eo+f1XMiT06YcNVJE+F4zrpzJqWZ29dMMr9ab1j7WNagmRpkinBdKNcgH/Znveh9tnauVHqPetEF6HPPVO6+U7jnAdwq4V07G29TSUx1sQN1T7X0DresK11+Zcbc+FYFFvh9tFlzpNU7P1SvyF1ivnHH5mniwTQd55lLLGcFdEx7itG71HtmsHZ9drtGu8qcpsV+LirgCe7yQu+16naBH1n7kBPMjVm1OFPvzDjQapUDU6Za7PSzsVo7GIYT0jibfZgGOfc1wtWjGpq+8Bzf2lGq2itd4VIcifv0pIkTzMHCU7hNZXvs4T4TB6BbkD9g4o/2mUztSZNtPGt8gLrfWmhybQB2LIrlfIrlwNJ9puBpQkPGPoDb/RTP3bRqeLaz0SiH/xMzE0y9Lw4kc0uDqwaAa+JrHWDJZZqhLuOZdF4J/O+fq5k7BzgOKIm94Ifnt/jhha0mFXvHMXuAOsV1YNKqaUe/yAUXy8HSB/zwYjgXmPRy9PSm+jkA9ovvhj/T7QE8owgAZ8CKm/C8Ik09o/EMZ7nTmCYa+K6Jrf3AJGMvanIch6ako9/Be3yLSn2A+RY/snI6l4pV+pHlkez80Ko/1ZlWdsepqQXozNBobsBDNyfAijJ9jQxusKOC+X0caVRmKDffr3KFHAppA9xz255H9efl96CUeyeOZ+dNvCYDukcagmRFqHekX7Hn7WkTrD4j7/bhc78wI+c2q7a98uCkBfRbB9TKxlGqs9d3mIGC10zbV981bd9837RiS5X7wLH3TPtuMPOdPzFNO18CmL9qOva+bPoLNmkgy9iZ9830pU/M7LUvzfz1r8zSLauil5Je41LxGWo43KnQRJmmbrtpQR2fMSF9DUATYE6GLnMZBNqqlzsle3rd2W3QqdknLKAHbCua7T8ft4Nv1p4bguNAnCl2Ls1Bn7W1d9Xip7rlSJlmrZzZAJzfsn3F+Zvopyi2ypXYHlhAB0OP0ginrsi27NbbjCSHG8UbL6t1N9Fyg/vf84Zrwt5c7xDH6eI7+Y6mXG7MP9/4+TWz9D8zxn/PT6wUgh10pfvuBQHoXrzpith5+MlJK4wjkD88ZMKVx3DfCQF5iC5yiFYF7pyoBIDXF77pqkA8xVGqzzF1KUW771shD9NsTEEKcK0r3Hq/uVh4nxPHuQEMVKku5lPyAzYt7wCcDD3HLe7LqTWo3zF9x9rx+j4tZXHBIPu2k9vsiEkrhGm3JQCc4GlcXNW+woidgxrAuBNdnChXZQVzA/R7b7FBCJfcueqUmmebi+fAW7PX6VA3ZrMBAvW8ul42sfmJZR0aU6rbZOOaOd5pgd6Z1MgPnj3q68BerxS8Uu80ehmpFlMXS+8qN17XLdyusOAOUPcA6qmmQpNqvGTZegPAASCRwX1e8yWTqT8DAD+t+jkd6DJPj5p09WHj1R01fsMpk2sBqHcUGa/lElh7oVi7Uu9g5hLMEdyZcu/F7e5iy9jZp84ywXS7DVzm5aLnIWBJ54Iz4Vx0eS4bmmvxYyunjZ/aZF3cWLcmI+fY0PgfSE3O9DcV5V7qA4D5UX9tptCPLB03XnIzQP3b1iiGwrj4X+O57wBsz+aC80251fml3Mpk0p8f9P3ApHqR1S421e5np9o9f7Y/iu/cnB8Ya8tFlor9RHgP+9dNKvoWFwB7M9m7nwjtouDOJMNbbEtc8gs8dja7OleJCzcDhwBAPI7j6pFpU7jJ0hGDR6nO6cUAsOXEPmWGRuysAE34k3cBvnfK4jitBY/vaJ32nwfg5uz6FAWOOG6ZtmLrvd92XYDOlWrHsaUQtbvcJNtumMjTs2CQJ+TyOHt9uxk7uxkM+gulwZfB2OfAyAm4gfvHzEzJbjN+cYvp2vND0/z5t0zLtm+brt0vmF6w8N6Ct03z9hdMwxcvmDaAes/+n5o+gPngiTfN6Om3wc7fN5MXN5vJwi0A9W0ax7p4t8DOPsf1YLXqjHwsInSYbC1R73acltDcHxyhjGAn6WxfJUqb4ECWbmscI0AfxBp2qfYxNzVtXGDukZUHJh37HrM189CS9c7P18xlAeuMZNiqNpUXwHWobm5noNdrCAsn1sV7HuLa9FDXpxjr5jSTobFMS5mJsUbeXGKS2CabSzS0ymYwL6636+J6l073P1pFwNhlkmvHXbvan7gRuBt2rxs/vzaW/seq9aTC+3KB4Sfe0OM5XCTiyZarfrzpsmxdI7XnTagagP34uAkB0EMA+TB+tyn58xLKhZ+eBzu/hAvQZesahwtNBgAj8Y5ztfJGaqwgbsK2rqmHfN71lbN+/iuAPmDBm4x81t1m6xpBfT317urprlfdx2v58wOuxv5cCxxr8bhYCNQlxLOqeGUFmO6fsFtZaDqATg3aurlS620cC0tlO/vR8+1s1co0aDgGe9aZXqUYjuA+/sySVml81e8b3BQ3sOu897vS7p1q9aJJjWaQc1H0xiVxWY+zkO2yt/k81mHZ9z5cpbS7xrgCvJmiJTvPdJaZDMexcv93lQnQM6yrNxeZDFkeGHuKQEFnOIB6phEAT0vZhjMmVXdC41sztUewPWqy9ccB4mfBzC+bLJi6z7o6GXvHFYD3DcvWAe4EdbW3dZHB3wBbv2eV7xoZ22yBXUx9kL3a6RxbtIKzQwBTRAbJT8V+2c6Wjv0xgPyPbWsbB6CEvg2W/KrvJbcDXItyazP3c6uTd/3w0lnWzfHd/S6Cgb+kt7oD4+O5aKAGoD6TC0zEwco9Kcrpzsbvh+x7W31/fsjDdyLqz/bMZFcmW3KR5XL5qKcie/xUYpcfXyvAOo/7bwjwaZdMO9ZM+jyCkfv+ylRPNrS4APYf95ZGPXyffQaJ/D4rxUtw4veD5SYcj+zgYzu1bxjfldG6ZwOE5IVQpWFAcjVkLz+OK0sqSQTVibqLYuYpHLM0ffc57hbAzWCNArlU+01NNbTTEK8iuD6O4BugeueQGTrzczNw4j0A7tdm5f5ROcQtg5mvPjxh5koB5hc+McOn3jVtX/+jadzyN2Dp3wZwvwQW/obpObTJNH75PdP01Q9MF01mDrxkBo6Snb9lJs69ZybPf4hg4QMzcWGzmS/+WnayNKTia69VOstopqXZ1kpWrjT7PVs7p6YGQYymL1KsyvNQQ5msB4XsWRnAE8wXhq15zJIF9axzhPMdqHuLbhDLmr0/xxW0Q3GyzrVP6nap5LvVNptmah+Be4oDYdh3PmBNZVg/T3TcAYCzz/ymauexphJNUouQodNYq966wrGDgIJgpdxbiv1kZ1mSwmK2ATPjie/ld1wGdKN+vvHza2Ppv+tql39p/PRHYEBXvcnGgXTfg2C6sywdbywykZqzJlQDwK4+AxZ+Aiy9QIw9iAg8TEDHBSdSc0G3me6LS0xXZJK0gSU7x0mstCMBncNPyFKocGcLD1vT5lwveh7Y88Yx804kR7Hc/OA68+HF2XMtbFpKr/etM/V8On594T5vzmYAbAre+carjtbpGLutmTP9zsyBnLfoPy/1cKVJ0QSj/S5AHaudorh7dlRsl1uduGjTOla1ddvGpho6TWdUt3eT48i+tOyEuCxNaGRL22ItZQn2nGw22SQHOj1/qvXZmrYXfInhmGYfw2cFoGd6LDPPdFAYd9eCOoGcqXcCe8dNAAFAAEGW12nvJzgk686bdCMHtFzB9gIA/ZxJ1Z6S61z66TGNb83UFhgfgO6zja31kk3BN5/H7Qsm13kNy9XVu29aZt551S7W12kdS4c71v8RoOQolENg4i8PEdTjudWpGQA7IqJ4Adj1Wyab+I6AmWnvbBpBZnSTiSx/DOa8w/fTp3PpyN1seLEltzrTAbAGQ148bbz0x2JDyQhWaDN90HORQDWAdioXGI/6cz0eZwPIyIU1an7v2E420+v7cwMA9a4oVeoE6FxouToXWynPpaI3cvFQRZa/h5bacsEFAP5STS4efJjLJJ7kIotd2cD4jB+cD/tr8152adSnA6Jel2l3ssKZLonXeA4kFdzeMx4NYQbdyF6WYobskCBvoBJg/9Qef2yzQ49xTCtUN+cx4rFLt1zTIJ1U81UrksNxTWuefYlJd92SboXpX2bS1h4cMcu395q+o2+Y4dPvm8Vbe3G+ngNzP2tWK0+ZwN0jZvLy52b0zEfqN2/Z9g+m5fO/A7B/x3TsftH0HXnLdO//mWn55odKv/cceNn0HvypGT72mpk4846ZOg8gP/eBGT/3kZm5stUslO40yxX7zQred42trQgqeM2INjp2znZWZunw3WSffIrlKl4LeF7QBprukVhSt89av/XUnPVqfwbsHH/KEbSzxgvOWWe4PIALxBeM9BJSuy9YYZwmrA2phEfjKs6P0BwJltVGXbkNt6Vu5znP9H/3fYleUwxAaJDFqZMNBO7LMs1KqHRQjsdu23ZdBFT4v3xv8HEyO9k6k12dQqSf/MqVhP7LRv184+fXCejPj1b9Ad28sgv9NWDSM2B40RRZei3b1E6JkYfoFvf4mFYQLD0EkOdAFq6w/N7JzkusSISe7qwtcTobIvRM70NdwOQ7rba1ZjsLncpypt1pvrEwYHvOWf8KjMh8g6zc19bdVtp9wPbwLrNfe9iCuEuz+6q396+v7IJl8gR93ynmM7POVlbK4y6bMdBM9UarwmdtX4Ncqq26nf2yTL23Aby52u/gf8TJ3nrL9qWzT7WpFJF6mcA/1VtlGbwDdetUZ0eykpmLaU+3W1CffFZXFfPmeNJxus7V21qqGxPL5woQ+fxRADpFU0y1j9QIKDy2CWJf8yLPGe2a084WJ94GU+cFiTW/FFhfhqyOYECAAKCn5eV+waSYesdSPzrBHCtVfRBM/TiY+TkL6k3nTbbpDH4/b3Jsa2u/YvyOYpnQCNTZt87ndZdaFzuAupg6J7VRsc/tXKfvL/SxnSwAlt7D3nEAcQFr4H50hesr2qrivqN+cPFiLg6W7CXv5pLhJj84N5TjdLKVyaHc2iSnkyHa8LbTtIbe6n4yejUXW20CAM/4q1Ng4L2e/ADm6cw3bksz1DMwezLbC1bd7mWn2uN4PIDnT+SCi334+y4EBX0AhgnZuq7Nzvm0ZY0sD+QSoRGABfvZw9mVqbS3PO6zFJTG9ziTZ90s4VCTwWNCQOeYWgZZOB5p9pFTpT5cY90GByuNDwBntsXPtyES0Pl3APMUAR0ArlG3YOpJZlmYcem8qdR7qgOPdZZpngLT7YE7B+UfsVi6HYD9npm/ug0Af0yKbKrOVx8e17S1qctbzfCZD03XnhdM69a/NR1f/4Pp3PE907bzx6b36Dumk3ave39s+g6+LNe4/iOvmtFTb5hxAPrY6XfM+Nn3zeSlj83s1S/M4s1v8L4IGh4VmDDbJHm94MyHpmKw3Bu6HqSpoemtsAObKI4dsen25Djb1VzKfarnWavaNAB9dsgk1e3Sr1r4OqCvzMkZjsCN7wKAfFmtaz61EiEL6JxDb93h+sX+0xy7LFV7sy21qZ21RfMl1IPuZjx4msD4WHqUNANfkhJaWfN4dFXIKZIK+HhHufrSdW3rue/jHIxmJ9vc/HOWg7y/2PBv3/j5t2Tpf04hB1m6P9vZ4w0+DGQ6S9KplismXse0Ok7SRwBzXCzCj4/aOjrT8BS+UOkusQgFcKU2DQjA4Mz0hGaq39TJoJOZETqZ73r7Wot6dDMLYOrO91rpUU2kGnNAbsHcW7JqVSmCuah8dzab62vOtrPZerqtt8uG04G+59rbNNHN1deZhlcLC4MNmczUWytN1vqpxCWgd4CVt9zGAnhjKwBvuqHaWqIV/y9O8iTrbkzXNXN2/B2x9cxwg2MCDQoYskylz3ZJ6S7GnU+vTzhAH2NbWo29uI9bFu6zxsp+Zj6foikyewYIqp1XqZQhUB94ZLIAbyqhKULMg3oa7J3Mjmppbim0SuO4pBF0pVmXbSmSGp5mNBkAvEdjmrpTJl0Dll4DYK85arKNZ0wOzDzXfA6AflojXbOtFy14E9S7LFP32y879g5g7yuzrW00vtFc9SY3yIX99G1+bnEwnlsancsF5zoA6k80kCS+WsGUNkC1EgBegwt2kx9a7PCTwZ5cKjKSY5o7vBT012YC/tLISC66UAPmXupnk0W56EppNrZajb8byAXn8fhoPDvZ4eWzQgryeMxH663+QDqKNj870cJWsbS/OMKJaUE/vLhquF2biYKhx3Ors3GwwDA+R9APLQWzgalodnE4zb7zjGN/Elu6SX0cnmIthe/pOFA0xTJImk5+zJD03VMK3joO3hWos/2Q3QtStzPrguORYOdIA44JzqM0fk81X8YxvGxT7ngtqt45wphDkaIIvFkSW71zQO6O88VbzWzRJyZwa49EchSwrtw7YlbuF0gINwMgHj75tmnb+nemc9vfmf693ze9+39iOvb8FAz9bdO17yf4/SXTs/9lMwAwHzv9NsD8bTNy8g0AO2voH+r1F0u+NoHyXSZ4/5AJURzrrgmsMcdaaDpVola6RDfb1RAM4xqQ5JS4/irpVFjHTlG7QhMZDWDpteYvrv/ciuSs1Wt2iRPUJm3bGpXtwYVf6UOX+DEEYF9bsHV3BvRyhutUWt9zXQXp6U47vjk/74EaF5bYeL4PVNpAjF05rPcT2OkQ2Y2AvsP5uDeXSrnPFHyCWiEK4garwt50x1AusnDDGP8NNwRoo/984+ffpJb+e65f8jt+Jn4ouzpRnRlvmEp1lcUTzZf9eD1A++lpMXVeHMJgAhGm4XHBCdfw9nkBOhl6vL7Itq4BNFIuRagJbAQZpd0AdL331lNvBDsxGrH0XvWj29GTDtSpTg6MWqtMps9c+5qfr7vnl3OT858TzdnnDKy3vK2n458zqbGg3mmjdTHz2mdbMnT6vHc/VJo90VZhAb0Z0XkjzSYA6o3WcILsPNnhQL2FTlJ4Tttt/Z3q7AwU8rPa3cjV7DTFeY3rKXUxeDAWgk2WqWoyN9Zeh6ulYieAe6yvjrJ8UWfBfBBsb+iRwFz19AHLCrnPlYbHSpNFIMBKNhRJnZtqvqb6LBdrswQKCuYyWKn6s2DsAPXmi2LraYB5BsDu1Z8COwdLB6B7DSc16Y2OckzBs18922HT77n2Qgvoso4ttSp4traxpi7/+Wo7hpUpeLDn3GxP1F8aWsiF5sdMbHUIQD5koisjANARMO4JsK4ZsHFaqy4A9AMA7TAAN+kvj8Vx3GgrO5aLBTrI3nOxlTaAPf9+TuNMF4bSFMFZ86Am9Yb7DOQ44GSQpQArVFRr4Xijn53p8gDiaTm2rc2l8b4eAN3De3t+YBLbmTTAJO0tAMznBn1ZipL9jTlQ6LdDfDihj9/vRKvNVhHQ0wC3DC7+dHzLdlt9A1m27Su/D9Z+D8fyAYD9kRU0urbDJJh3GseJ+oeUbl92tfTr0kEkccw4wjhadRKAjoC78ggAfb9ZuP6lWSrZboIPCgSwwUcnwc6PqdY9fe0rpcv7Dr5o2rf9ven8+ttm6PDLpvcAB7C8ZnoPv66aefc+Gsy8aAaP/MwMH3/dDBS8bAaP/gyg/paZPP+RWby21QTKdpjVir0C9CACCl4bog2u9IbvINXtMaanyW4JjAOPnaLc+rirlj3mRqMS0KedCJYT1Wad0n2WafdhOzGNIrjlSaXcrV/7/DNgJ5iHllRPFzt3UxpZXkuzBCK3yA7rFpkPstmJQo2PrJytd0ZeyJhwg1goiuMktahc4a5qxjxNttjvz2Oc7q5IZwafBPy5XgaeF2mr/ZwgbsO/fePn1wroeV/s/ySW7iU/ZpSZm+/tA3gEcdHxeFHhyFSl3VlL15bAftpG5E/PqNYeZd0Mj8fAFvJskHU/gol6ZxH9pocdg+GJROY0Ye0WGS1LyLbwjKXLaWxlfH2+tLWAtT3pEsnlPd7dkuc7n6PnWSDn71IdW4tNgPqQZe0SzHVrHrssOVnr1gne4MZR1llRk+riDy2odwHUW3GSNwK8uZrsigvUr9tyA1h7jNOX6q5qIlMCjyfI2FtpQvMA++CxnfI2UreeirfK+AaJpaiA9pVSr7EMXKD+BKytUmCdGbDtSmR1BHOBwcADmZCwjU2gTjEc+5W539tLlL5lyjfdfkOAnmQtkJ0I1DrgOCUaLmJdMClsKY5ja1sawE62nqby/ekRgPhprFMm23ACQH4KDP6YydSeAHM/Z8VyHcWyis2RobddlDI+53rW/XXbWFrEPrGe79QATLX6/mwPndHiONZUvgdxUQ6aSCCYW5sGU14K+8HZKI5/1F8eoetbHICf9temPRxvz5tojvvz/au50NwCgT8XXpwzkaUAwRwrnVuZ8NU9wW4EfOcoeCSgU0XO3n1mPlTqIKCTtTPY4rS0lUlfamqWc6SanrST0gJ4vcUh31oU99varMSUzVJtezRUQtAqXwKqpSmYasY+x3qWGbmKY1MisaLU6mpBY6shSyUVmm6X7S5zbPwSvl822Eo3W2MZtiASzMnaBehNhSaK8y9cedREKo+ZyOOjJnTvIJj5ToDsYRPRuXrWtp2CnXMe+vTlrQDlN0337u+Zlq3/t+nb94IZOvKa5p33Hn5bVq+9B35sOnb90HTteVGg3rnnR7j9IzN4+BUzceZdM3v5Y7N44yu9zxoCiBDT7U9tCS7WcEkGVIk2BDMK5CmIu6OWVWbokr2PrABtsFZqc9W2J3+VnXOlxNKd7escz+ExCeTUtkYg10Q1Z/2qVPuiyTovd4/OcAvWhU+dMm4Ko0Y4j7qRszxmQ8yqOFbOxSwiwbydQF5iIrVF2H8XTLDqvNYabnNRGMfzPtF200/33kumh2oWQCwa/FS4wPm3bwjiNn5+A1g6J2IlVgqygfEaf7plLjv4MJnpuuWnAADshY3WArjB1LmUdgcrCIMVhB4dlmiOvegRnNiclS520ebqhwQaMnIqfWV/2e0U7n3W4lUDW7oEsoqmmR5fzAP1sGXtS3b85PPp9+cBXV7vDrzF5vNryW3dcJd1g5ppa0BD1buCCpnHWFBnDzpr4KqhC9RxEeq6D2AuB2CXmHg9RUhk6CWajcxBNey3jTUBLNl3W4sovuoc1nlccK8AMK8L7KktYG1OKmVc3NIuna6edQIN9pHAnFu6wJGZ84LDnnIx7ttWzU4HsT6+hgVznyl39qUzdcvbbFdjDV31VV58iix4kKmToRNocF+i4bwFDCqpqXhnS1sTfsf9GYCKfOEbzxiPKXbHzrMAdK/+mG1xoyoej/tk6B0AdKXhLzohXZFzl7uJdUugLic5Zh+YXkYQk5OjX4efm+nxcsE5Lwc2TFYMQPbAvMiKveziiJdbHvUQoHkcgOIHZ1hy8TmFLDvfl8Z3I+4HxuO5tZk43eH88DJeB89bnpBuQopyijMpQqO1L3/voyf9E7WTMWDyJFCrsoydAR+zPuyWsEBulevKAA1IQKlSDcd58rsCUFJphZknmSoB1AFiHCvM1LMGF3FfMzvCfYt96rWXquTBDgQdq06APMfV9t3Rvso02zZDgrq29ecF8mkFBVcE5GpFBOBHnvJcBDt+WABQPwKA3WdWKvbpPKRF8+qjY2a5fK9ZuXvYzFz5HOx6M1g3APzr75iuHd81w2Dgnbt/ZNq/+YEZPvGe6QGAd+34Z9O183umB4DewZno33zP9O9/0UycesvMXtxs5q98YpZLt4udh9jO+uSYsnhRnPcSkDErR8FYJycvVlhraE4rpBETzyeWJMiS5Z3erhp6PuWuVDvBXPavPTb9PkuB3LBJawa6S7uzFTEwDWBnTX1eCvjM0oRVxVNMN20926WeZxuhNDL1KoewNKLRzr12iiK7WXSbZYG2W3Y8au1lJyY8Z0JVF0zoaaHU7TEG8BzI0ipvDT899NTOP1+bvOt78S8kMn5mlLSRbt/4+Tdj6f+Hhgn4YOlRsPSF7oHs6NMwGJ9HdsFaeownbdUJEyUTuH/QBO/tx9pnQnf3mLX7HODCPnUA/lMAWZ3rSeeMdJzUFAHRpjJJ0QkZ8Firnb7GVNi0rXGtO77R/U2APmpr6lIpjwrUPcfGn19i5kq199q0+oJl57l8Gn5hcH1amz/rTGoYQKiu5tzkxqw1JyN4Gcu4Wjrra+xJJ6AnW26ZWN0NE6kBaNfRCrdEJ3iCblhqZbG2m9FatvwVYeGCW419UVOoHtYUhYIsRbCmCmDPW+USwJlG9wTiVbZPmapopdIfCIC87nIBLxfTsryPKVsycjJ4BQBUUVN0xfo5A4cO27amticAgddt2XoKFy25jlFw1XxF7I+COYE7mXmjBXav/brJdt4wHueuN561wM4aOkG97qhq7GkwdY8snbX0lvNYF4yP5+WYou+4Ymvr9JdXCr7c+AjutCgEcwr/LK1s3THLqq940c8ujPhkyLL9ne+3XQwURNINjKlzBWD1Pu4DeI/S2tVuCfqrU26Yz4AMXTIdt7BvntrUOMDd9urf0XxxpVt5DPL7kP3kbD9jMEDRJsF81gae1F6wvTHD7gimcsk2B2xXQyavVSCQcYBHvXVTpKMYA9w4Ves0+AEQa58DjDlBjWw9o/1covIEZ9GnGy2gM4iOY0m8yLQ7F7MpOD5JjsvF7UjVcYDqYbN6d69AfeX2Hsuawdo5SIl1c4I511zRNjN57iMw8JdMxzf/ZIYO/cT07P6hXOL6Dr5qho+9bbq/+S4A/Z8A7D8CoP/I9OLx/r0/BPC/bCbOvmPmiz42S8XbzHLJV2alfJfei+n+SM0ZtbJKFY4AJo7AMYF9kdCwpju2Hs25DnJnbLSTzuTW1mJBfbJHKfcUAZ3zzzkH3Y1OtSx9cL2Nzbayjdr2NYJ5YEZtbRnnjZ+fqpbGcUqPt9nAi9ccpvnZptb70MQZdHXZIEP6HgI6vTI4r73BtqppXHTdVROhuUxjKbYl2F5XO1uiq8JPDzzxvLGmVX9hoEuGMr4MZTbmn2/8/EYo3n/PjlbN/sTPxAtyK6MN2fGGBVz4klS8x2rP2DodLh6h+wfM2j1eOPaa4IMDitKDj45ICR+uOq3e9BhYKkEuLrEcLnI4eaxNqhPGESx5cWRdi6x81irdswtOzb5sFe62jk7ntDEH7s+EcgL9PJvKO8W5Hna+Ri4vlHNT2nKuJU6T2jSiler3Pg2J8cZan7nHqR89L46jyQwuAjSeAEOP48SO1l3Hxcsx9fpirCtaMbAx9afW4EL7lPXNy0rBcxuvo8ocTLjNKpMz3UzDV0i0JjcxZjAGbWrdc8pnsUewcKXWCeAUVlHARmAHCNiU+k2BAgVx8v+my1ie1eOC6qkvvVymJPnnagwnswQKCm5bRzm2RBFI6s+ZVN1pAPVpy9TxfmTq2Wb2rZ8HsJ+WSM5rOG5SNQXqW8/ma+kEcYC5DybvN5wAuF/E3+I618WU/A3js1edLJ0pbwIqhYDUFCBwkQseh+uAFXO4hqbkMYBjdwIu/nTY05Yg7Wrh8jQfbbTq9fys8flhN8LU+g9IUd5ZrnQ4lcwUo7Ek4WHfZeW49lgCNr0W9rtq6vQq4PfC1d4lnsq7C6pc0iztBzsc4h13rGMghaB0SXQlDbomxmovKuVNUE7UncW+PS+2nQboEYx1LNVbzlT8dTcGt1jHIcnUNUAyXsPjcNGaAhHEaQLE+nr9WZOoOWkijwtMiEE1zsPwAwB3+W4TZHCN85R17ZV7BWa54oBZvLnbzF35wowef0vq9v6DPzYDB35imrd+yzR/8Y9m+OS7pv/wq2LunWDn3Xt/bLr3/NgM4nkjh39ixk5sMrPnPjALVwDo178QQ1+5jffCe0Z4zlOYx9KcE8rGm1xww6FNdIjUMJl61c2TI00mMYztsL2dHgOgj3c/t7oA9p329hSD/EFZ6rJ9zfakj8k1jjV01tKVZg+Mu9o5nsu0PQMEzj13rWlk53KFY/2eGbfeB9I6aHVxkuJtiRglZETAKy2M9DAI4tvo6Q7mzlo6B7W00fWuwk/1PEymh3CNXByq8xNMt2dfcOn2jfnnGz+/ESxdo1WN732aCy9U+NNtE2CJ0VR7qUeGEak+KeFN6OFBAbnc45h2d9avUYrkKJqrcgwd0Wyymf2at+0scVqjDjmDGbaKcYQpe3dnLRD7eZX7shXCsX3Nd7X03MqErauvg/qwBfbFvBiu3xnMDD5TvOcXwfxf3Gefb9Pv6ktn+xoFeuug3mhBXcNZqmXpyv5zC+o3AdS0hCzWUuBCUG+4ClbObZH+f5upAJi7VHyirtAK05hylWCtTGlwqZ8plBrMM3KADkA8qyEcT5yivVq1X9p/EtAlZsOFPsOhHXQQo16BzLM/bzbDtHuFrdcSzPm4q8Om2uxzBewIKsj+yRL1ONO7dafVxqa+dJrOAGBoQuM1XVA93drCngXoH1ONPVt/QjV21dkB+B4NaWqPCPgJ6n7bFZNtJ2DdtGllToUDI2XfvJT8ZMbUDmC/M01O5kUP/KwyOF1i1j4BlWI2zhln4MeuAWYkANBs/8tRyT6dn7bXQ5tXk0OwQKGTx+9eS7GrcyOwbEUg1HLNeK3XBeQZMDMyd5WGsP+Yls+x/so2p8Eq1diVuh8hy6tSDZafTfVhpV7tYBQCOpXoTK8LjJX2PiFQjj89bpK4j/PqUwL3s+vMmyI4rwOg3n7V+gIIvMF2cb4lsNi+Jj93ahyq7TGJ49jEqo6a6JMCAPlBCeMI5KtkzXf2WtYOxs5WtuVbe8zC9e1m+tIvxby7AejDxwDe279r6j/+W9O18/tm7MxHSq83bv226ue83bXrB2bg4Atm5NgrZurM22bu4kdmwTF0CuKY3g8x1U9RHs57gTlZur7jOO/xvSIzpzA0QfMWOrMhQE4M1pnkkFsczEIHNwfkmTEL6qm86p1Ob2TnczblTmGcRqNSGJdfzOQsjTpnuH4387zDBQo8pzusAA/XHqrrydQ5OCoFUJePROstkY78COgErld0iktQ5NpRYVc758yXmQjYOc1nAPResvt+PDveNJZdzY9Lzf7N83MJNpBl4+ffmqW70aqZV/zY8ll/obsrO1YX8AYfptmPyV5mgnr4UYEVwqiFDWDOnvQaXmTOW3ZajUj96QW1sqXEznHSMArudsNM8qAuQZz1WZfBBD3aCdQE7TwzJ5gHxq1ATmD+nBDuuRo6QVpsbqb3mbJdU9nyDnR99jYZvGPn60NgpvvsPPaZ7mdtbDKaAahznKqsYB/L4zklcVy5aujRmmITrr6MbZFS7Eq9a10FS7sOIL+mixuzFPSAlvczU6/sBBDLvmHBNg/sVED32RS7gJt9xnwOLV3ZlibW/siZw1y36Vv65wNwM1RAc/H1CNBKr5epdU0p5o4bElR5bQCz5mvWrIQ1X25Zw6VYi0DPz0X9A+1hydapdgfA87bXXLjO0jONZPHHTaa6wGTB1LMUz9Ufs4/V8f4Dxqs9ut63nm0pFIjbFHyZ84bHbbJzKveVYagSeOcofOJ3g8HMhCuHkBkDvDPd9zRsh/fzviyZ90AlAL3d5Gi3y/Q9PQZwPAn+dNFjpoLOeBnud7fSdMpjBqKFZYdrMkNSAMTFoGjcDlQRs6d6nZ0KZPOcbMbxuQQHXOQJBBKANRUrrS42Tr3Jk+MA2eM6RyKcP48Vx++J6hMmUXXCJJ+eMkkcO640AqVMC1vUCrWYJUnW4HGca0l67tdx+NEpCRZjeD2+RhxgHn6030QfI6h+dFhLIjWwZmbQok+O4vfdZrl8jwlU7DMLJV+bvsOvAKS/L3Y+eOhlU7f5/zINAHSK3QaPv22atv2Taf7ynzUbvX3nD0zv3h+a0SMvmfETb5jJ0+9YQL/6qWXneK/Vij14r0Mmgv+VKfcY/3+asbTZkaIJl9amrWq8m6yYwF5j4kN0aeNqAHtmj7itoWe4xl2qnben+my6XSNUB5zafVS1c9XRVUOf1e11MHfsPL881uEF7k3P6uhMu3PyW9tNK2ZtualUewKAzfp5hO5wDUyz3wSA3zRRMPVom528FufUSfagd1Wk0/1VqwhAO/z48nnjZza5drXf30i3b/z8prD0/2hTRtlv+enIrtzqeLU/0z4DUI/joumzJSpBMxnW0TmGExcNnczVTgjXcEmPJziJSL7u12XMoBGjPfeVWmaKK+PcopTGlB1nmzV7oEiNzJn95ssj64zdMnTbwvarKXfrJkdGnhPTdpPWXFua76xjNXt6Kj+KtRurSynZHC4W/rSdwc7Uux6niIZtNE7BbPvSa8Qy5AgHUGfGgep11dMB6OHqQlzQWDsvUoqdjJ3gLoEcZ8rX2FRkTDXGS6pXp6V8vmp7wVstkAp0Ce55T3YK2QB6qnGDxakFrddOWpNxjFLlls0xTauUOWus7DDouunS7KWW7Tvxldg8B7bU2aEfbF/T++dZPBdZPD8nU70E9ZoTWmkAi6fUO5k62GbVQZN8ctB4TL1XH1LPOvvXM0/x++N92B6ybF0q+bPqcc9q0EsxQL5Q411VKmBvdodt6VJWgkEeyzFMj480aWqexoVSuc8WO2oP2A6I75TX80CtR7Y3v8bW5qlgFiDj+LHDgmIy9nDLs/6kWDL7vFMAVSr709xnAFYyZQY5dNjLcJoZNRXq7b+p31mmYN93kkEATUZabGcDAzXVzCkKqzkndh55BKB7dETBb7iyQLqTWNWRdUBPcDBOflAO9k+aZYtWMPXWS/hMpwTkeu7TEwqoEjXHwdhxvnHkLVg5x9+G7u8xkcqDWAUmCLa8Wr7TBCtYSz+I9yTA71JNfRnbqcItpms3GDeAfOz4K6Zn5z+bmo/+2rR/+Y9m6OibpnP/q6b1mx+a1u0vmHYwdIL+0JGXzfip183E6bfMzLn3zGLRL83SjW0Ac7Bzgvm9ffb/w/9MMKf4L96C/dFaqpY1gSDZLjNb3ZUm0VcFll5rEgRzsPQUt7Ri1XzyToA7gbdLgL7O0AXmfUqlZ6SrGRdLt/X0YcvWlydUqktrHC3+ZsIBOgN1rslnoJ6itXP/Y+cGd1utplr0bWdrGkelYoXqr2Pd0GLvufzoOQKWKfnO236q575Vty+P1viZ6D5rQ2z+aEPdvvHzm8TSf8e1sP2ZMakPcpHF0txi30B2sjGY6rvvkYnQ353pPYK5mPrDQ2DrR6y6vcH6uSfpGkfjBbZztZWL0bCOprYtOsaxljlSazL0d6e3NVPv09YCUqCcr4XP2TY228JGs5nxdeZOYM8sOOe4+bwXfL+doS5g71n3ddd9bkALb0tUpXnrts7KrcA9/7vYQqd1/KIJjhTvVTKL0Uz0jgr9XwkaydQVA8yv2lVbZH2fseL1VigncRx9oGsB+tVs7yOQXnZtY0VWsSwhGuukhRag1SNebMGeQEu7T95HkxGm6jV45Z5j32X4GyqiL6hGq1QuQUrgdN2m0jsdUyfjbwGAt9i0rhgiAbvhkroSBGZk6vR8lwDrokCcwrdk9TENcBFDJ6g34m+rDptE5T6TIrADwDnUJV3FdRBrP9YBgDyYe91JvMZJAVaW6Xf1ugPAmugqV646cpYCMXwuKsC9vkd2ch31Bkyp00YXgC5felnWOmU+QZqWtwNVym5k6WnvGHZaTmxVSqenJfgrBJCf1Ox3TpxLPj0NUDyC7QkL8gDbNLasa3MfMJjIcmIaBVNMzffel81uQt/xawpUbQamWIDO40pnxXj1abz+CYDsYQC6PT/YCUKGHgb4xp4ctUwdi48T2FPYvxkGSc38DpwToPMzxp4c0eNk6wTz6GOA98N9+NwF2O43obs7Ad77FTwE7+wBY96FLUCW9fSHB8XQA2Dsi6Vfm4mzH5ievT8wk7RvBUg3f/b3pvnTvzcDB35kBo+9bTr2vIz1Y9O178emF2A+fPRlM3HqNTz/TTN59i0zd+lDAPrHZvn6NgQOu6125v5+1e3D7G4RqBdqn0Q5Q7y1zM4TZxaDrZ+cZMaZ48x2DdVppVU/b7N96M+BuARyvE1h3ESPVO+aYrdka+gEczsn3QrldD8Z+rxl8woEplzLm6Y39lpAZ5scAZ0mMuw3Z/mFwN5egSCkTIufWel1TVpjzbxEdXSl4FtpFFSKc7/Mw99Hs+PNY7ngXLnxaUFs/sqNS/2dDUDf+PlNAfW8OO6/UeDhJ9eO55ZHGvyp5rlM/4NkvKXYp+AtdP8wLhx7xQpCDw7alpmnZ22LDlvcmiyLYf08RZtUumJRhMJeVF6sBexVGkyh4Sash+KE81VP77bset6q1/NGM/m+9NzqpIBdPcPzz7ei5dvR6P7G1LmrpU47dj7Vra0/lWfrfUq1azE9q9t59zgw9fEOiaLUszrIiWpPNXXN9qTfl497osOd5Dzxa68J1KO1V6zKvb5IRjtUutvbYO6cLU8jkLy7Hic1NViBk+rWdafclqnYCwIITtxiO1S69YZNs4NBp51pTEquYTetsKqlaJ1REwBSZKPyardGJBLEka1zRnrDeTFWqa4ptOL71Z5dV8LreXhND69pfd7PA0hpDXsWwMO6PQH9vGxik08OaKUq95o0t4/3m+SjPSYFxp6uPqjH0mDs9IfPNp4XmLN/3Ws4p9e0afyLFtDd8BiWBJTZ4TQxfJ8yfZW21o2AMsPPzLoyGTbLDQ2FFtCxf7w2twDiWabnsfU67+D/RdAEALez4I/acbFsvwToxjQLHqD+5KgeY2AlYyS2GLI81HPPmbmUiKkn8J4JHk+AOkVvcR3bSwDu4whyWdc+LjCNEsQfFbhzxII77ycYW3CmFmW/3jP1FKCOfZJupGDuNPYrZ9cDvB/tA7AD1LHvCObhB3tNhKsSQTS2YTD00N1dur1yZ6cJlH9jmfOD/QLbxZLtZvnmN2DVX4Fpvwsm/oqZu/wLM3T4JdOw5W9NJ1j6wJGfmYFj75quvS+Dwb9oBg+9ZEbwvIlTr5rJ05vE0MnOZy5+iL/9pVku+dqs3d6L9z2gDpew2tY4QvmETKZouCJG64BRKXd2iaiGXgNArwWY14opy4oV5ylnlKcne8HMe8DUuy1bF2PvVAo+g8cyDrwtkA8rmLeAPqS2Qs1Qp8J9rt8NY+mz7J5gzrY1+QXUu9nnVboeKTjnFDgulQTtOR1lD3rDdfwv19WPzpp6UgF8qfUWaC1NA9BXvcnWHg7uMcZ/9Tl1+7/bSLdv/PymieP+s/opvfinueBsmT/fM5AdrQtmeu96qqM/4aAWDmMoUA8sRTGqoTNCb7iqvuc4bV8RqSddDV0XR9kqPrBCJTB1jVGlAnW0wbnGtVowp9AtL3hbsIp1pd6Xx+xs64C1hdUkLbYn5aeyURRHBi7g7rSsfDI/D71LE9d8B+xZXCSyAHeCNxl5PgjwJtwad57cTLkP1tk1QEvPKrENmmNwmAOVzmpnq78hQA8/pa92oRi5lO9sXathD78F8nhdkbu/UL/T2CUJRs2aaqLmGC7gBaqPJmtOiD3GADYx7FvL5pl6L7a95BTWdZRp6EpGfc3XrDKaqV+Ac+zJYQsGtWdsTVwTu1gvv2FT6hRmOUMZsXqye/ai4zlZgH+247oYM/vRvSY7ZlVsncEAV973HZ85VQWAfLQboLhfgJ54uMsk3O+JR3uxAPDY0owm03BKynim7GUvy/sYKLgad8ap7SksSzMoRFCjYIYlCtzOgAkmnhyztWTVos/ItIeiNwYpHvZNpomZAAQxdGhrQ8DD4AVAG8ffxCsLTOzebhN7cAgLLLP8KxNjGhtgm3h0QOCalu89dQ4ldvH3+nPajxSqxcBI2ZIWJ6DzONJFEQEu2SpT6+F7+/V7COC6RtZ8z6bA1wC0BPo4mDdT5pFH+7FF0MPMBqfccZ/UnsT/hdcBmIfv79LWPpevtwOvvcuB/QGAO56D+0J3dphgOYC2fLtZA7CrjRRgSzBnvXv+2udm7My7ZubSz800VufuHwjMh46+agaPvglAf8sMHH7FDBz8iRkseNmMn9xkps5sEqiPnXzVTJ/l3/7CLFzfitfEe9zC+1Xgfe7vtSn3qlPOZOqsCXNCYxOAkINMAI70Pk/QOrXXgTp7wAmqwwT1RtXQEyNYw20mOdJuEoOtJj7YbJJDnIrGscZdNo1OsGb6nIBNcRzOfwvuAxqtrPVc21raZdnsUJYWO4SFgUQ/Pge7EgbwOXBNIqinep3FM5l5ww31oMvaldcvTltsL7fMXFbPpT4C6rg38GgmO9dX7adju3Ct/NaGmczGz29q2v3fO2HHfzfZzMt+MnQ0tzJW5082LXh995PJlmt+TKNTOTb1HMDmvOqGMVxYCTz8nc5yMYGXbduS33mPbQ2ioYomsIGly+TBDUaw/u5NVvW+YEE9t+gEbBy+4oaz+IvPmcksDzsTEAvoqoOz5WiyW0zcgrRj65P5+/OAblPrHNCSzYP4ROc6oGcE6C0yDeEc9PRAnd1yLnpftUA93fMAgH53vZ0thog+UnPFRFhTpxEFGflTO5EuQrtIzlCusSNnI1VnTZT7j0DPYIgMEmASrzqsC3j8SQFA6Jgu/tFHuI+AD9Blyjcpdn1ZDF+2okypg1ET0HkcKMhinTVaecC+FoICtkuJWdMspvUKgPKUZfKso5PNc9pak+uTloHJZdeTbh3k0lS8U5hVDZarNPFJbAsAgGCYDELu7xAzTwLQ4w92ATS/AYgD2AFKsTtfm8S9nWDstJI9AbZ+1Hj19jWT+JxKdau+fcYFG1R4I2BoKsY+OW1V3hSRkUUDzOMA4AgAJXoHwAzgYqsYjVrIwpmSz4BFe6yJN1lgZsCUYA370SETBSuOAfQiXPfBMsu+wO0dJkqQv7sDzzts94lc9AoloEvg+yyRGj5n9NFBHY84v/fVZxHcngaIHwfAgSkDyFnPDt0BiIMtBwmwANy1e3uVyVpTzRlgXVkgli1QBqjHsc84EIegziCJIB99CLDE54ncxf8J4I7e3Y3/dyfuw3qwR2AeuQ/2DyAP3f7aBG+DnXNV4H2xX1bxGZbLdpjFG18CjDerh5wMe/TEm6Z95/dNH8B75MQbZvjEW1hvmLHjr5mhIz8FY3/JTJx8DSD+Ohj6G2bi9Ovubz8GO//MrJZ8btZufoH32KkMA8WxGty0PtvhsgkD0CMtZSZClTiHFwk0K+2iuJSgCkClWxzb1xI4x9TGNtKCLVcTAL1J9XWazqgN7bkUej7VTje4lADeMfV5NyqVafvxTnsOT7StA7oIBK817nqTEqhXmkTnAxMFA49ybCrOY57LtHOOUwPQVGL70ukzwW6WlhIv1XM37I03DuXWZsuM731kZ2FsDGPZ+PnNZen/wY3/+xvjpT/NRRbKcnOdI9nBynCq7bptYQMQxXDh5UWP4qpYDS5sOKlpRRkT87wiZbdNP7NV6qbtu+6561h6pU27E8hpNrE+XrVdfen+Qh9YOh3eCO6DjplbUVx+5Ye3sO+Y6XePwD/tauX5+eeTnetKeralMbUv5fSvADlXj92OdTp23mpb16hyH6hV2l3mFGTpBHUusg6m7SiqYeq9ucwx9SKbeq9BpP/0AhgMmEvVGV38I5UncEE/4boDuL/OymWLpj0UaxF8o48Pi4UlAOYpprVr8gKqk3ZoR/0F1ZGVMmfbGtPu+YEdDdQ4gEE+OS6GTlBncMC2KfWXU1HN9igCtlTs522GAOw7WWv7nhMyQCmyZiZk7rVnBOBkrwRzCbYIPJX7BepprORDgPmDnWLkcYB59M6XAPlvAJLfmMitbSZWsR2Av98FAAflNJcCwJMtMyDIADBZV07VU+WN78zDY2rziz1BMAImHgeQEsjjrCET6Mo+N7Hb200UrxvH/5tpK5MqPF111AYHTKOz5Y7GLAgGyMzjTIXfB+jeBtMFkIfv7AOgf2mCt760qWwAYwSAGONz8RpxBFoJeaWfsrVvAS1YNgMDmqlwlPD9wybMbBU+i0Ri9Glg6vvml2CyX1mgrdit+vband2u7rxPYjaq1AnO0Qe7cYwOKViK4XhFHxKsd4N9W7AO390FZo4ABOycwUcI/38+3R689YUJ4fOv3txmVkv5P1HpvsOsYi2XfQ1W/ZkZO/W6GSM4n3vH9Oz9oWn75jtg4i8B0Dfh/nfByN8AI3/LjB77mRk9/grAfJOZPvO6WtVYQ586/55ZvvqJWb3xmVkr2ar9FWTQwgwH/SeenDJB2kLjux6iSyInrbXfsmBOs5buO/Y8kYnLY7WvaRb5UL01fRkBIx9tdD3jrSYJQE8MNZr4cJNl2eMdVgEvgVy/ZesOxO389AFrxTvT90wI50YkZ9iKqkEs7XbSmmtLZS09SX+Jnkp81jsqEbD/nKZLcard64vl275G21d17VyS+h3PSWcGqpZAIlr8ePC0MdkXnXf772/0nm/8/KazdLawvaxa+tJQU3aifinTdzeZbr3qJ+gcp/SjSwvTRU6e7meleE02UcVdqlpjRP3YF1VfT7XeMMmOcjF2uXRRPUyWLtV7kwRynMCWnX82gU3sfCXfj+5a2AjuGrM6akE9P2KVIrnpHp3IMgKh0nm8zameW61vO38neE92PwfqrJvjojGGv+O85NFma+lJMCczzwP6YJ2zhX2qHnV5U3P4BOvpiPJjbHOpp0DO1tPZlx6twcXgyRnVWbXuFYDR4WJ4lxf1o5ZRc1/KVve46qvRxwUSbZFhx6qPqN+YQkSmdGnxSeMS68NuPb8THNTRUGiZe92ztqlYJdO3BwREZPsJALOYOu1F611WAABNMKeqWkIsgLqGg6j/+dwzUH96XCItAg/r0SEAVByvS0BPAdAJ4Il7lpHH724HiH9torcBaiUfA0A/FVtPPtonFk/BXOrJYYFyAuCWxOeKgXHGHiI4ANML3d4lgVkCQEF2HQfLJZBHAXDR8i9N+OYnJoxAIVL+FYDvG5NiAMksBwAxzYxElf2srJWzd5vp+SgYeeQuwBKAGyohQH0KgNoGUMdrMH0MRh1CoEDgZEo/Wn3C9lg/AJsGWEepKsfnCBOYsYJKqe/H2gtABajidVfv7LHMHEx2tXSrWcNrB2/h/rLtZqV8h4AwBJAP3yFI7xHjjtzBvgKIJ7A/yMwjBHAANwOMUNk23MbnQuDC/zOM/cXHwvd2K9W+Ata8VrrNrFz/BO8FcMdzVm/hvUq/NkslX5uZy78wE6c2mdkL75phAHbX7u+bzl3/DDB/zYwcexVg/aGZOf8u1nt43hsA8rfNzLk3zfTpTWbq9NsA9XfN3MUPzdKVzSZw/VP8H1/i8283wbt7181r1p6cA5hb7wkZynAwDfvyZehjAZ1ubBrKpKEsAHIE8ckxbhvFxOnrnsT5xnY2+bwP1utcTHGNttse9Smbeuc4VdXUeRuMPC0wt/PUPecKadtTndkUAZ920lPPJisysEh03zeJngcaiZxsdSLXhmITrnEe7gDy0NOLJlSH3ylybbvpp/rUez6RW5166KcTO3CNzM8+/w8b6faNn9/0Wvp/lVmCl9ySC01V+DPtI9mRqmCm+5aXdO1rBBebRjxmAQQMMgogYC2Xineq3WNPCf7nlCKmejtF21HawdIoRUNbauyQEmfg8WxuepvJzfeZHOvoS8/mo8vXnel2OkM5+1ff+W2zjs5hDGyFo1GJtQhtsjV6Lvp5jxPsO7ElkHcL2C2gdwnMPZnK4O8GLTtPO0AXWyeroB2sY+qykqTzFGuFHZapxxqu4aJwWReDCFk6LWGxDyKPwdAfgZ2DoYfuF+DCuMepkg+rtpoHa7I4pm/D2Abv040Ptx8yXXtIQB+6b1O3YpBk62yDA6Nmy2CSoI6AigEW078EKl6AQ7e+tkCB1yKIZ9hG1nDWzUC3bWlsjSITjTBN75TYBHkK7KhyT7IuDyYZqzyk9HWwYodS12LlYuMA8ke7xc6jAnO8563Pzdr1n5tw6RaA/A48Z6dJkakDeJNkqqxh43MxnR4n6wTo8bOuAGxDZNIAYGYbYqw/6/W2mTgChujNLSZU+ql+D974GIHFITBoMFww3gReN4HPyGAjiteOAoTj2F9M04dv7wRIfo2/+aVZu/aRWbn2c7MK1hm+TQDFfir5JQKFL8CQ9+t48LiE7rHWDuAl4GMxAAgCwANgxKu395qVW2DgpV8B7L5SHZugulLyqQXZm1+IOQdubDMBsduvVLcP3rG174jWNzg2200ETJ1snQEFU+nBsq34bL9U6p1/QyYeQoAUIsDjPn6O1dLPEEx8ri3/r9At3of3uvG5Wb7xtZkAUM+cf1upc9bHew9h7f+RGTsJ1n7qTbNw5ROzUPQLAfkU2PjMWWxPv2YmT74qQJ+h3eslMPRrW/C/bLO1ehz34MMCzW8IsX6uzo1Cm9WhtbEsjm/oPE/R+rXLDmdJcxY6xXAEVAfqco5j2h3nU5zGM/12pYYbZAvLNHx6tMOJ47qtycy8E8TN5S1hh9x14JktdPb5yYtse5ts1Xsq1Y8gnA5/coFjj3njDROpuwZGfkm+7UGAeZgdKxTGNZXiOSAm7WDvPXe9NEelznT25SILxcZPM93+v7D+YCPdvvHz28DS/2CdpccDJ7MLfU3eWP1Cpu9BMtla7Mfyw1oojKu0YBR57AY1OKOZeK2th7LeyP50Crus3ekDOX+xJ11gPs7pY/VaNgXvBrkw/c7WtdUJO5xl0dbOs8+l3i1bd0xdPu29tpd53AH6SKP18R5pWAd4y9jbVUe3NfMOx85t77kHAPf6EWjgQiNgH7L+7pzElhokwFNg41g67SRpOCPxTJlamaI0p8BFIVx9UWUH1dPZj86hNpUcanPMTshiQEQGKAU0QJ2s5y6YG8CHTI8pWwqQWBeNALTE0gkybE1iLRYX1ARYuXzEObqSCvrac2KWqueyfgvAsOwOr3Vru9gh1d1M5Wv2eS3r4odUuyXgh5neZoqfBiZku2Txj1l/BgsHeMcozAIwB12KOko2fpfpb4DzfQBU+WcAxc/0e7jsM4DnZhO6vhlsfBvWVwLuONhpDJ8rdJOg/CXY+jETf4DPCtBYu77FrFzdbNaKfwEW/Tnet0AAFyZ7vvmZXoMBQuj6L0z4Bpj21Q/0PhS5xe7uNgmAeJxALpD+ClsAJvZfWK/xpQkCYEN4ndWr75mVy++YtRtbBJZrAMWVqx/i/T8Wi47guIQJ5hwPSnFbKYCTzB7bIIB6+fpnAvRVsPRAyVcC7lXWlwGqKwDZFVdvFrgWf2aWAIoEW4Kiji2PCVXqqoF/5WrmO8TAWdtfRcCyys/CAKBsm1a4/EuBdrjcAneQWQB+Ln4m/G/MCJBJr9zYahavfiZ1Ohn42IlXlWLnpLXRE2+Y0eObzEzhxwD9bWa+cLOU7HMX3wczf8NMnnhFKXeC+8y5t83CZewTZgJ4bFhO4AwHBqWVVhAbUwB/0Qbw1CzI4piDam5pOAuHnqQHrEtkarhGAXGSQbFa2GpNHOdRvLfKJPoAtn1PbY/6iGXryZFm6/gmoxknjiOAu3S72tbWgXxwfRBTPrAnkKeZDeh7pBY6msNE1VNepiErrJFzWmKMRjL1xQJ2ATn70tlDz5Y29/xEZ3k61V8ZwGu3+NHVk9QYbYxK3fj5bWLp/9HZwf41WPqnubWZcm+6YwigG8wMPPJSnN5F5S9P5toztmWHAIWLc5BCmSenbO/103NiqIriqdBm5O5a2TgjOa3Z6Dbtns2n3emfzbGqdG9jGo3KdoI5U2cL/etz0J8ftypwz/ek059d9TI7cGUd0NdBvcEax0x0SDiTpZEM/dydEC5LQAcz1yI7B4DnGXpe9W5ZerXUuwmw9BgtIltu4aKGiL6Bo1SvOcOZyzKYofKdE6loxBN2NVhbiwWTZv0VIEehk1g1a5RMbRIgSlkfBRAxZXt3nwIAAjWBP3TXmXuQnTKt7Cx4GWhFcBxU0yVAMH3L2icu+rzYM3UapSCrqsCk6k6oFzoJ9h1lnZaATfEX0/WP2St9RGprPiYwBxARKINgx0wBR25tFVhHsSK3PgVofgL2vAVbPF4Kllr8kYmU/hLs92M9FgGgMZ0cxt+FCPYlW8Sw+fpBMNvVa5vN8mWA7ZUPTODyB/jMABHcHwSAh8DGCerB4p9jbTZBPJegvHLlPbHvKPab6usES+y7EIAuUvalvQ1WHSKjBYAHAbhrV943y4VvmVW+FkER4LmC+1YB6vw9RDZfwbT4Aey/nbpvBcx+Bc9bRSARuPZLNxN8nxj4yo3PBOhMvwcA5oEbWwTKS8W/BPh/bhavfAywBdMts8dhjWwbAL6G/cTFmnlYx+kLBQ4Bvte1nwOwP7EL/1eo/Et9HxR8AMyZBeBnWbnxiV5jBY/p/Yo/NTOXPjLTYOhUrU9gDQHUJ86/bybPvis71yXOTcfnmgWQz1+ywD8FJj979i2x+ln8vnDpA7zHFhs08DMz1Y7gPfTwiM51elJwcFPclX9kgsQsXHsJwPw2mDnOc2biBp8AwKs0Dz1vAcue9HhflYlhcStAx/kmO1hmwhg8s7Y+1mGHtFDtzvQ61e2cqrhgBXFpNyqVrDw/XZHpdtbLmRVIgI1HnWkMh6tQ7CbbXi7W+dmlwtZTrHBDiYlwEAtLZ1yN+J0jkeuv+NGW60l8/rnsykyln07sMib7bXd93Ei3b/z8VtXS/0RDW1Lho9mV0TpvsmUmM1SdTPfd8xmJSxhXd05MXSYaFHw9PoUTH1H8k9Oqr4U5R7imyI7udBOYOH9Y84jpyU2HL3plk6lPUBzXIr9sArtq6pp25UaecuSq6mPP5qf7HN4ScO5yTLfNWpW7p9R7o4CcQO0N28ErBGaB+1iLZetjtm4uhg5Gnx2qd0COz9RP7+ca24+eb2FbH9wCRsH+dAI7R6yyX5UXCF4YNLHpogk/xaq5BDC/YmdFNxQB1E/JB5t1dIEyW51Yx6UgCisEcCdLZPqZF9MAQQ6sdaVkq9K6EiUBbIJOWW3XYcvgac/7xI2z5UAdXIQJIqwZ8+IcKP5YKW0yRdWLK/eLsat+y/osWSBTvFRU36Vg67CJU6x1b7dWhPXc2wQWpnm3qp4dLQfTBqCHSsGasZhmDwKEgiW/tCy4+AMB++o1LIAy09oCb7Drtas/x2valPcqwGjp0rsC9OXL75rF86+Z5SI8B///Kl5n9dKbYOUfAYzftX8LMF7GcwIXX8d7M8AA40XQwGAieAMMH0FBEOwySLbM/5kge+VDpdvX8NjShTfM8qV39JkInoHCd/F58doCUvxN2ddaZNmrBM9iZg/wusW/MMtXfm6WrgLUS78BUIOFX/tYoM5jFBCo0oiFxw2viyBqoYjP/7keY+07KCHdDoH+CgCcKfa1cgfWeP0AApYAgosVlgYQzCg7gP25hiBoDUHQKl7Dvh6+Fwoe8D3BZ1zC+yxiKdUOEB879hMzfepVMPOfmSkA+ujJN8wEQH2lbKcyB/OXN5vZC++ZidNvSgQ3e+EdgPmHZqEQ+xafVZkCBA8MKEMMJtVTf0CDYWI05eH0N3YUaBpgsXwTkp1lGsyS4ix02uXSyEVOkVVi5cxw5fvSk+52YsCl2llLH6izTJ1dJsyeTfc9s3Zdn0k/oFGpAnTedqOT6fXvT3eqlMfrjNrnaAaFRf8ICfSweB81L+EaCuCumHAttky91141wepCs/r4vFmtPG3WHp/GY4V+ouN2FMH/WC66Ump872M3KvUPN9LtGz+/bYr3/ywnJD+9JReZv+FNt/cBjIPxjlvpeNM1X21qGq16UlawMSeO4+Q19qZG2K5Fp7TaIuudzBnJtIIdqJSbF9XuGtAx8tR5vFtA96cAxgT26XY7bQsnKVPwHK/q086VYzXzdfXlvALe9aZTHEe1u7zAmwDWDW4eMpj2cJ2WBwaQFag3WwafT89zEfjzjDzfspYXyK0r3W37mhzksMjS2cKWYPsLAJ2DW1iXC9OM58lZrHMA8kvWbIYpeO6f+4ftMA0qrrnYisRasoD1a6VvmUalyIqAvnxts2V5t7bL3Gf17n6zdo/p96PSMNCRTLa81Set7z4zJkzjs30K7HEFF2iCBAGJt4M3t+p9og/2WkAnWLv6Ldk308Gs60p9fd8am4QF6F8AtAHcAM0gwZt18jKmiAGgBFwCIh8nMF16Syt49T0w7ndNgIDKYADvrccL3wGYg1Gzdg6Amj+3Cet1s3TxLbNw9qdYrwHMwdgvvmmWzvzUrBXh9oXXzfK5n5kV/O3y+ddN4MKbSj/zNVlTD+FzrV17X+C8hv22CjZNIF8t+lBBBRn9IoKDpXOvmSX8/TKChWUydgYSYO3ccj+zVq5g6PpnCiyWr3wkVswAa6HwQ7BuHI8bX8kWdRGvvQywXwKwE8SXrlowX8LfLF7bAib8ngB4+dovBJRk06vYv8wY8PUE0gwssN9sAPeBPtMS/t/AtQ8B3PxbMGZlFD7DMQTjZxCC3wPXcRsBy9LVjwXo8xfeNdNnNpnx4y9psSauNrSz75jRU2+Y+esIOm7uUCBCQJ+58IGZOvOOmT5LMP/AzF/8CO//sQKPVe5T1ucrrAaD7nRyvaPocH1W+1UBukx5aICklHuZxqfyfCewJnvuyVhK6XYNZqmXvS5vs24eF8DXiaknEURTCa/xqiyJPQ/oUrH3av6C3CEdsCvdzjQ8rhM85zV3nW6BQ0+VHaAoj6WxWHu5basjE6+9jsC7WEyc4B5x6nbW0dequM7hNshK41Uv1fsw6E139/nRQKHxM2/gmvinG97tGz+/jSz999SXTpaeWCvILg1Ug1HPpbor4vGWG36EdrC152Weov7zeuuIZg1VLtnJY7JAvWYBveM2ouPbamthjY1+2RnO8Ob40JEa1b45x5qA7k9jzQDI53osmOdb2uZ7AOpd9n5O33quP913Pu+ycqWqfdQ6vlGQI0AfqtPycFv18mHH4LV+FdDl5T5YLzBP9deIraf72LJWje0TmVIkOx9oEhsvFsmOuzZ9R0BnTY71c4psnpwx4UenANgnwHA4ne6c9o9q6g8OWkCv2CtAlxCOAFz2heqwKzc+F6MOFBNI7AV7qQiMjeyxfLfqoCtl2zX9KvjgoBTaan+rPm4n4wH0V8FcmQpeETABeABuAnbH7FijjrC/mel0tktRPS4R2FdWtMXHwM5Z3w2pjrtNQUHgygdi36tX3zGhEgvuq8UfKm29VrxZ4Bm49DbWGyZ4BaCJ24sX3xUDXSPzI8DhPjLoIGu/+GxzAPCp4y+b+TM/M3Nn7JZMeuX8JrNw8icA8J+Z5bO4D48tnv6pmT/5slk48wpea7PS9coCiPl/oM+h1D3AeAUrADa+xv+9COwfr7twmgHDK3h9BBD4HEuFBHoEEhfflrKbKngybgrnlvD3i5cQkOAzM/BYKATwXQYbvrrFLAAUF4s+wt/8XGvx8vtY7wrAWYNewGvNXXx3HdAZLHCJmZduUdqfAdAK9h+PzeLlD+zfF75tFvB5lvF5Be74nwLMLjC7IUC3DJ6Bw+JlBA5Fm3V8GRBNnHjZjBx50Ywf/YmEblNn3zTT594RgLONbrmUKfdPwcg/MNNg7mpfA3NfvIzg5OrH+q7x/1ZWCN8dfieVObq3V9mgOHvz2fbYYOezs9NCdfTmIpkfcapggvMfWEt3LF3jk2kqRQtWtq4N1mgSm6axEdhVS6+ybJ2ATmtY2jA7b3bbmuZmLtAIiu6OeXbuwDw90WLnra+f8xybimC7+67EbbYmftvEaBrD1XHPWr3W2znoOmeduYxmM1ir33RmsDrgzfW2+PGVoyabyberbYxK3fj5rVS8O5bubfbDC1e96bY+APBqAl901pfC9YUmVEt16EUx8rDsTYskEIvV22lkeVDnIARrC3lHETxr6rauDnAfeGQtYcnWR3EyTtiaukatck224mRmrzrT8LSK7VKLm0CetfZFm3a3dbQBecQT0NMOyL086x6ydXH+nmUKPs/adTufmqfavVm3PQrh/gWgpzg9qusBTnYL5ErhsY7O2htr6A3Fuiiwjk4ADz06DbA+CoAt0JbAbuuRh5V2X7uzx6zd3in7Toqw1kq/AJPbIqZE5rcMlrmEtQjAYBsSRUwUWgVKKKCiJeceCZYI4uwVl6aBanQN7tglh6/Vm18BND4VKJHdrdzYbLdgeGEKs+5YEJcIjSDPtDvuizJjQKEYjUuYzqaoDIxyueh9C+Jg32tXcbtkMwDmA4nLLBMG6wWzXgSDXgEjXgQbnj/3JljwezaFnK+Xk2nitZj+Xjj7qhk/9H0zdexFM3Mc69iPBL5k5PPHXzCLAPWFU1w/Ngv4ffbo98zc8R+CbW+yDJsBxGWmzvG6eM0APoO2hQDIi3wMTBkgOXf6JTOL154/jcDg/Kv4jJsQbLwNdvummcPnXLrMgGer9v8SmTdBu/B9AOw7APf3zdyFd8wMjsECQJRgukRAV7D0kQVjZiPw/4mh4zEC+jL2ySJZO0Bd4M7Ao+yXeJ/NNrWO/cbXn7vgggp8zkWA+jLWYiFB/QMt1vKXlfb/QH+3iP+J7WYKSC7ifzvzqhk9+qIZLfiRmQRDZ2/51Nk3zByCELa5scVu/srHThD3vqapjZ3cBKbO75QLHrnwXVl2an3pOirseFbqPmJPTwjU2baq7f/D3nvGxpVmWYJ/BvujsWg09tdgMFgsBovFYLAY7K/BYtHT091TVV2VWZkppbz3SnnvUkoplcpMKeUtRSt67ynKUxKdKIreex9BMugigkEyGAwGQ3fPud+jsnuwWGB2+09XMYAPL/jCMiLeO/fce+65ZbHGqZDp95pM4TAnlteYdmd5Teeit70FW17UnbyRmYYCmal/qcJSBfOmQrNYyuooN17vfaZlzb/YYz5gAF3tm3mMa/saLV7NUCU/tTPdZlyqv61Iff1pP81xqfRw56AotqyxO8WLYHwK7HySXSnFCaZEZhlBMZM2y8mJVTlBX/0TL9i+Ha/1JuibusIBVjgf/nsrg7nEzpcu/6JAfdHj/T9irZaA/8pHt/1NsL+6z99a4JmtzQvQv326zGLmTDEXRevS6xTFvUvQaWRaRwbgsZ6l89FZU9OBJ5ZQhQce/bPV+/2N8Xoni1Z7WJOONwY0VbIAYFdnOGXpYOysnTnMBLZPrSsczEJL2UWTmE4LzMm+ydBZG29F8KB18ne/1so7DKBzgIT2o6ufu6mlL4K6rxHsvI6zsF8g0n+OZQQ2s9VP9H9UYRyYOo11zHCWWPEUhANgmWbnQI37YNVg0M9oFWrZhVJ89fiyOo252LsMRk2mSKAYBRt0JJ6W4USAQ9wRy297vwxh32g2gJpDMyjgen7HtLUx7f6GozXpu33TPCdAmu1TBChNHTNdCwAeAxiPge0x1U6zEtZN3bmXTM/zs2um3YpZAO15pijsHE7yFxXYyB6dyYfFmcr0NoA65QgWwdQsgtEwWPdo/F6AOwA9Zr/Y8d7JeJklUAAm+wR4DYN5D0Vsk747a6Xrzhrpxuq/v17soRvBxLfK4MONAOFNAPrNMhyxFfu2ydDDDWJ/sEb3jwKYGRAwXU8AHyejZl2c71NT+Af0thGw/WEA+hCeY4iBQdxurdcPI/gYxPsbiNyNoAn3BxA7lG0DuAnmAOXh2AMKrgR0WwzeM/bbAcLc5+Bjko/r5zKSjOAE/xtBl+l3tn8pq088jsec0OdjOn0i+1sEaYuBwjF9DwbQD2iQwcCAIO1IOKRpf77OaKr57MjgR1P4Xg4CmA/o+xtCYDMQuQsMHUAeiaCFnyluH2ZmJPM7LaWMZVzUgJDpdRrI9Ebu1dY2ZhwoqtNafOq35reH4MNtteTRtIbDX7Ssw4Cx8KGKL6c5mIYtkyqKS9d0u78ZQN5KVv5ShXFz7ENvNaWpaQTA07XPZJoMmfMRWgp1xCrB3Mdji+l3Hn+clU51u82MUtXauY46NtfJ1g2QV+ua51ZLbAbQ5zuKcf7AOYTgzsxAe5G2mnoRTExXPwUJIStPkxlOzavK0XY7X0WmzFakq9Wrv5bTIp/7fS0FzkBvRVNw0pEiwflDVrvaUv186fIvNvW+OIkNP+T5fcGp0YTgcFNNoPudw9/8wjtbkRb0qPjNOMZRjOV5GyHuokcK7DRp0Elk7zPM0AMFddbVXqmn8uLwFq2z0VGqqcAAeutbsONiC9jLFNC1pj7UaMadUig31Gzq6jp5rc2k20cNoAcHjXucCt86F9m5JYprJ5jjuZuLlHET1P0WaGtanvdHIMBeWWMqswj4Vi29qcik2wno1QRz1s9pF5mH6wD1D7laT59dbI3h1DV+Rq8jFMzd+XdwkgSrfnxDU+duXHc/ua6tZQrqbH9Shvitgh8Vx8MJWPGnZDD2qPQDFHvDdkpv6C6wL4BHChhz1s9GeQ1GzsEZTN97Xt5Qwd3k8xvab63GI2ReZPdp/7RWS6BgfduZeUbFVu7HP2jN3JX7g4rqyNjGWX9n/3Ym6/GnFIjHADzOlMPiArBPJBkmTlEbGTdT2Q4wxNH4PTIOkGJNvD8MQAzgHCMjBuA44gleAJTo3TIA8O64uVLBvP3mCum5u0YG7hOwN4r94VqxhwDgAexDXNz3YK3YHqxSQB/B4x1k3AC10Tgw1ji8Huvx8YdMdgCv7SD7jt2jwYAGBFFb8J52auqdmQT7o28AhLv1/Q3Gge0mHMPnfQCfO8CbgQCem0BNAB4EKybzHsBz2jX7cEDZuQNgTkAf5j7W+dPPKqDyubhseG92/M+j+LzGs77V+xDERwjoeM+D+LyG8B6H+NngMxrh6xHUE48a4CeTTyLQ4//j54bnGtbswmF9/31g5QNRO/F+vlGGz7S9A8+tPetg21oiwHdPhXtfFF3hDshA7GGt9fM7Hk05owHHcNJJZej8PTrZB0/7WY6G1TnvoTjGH+I3TVviBDMWuDpTnQvnGjll8YmZH88RtM0v9VgnM/ayxbPhlQK7nz7qCOpnGsnWCehvDaBTEMeBKpy6ZjfqdmXimnUzTnCLtq4EcTWSGmgwTpN91Yalq/eE6XDxtxvPiLnFPnS6w9HZkWYy1XnqITHXaAiFr5bHb5aOgp2tyQ36Gl94ccwPLDg6is2oVFlrkZuldrWly79olv4/WfPSv2Ta6aOz72lwsLEj0F3m9jc+C3gr6IoWayxg2T5Fr3JNt6eKhx7nAPNFsFPwo4Cs/okCuI5XRfSuE9kommt4bvZbw1yMuKVU+9Z5oBLEFbyHAeZ0lGMNnQY0Q22/DnUZsv62WeI4Tb2b1Lqm4C1A94MVcM23lBi2ThbeUfaJyc9ZgYCC/CJLV4W7sY4kS5+teaag7sX/N12eIzMAcy9nppfTLc/MzebYTS09MIvB7EVBhFqHup7exgkTQJ53VVu0FsHczfQ425/AkEbI7HDyHYo7ChA5LDawKYJ51/2t0v1gm3Q+2K5OX/aE0zKYfFYc6RdN3Zx1dgrOqE4nqOdf1RY4tjypgCr9nNZsRwk+ZKcEv5STYMzHVCjmAnucpDlM7gVl5sNM6SYd1zrtONg42eMoWDfFa+NJBxTUx5MPWcI2gBLYsiPebEcAmOMJ+zR9bg/dKv3h22QwGqBFAAZwDUbtkqHI7TLwYJ20XPlS2q9/je0X0n51mfTfWy0D99aILWStbvvvbxTb/XUA9nViw22DYOnDeOwwGKkjCsybYAZgG360R0GcKWhduK6gzvR91HYZjNgi9ojNeG28FzB2Bhe2CLyHyJ3KcgmOQ7GH8D73ij0a7w8Bw1D0PsPECbIEUoI5/icC6BADl2SAMoIaR5IB4hECeiqV5IeVnQ8msnUMLDp2rxHmpZG1H1YWzWDAjs/NhtcfxLLhM7HrZ3hAX2+IgQCzHan8PTC1zve3V4MA/RvbATDz3pAteOx2MPiDGjQQ9JkpYCsc6+YjaaZ8Q3U7xXK26EPas87a+UiyEdVR7T6UdNoY6NCMh+WW5/Rwp+XrffVBoFaDLas0ONKWtbosMNp8o3BvyEfAm69p91m1gX1mBhoxBd5qgJyzyadqn4Kpg7HXv5aZT+n29+oSp+1qrJvT6tWyeGW6nd0rauWqra2m7MZzAm2j1RFO21BN6n3eEsPqYBaQB74PjkMloNPmVcemctY5V3Wutql5So3ux/shPeBreDHu76luWnANpUkwcMLybv9frFLkEjtfuvyLZuk0m/lPEpzfo5awE31lC/3V9vn2Iq+vLi/ItLuq299Ggq3HyFR5KsAtUxXf9EKmmlSBjutDnhlNqMMbXmqqXVPurLvRLpKpd21vA9h3lhq/dy6q0furtY0tMNikwK4pdmXlRvlqRqq2GgbPept6vNdra5q2zRC4CepUqje+1rGofrCD+ZZiK/1eqqYxvI/fEtGZFjYznEVr6GToZBRgFr66Zxao46RAdykFcgPqzEiw1GAmrCVpaYKjN7U/n59VAdgODUwoagPguh7/YtqleCIF8Gr6k4BOthhDBrlPzT96Hm6XjjubpOPeZukJZ4r1G207olXnIJj8BB3KEBCMZH6PoAEn4lc3dTrXaMZZVWKToY1lnDe1WJz0yQZ7HwIIHhnwG4zeqWDgymF6ngKx8wAnw1YpbGMtephpYTBJAuNIzA6ZAKBPpBwBYO4RO4DVDoAl67Y/2g3Q3KFM3gFgZG28JwTv++FW3T+M17ITSEM2gpGvlsYf/yB1lz6Thh+4/iC9d9dKz60V0gfw7gF7598DD9aDua+Vfty/H9f7APA2PH4wfAvWVhnC8w0DEB0MLADItrDteI0dKrJzaACBv8M2yACCgoHQ9ZrGH8Dqvb9euh5skO6QTdIXhufi+1ewxmP4fzzarYEBGTMBexDPx8+qL3QzgHiXArmDnyc/G4A5P8MxBeAjWsMeAqD3RiEAwGesn1/KUQPoCYc1UGBQRSAnqNtwH/ujXQa0rYCLwQZr5oP4LPuoM4jabYIVgDkDigHWzvH+7fj/RhBAKahrap71cXznWd9rWp2pdAK6Le6IDMTh9cnKU78VWyxd4/abenrG9+LMN/7wDAzpcKetlXQL5Cja0kgAeowq3edqM3Ac5GAx+5ZrthTFWaU0nx7fL3X62kzdc91OIQD2gCV7cOxM1xbINAFde9FxnDLd3mdNW6MzHNg53eL8NIzhsa8LAD7YaBa1Nf01Jv1upd05NlX94nUQy2vNBnpBFqbp187WUl1Z4inPlEmKWGkqU56uy1eZFfQ1PAU7LwU77yz8R+z8f19i50uXPxWB3F9a0Snb2E4Fp8dSgoNNDcGuYud88zO/rzI9OAWgmnzDVLuZwMQebC6m3GfKTbrdW5lrmCzAb5aziHWUIQ78OsPO/a3GWWpRqMYJSYuWsIs1dNOrXqUHMaeyqY8z0+8DZhgLATyw6OlOtTsHtTByp5q97VfQniMokzlwNb02k9QI7Ivpd96v3QxkIYgvrtkGRPt1rywgf4LoPl8B3ItAhbVzL0GdgQv+R09JkvpDf1L+l8Sr6c5UYZTO0Z56G6EWsBSwaX/5Y5xEwdCNyviStjkx3TrIoRnh2zWl2gcQ7waoN99cJx13NwOEtkl32G51AbOByY+kntO2pHEakXA6FlPvz6+pwIksfLEuPMTULZl24iGwu+0qoiJQdAHYBiK2gY0fkXEsV+ZJTSMTzOwApGGrzst0r43sOGyz1snHkw5pet1Olovns0dtVQbcD6BxEJjAyO0AXQJg5531YJMblRkP4PFdAO2OG8ukCUBee+F3UnPht1J3/rfSzRT8rVXSe3uVdN34Wjqx+gDmvXcB7rdWSt/tldJ1/Svpub1cAZq1cVvoJn3OIbJsBCn9eB1bKNn4bgA93gPT9SFrEBiswnOtxG0b8J42SM+9tdJ+ey0+W7xHPN7GwASgagdoD3JLcAfIE2D5uRmg34XPbTuCIZYPyJi/wWN2aIp+VFvijuKzOgjgJgPfL734bHoI2Ey7p+FzZUkF38cg2L+dw1EQGJBp26NpwWpem49j2r6f75/pfnwP3fyfmNngdwImz6xC1z38DyEbsA/BBXv0049r54Ey9Mzv1OGOQj0C+hC+/wEA+iDV+hkXZDDpW+njQBYEhY4MBJP0oadQk0NmdNjMFZ30xgFCsyUROoWO43qpcKfJFGvPvqpMrUXP1hsDKQI5J65RMDqNAH6KPg21FJFi1TwFwBZoun2m8a2xfm03k9cI6POL9XMG5wR2qtsHmxXMeUzP91eacwGFs70ftA3Ob9lH04mOtXntRtHtWwX12YaXlgtcvirdla3TApbpd743Zg5p9dr8wu/vKHEG7U11wenRJAkGj+G897dLtfOly58SS18UyNFsZn3QP3X9o3ugIGirHljoeOOZb8oP+GpwQH9IVQMVb3myCuU4apXq0WkAOoFPDyQCYDW9nl+Z0YqsrdU/s7yf32haXGtgfdUK2mrlSkCnIl3HrfK2StOrToEc29Q4bnXATFQLKitvsNJztToTnUvTcXyOxVGorOOpWh0nn3qyiFe6jyeA+TZLMKf3LVJlu6/hDe7H+ckv8P7pDsfBDnSIy8P/m61jVJmRUEEcx6qCDdBS0v02BoFOlA5qUTAvfqSjJ6fehOsITiqHtYXt+S3D1HONvecE282wZc17BAzKHnPA6i/GyRuA3gaW3nxttTT9skrabm+Q1rtg7SEA01iww3Sw+yw8lqImWozm/6htalRkq8gricKoA7rIJgnOBCbWuDvvrJVOABsZKFmmM4NtWwcU0HpDjXqa9Wg+VoHn4WYw4C3Kfoejd+mWSvVegIsdgUH3vfUyCMY+BIDqe7hJAZ372m+s1tew4TWZXu/45SsA+h+kGmBef/H3Unn676QD+7tvr5Eu1tQB3h3Xv5auO6sNwBPIby7D9kvpvkFQXwGmjmDk4QYFcDJWO8EW1/sfAgAjAMwEy9CNCub991ZircLt6/X2vgcbpePOOunFe++P2GIB+m4NWph1YCpbAR1gPYLgxRH/jQmEsAaxbyhhv4KpjWl83I/3GeX9WE+PBxvGc/Xif+2h+hz7TM3dCO+Y/WD/+MAj85wDAGvefwDBgZ3BUCINYMDIEw7hfrsB3BvN61J7QCFcOLM2a/D9bMJ73q6ZEgYT42wtzAA7B6DTu92BAIKCN5rP9FN/gd/JUOp3CDBOSn/sMRkGuE/kXTZT4p5yYtwVALsZBztJzwL6/ZeEy0xJ5K+DgiqSdACTT2vPOVpO0/R2Pbs/niiYT9PghfoYBtK0TKbaHcegF8eVF+zc21Iq3vYPOh99Ttl4sxmfajcDWAIcwrJYP++t1O4XXTg36HhUsnEtkZXi+V8bHQ6V7q1FpmWuiQz9Jd7TYlfKE520NlO5yNSz9Hj11T8J+lsKvIHu9/aF0Z43wbmZmzzfWbXzv1pi50uXPyWW/hcWS/97Kj6DM2NxweHmukBXyShYus9fmx3UUZ6cKc0hLqW0fo1RUJ9iypl2imqrmKMpL51DTJZb/8JqJ3mlEfUcwZST2NiXzhS7MvJq9X1f6HlvecDjNhrQqOLdsHJl5p8Yer2Vcm82drD91txzTl0i81Y2XqhBhQ9BxhwDjNqnGsX7lK0XGiU+QZ9DWKjIxW1zYBi+qqdYT5SFz374Fcxnysyafp+la4pK2ncZytI9bx+ZdrW3kRaYR6gPvqeAg1QA5i/vioeA/vSG1tJ1uAd9vR//ZNzIsJgWpcK9J2yndIZswwl8IxjlBmm6skoaL6+U5utrpfHaGul4sFUVzHaqqvGYsawLahJCt7HR1ONGlZ10TGdfc7FGSwFbfxSNSMAgQzZJN0CdW7JRFc0lkcWDvQNIuu6uU2bIx/YCSAYAmL0P1iobt4VvVdU4wb/7wXqA9Rbpur1aAZO18h48by/292C1XF0O0N+sde/2q19L27WvpO3KFwD030nDj5/J+xP/WRp++D3Y+2ppvbbcMPTry6WTrP3m1wD7P1rrCwA69l9fBsa9StPoA3g9MnMupvltVMgDzBlY2ADovXeZxgegP1hj/ibrv79Og5leBCj9ZPlk+/g8+hGUENAJtCpWowI9kWK+PcrG+5nmp5CN5QZl80ZlzvuNJO5TcB2M4X3xmeC5Cepk3Q4GAAikCNJGOU+R2l6A8zZ8D9u15ayfGQAFcgQEsftkEN8Hgb4Lnx+Dqz68xx5su+9v1M+5TwOXLTIcsxOvzfr5MTUl4u/AwX711NOqaGeJhhaxwwD0wWQEiwknsE7JePYlFU+6nl03lq/5P+mIWB3MQkAvfGgmAyqgx1g96GDoVekqJpupztHebgXLmsemhs5ju/m1qWezDx3H90xzkUyDmbN27m2ldzuAvLtO5noaAOgNpoY+0GyMZOgSyQBdj3OThTMjUc3wJTMatdJk4NQ4CuePdqttzSILszi2ycCnwcTV6hWBt7s0RZxFCeLCcpcmaYnQV58fmGt55Z7vrWwLekYWa+e/WZp7vnT5U2Tp/8oSyP17HR+oPu+cxlbdFmh/Ne6vzfL7KtKC3vJEHRTC5S1LFO/7FDD0DOOXXGF5JwP43MUp4ipMkUmA3nRFnmHv9S9MzUsnNJXqgIV5K5VmPN8/SJBgTgav/u+VhsXT6tUC9aCt1qTcOReZSne2u/Q3fRrGwmielq1qDkOgXhyjyMXJaYtsncI33M4MApm8n1vcdw5g7qs0ynYC+iIznyag4zpFgJ6SFFN+KAB4M+1eaMoRbjB1HXDB6Wuvw3Sm9uTzuzL59LblGndD3eBcOqTjkiqTJ3TIx3k1+nCk4eRLpXv0IQD3FmkGy229vV4Bnav2x6+l5cYGnOx3KvDbYg8ZUE87K85M9jsfVxU6ldK9ZHZRe7WVaiTlOJjlTukD2LQx7Xx3LRj0ShWKDSnD3KcA13lvnXQAOFjPZZq5Txk9gXGtAqOdqWr2iwOk+gHmBNZuMOpOMGrWyvX6DbDtewg8bgHEbwFQAZhUt7dc/VI6cFv9xc+k5uIfpOzEf5Hab/9eWq+Auf/0R4D+l9J57Ut9PFPxnQDyzmtfgKWDtd9aKe2/fK6p+P77YKp314NxM42+ToGaWQSWLBhgDITg9ttfS++dFWDqpg7P+/TdX4/3uVq6QzZoyp5BR384wD18i2oCbAgIhmLBvBP2ymgCRXbb1QCHgD8YTWEdU+TbFeQHAMoE8hGw+GFl7Vy7pRvg24vbbIuiwdhvVOxmJ/OOBVgDxHsQIPWxDz/WAnh8TzZcZzsdwb+PWQ8AePfDrfpeCe49DzdpoGQAHQEGAH006YC2trG9bijlLALC0/j9nJHBpJMyEH9UU/Dcb0vk32Du+JuAPsFuCHr/f7IbvqplG85yn9KxvmToUcIhTdp/zuFAlekyU5GpjHemOle8tVjMunFug5bROMyoUGbp4YDjyrByMPS29zLbBSDH8bm4NN3OKYj9vzLzxc6WgM0I48xxX61ZPGbsdLHFlZobnjtaCxXQ2YOu3TQMKpg54KAWZs6sGvo0ByrRMwPLW5XBQSw+f3uxIzDcXhGc994HO9+Ic93/YWUnl3zbly5/cqBOB7l/bTnIbQ7Ouu9/HO16A+bcNd/0xD1flxWYq0oL0ueZ05i0bkxA/5BlZoZz6hFT1LRbxEGlPsol7AnNNqDOKUfqvvbSpN/ZuoaDdKGT7m7YdmER5NmXTvMZTccvzlSvNYNdrEheh67g73nW2dUHukWV74zmWZv3EdDJvpsKjLit1nKQqnmif/us92Hq7AT2l2okM8fbqNivMDXzafwPU6VpxkqSU5vepeq0tUmwcvercGXmi3+7XoeL+zX3YfsiRFzPOXDlnk73cpOp09KVaXf1Ev/JADpOrGNZ53XwxkT2j9p/zuEbfZF7pfXWOmm/swlAC3C/vk7qfl4hdQD29rtbpOPeJhXM2dWI5qy2L40kH1KLUxq/2Mj06CgWtV/7rinmsoERdgEsOm6tUpDtA0u3AVQGwQ4ptuoAg22/ZUCPzJBp326AKQVtfQ/WAfi2KZgxaGDrVD/u13dvFdj3Mr3eH7IejPorMHU8Bgy57SbAGcFA973VCuideK6GS59J1YXfS8mxv5aKk38jted/K43Y1wr23gEWzzp6G5k6rpOZ995eAbD/Qlovf6Y19f67q/T5mZbv0dr7chW89YduA+itUzDvUUBfDjBfhSDDtMiRzTOQ6UFAYAOI9zIND2AfwP9EQGc2gSK4IW1124HPYzMAfYdVX2f626TkeX8GPwyCWMs2afidMgBAH4j+BoC+VWvzNLIZxGc0iPswSzKgGZN9mjbvYYYgli5ve7TuTiHdYLxRtFNU2HV/E4B8EwK6Ffju12rnQNddfo5rLSEfa/37NRhjUEfgHozj2FSwcgR3DqrdAeCsoffFHlOWTjHlGAB9hAu3TWinxDWd+rc4jY/TAQ1L5/jUGC2rzZQn43gmQ89UIJ+lwt0ydKGPOwcxkaF7OcioEVuLmZOle9vLxddd/08BnS1r1njj+cVU+yKYM0jXrFy9Kan1VnwqyQU0+H+nK8CtgnuRBewFepzPatr9mTGCInNn0FHPQD4Px7qy8+mFvuq+jy77Swn6L+iAKjP3fEnZvnT5kxfI/a0EZ48EZ0YeLThaS+e7SwcCDfnTgdrMgL86VacwsVXLCOSSwMrTxPMewAcWO8teUKa/1Ec5+xOge+tfquEE610+1tcV1Au1dh7g6iwGuJeYkatMwQ+wjl5t3OR6K40/e2+VAXcsHeoySLvIOu1hVQ9opuFpSsExjRTGKbC/Mqk5gnl1vsXYn5ieeexXMAfA69+1JuWu/8N7A+gz79Itlm4mrdFxappz0YtidB66h/34JYlg55Fg7XRyC9fZ6Go28+S2ur1RGKeAzvrlIqArU7ooIxnnTK8wT7bY0s6TPcS9YTuk/d5m6XywDSC+WVpubpLqn1ZI4411uA7wBND3ANQdKSe1XmtTtr1fxhKxjduj6d9uPActQgkWWjMGgBPUVWRF5gdm2hMGgIrj/g14zvXYEvjACKmsxr7Wq8s1FU8wGXy0U4FsLHEfQBIBBwCY7Lr7NtPhGwCgYNS3CbJr8Biu1cqQGy//UevjLQD8arD0wsP/WcpP/Y1UnPlbqb/wD9Ly8xdaQ++4thzg/iX+/tww9FvL8fx/VFDvvbNG+u6uMnX1W1+DyS9HAPGlpvp7HuB/AtCz3k4RHoGcaXe9H95b3wOL1eM99DEQIVMmo1eB3y5NcdsiDfsdjgJrD1+vZQaK4Yyyf7MCKTMTmnInUMft0fuTxZNZ2xAYMZ3eh4CBSndHIgVzVM0fsUog+/S+ZOlscbMDhHsjdimos9+daneq8KnGb8f/1HAZQdB91v23SCvAvQuAztq/Zguw+pi6B/MfTGKa/RsFdLJ0rqHUs9KPwLA/wWLnuZdkNOeSDFNUmfWDZorYbcHRqe4XtwDq+H0S2N+EqO+Em/MamIHjCN9qo3L3NeSprTM7VeaaX6hTnK/5pSrMZzj9rPa5TNe9kqlGsHS2qXVWia8HgN7bKHNg5lyabmc2rada1erahtZriVttRuFuuldqTGCvI5jLJQhQX+jljIYytZLWSW80r1IB3BM1s6Ewz8PBLBU5MlWZI9O6WD/Pwvt/4ve3vnYG+muagtqqNrfo2/5vlnzbly5/6gI5K/W+wNT7GapB6XccaC9yBJqeev01mUH6O0/T3/19gs4Fp+KdQ0um3qWpspQtJJ4PZOmZYOkZAPxsdXHyNrzS5WumSvWt+Nve6Dzlxeh7nr7v3WVmljrFcVpLx1JQt2ahc5pav1Vz09p6jVHE8qRgNwMe5ntxImFLGoU6LYXaTkPBjAI6Dnz2lqvozWLsrMPp9ap8Tbn7qGRnrRzsfLo0Ff9rmrLzKU5ZK6G634xPnSk3FrjsyyfYM/Xu0ZR7uDrIeV4/VJc3Wr+ydkkrWBrNuHIvq9J9nNO1MowNKfuFRzPOaz20P3q/TtPqCTWg3A7wbr21Sep+WQtAXy/1l1dJ9Q/L8PdK6QwBkyRgM41L9TcZHNgmgYcird6Indp7TYFVL0C6+drXCAjAXsEGCWatTJk/MmKsbrweAaWXYB+6VYGu9foqaSKoAxSp9Gb/+Tjrx1Fbtbbb9ssXCuxk8f0PwSQB6H0ha9XqlWn2rtsrFdC77zIVj+s/fyXFR/+LfDj9d1J17jfScPH30vTT59J+7WtNubfivo0//E7ar3yuwriO63z+ZYaB311h1dWXgZ0vU1bfdXsNnnsdXhfBxA2AIB7Te2eV9N9fLV0AfTL+3nsMNtZplqCLQQH+R4rNWEJgupzqc1v4JoAlPssolhY2Yh+AOY7CuS0yGMHbtgHQ1wPctyrQE9AHH21XkCWL7iPbxnWq0W3sw2evOBXzWkfnxDOCNj7nsE3Sje+GKfi+qG+kB++B7W10s+tBENYFUG+9tRbfE/5XgDj/bqN4kOUFtuFFbtWgoJvtdwlHtEbex3Y5ZmJoZpN8UmyJx8HODwHcz2qbIzUbw5nnweDPaWZo3NJeqJc757e/uKZ19Mm3oeLmKOB3CTpF0F+bI34q22nj3EDnx8c6dY1jVMnUfxXH5Sugq7Kd6ffOD6ZmrqtO+8/nerEWgXzR1InHM49jpt05qInHuq1WdTWGoRPI31vTFcvE1/LKzIwAWHtwPE6WpGGl6mQ1rZsXJ3xak9S34Jw0U54a9NXmeXGuGQoMNpUGva4QnNsWjWSWfNuXLn8WqXfLFnZhGUD9LKNaFcn1lY8GWl9656ozgrSEnK2kxWKG1tGnWEt/l6LWi5MAcopTPO85s5hCOTD2avapvjbqd4rW2oxlow/LtLOZwQs6JY2MvM+seWuwi85TpwpWb6+y2Dr2Y5+pu1tpeK3DAfD7m83Ah+4qHcIyW/9KZgDYOmjlfZb2lfM6jShYYze1c1MyYL85RXAcDztVmqwgrqsoTjyFnDoXo/PgdcpauRn2QI97ngQ5zEbno78O01GqHivdPvnM+LlzDjfV7jQDGaWve+Z36gU+AlBnHZ019aHEo9qnzPYmI6g6KM231kvd1dXy4eKXUvvTcnl38rdSdvr30vDLKoD6VgDKbgVvCqsonmJqWEVYCAw41IO96GSkzb98KfWX/igteD6qrzvB2DmOkyyzX59jFwDDCLL4nOyPZz2cKd9hurFRZZ10QGvIZPGt15YpaBKw7QC/Pqtu3UtgAuNWFn/za2WdnQDVFgQI78/8BoD+91J9nsr3f5DKc/9VxXIdeJ6WXwDoF38rbVc/A8NeJp3Xv9I6PZXqvWDcrKerYO4amDuCCabpmVXoAtgT0MngWUPvuUMW/6W04j4sGzDlTqe6TmYO8F76Qg1o90ds1exDPwCdZjpD0dtlMJJKeoA40+4EdID8SDQYPJm6/r0dAL9bvePJ1o2Ajv3+2/U5BwDSbAekwYxJpx9Qtk7FPMVz/HwH2Leuaffdyta1ho6goA3BR9t9fHa310nz9ZXSgcCrO5SP2ajvuQuBDbMpKlpM6xUVAACAAElEQVSMJ5gfRlCwR+xJJwHmx2UIID6IoHCYHvT6G8PK/gHs3GSBJnLMXHdav7q1Dx1gTlAvuCdTnK5IQZwOY0kVHOc4NjhvPAvbDLWA9ddli7+RavenphcdLJ1ObbOtZgCLpto7K8XXVa29577OCiy2nL3TxZnpc53vjLlTH4c1NZipi7Y6CdprNCuny2aCeO1+6ShSu1lfTZ5aunpwTLrfxorzTbS4cTy6i+IB6jg239G9MkFtma0hUsHZivSAv+mFM9BX3fJxcjBLgv6zS0YyS5c/t9T7X1j1dLayrQz6p3/GwfAUTL1toavUOd/4xD9Xmx30UWzC+loFhSgAcjrIvc807HxR+c6WttoXMlNfoKIZHVFK20a6u3UZlzczMe2dtqZQMKf7FsVxTLdxEeAXRXPdpq4WoKBOn+OdKmFNva3cCO0I6nam4VvACqrEx3GOBPUKtpxlqtCNafSZ8qxPjN34tRugJ0Nnqt0DUOfs98U1VYwTx9sonFCitHY+aan9uWgyQyERbTM57tRt+bovDmfRYRhsN6Mojr3oNJhRQ5hvtdY9nn0BJ9vvVeSkpiNMoyce1WlfBFuK5RqurJAGsNyKs/8g7479nVSc+4M03VijAroOgDN7mvvDNiqjI3jQyIR1WoIzRVqdYHsNP/5R6q98rWDPlDxBnEIsvgbtSinW4iAQ7rfHHcV2t7SDBbMOT4czKuPHUw5p0NEJoGwDqJJ9K7CFUZm9zojjwJSZeu8ES2dwwSCBdfqy0/9VKs78FkD+O3l/9jdSC1Cv/+H3YOlfAYA/B6D/ToG768ZXAO4vTTsbnqf7xh+l7ec/SBvYeyeAu+P6MjzmS31+ptk7rjJV/0cF/l6m/m99pbeTvbOW36PAv0Y95QnYtiiC+Ta8722ach+O3aXZjWHuA5MeBpAPRtJnfqM4Hm1VS9nBCKbjt6i5ziBtZtmDj8+FzJltZfwMyNpHUo/huzwrDrWA3a/WsSx98HPg90KFO1PtAwiqhmhCg9XDFrUHG6QzdLs03lwr9b/gc32wScsivRTzKVtHAHd/vZZUemOPSkfEXumOQlCRckaG07+VYQSJDo5zZaCI39cILYH5W6PKPY9OhZzGd94M5HlyxTjFvbqN33QIftsR2rLGWejsQfdWpqgobhbLV22BefMzdYpTUxmWs7C8bB3jdDUA9gwAfYYjU9vLPs1Fn+MikHMgEoGcaXYKXe2NOkZZbZ85kAnboL1WggR0Hu8K5sU6lnke7HyetfsmEIPqXPW/8NKvvTLTuDby/TK45jS18hSZVTFcThDv1RfoLLUvOLpLg7MesvOtlhhuaUzq0uXPCtT/R8tw4f8Umd8enJ0M+TjeV7gwUNM33/Z62l+fF5gjoFekIprP1FoVa1bTHzK1lk61Oxn6FOvRdRSrvFBA9Vlez2rsoq5t1gSlVuPzzoPX3/oa20IziAG3B1QMU6YgzvY2FdB9GtKAbXuhWZzqpo8pNiDfW6N1dVXAd9fIXMd7MPWX+p6mdBSqSacTwGct28iZRUGc1s1xHwQpOrXpbTRYTJTZEsgLAehFWOw9L36ktUcPmTmYgmnriwbjYY96qNYntW2Naff8K2aEqhrMXFR3NxWusX+cFqwEeZyUaTQyROMSThvDyZmqZjtApBdsrQXMt/rCH+T9ib+XMqw6nPjrf1khjWC/ZHhUl7fjxE+GZ0B9t0nHq2HMDmn6ZRlYPpjvw20ynHRURVua/gWAj+rktyO6rx+sfjDuuKZ1u8HiqeLW0Z8U36UdU3cz2qN2gAF3AHQpnCPj5eoBk+x5AOAEMBLcaaVqs1reyr/9nVSBnVd+h+33v5f6S59hAdDBxtni1vTj71UYR1Cm8K1HRXBg3QD01p9wP7B4BXu2uF0HW7+J+wDQOy3m3oPH9BHQb5uAgLX97lvLpf/hBgQbazX1TpMavl+mzZlGp/DNAUCnne0ILWEjNslQ+AYZxBoIXQNmbq7bw9biMVsNoONzNuK5HQrkLHdQPMca93DyIdNKqANdDpgUfNJh6QODJ+O2s78dn6WdArvUE/gNIHAC8+8iCw/bqaUVfp+dYOgU23WFblaxXNONldKGIKoLwVFP9BFpD8VnymCNHgT43Yxmfy8jGbQKPieDqdjSOZDlHXof6Pjec9rmyGE8bJ1kP7r7+Q21f+VvdfY9J6zF4bhOVkBn0K4+FHSMa2S3yq/959MNL2SaLnGcstZcLDMtpTLVwm2x2r3SVMbHspey8vc4Bj+Iv8+k2HUAE02jHM0WmFMHw8xapZbdOPPcb1lHq300Z0O0vjZiPCrbG57rYvuct4bBeIaKdDldjWXAmQ8IROoeB/wtrz2BgTqwcwfZ+XeWGG6RnS+p25cuf5Yiub+X4Nyx4Mx4QmCkq2rBXjMKUPXNNz4N+irTTL9qRbppbamkCC5LRxiSoc+o8cQb45GOpf3fbD0BYOu0JLaw6eSkIqNeVYB+qwA938bpbeaA5r4F7KNwLthVDEDHde6ztgEEAoG212aLv9UvHq8R6KrQCWsEdAX2zg86MGKqOl8Dj6nSDFWxKytnRoFL6+ep2qLGMoJeL4wT9yuw7lemNY2ueWr1aokDp3R+fKym4nUqHXvSddgFx6lyCtstTW9yGAZFcROZF7WOTv9ttpdxUeTEKV8E9eGU41p3HaI3OBjXRNa3OgVtOB6M+uF6abj8BRjub6TkyF9L7c/Lpe7KSmkgqF9bCUa9VdrBQlturpYW1phDNhnhF/3JAexN15ZJzY+fS+udDdq33h+9V+uvNDqh4xgtTWl4wlQwncw4b5vuc914XfapjyYckIlUWo8eUaOU3gcbtS1sgH3hNHgBa+0HkPeGrDN16UfGbpXpaRvYbS1NZn74QmovfS7NV5dZafuv1FGuDay79eqXWMvwNwAe15nCp/c7GXfH5T9I65XPtLbOljatmzPNfm+VqanjMRTD9dwkqIPd30RgQHX8zS9U4c6yAxk6lfnDUVs1rT4UbYCdE9pG442F7FDERhkMNa5z9odrZPjRZk3FD3K8awR737cqQ3cooG9XsRpb3+gPT3EiDXvoyKcr7Qg+1yMaDPXh8V0Isji8hSA+iOBohM5yadRO7NGaeXfEN9Jyb6s03QZbf4gAAAy9/d4G7XpovrUW39s6sPht0hNzRDpCd0hn+E6x4TujL8EYgsRh+swnn1J3ONbNx/F7G8u9ZOYIZBlr4IlFD4N8TvW7LK4X1xGAhsrMu2iZeR8PIE/Vsak0lmH7F53W2IM+VZkrk3RKrMoTT+0zrBcyVVcgM42FMt1cBDAvMrPQW6yZ6G1mVvp8d4UZtKLWzgTxBrDzBq2Zq+0zRXDd5dYEtcJPgb2ZCfHaLLa9Lg57ajH20rONIAtMxX/IMqONddxzEkuBQV/jM2+g451jwdFh1c7nt5suHi0pLrHzpcufpUjur6z+9GXan+62ZwX6q9rAgJ0AX/98a0FwDlG7ryaXk4zExxaxOkTMdfnaPuJVc5lXOo1JFe5aR3+rqfcAWTrYOSevkVGThS8gOl8gI+/E7QB0ptnmm8x0p/nWVxLAgU0AD3YSzAHg7QX4+40B9fZFUC8wKToe+Dq+9ZUR4VEoRy/o9vfaKztT/1qmK/MByBla8596b8ajfjKPKU0HqKfqbGVPSbL2nLtfR4n7JQC9IMKw9ZI4C9TpnhetrN1dCOB/HSaulw/Azh+I+wVT77eMKI6LXtpMf4I1cVAG3d84sYsuXwNRYMW4zpMzxVLa15xMi89zOg6VhiL08iY4ddxaLTXfAxwvfimVl76Sqp+Wg9Wtkfb7G6Tx6nKp+eGPAO+VmrbtfLBBW9EonmNqvvoH1tHXKhu3xYNNZp7RHnam+Yc4gYymNHQfY4Yg/azOcWcqmcNXmHJ3AtA9WadkBAEGa/YUg2nLVpw1VYx93KHrNYXNyWcjCXtkLHkfGPBWtXJtu7lKgbsdbJqsnbX2ToBwO5a2wN1coZPZmq9+penxgZC10g1Q7rhMVfxnxk3ulllk4bydjnPdN5eZljYw8m6A+cBD00dPtq8jWsGiyc5tYQhmWAOnnesjA8wjcTtlNHanDFtCOAeCD9v9ldrTPhqzTf+XoSgzu30oajMeu0VGYk2K3hG3S0ap/mfrGoIXOvGNJtO857A4M/G9pR3TOjq1Dcx0jKSfwmd6WjMxNgrnko9rAKX6BfwGWkO2S9u9zdp+2A3AZrmlA9db7qyX1rvrAeK7pReA3vZgs7Te3yL9eOwIfiMjYOQ0lumPPwZAx28ly6jcWU9nSUfntmuA+IPW0znUR93iXoOhF4UhII0U9Zug6BXgyNo0s24Uu9Ib3V2aJi6K0DhzvPqpTPG4BjPn8BVfh0mzLwK6AfP3ZlKazYxFDo60SJCsfKhOgjYAuYpdyz+V0LQ1jZk4XTwflOJcUGTOBRrcs//8Kdj5U+0/91GwV82VK3MAdj/OPRyRinOSb669aDxoa2wKehwpEpg9IRL4Hc5j/26JnS9d/txFcv9aB7iwP33Oczsw0lbo737XR+clRMl+nbYE8CSIz1TlyDSWlx7KbCepydeWErpMedmLzjGHnDNeawxeaN1ohiwYW8dAe5FJowPQg2xl44HMtFvzCx3bOI9toOUlABzg3gHm3vYK9wGod7wxqx2ADuCfRwTP+843PVMRj5kS9QwnmjfGnrKtFCeedwgyCsVT8Vgm36WZCXLv0nSeMln7FMV9pSkA6VgVxE0WxYi7IFJcr8KxBaC/iQLIA8SLLdc8K9XusSxgJ1hDB5hPvrijfu4cijGRdwWM6QquYz3+RVOhbCUiC+b0Lorg+qP3qfqdLWkEdM7DJqgyxc3+YzK94di9ampCAOAJvuX2Oqn+aZlU//y1tIdsBVv/WqrO/x7AvgK3bzBKaTBDCrNYU6dCnoI6h5rPnJbRtNMykXFGbEwfA/Q4c3s89YQOKxkH+HDcKluxKCAbA/t0px+Xmbxz4gKwj4CZ2sKN8YyO/cRrjCXs07GpFJqNxAPQ43fLWNIemUjYoayd9rFsNeu6s0LZfDf73alAv71CB6ywv53qdabrCci2kNWaQqforeXy59gCuG99KX13lqnfuy0UwI1AoROMvZfPxTr+neVa/x4CazYDW9YBvLcrs2banMNnHGDnI/ifR7mN2Y7/BeDMPnQwdIL7IIe9hKxR8CagKyvXWju2CATGwOgdsdv1f6IpTX8kApbIHTrZjgYw9MZ3ZZ/RGfUEdGZP6Nw3yrn1meY7HUCQNZRiPPhpATwQe0B6Hx3A97UNQL5ZeiJ2q0tgG0Cd33UbWw+jcHvUfv2uO8MQaHFqHoezpJ0FmJ/AOq7ta6M6uOW8GQiEwHGYnu8Z54wFMcCcCngXzWXePsRvPEymSx/JdFk8ftMIXin+LEMwW54BEE8XN90RmXmjLkaBnGy8VEVvvs5ymW0v1X1cWi+nw1tfrcyzG4UtaWDkwWGOR67/1JoWsFrTAn0A8P4Kyz2yUoGe5TVOY1SmzoFPTLPTRAbEwVuRqWl2b2WWXp+rMrPOOdkRx3wA4O9Z6KvsWRjvLQj6Z65ayvbF2vn/sMTOly5/7qn3f2dZwx4ITjniFsY6yhds1QOBrhKPv7UgQIMHA+w40OnaVJUrUx+yZPIDRXImBT/NgQlcahObh/u9UNW7Dltofm1MKziNzepzZfqcUbkRxDzXWcxk64EmHLQNudj3BOANgG99qWu+7ZUCfKAF92l+Jgu4n9636Yn4teXmsfGjrnsmXgQTWudrLhFvczFOUs9lsixL3GTkJUlG4Q6WTpCnitb4tgO8C2MMiLOOTmFcUbTW091MsRdHG0Bnbb0wQlwFYOkv7msfOuejOx9fUzCfyP9FxvIuy/jjKzJGhp7xvbp7cQynPc44iw0lsXZ+VuuunAY2Spae8a22QA1ZoGmjTStbzig4AzNsvr5C6q4sx/Wd0hWyTSoufKbp+Ga2nl1bYerrFHAhEOgEODAIsIOhU5THWro79yyAfJcydNa7x5OP6kzzkYT94so5C8A/qS1ZVLm7M46JN/88gP2Ygjens/UBmAlqtIidSD2kYD7KvvUEgHnibnGmHJSJ+B2qGLeFbdRWMTJoe/gGTYEP4m/bw/Vaq2Y9naYwBHem0wcfrpaB+0a93vbL51aafbkMYPXf/Rr3W6eiNTWe4WhWvBfWzClIY4nAztcCMP86K307QHwrQHmzAvgI9o/H8/2ScW/UfaPxnMW+XdPsDmXkvL5RwXuEafaorfjfvsH/u0P71/m/01mO9XRn6hEtS9A1zpl1Slk6p7B14buyI1giO2c9ezTtlDJz9pETkAdiDmj63JZwVNPqbffB0iN3afq9hSw9ZLO0398kHeH7pe0hAiMKGxEAENDtCMzsad9JLwB9IOGEOHCdjJ3dE4vT+GgRy1Y2V96lTyl3J4Vx7EEvClVAp7GMC79rN7NPAHQGu3SC5HHtBbDOtrz9lE5nfdzbVqIqdx/3A8x91MZQuMp2UptxeTQqdqzBemytFrVF8OayVRkx3KIgjlMYCeZk5DxmWc4rT5ep9wgwrFZZjkOdfZ+unSYcZTwLUJ+ry6eqfRqEwL4w1FQenBmLwTlrH85df2PZvC4p25cuS6n3f2QN+5kE/WeC0yNJC6MdFTgA7YHOEi9YdIDT1TjxiAc+fdynwcYpQKMlrI425JbCs2oAfs1zLKbg32r7mqbdaSVJw5kmM3KVo1YV4DXl/sKAO9YCmXpdtq5AQx4AOx/ADXBvBoAT5PF3sDFPFhpzcXuOBBofm/0AeT8VuswWqB0tBT1vcUIqV9/p6aYi8dS8wIksHQwFzJxpdi51g8MJjpavbw2oT5WYSWucRMehLB62/GBrBrREYIXLVCHYfMFDnDBpMHMD7PwqAP2qTDw2azT3Zx2y4tCT7lkVxfHkTIZuw4mdTGoi67z2M1MRPZZ+GtePadqczJ2tTzQzoeKZ6nYqztkeRgGbHWy/7vIK+XD+czDxlYap31mvE7x6WJd9sMXcL5ZgclJfYzLvos4+52hOMm36mjsJzHG7wdaPyGQOgAEsfSL1mEwBpKayTshkxlGdmz4SywEt63UqmzPpoLgzj4kbj52ggA6g50zE/hQ8XwJAM2aTprTJkAepJo/YrAyabNkeARAG+LLuTWAmM2bKeyiMAru1Oj+dhjMUyXG/PWSF9pwzhU5QHXi4SZ9ziP3icZxzflCZt94GQGfQMBK9XcYBwhMIMkajwbzD1wKwN2j2YBysnEBPhu7Q9PtmDT5GlKFvRxCCwCFyk6boqYIfwn6yewI9gwEF9Kht+BwPyEQaZ8vvQyB0XFyZx3WoCr8nfn9j6acQQJ3XLYWP7GwgwA6n0C0QQVziMYD/TmXm3RE7penuOmlXgN8ojbfWSFvoHml/uF36dCzqEXWNY4p9MO28DCSdElvSKa2f00yGZjOjDA7xPTPdbqyHAea5lxBoAtCf3RDPm4cyXRKBZZzi2IvOOeJT5Wnirc42JTQy5KbXMttWbNrUWk2dXAexIDCfbSu02tLe66AVrZlbk9N0kiLAmoD+kYtqdvsieFdoel1Lbky7s62tzZjHzNI7nuNPOcYZxxtLXG5mD4pjVQCnPhB4n9TwzNVkA8yfeQPtRUMLA7VVQddgCttuLSHc/7Y4hGUJ0JcuS6BuUu9MV/0HU0/3fhecHE5aGG6p8PeUO/ytr71zjfkBX5V18JUlaKqO6XaCus4npnXqO5POpgp+0XRmppojVguUqXOS0rxVL2Oq3aTbKYJ5aZi6BerzZN71OeJnf2xthgRqswDej8HcAeD12WbVZcp8TYauhcZsBXSm4nUmOwKPWdrVUtzDWmAde2nfy0zbe/FUPRNXaYY4CxNl4m3cJ3aufu0FUVpHn8S+6bIE7TufplVmsQXoytAjAfrhMl0YJpOvQ8X1/J5MANDHc37CifUSTrAXdDuWdemTAnmYFp5JpwHoB1Vtzp5kO2eUZ/8AYOeQjQM6wIM2r8PJh1UlTQOavkd71CSFE9LYt97GtqzQrcrG6DJX/fOXUvHDl9IAQKdAjvfto1VqKAeJHFDrWU3/gn27cs6JO+uMjNFKloNewMzHU0zPOVPm03lnxZV2TFwAJr2esk88GYfEhUWmSmY9ErcLQLkXzP2QTGUD8MFMXUm4X+o+gP8RADvAPd6wYwKhA2yY9WkqykdjtmqNnVsHAHUIIEk274jcgL/XK8jaQ9cpiNvucy3X62Txw1oP36JMnCBMJj4Cxs19Y7Hb9Hk0AAhbj9fchn0A7+S9MhaPxyFYGInciEAE+xJ24rbt+pr6PAgwbA9WaAZglMY6bFnjc6iBD2vvYOlk9UzhM20ft0szEwR0Z8Yxs8Vn4M4+JaNs9Yszg1soKORc+vH0k4adMw0OgHVknld2ztR4T+Q3qn/oAqC3E9xDd0rznQ1Sd321tDzcrWK4vkcI/gDoPZG7dWwqg0OCuS35tAySsSedVOZP0Z2DrXTZF4xTIVPu7LR4fEXcL++oj/ts2SOTcn8fL96KVJmpSAMzzsDxmY3gHMBa/1StXufaOFWNLJ2MvFCtX8nafe3F2o46T/MYHXFc+U/Wgq0GgF6nrWkLA5USpGlM9zuAeIksdFrdKVjM9M3SwrUiS+eYz4CVz75PwvtLEu879pkniBf7Zt6nqD3tzIdUqvED8/X53oWOEkdwsLFGwdw/fYFtt/9o3vmSEG7psnT5R6n3f9yfvjron/7h49RwRnCkvSloqxlf6Hjrm2/MD9KAgmNWGVG7i+LUxWmSKXcwc+Mkl6tsnSI0CtJYq575QFEdgL3+hQ5c4JrHgT2vfs0vVd2qLN0C9UA7bwNTB/uer8uReQD7fG2mroCudOxLxUqT+apU8VciWK/LQiDw2NTVERD4KaqpztURsJ6yLK2le6ppYVkAUH8urrIcAHqSTLyMFueLCHG9wnoRBkbzULf0cp8q5sS5eK07est4okkwavdi07JG5uN68UCcT2/LBAE9/QLA+zwA+gxOsN9hgaWBqY9kfK/DNWw4KffiRN4TtgOs68AnBzk7BWtWbzoNS3ToStwhHanaG7bTKNMTDpte77sbtP7e/2gvWPoyqQKgk60zVctgoQcAwbosU/vK1HLOy0TmGZkEY/TkXwSbPCXjaSfVQpbpdFq9jiXslUkwcnf6UXGlHxNPLu4PBu5JOwigJhPfC9BdB5YLQAdQkrnP5J6UKTBTN4KCSQX0Q+JM3geWvlPGAaRjYM5jAG+m4QmgYwB2MuexWLLeTTJGMCbwR5EhbwTAblTgJ1sfDl0LYF0lgwD0Yda74/fgOXfj9nVg3OvNvtjtysDHY7fisRtk4P4qrYnzeUajN8s4GDrXMAGd7z0erx+/U8F+BK85iOcZwmLQMPBgpWYQWIMfZuASu1sBnkK6scQ9Wld3gMEz7e7AfmXoqezX36/zy90AbzL2kaSDajQznnIQ+07hcz+pzHks+3ujUscaTEQwlXFGehGwMcXeEbZdOulDELpDWu5tlPrb66UtfI8Cfg/nwsfskw4q3ZNPiAMB2gDY/aAq3U8jMDhtxHCs16fjes7FT25x42Tqz67L1Nv7AMsIgGWUBqe+KgI5QLI6U2Zr81TkqkYyLHtRbd5uWkrnOixPCasFdU5HINMIqsYwc7JyG8ce12hKfQGMXNPq/QDzHrJxSyfDrhVs51vf6HE+W5OvKXZj1kTTJjO2mcHzTGmstoXOEODLOQGS5jc5wfmGp75AR+F4wN7Y8tE9nBP0Tf9o1c3/k2XxujRRbemydPlvWPoiqP9bSyS3UfwzVz96hgs+jnd1Ldiq3QudbwOB5vwgmbpao5anGetU+r1TaFaRp57PHOTgrXupPu/TZca5jQYvdGnzMjVfkaNRuvaa4mTClN9cw2L63dTXjbr9jdbP/WDk8zVk5OlmVSWLvyJe5isTsBJl/kOcuU6Qp0FGA55PBXN4jdo8bVuj4Yy7LBvBR75MVj4Td8UTcb0DqL9OlNGn4TKa/0AmnoYAnEOwBUg/x/UXD3XKmqrcebLhSYegXhaj5jLTRRzYgvs/vyPjeb+IM+snnLx/UpY+lHLOqnPiZJ7zs05PI0gz5c4xqhRFDVptbKyRcjIX+7nZu+zO+x7bgwgMTkp3ONO4h7Qey0EsNB5hfX046bA031yjKfeWWxsA6Ju1Nao3ard0hVP8dlDruO7H3wNcvtM6+dST7wHoJ8SZ/a2m2kdiv1ElO1PxztSD4gEAebJPyjQA3YW/JwnoWUfEnQa2H71R2bcTgD4FRjr7+LRMZSEASN0vHgDbZMYBXGfafQdY+zcm7Q3wJMArgAPcx+MAqrGbsN2C59qpID/6aBMAfYOy+WGm5ENXK9CO0OQFYOsAex6L34+gYh+AGCD8cIWMANjHwczHYwDoMZvxHGDbIWsROGxG4MHtRgXvcQQgQ2Gr8VxrZDRynd6XtXRH1CaLzYP1hzIQWGuyBXi/WnMHuDPFzsBkPGEPru/R2vxoLEsKFMUB0JPxngjoYOZk6Ey7TyAYoi6CpQw3PkdnFtPgp7StbCwbgVXWd/pdjwKECcydYdsA6DukI9Iw8vaHW6U1ZId0Ru2XATDz3kd7lJ234z72ZLDw7PPakz5EP4GkM0YAh6CNzz2S8S1AHL81PDe9DSYA7JyFPlP8UObKoxGQPgJAJsocjWXoBFmdqSpy2r36m55ol8l822vx45jzdxbpICSCuJ/17h7L2Il95NZMc62Ta82cZjFk6JXanrZAf3Z6SZCZc7FlVcGccxWeqnGMtyrb1MVxDuFkx+l3ceIpiVEwn6bHA65zv68yHSQgLxBofe1e6K/o+kgR3NwUZ51vNh4an+rm/2oJ0JcuS5f/Z1D/S+tA+b9kYX6nzE2Ff3Tby4IjbQOIwKcDnUUBsuDZ2lwd7sAaGIe4TBYnga0nK1tnmtvbaBTnNJuZrX1u2a7mGE/1BqvflC1nnH0M0PVxBCqWX4dEPNetH6/D2vlCQ54sMM1Oll6TpiDur4jDipV5bOc/xEjgQzS2BPkkA/70qW58YkQ3TClW5qoZjorjwM5d5blg6dnifpclruI0GX8VK2PPw1Xl/usiA8d6EyWut5Hi5HAWiuOUSUSDUUQD2CMA+qEA/9tgRDfNojAuk8Yy52UITGok80ews5+0f7gv5oCm0tX2E2x6CMxrmANYdFb5NyqCG8vioI1zWnenfzdbnViHJdNWb/YHYJGJB3USWOudjdIHNtfHMZ8Ru9Qwphf3YZvaRNYZBAfnxQVgJzOffnpBXBnHZCb/HMDokFUT3gEGvA+AuUcms48DpI/JVM5pcQGs3ACuaeybzj4qzqTd4sbi/aYBVNMAc08m9qeAnafsxd9HxJMO8AeYMwXPrTNuh9bVydKNYG4jQH6juBIB+il7LIa9yNgBzJFg3wB0ZeBk7uFrZIxp+0fblfGPx2wSRzgAHaCt99ctAB9ATRY+QjDGczgerdfUuoI3AgIH2P5I+GrcdwNeb5dqAgYjNhvxG1P+UaZWPgpmzusjmspnLZ5rp2YIDEvfpmuUbXqJCIQQ9EykHFYw1xR86lEFdVfaEXHis3BmmJZEziafePwjwPeCOFKOI/j7QdPuvY++kW58d12P9oKNY8tyDLMyWDYAfg++U7L0zki8X/wOxgHeQykn9Tr70SmsnCCgk5EzYABDH83kyN4LMvnsiky9uQ12HgkQj8WxkgAABUN/Hye+iiSsVHWIm6vLQRCN443lqtYXCurzAOJ51r0J4n2L445/tWxWcZuK4GqxrTHCNx20UmbYeQ/bVK00e5vlG8HjnZmAWhznPHdUZWofvGHn8TIDUPe+j9dZ7d6KFLWmRWAexPvx4vkHFsZ7SoM+V7gE53frucmco/5yCcyXLkuX/3dgX+xP/1+1tzPgPRucHEwJjrbWLPRVOgLtRV6cAAJz9fnaVjJVBjDnYBM6s1Xk/qp0p80qh6Q0vFZrVl9TIVj5Syz2jr/WXnUOclBb2HbLEU4NJl6YEwwBHa/hr8sVf02WSbezbl4LQK9OkQAZOcG8/JEEyqNkAYAeUKaeiNtSNE3vr81S9TsDBW91nkxVgqGzvv/OtOk4S9PB0jN0OYtSZfxNgjjfxomLPemFHJ8aq8sMqUnQ6+6iRwD4CJl8E6bmMtNFEdoSRCWxCuQI6M+va/2SCnemRu1JAPWsSzKaxRPyt1pH7Y3eC1a2Q1OrOk0LyxZ3wEzoSgAwPvkJJ+0TevIfVNA/pQY0BOqekPXaD04xHW1c1WI04bAOBWFwQFX7eMYZdTObyDytM9U9ud+Kr+AnZehTOSfFDeCmi9pA6GYFMlfiHjDv0wDpY+LNOyseBAPOBLDx9MMyk3PMsHUwdTcYuifjiExlslf9GNj7QTx2l0xlHNL0uzNhOxj7HgV/MnoXwRzASHAfA6N2gZ1P4nZX8h4FcqbCuX80GqBNQAYzH4ncZEA+CmANgB4Dox6PMn+PRKxUcCaAO7AdjVyr9yV7Z62cAcB4zFZN50/geXm/4dCV4sAax31G49iTDuCOxGs+2qqlBAYQY7Fk5Hs1KDDBAICcorgYw9IJ6KOxBH22sDElv0tcYOKu9KPaFeDG5zqefNgAejq3R5S5O/MuqAWrzid/dlnFj04ALlPx/L568d31xh7WgSt9MQfFlvyt9OP3YcP32RW+XZ3iOgH0QxS/5fwgA7itH4A/kn5G9RcTjy996kHXcb3Z34s7/0eZfnVDvCUPAehRYOZx2IKlv4sUX3mcMnW1gGW5qi5LAk1GWDrPrpKONxLsxvFIUOZ0RAJ6vwXo/VU6i8H4sZte84C2o1VIsO+DfMRjCOg6eAXXWUNXx0c6Q7LLBcfiXN1jSxTLEpwB99kq2rtmAMzTNNCYq87C+8oJzjc/9we63jmDjtaG4PR4GgW7OC/9zhqNuiSCW7osXf47RXL/URYW1ge9rp8/TvTkBG21DYGu0tEAouZA6yuA+uPgLK1hy9PUN12tVdVi1fgxT7/PNNer8zUFT8bO8afzneUAcWMNS4/3hU6zPnaWqDvcPzGRUdV7vrJuiuT8VSlgG2DoYOP+cgI6mPn7cJkvCxf/+0iAeqxh6VVpWlufq8bjCOpg6jO1HP2areWBSSyCuqskTftwnSVYRSlYieIu4USneAXy6fdJYAxGQKQWlGAUdJJzvwqRyZf3xVOA7ev7MvX6Adj8XW1bm3h6TVxPb1iit++UVQ0lUxx1wZiD4Lot4ZiezDvDtoo98ahaetIEpjeKLHsfWN3P4sq7iBP0OWVmw2xPYjtUzgWx0/0tZo/W3DnIow+MnGYxIykndBgM0/MTYGwK6OknwRiPyiQAZ/blJZnK+xZAfFw8OSdkMIqKb9aW2UMOoCbYA6zJylXwBoD2ZADQsw5rndyA9j69DwFd2TyuT4A5e8DSPal7xQVAd4GVuxJ2AsS3iSdtPwB/J4B9G4CdqfZtMgkwd+P+47juRDCgtfXoHSb9Hg7QjjQiurHINQrYYwRqBfZ1um8skqwbYB6xBvdfBea9yTyW9yPr14VgQZn7GgD/KgV1DQRYe2d/OVvXogHeuN/Qw9V4D3gfCd/IKFvf8PrjVusbgXuc6f44w9BZg2c6fgyAP0H9AEDbTWEcPlO2sk1Qh5B5RDsBJnMRFOWcUwvWSQL6i6v6nbpyz8sIgrVBgHZ/7AHpizuCdVgnqdlTzun1QQRlnWHbEfDt0tS7I/M7cWSck/74wyqopHmNg98zAj5HygkTxJGlA+AnX/wi3qJ74iuLACMHkL+PEW9ppArjfOXxAPQEmatieSpTBabzjTkIpp/g2HsFEC4CKJcYlq2rTFPu8z2Vn9TsFMBx+5F1c7akaVtalYI6F0VxOnSJY1HpO8EOF3pNaJD+GMybHSv0kXhhymzcT5Bn8M5jHAG8v+FxAOeYaTzHwMeJ3gKZ89zUMqDpN18SwS1dli7/nSK5Rb/3vxaZ3xqcm7z+0T2QHxxubEFEPrrQU+YF+Abmm18G6dim5hCcY0y1bDXr1rRczQYzZhtZno4yVYMZ9rd2vFPb1kB3hfo6z7cVKIgHO4zN6zxV72o089wYydBJriFfGfc8J0WVJ+BkFStz7+PEXxYj/nfhMlcShvVQ5krDNAU/XwFQr0y2aobpeP3Hxhsa74etdlTiu99nKZgbUM+QCabewdLH34KpF4GRs23mAyfPZWrrjJfXqzJUyMPWNXWKe3UPQA5m/uKmuF4B0J9cUyGcM/+GTGBLUGdvsCPtnHpwU+lsB2vviTmkKuX+R99o3dsBILZz1Gb8QemL2qO+3e6nl9VBbhKMy5lzUUGANdMRPNcomDiNYWx4/GDsHnWYG+FIT021nzViOGzd2WeVPbpSj8jsswsy+5T95QDtnNNWe9YOcSYfAEDtkUmA0TTAaDIdQEWmmXIIW9w3k4C+V2aymVY/pGsKAD+dfQy3HQXQrhdX0i7s34/77TGsPHaz1sun+FzJ34g7kYC+WQGdAO9O3I2/t4kbz8PsAIFS0/KR65Slj9HMJWyljBKwsW8CgD0GcB8HqI+z5o7b+PdIOICaQA9gZsp+jCAdtUEDgYnYrRoIOADqw7j/cOgKrdWPaR19o9bumfIfDFmtanZnyn6tn7MvXnvXmXIH+DuTOFb2G71tDOx+jCAfvxuf20FxZZzQxZo5P2eCupvaAgJ6DvvRz+B7BKA/vyrOJz/JJJYrl4LJ4zpoRVPoFDkCqFVnwRnoYOoD+B2Qnfch6KNl8Hjuj5ZT3HF1nhtmt0LaSQ3cGNhxUIwOZnl2GcHlLZnFseArA4gDzGdKsH1Hph4NBgwwx3HhZ7ariV0jZOg5stCWD0B/KcGuQjB0A+gLPaVg22WGhbMtzVavSnY1kbHXAdBrtD2NgM60+8cBMPXF1LyORSVD5ypTsZ1xeXxhju0Wk4mj94Qe5y1WeY1tqS3PgsG2V76F7pLR4FBDTdDjQOQ+e0QksDhJ7S+W3OCWLkuX/2+g/j8bAcrCegn4rnycHM4JjrTX4QAfWuitQARdEVjo/RAMdL/TehlV6776Z8a6kSMYG54BSJ+pRay6xjXRZOaF7vM1F+ggl/m2Yg0G6PrmV7OYp1oDN0K4LKN0r8+V+dpsRPDpCuq+D0kK6rOlOEnhhOUrARspCRUfmMlc0X2AfARAPV6ZCJX5TOPRwpap9+mqXPHoKNh0nevuJkMvTAawp4qzmKn3eBkriAGox6o9JgWAHFbDYRZeqvwV3BNliqK4NyHq5+4EI3dyNvqLe2DpYOePLytTH1OP7e+VqTvSz6rD13DG99IdtV+6Ig+adrb4IzKcfFKNQdi33BO9XwYzftAAgS5vrL1OvbymaXRX3gVVMlNMxyEcnKA2xhM7bWNTAPA4udPkxJl5ViYfXwRLPKdiNwrfvE/OycyTb2Uy66QaxzgB2KwPuwFCnIPuTjukzNuVtBvMmnXz/dpv7kkHoIOZmzr5PtzGtPt+TcXPgM2Px2zUtDtB301gB2ATuMnc3Ul7lZ0T0J0AeWfcVnEm4HrCVhXMOZNMH/s4BXS4zTDyDXjsNhkhAD/4AqC+RoMGAvvYo/Vg3xsMQ4+kgn0VgoC1ytBZIyeLJ9jzNj4f0/0Uxg2FrVJBnYNBAZg41fDDfA48jkp41sqZxRgDGx8KWw+w32pS77gvxXUEcAYCoxQRxu8yinn23xPAM5hmP6KdAhQXujLA0DOOAtDP4Du4IJ6nP+H7M4DueX5Zv0PNpGQDpNP5ezirinU1n0k8CqZ+FMHdMa2ns2QzhEBwIv+KjFBMl8Cg7YT6xY+k0WDmpNhi9+I7x3t4ckk8b27KTPED8Zc/QsAbI75SAHlphKbe5xDo+hHg+ikebQA7b8yUILbBZgPoQQX0N8rSAwD1eQI6GTdtXO312mdufNoB6mTkahxDVk4gZ9q9XGeck9XrrHNavrIWzwChE4FCV5EGC9wygP81cH+ma6HluXxsexlc6HrjC/aUjoI8NH1023JY9sP550urrXZpzvnSZeny/wPU/+oTqC8sbARTv/rRacsKOtpqAgM1Q/O9H6bnu8v8853FQR2ywIlJVLSyZkY71oanyozp4Eagn6s3whjayHorc2S21ojk/PSAb3lrtbO9VAOZAIGcQjiazNTnKKBrbRyg6uPQGLaScSxkYbj4sJ0tBqBjzRWHKGufLwdTr0rB45jGy1YLSa3Z1ebpjHdXcaK42TtfTnEcQL04CSCerOx87HW0OF8/EndhNO7H9rVEsHMTGHDkpKrd38XIZFGYuAHobrD0CabZn1wX5/M7xi0u/xfDrNLPfBqqYU88CZYOxp75vfTGHJP+hFM4iZve4tHcSypqYnubHYBO/3hnHhh56inxvLyu6Vp3/iUVPLnyfhT34x91gpqm2OkFn2LGeDozTokr+1uZenJRph6fAxs/qeDtzT8r3sentfY9BbChuxtZpjvtsPaXs04+lY59AORJgDiZqROAzDq5O2WPTGccUNAmE5/OOojnPSbenJPKzsm6VQwHYHcBSF0JAGgwdFXGA9gnmXYHoE8Q0An2uG7q60zD7wK471ZGzfdD85pRurcRhO9+Lo6Hyw3QR60120dUu69U0RyZN9PqI8rOKZpbKUOhywzwM9CgHS0BPWS53p8taxNk6DSQYb2erxNuMgJOKteTD2t/OvvUWWMnc9f2O2YQwNLVHS9uh5YExvGZMe1O8KbqfTLzuC7+7UJwRIY+lf+9eBA8TT0HmD+9jO/vooL8eOYZzd6MZVktbZnnVLVOFfsgwT3zO1w/JSNZ+P5zfgb44zeTzn0nlJ3b6PgXd1A7JTh7fRzfuef5z+J5fQOBbpR2gcxREMe0+7swgDv2KaDHSaA2TYL16RKsSwKg43pzlgTbDaBr2r2Twri3AGIAev8Hk2Ln+NMhgPlQvZViZy2dQP5BPvYZMGfveRCPoZFMEAE+By0Zxl9obYt/XT3FCuwfuwoV7Bd0fsPbILb+hZ53TgQPbR9d9ufBeVW1r7cGr/ybpVT70mXp8s8jkltUvm8O+qZ+/jjlyAiOdtYEh5vtOOA9ge73/kD72yBr32bIwgsjfGELWe1jNXuhynXOcoij8xwV6Obv58rs/c2smRdIoJXtagUSbKLCPUfBfKHxsaV2t/rSK1JxgkqS2RL2hIcB1MPAzsMNW38XKX6c1DT1zpp7VZph2JWZ4iNTB6h7wdY5PpX2rx76WNPtjrV12sGWJis7H38ZLuPPw2TidZRMvAW4F0Vrj6yvmgKeJJ1eNVVCG9i7APJrYGBXxQVWTjtYCuRGOaQFTH0IgExlMtPu/QnHFcDH8q+LLeW89MWfUjvP3rjjMkLv9/zLqowfSvsODP2+TL64pvVR5+NLCgiT+T+ruIqg7sY+V54xp3ECIOj+Ng52zp7zyZzz4sn7XsVwrHVPACSn807LTO4pFb5x+IozybDyadzOOvFk6gGtg1O0RhU7RXDsLZ8CA2Ut3cN0OsEe95sBoM9kH8Y6ZvrVU/C4VFMvH38EIAUzdsduETcAVWvsZO0E9NhthjkDbJ2xBPYtAPWdhqGD9brwf7jST2nanUK2QQD60INlWi8n83aEmxo6GfcoWDb/Jlt3hJOlbwSwr9T7UgFP8FcVPe+P52G9fSTK1McdVLlHbwe471RhHIHbhQCHxjrqAx+1xfTO06Qm1gA72Tp79vm4UQA+/yZwu9OO4vpek+HIOa0aBZY1PDmnZJKaBX4HT/BdAMjZs+5h+2DudwjWfjKai5wftdVsPOcH7WoYBrBTADeUfh6/oV9kDIEiSzWsofN3ZEfQRu1FX/ReGcR1grsT3/nUiysy8+YumHi8tqr5SnBMlIQgyAVjB6jPU2NSFQNAT5ZgLcC8Og7AniQfmzIk2Ipjqx0suf25gnoQgB5kDb2/3BjFDNVZLWqWpSu32qr23gA51kcw+o8A6489JWZrAfZHgPfHXtzWV6Yr2AfQ71kEd4J5EcEdYF7kX+gq9iwMVHctjPe8Cc66QiQ4v+e/VbUvnZWXLkuXf970+1pOZwvOjKV8dPdVfBxpGQj2V3g0um57E9TWl9ZXAPaXBrAB6D6wcdbWaWShdXaCesMTVbwq0FvmMv4Wa/oahXGdpTqJSW1fFdBzDcDTOY41QLbdVCTJ3LtHOGmFyywA3Wtt5wD0/rJHpj+drW41GZp6J7ueBah72XJXkQ4QTwGIJ6pBjofz0d/hb/W4Nr7S4wXhMvYCoP4mSpxvsV6HqQJ+pixOvBxHSUvNQrat3RLX8xvienbVTF57FYIT8S1NvfNkPMBxpSm06fxeZ10PZV8RR+4V6Xp0VPpTLkhPzFH16h59/Isq4oc5gvXpdfEgWJjI/l6V0dNg6ZNPwMKeX9UU7tSzn8UNQHfnfA/guGBYevIRmcL1SYD5ZC5AhP3n7JMG6HiyT8h09klNwdOnfVG5zn5ypo09mUdMfRuMezr3uIK4G0xdW9ey8LwAdHfCdhXHzWTsk+nM/QD0o0YQl7JPhW6TybvBjk3Pupvtaezljt6I69sNoAPcx7XOvR7MfYsy33EAJ41mXGS+EZbgDSA8DBY+/GC5DId8Dca+SYZDV+m+EYA3mTX7z1kXJ/s2gL4FwcQmVboP4TEK4JEbVCxnv79MU/jaCkfXuii61u0GoO/WmjvBW3vvybYT9mlPuwK5tq9tturpu7SG7qA6Hq8/kUhDHXxu6XgMhYVg6VN5ZwxT53666SFYYirew86B3LP4TvB9kEkjKHPje3Tjd+NE4EcnOc40H9b2tB9l4vktzfZMIDAcy7+G3805MPmzavvL9sS2B5ukP/6glmg4YIdp/enXNwHkceKjCK7wHtZdmS28jWPjHgA9BMfDQwX0hZoEWaiKxfVYAHqqfGzMlIVmAHorWHrbE/nYSXHcWyOOAwAroKtxjCV+sxkDGQVzKtt7AdIEbC4LxDkxkZoYDlRa6ChQhv5RmXkJ7ltiQL67yOxjKp5g3v3Ooy1qo13FwenxcAnOHRAJ/MaaNfFXS6n2pcvS5Z8f1P+tUZoufBkM+M4Ep8biFsa7S4OD9V0L3WXuQGeRL9DxNhBQUC8wKlb2mHMMIicmUSBXxX70bKws7UdlbZstLHN1edqqpiNVLaGdXxl7oTL2QGO+1Y8OQKftK5l6ZZoEqHgHK6cwzvs2RGZe3ZWZgnsy/eaBAvxcebypG9Zm06hCZmuyFdBnWU+vBDt/nybukiRxF8eDmceJs5i183iZ/pAmM1j0vqbPtIejVEtixPnqgTgL7ht/7NJwmSkOlak39wDo18DIfwbLvqqsfeLFfRnJuYIT8hU1A6HAyZFxQQZTz0sPmPkoWHp/8rfSk4DbEk5JT+xxGef0tleG8Y8/A6C/vguWfl3c+T9pHX3y+RWZLriB/+2WzL69rcI3Vy4HcgC8n1zSqWrTTy6CDf6goD6Vd1692SezTqloS1lj1mllllMUbqUfNOI2MEvv47PKsgnKFMDxtklVtOO+6ewt34G104B46k4A+gGZzTmqrJ7iNwI6a/AESTJ2l/auf2OEcGDKzugNMqFrk4rXtJUNYE+RG2vmrKmPhK2QsYjVCso0lhm8vxwM/Wuw6E0K5ATvIYJ46BqslWK/+5kM3fvCpNMjDPsmQDtoQIPn4WOGIzap+5wjFMD/8GsF/QkF510K2mpQA+B2UqiXRBa+x5jLUC2v7nbG8Y5KeAI8e+KVweN+HgRLLGE4E/epo56q2+mDn83P+qQGU6arANu8c/hezhtAB5v2vEKA9vKmuPCbcT65DFZ+UQYR9FFkOUFdxsu7uH5HSzcU0I1mfqvsnO1sHK06kHgE+zktz9TpvYVg4+WxMlN0H0z9lswA4L2FtwDo1JQ8kPmyMAlUxCiY/9/svXds3OeWJQgsFo3GYjBoDPaPxmIwGAwGjUZjMWgMFvPHYDEYNLA93e/5OTwn2ZZtSZYtOcm2LCtZOWcxBzGJWcyZFEnlRElUzhQzi1XFyrmKxQp3z7lf6T137+5sY4Ht6Z6uH/ChisWqYpGs+p3v3HvuOenRSkmRrQPcEwD15NNOST/DetELcB0wvXSArgH0UQX09PxdI4RTFft1XSkugjJ75FxjJv5YQZor87Uy9d+xdTxm5roR0c2pmC6Rmr0VSs0/nE07x0dSMU9ZSpbWZUbUsj7t2SN7/P8M6n+sI22SZI76ZjD1CnwQL+IDOZay3HMkZ26FkpPX4gD21C8V6zSkWdLxFAA3BW4ZAKdNa1xNJzoB7h1mfOVhny7OrsYB+EsP+yXxFMyB8aoK7IalK7DTLQ6sZBHguniZpfdCnMjyDbhfKJLIpWKJXqvU2VsaabANoJGr95nOxnG2HgnealWDHM/F0+ImE79cBZZeo71zKt1DI406whYaqVNPd+9QnviwYQhdLTOAPnxCx5JYGnd27DHl9r7jAPNjYuvYpz112r/O1mzA7SdktmmHWFr3iZ2g3rhN54+nq38Sa9sB8V8skcCFAnFz1Akn/ODQMT1hs+TOyzABHSuGkzZB2wsgCA0c0h67v3uvhAdwcmfPFqAeBoAECDCtG3WFOjdpWVjLw2SPTV8r+452bZHF/h0SYUm+6UsJt61T9s7+O8E92LRWwdzf+ErN/gUAfZ1EOr5XgVykc4OOqHFOnWYyvoY14sV1gjzB3KWCtWWqTDdjZgD46lVmFA1snYp3GsTYit5UkRvHz8i6KVizFrGs/qGW0gno84Vvylzem8brPe8NgP6beNxvcfs7ANoVJpCFjL3sQwX0+WKyfqOIt7Efj+chQBPQnawYVBuQdtPdjgK4ui+1h67ja7wfXgtL8xTGcY5de+icm68xlrm0vaVLHhm8t3ldBsw3q4UuxwT9AHQKEQPd2yTUt1uC/XsA6nvxnjkGhn5Umbmv77C4AOwL+F/68b71niOgc3ICTB0MnWNrdIGzNm7S+FUKJzm25mrbohs6f99BiVwplhBYeejcMYA511F8FnIkdiUfm12CejE2v+WSvIU1ckpStysMW3/UpsK49LMOST3rBkM/+zcBnXau82DoBPMMMzdgftMw9JemR/474RtZ+MTV3wngtH+ugH7J9M75eGwK0nMcfbubSFsfRNL2p9a0a5yK9qZUKroR55fXsj7t2SN7/P2A+ivf9z83oB5dn4o4C9OemYG08+X9lPXhbGp21JOevh7DBzmRysyUJ18w43xQM881BlVDWQZ/N4+q5XmW4O93yxJBnhsAxqRyE3DXsPv4AwL7OUkySpUjLhTN0WiGM+k3ymWRfUKukXKJ36jASaxCYgDdyNVyiVw7bRyy7nVkfKy7jIscRXr3eiUE1s5Su/dSjQK796KJmfQB3IM3aiV6i77TdRIdqVWjDh9YuGcoR4JgRgECOhiXt8eEYyy0mplzFwDbDpY+DwC3t++X2cafZYHpbEP54mBJfiBX7N1HZObMNrE07RRLMzYEAzlgWaVabg8O54CVH1MxXOjcCQn2AKTZK8XPigwelNjwEQngtujQYQD7dhXKhfr3yeLQAQn375dQ905l58HOnxVUaOsa7t6i7DsIoAm2fi8hXI+yv961USK8BOtWFt6C+2ADwLG1QMNqFZj5M+NpvsY1YOVf4/FmEdCDuL+PynX2zgH+CugEOirPAbjsgbsqPhEX2K+LJXYyX7q6Aey1905AB0groDPEhd7tJQR1erwvU0W7lcBd8JbM5ryO9QYY+utiAYufLwCwg8lbSz4WSxHd5j5UBTsd5ywF74Gdg8EX47H5b6jYjr17BsfYORJH4Rv7+Syrk6k3fK0jfbSIdashzgpl6qp4r1ujM/tOWsFWYePCtLXGr9RZz6kTA+tUn8D0OgJ4pG+HhLo2i4+A3rUV/5PdAPVd2HTtxYbzpP5Pfb0HVSvBdo2vn3Gn+RLgGj6J63nY2B2XBQroOiiw3IGN33ow+S26eeQmztOxQzew0SvcwOI5Bw9j03cE17Hpu5JnJj+07F6Mz0iJLF4vwiXA/RYAneI4Vbs3Seppuym7j52V5Pg5A+gzZq5cR9PIzKlmn72VKbnf/D1oT1IMd0UBXg1mcJsRup3/BdBf1fJ8kmp4Y1aTSMzciqSsD+wp5/j9tH++jfocnFN+m5k3/+OsT3v2yB5/P6D+i4Q29rmSq1KJ2MFU2FWbdk+eT9sePU3PjjjSU1dC6YnLcYpetPymJbjz5sNulK0mjIUpaxTGPT77e+vXRzSgMGMtcarTdVysSZ2lWKJP0Pedc6wA9KWR05Kguvd6mXGPU1tYY3lJ73fO3sZG6hWUtY8+2iJRlv85Mw8gD3Gkjb7vd9olfKsFwF4r3gtVAPYKBXQfI1OvVmpAi5nlrVU1Mf2yXTgJu/oOqxsYbT45K+5o2aq2rlYwb3vbfplr3i3zbftwcs4Re9cR8QwXgYWdAgvLB7gXygLAfa5tt3j6T+D7h9Sshs5ewfMA9SGWZQHaYF9h9s6VpYN9DR2ROHukYGIRgHyob68EegHo+P7i4H6J8jYAOkvuoe5dEmj9EWC+WWK9P6sQLtjyg5bdgy3fgWlvMCX25u+UdauiHYAd690K5g3Aql0B0F2lvXACOUvqZOTBpjUSxn3J1tlz5/gaTV18tSuN4r3hC3GVAWDBquna5ij7WPvVNH1hP91NO9jKD/H8K5UtM5TFha+5CWBZfS7/XaxlOk+uDLv4HbD0t7Ucr4CeZwCaqndrHgC9aLnMFy3DY8HQCer0iC96Xx9Dtbw173W97uAYHF6HpeBNLdNzM6Hlf/b161hyX60RqmpWg02Ihs3QTIYBNA3fAuC/UNDX2Nj6L1UB72RWPMWF+DvTQY7tjlDPNu2r0zUuCEAP9bI8DgAewv/n0kmA7gndDAYA7P7BY9jAAZCxQQxfZZUmT0KXS8U/TFA/Iu6+Q9gY/iyTp39Q10Ff7wG813bp+4Nl9siFXH1fsPUSxgZPmfrFHIleyJH4ZcPSCeyxK7n4jADQ79ZgNWDVSfJ+oyTB0hOcR385CPAFAE8BmFUUBxC3gFFzkalb7xpTGRrNENRZQicjz4ylpScNaJOJa0meAK/iuRFJE8wNoCeSM6OR1Nxde8rx4m7ab2tJxQN7M4r2f59RtP+zrAgue2SPvx9Qf+Uo9z9nRCtMPvqtpBbXpaKBk2mfpSPtGhtNz9+fTU/d8KVeXoiBlSfUPIL55Y96FKyTahyTMZh41J8xmsjEqT4dNClsTwxTJ6iz/L5IQAewL95skPgo59S7VCBHL3eq2xc5skaWTlBnOf7OGTyuxaw7Zp6cfXSydAVxPCfZefA2gH0UgM5YyZuNErxeq97tfmaiXy7XEnsAJ9sQZ3s54ztSqUlWfpyQCehelkh54tXAjB1qGsJAFtp6KqCDoc+37cV9c8Q9yJJqgbgH8sTF62Dj1s79OHEfU7Maz+AJPD9niItw4sf32SPv248TcoGK41h2jwIEFsHIFs8fUzYeGdivwM4VG8I6ewjscLsaxgQ7fpYw2Hm0e6ss9v1sGDVBHUt92Vs4b/6t2rqqkUzj56p2j/UwqGWtAm6gYY2axNDalXPpBPTAmTVmLr3pK70/x9JMT3y5zptzA+Cq+EDFawuZUriyXQrjqjjWRmEc7l/9sRHE4X7ss7vKl6kIzgpwnst/T1XrNhW/vavKdrq7WfJZZjdOcXx+Sx577Stw/X2xlS7XoBeGtbBsP4/72gDec7lvqHEMXwfH5Mj2CdYOtY79UMV5muR2erUK46wlH6nPu2apU8BH4K75UgVw9IQna1cwZ2+dZjN1X2Y87rHpad+sCnc/dQu01e00wjgy9CgB/TLA9lIuADwPgFwkIWzeIvj/snTOkbPgpWINVQlcLMYGj4FBx2S2dpNMnV6vsbzungNasg/hsf6MriI4cEACeC8EBw5K8Cw2fwD4yPnjqregQG7xMhZYe/x2lQL50m2K42oB6BxfA0N/3idpsHMtjU9dyZTHb5keeqaPnpo3hjKqdJ8xNq9acp/IsHAdYbtpQJz+7pq4hu/jPgnOoE9cTSQnr4eSs3cI5vfTQUcL0x3/VoJaFsyzR/b4b8TU/yjzIWTP6y+YhpSKR3anQs7GpPPl1dTcvbHkxFUXGHkEAJ5IPO5LEdCXsDQZ7VF3xjUqA9wazDIAwB9UxXtcS/RD6i6V5CaAo2ujrWrtSvvX+I1aI45jhCojVTmupjawOGmN1qnKPU6DGfbQaUpDcxhVurdL5G6HYehcowT1Ngkyj3mkQaLYMDAwIni1CoBehhNrkQRw0vUDfEOXSjKiuFMSIZsCU/cMAqjPnpCF9l3qqe1o2y62xk1q+8rRNGv7ATWMsePSM5ArvounAOwFYus+qoltVDZ7hnD7+ULxgaFz/C6Kk3v0cqEq2+kWF7tUAJAv0RJrDCfoJYACAT2KkzeZegysLDp0SBbB0GKDAPTubQBpzp1vATvfJlGw88X+7RLpomDrR+2Z0x3OQ2U7S+vN36uK3V+3Uv3Yw50/ip9gTTDHfRTQOW9eu0rNYgKNa4zKvfkrM19OQFfBGx3hvtBSuqeGIPtbZdIOMmBGrFKMRjc5An/GQY6e7aYc/jE2Aab/bS36QFk6e+RWsnFuCgC8s7lv4fZ3FNAZv8pS/GzeW6aHrmX6D40QrtTEp5LBE9SnTr6lDJ5Keg+jXU8x5e1Tk8mO22gYw6hUV+1XOr6m4F++Qt30XHVfK2gT2GkgQxbvqqNt7hrtqy9wowLmzrl+zvgT0H2tpn/Otgdz5gMA9nAPGPrAXhWrsRwexv+SOowINm6L14oB7oX435dq5GmUyX5sv2B5Bo4rmM/V/qTjkJ6+I/o+JMMP4v9OkV2gz5TvOdb4ahqCvfTwMN4P548C2I9h01uCzw+DjKrwGaqQxJ0aU3p/akbX0lpuv2QAHQw9peI1M6aWsoz+fnSNYM5Fhq7q9QyYT2fAXHvtI/r9JNi+Xs7cTODxpsy+8Pxh2m/pAJjv/wWYZxPUskf2+G/M1F/11X/B1pO/lUSYKviytHNyMGV7/Dg1f9+amrkdSE6NxJPj11LMSaZ3u462vDCz58rOwcpZSk9ob73/9wxeWXwfGDlV7mZsTX3bb5424H27WpL3mlUJr8YaN8pl6RaZSKPeRoMZAjqXlu9ZegeA06M9DKYfyiwq24M36gHq9RK5WS+h69Xiv1KpISxUs/vZ2xzOUebku1CEk3EpWFaR9tQ5ZmQHe2L/3Nm6Qyz1m8V65mextuyQuTM7xd5xSGxg6lS4e8+DeYH5WzsPiaP3uBHaAdCD2Dz4LgC0cakuX5cJ4GBhAziBDx3XtgIV/bELubJ0FQssLzpoyu+LLMUDyOM4ecfOHtDAFZaAydCjA9gQDOwEqG+XcMcGnUcnA4+0mXE1KtT9Td8pU/fXfqqe62GCPGfTwdI9p5dr7zmgIS2fg40aQPfp2NqXOq6mgSvVq7Uf7aapTB0DWlbruJmCKINaao23O8v4FMVprOnplaasTlA9bcbaFkrI7D+QmZNvqBBuPvc17ZOTdc/kvC5zeW/LHL62AbBnT74GkH9DM9UJ0oxg5WN1Vr3MlO8pjpsr/hiP+UAFb16WymvXynypaQNQNc+WAVPY6ONOO1pGsdqKl+M1kYmvA2CvETtbBg1f6gibm2wdz+NUR7m12oPXmXTmyrezuvGdOtDRGz/cs82YzXRu1tJ7hP83MOfIBWomCnTMbPFqkY6cxdS6tQobSib7VWi7x4MN38zpH8R+ZrP4B09qOFDgLIB88IiGsSiY9x8xfXgF9cMS4lQE3gdh6i2w8eMI29KtSmyEy0z+Aa5ryf1xqySfdUniRZ/OoGv/fNIYwCSmr2GN6CKA0wo2MTWipjK6CN4z5uvf99mNkE6V8VYwetv9VMr+IJFaeBJJO8ccac/Ew3TA3kVLaUnGl/8CzLMJatkje/wDAPX/ITNa8koF/2c6dpJa+oI78FTY1Zj0Wq4nnePjKfszT8ryIIYdfyI1dSNlcpMvKqiTjXMWnaCugjkyc2abM7f5Ybe5ZOmciWq0sWRk6k0To8qRnESGmSfvnQFj5/1qtZeewNfJR1143m5sFDol/qhdFu9j3WuTKFh6lD10XEZYir/TKqFMyZ0Z6CGcVANXysHIK5Spa+l9CCfUS2DsAFs/gD1wkWXzE8qyaQSis+Rk403b1Z97um6LCuMszXvF1nEQTJ7gn6tpbSyncibdDYbvO8eyfoma1vjxc9Tdi6EaFPWBxYXPnVQ1fwK3qXc9T9AUPF04ITGysMEDAO59EunfK4nzh3UULQBwCXX+LPHBfRI/uxesfCsAHYyxfYOEuwAubT9KqMmEr1DI5m00Fq70WQ+1rVOBmymdU33+kfmaQSyMSsXjdF69frV6phNAvXVrlIF7G1ZrmhoV5bzdARDVvHT+DM6o0+r1lFG0EwgZnsKSu4NjZ2TiYOtk0wRvHVHT/vdb6t0+d/JXKoybL3pHS/Vz+N5c7utaZp8v+1Ss5Z8qY58HSzdz6O/KTP57Mlf0sUznvC22ihWa+MaSOQV3bvx8m24mVmYy05mX/oGq3unrTvAmUJOBc3zNjUuG1zjU0/1rcRDccemq/UyZO8VyPmym3E3YLNEXv2WD2vAGe7ZLBMAe7t0pEVZTho9IhCOIZOcXsVm7kqdleII9y+7K0AHo1IAwL8BS+6PaCQeUmeeKh14DZ8HMBw6ZAJihEzrmSLYeJEun7SzFkfg50Ut5Wr2KAcijVws0zIhMPQF2Tj/3xNPO3wP6xEVJvLygMahLE9ckPn5VlpikNm1APKn+7hmnOIB5ei4zgsZFFj+vIC4AcUnbH6bS9kdxgHkg5RyzpN2TpmdOAVxSs83/Q2Yc9p9nx9OyR/b4h8fWX/XW/60Jd5H3RBKggv6KtG9+OO2aeJpyPHelbY8iidnRRGLyWipBtv7iogI4Wbn2zp8Om0jVDKhrmZ6e7mDo9GhntjMTpBax4jcA5hTGaZwqhXElhp0D1BNg7Ut3GnRpGMUjPAfXwy5ZBHOPAdipeI9w3TOATvbOUbUgs5qvnwZDKpPglTJlSn71cAebpgIdDD1wqUyVyR6wJqre3YO54uw+Ira2fWJvBbC37ZaZ+q06ez7TvBuM/Kg4BwvFNVSEy1x1m+PMuRXMXkfW8HV0pFpP5kzJoid9/EalLKpqn254pQryi1dpc5uvZffElXyJ4SQe7d8j0b7dWtZNXAQjw3WW3EMdW8DOydD3ANy3SLjzJ9y2Ufvq7KMH1PYVbLLesEyCnV9B/ht1W6OIjb1wAjEjUsnKfQ1rldFGGBOKSzJ0msTQ8c1dbUJYaCqjHu3MGAd7J6D7G7/WNDaNQ9Xxsk8UJBdK3gdov6ksnOBKgRxH0WZPvgUgf0/FbLwPS+gzx/8L7vsbHWejgt2ST8vXd8WCDYCtYqUsVK3CRgDPVfSuur2xBD+rgP6hzJx4Q+x8PXwNuJ/Gp1Z8Ykbdqj7VeXRWGuggx36/zpwzpKXxW3GAqXtqv9IRNhrRqKFM3VoA+hq1rOUM/kLFavE2bRBv20bNofec+QGM/UcJ9OwygN69Tf8/4aGDCujRizmqeI/QGIb/x8sG1JdGGK7CVa3ub56+o7LQslM9DpSxdxmVe4DxrH0HzSZT1fHHNQwm0EtnwT0S6D9kAlvw3olew2YRzx27VgR2XmU+Ew/5mWiT5JNOfAb7JPlyCGB+TgGd2ejxl1dk6aWJVFWP9pmMsI0+72TnAHMF8VeiOQXyRwRyAnoqZXsYT9se+1ILL6aTnulbqcBCUyoW2E0r6b/lApcF8+yRPf6BAvsf/sIyluNtrzExKRXx5mN33pdyTz5NLTyzJ2ZGQ4mJa/HE+NUUlhDYqXpP6qjbOdM7ZxoThXGPjL+75pzfOoOTU7WyZrLc0MVSCV88BWZToj1nnhRV1QsWGwfQLwHU4+ylExzJ2u+1YHNAht4qMVyP3W2TCMNX1Bq2XX3bI/gZoZv1ErhaDdCtAGsu10UA9p/PVQB30wjmfKmWyHmdPXTvuUJl4LaO/WIHqNvaD4CZ7wZL3yzTTbtkrv2IzHccMYA+lC8+sq1LxbLQe0icPYfB/E/pSTx+u14i2EzwMjFaYxT8FP2BodO3XkumCui5krxejOsFAPXDYOh7Aew4X14+Bla+R8LtRgAX69+OtVtCXVu05B7i4ow0fcfBsoOtP2gcqqvSBKfQt93f9KWCHbPE6fQWAMB7AOraU280VrD0c9eAFTVqWaW9afbBNXGt8hPNJddRNbJfAj02AmTl6sHOUjyTzeq+VLtXZd35xvmNGefzBW+LpYCe7cZBzlrIKNT3xJLzKwD6W+rDTkY/X/COBq+YkTUmqX2Cx72rAjluHujhTkCfL1luxHRg5a6aVcb/vdwY3Vi1X75ce/98reyr0/N9vhiXFas0sc6upfevNIWNoTaOytUK9gy3Yd/dWUUnudXqzOdr3SS+tk0K6F4AehCArqK4js0S6t6u44VReq/TCAYgTIX64pUCZdI6YkZRJP/fo42amObsPqQuhMwRCOA9xrhUjklysoITFlTHRy6XqO+/n2Deu1976WzTsD/Pvjzn1CP4GbEbpQro6uXwsFWS6hbXaWJUX+Az9/I81iUwczJ0grkZS6PwbUnDWy4bdTuYepoz5bM3DUsnoM/fkyRAPWm9r2Cesj0KpBwE85nrqZADb+bIDpwP3jOuk5qelgXz7JE9/hGA+h9keuuvxttMCV6jWK09KefL+0nro9m05YEvNXc3lpi5lUiwBM+xF7IBBj1wnlUtJIfN3DqFdArqAOPbTbI40gBQB4O+cArMpEiCw3lgKse1txg8exTriDKfKMAuCnBcugtgv9NoQP3uGVlUBTzBnqy8EQDeYCJSR032eXCkVkvvXoA2y+2R65XqDhe4ACZ0jkK2owbEzxeLc+CkuMCinAPHdSzN0X9ShXBzbftltnUv2PlOmWnaLXOdx8XakysL/TniBdv3guUHr5Rqid3RtU88PGlfNvnVZGbxW/WSHK2VxM0K7Z0T2CMX8mSJ/txXiyQBpp68cUoSVPfjhB0b3C+R3p2SuHxCloYPSLB7i9qQUhAX69uppXaW12npypE1jq9R3a556GDb7IGzpO6nOxxAm+DoAJsmuw60so/8qTJyMnS1iW1nIMn3mh2+wPly3OZmv73yI2PKwnATOrMRODl7DoA1wjWTae6o+AwA+aUGssySVQOcraUf4PYPxQaGzb6449RHytzn895WkLZyBK3wtyYpDeBLkF7A/eeKmaf+sVrFcnSNDJ/57C68BirWKYDj42lKw99HzWzw3DSO0XE3vCb+Xm5l5tgUFH8kc4XYKJR8rA57zlozb04VvBPgTmBX9l5vImidp2k+g41O03oFc11NdI/brGNsAc6ntzO0BQz97GHz3gTYRvGejZ4/qUBuwLxCW0esylDUGbxYJN6BE2pqFBltEh+uuztpSHPI5K0PHgPzLpYQ3pd0ndPZdnwviNtD506quDJ0yQC+ToKw2oPN7dL9ZmxsmwHq2OA+bpelZ32yRI+HMQA6VekAcU1eA7AnOGLKMjzAXIVwmRE000O/AUAfNeYzc/cY5JJKLTyPp1wvA2nPxGzaZ7meCjqwSw1ulWT8ncxoWrbMnj2yxz8yYH9Vgv8XGcHc/44P9IepmG83c47Tntnzaffk45TjmT1lfRRIAtiTs6OMZM04Uo0Y5SwBniVAADtjFpOPe2XpYYf20xmUQic4I04rxAkMYDuYA3YCptJ9QLydu3X5eg4A6E8ClKuUmS/SZY4z6mBAi3eaJYYTpbIfOsQxfAUMPUBB3NUK8V8+JZ5zxWDTpVp6Z8ndywQ0zbk+qF7uahLTeUAWwKRcAGtHz3Gxdx+VuZZ9MtGwA6C+T6bO7Aaw75OFs0XiGi4BSy8Un4rrCtUhzNV3RNw9+7ExyVXbWgqjKPxTwd/tKkmOcJWrij9OMAfbWrpaIAkwrhSFgVcL1VQm2rdL4sOHJT60X41kgu0/SRCMPNq/S68TwMPq0f6j2r4y45zqbHqQe87Q353iuG+0H75QbmxXOV/urlul4E4HNZamfWfWSogucW3rtY/M0jrL8N4aMPNKgDINW+q/0PsyGY3Mn5sEHSnjc1bRU3219qj52DmwbhvAnBsDtXBl+ArV7wBdC9g62bLmlZ8CyKpI7k19fQRvCt3YJydAk5GzN24r/VCV986qTzUS1QGmTR94W9Hbejud8iyF72XK7Cvw/O/phoOqfyez0Us+AaB/KDMFyzQilSE2HFtzMEu+bKWazFDpznI8Ad1VB2Cv/UYBneYy3ARQmEhjn2DndgV43h7qOyDhgcM6fhijZevQSVwWaEuFQSoJHSerVg3F0oMmVbxHrvF92y5hvDd9eH8zOyCIx1EEF8IGL4zl7d6rQE4BpU/n2k9gM1skYX4uqJ6/WoZNMFPXTmvyWlzTCJsygN4JMD+LNShxfs4yPXQFcQA8AT3JETRl67hdAd9ErSYmb8gSPrMJ2sRaH0jaMRbH5zog3plpbN6v001SFoMbJKkxqP/uF6YxWQFc9sge/4hL8P/aRCEm35HU4vrUYiA3HbS3pT3Tt3ASmEzZHztS9ochnBTiKcu9lNnxj5pFJsCyn4J6vxG53W81J6WbtRK7USnRqyZGNXqpSL2tIwDe8CCd1vaLT4F9jxpyqHHLSB1AvVWiqnpvUICP4DLAMbWrYP0j9br4tf/aafFfKQf4lgB4i9X0w4MTsgvPSwD29BHETwDMj4iFKvbeY6pcX+jLlbnWgzLZsFMmGwHqLftlunGXzLYfFse5UwD2AvFeNCzdM5xjlPJ9FDflqMKdgB7nLP1ojSTvgKWDVSVvVkqKI0c48ccB6IuXaBySK6nrJab0zjE29tL7dwPUAe69WwHQG9RERkvuHWCLrQBysPEIneNoX3qGEanfAoh+NP7tau/6ldq4Wovpq/5epgcOQGQueZVJSvM3fqExqizFsxTN8S0VvlUbu9cFMFnaorprvwAQA0QZqwrAJ0On8IyCOQVa7T2vMLPnGV92nT3nOJk6xr2vo2oWjrGBwVOcZ8n5tcye+JUya86dE/jJqKly5+MJ6Mw218oAmDgBm6I2GzcAVMtjQ+FrwM8F6C9Ufqqz5NwYsI3AxeeYLwVLL/0UgP4+/jbfirvhG/XE5wbEUojfr+IzDXPxnlkHsP8Gm6H1GYbOkvtG8bX8ZGbQ6QfQvlW8+NrXsU1C3LT17sZ7kz30AoldyNPYX6rcF7Ep0xlxrlEaI9VJmNUaikEfdknoeo1ORATwnvED2Nk7D1OcSRtZAjouPXwP4f0UvpArIXwGgmDuYc63g5kziW0R76FF7aE3aitKP0dPujOAzjWgTF2DlsjWxwyoq/ObWrle1hL877LPpymSY//8IcD8WQrMPJL2TlvTfusox1fBzDdKcvH1v+UAlwXz7JE9/pGX4P95Zmb932kJXpZWSDzE5LbqtG9umNaxSccTS9r6OJCyPIgn5u8D1O//HtiprlVQH1JQTwDUkw/bdVyN42mcOyebVYZD8wxe8uR1tUSiOGkGtRx/XHxMRqOl6vlSFcAxVjUCYI/cbJDQq9nzq5USvH5aGTpBPXiN8+gV4h0u0v65V0+cB8XVtVec3fvE0XVQbJ0H1UCGl7aeo2LrzRNL1wmZAajPkKkDzOfaDshk0x6ZbsNjh0q0l+67VCEuvq5hI2ziyThK8dvtBpModxMM/U4dWDp+NwB3+laZ2njGrxRqH50jSfGLOZK4DHA/d0wiDOvo3SGLg3vVGU7ZOAA81r9H7V+DtIHt+llC3VsV6APN3wHQv9PSMB3l/BxHA7Nm6dlakgF0KtUBwjYNQVmpaWmml/6lere/clBT1zXOkQOQPTVrFAhp1mI7tSwzf75Ke+LcFPBnaOwpR8TIetU0JhOTWvGJMnUrxXIA4KljvwZbfh8g+5HmqM/nvS7Tx/9ax9dYZrfh9c1TJMfXyflybhpKzTy7xqiyn1+3Bo9frv13bhLY66dDnL38I+21s2/O18/4V6ryrdwcnF4rs9hIcFSNArhA5ybxNnyNjcQHOvLGcTWW3N0NJn7VSUA/853GqrLczvE1PwCdAjmq3b1tW0y0bc8uCZ89pO0TOrrpXDr+n5xFT+B/rR4Kt6tVEBnDeyD+uFcrS6+EmUFsML39mVI7NrAK4ngP0ROeAS/hSyUSPodN4sBRCXGTC/avyvlrp9QUaZHPjU3i4iie+0GrLBLQn3L1ytKzfok/A7DTxXH8kim5a3KaAXRthxHMZ28adbv1nqQphHM+S6VdY4mUe9yT9s0+TQcXun5h55p1gMse2eO/wxL8L2fW/zcVzKUWv0nFg4cpmkn65q+mnOPjSftTV8L6MJKcu5dIzd1NMbbxd4v5y/SIfjEoKY6iPaCavQknwnqcBMFi79ZLCrelnnZI+mGbJO+fkaSaaXAGtzJjq1ooHpwQXX3H1REucq9DwqPMRgegg5FzqcKdJXaae1wul8AVZqBXiRsg7Og5AkZ+QBxg/fbm7apoX+gkcO/G2iuWjoNiBai7LlaK/WyJ9s0nG3cD1MnWd8p4/c8y33lYPEOFYOkV4rtwSsfe2C8NnMvXE7Wxra1XZ7rELTL0alnC5iRxvQhMHaAOAGAvfZEzzOfNHPoi+7J0CuvcKotn92roigJ6588SG9hrSvB0jdN59E0A9A3GtrXxa4APwIagztS1RqNiZymcpW6yXdqostzsYZJa3RfqMEfGzWS1AKNHq9cokNPWlcDMHrMHIErfdBrA+Bq/0hK5pfAdZc0sexM46cTGhDOq0unNTotXh0akmuex5L4J8P61bizo4MafwVAW9s5Zild2XvKBgrWW66tWgMm/K3b2zUveV9U6y/ssrevPoWCu6H3zPHgtZPNebQ3gdTCClaN0WNZTn4irbh02Ch/riJsdj6VJDEvsDHChop12rxxpc2cy0Vl2VyEcwNzT+L3OoAc6fhZPMw1m8Pft2CHBnn0A9L1mTpw9bjDpGBn6lQLTShllm6VWe+k60cD20uNuiQPQQ3j/Ba9X4/14Svxg51GwbjJwXz82mL1HxNODTQI2odGrZTqjHsBzR5gKiPcKXeii9DHABjGG91IMl3F8bjjGufSkS1l6/Emvjo5qmZ1gTiZOcdzLjD87dS0E9IyLHOfM0wsPRRxPAOjPAegvY8rOA7brqZivDJ/trzICuH+ZBfPskT3++2Xr/ywjmPsTM76SKcNH/MVpr2Uw5Zp8mHSOWZILT31J28NY0nIvkbTcAbAbL2mNX6Q71cshdbkigBPQydA5b6v9R5wUlbnfPaMgn7xTo6xHR8FumZCVwIVigGqeZp0zMpWCOArhAgR1snMK1jiqdtHMnPsunRLf5TKNOrXSzrUVrLthk8yfYZ75EbF3H5fZ1v1g5fvE2gXQHwT4nysX+1ApQD1PpsHWydTHazfLBNZC30lxny/N5K0Xih8bjSB+lm8IbPtWnfbQF0dOawk+id8nDoa1hBN/6uYpZeiLl4tkkXPM509gGY/3KG1fCeiDBwDyByXSRQDfpaV4nYMGqEcozALbjPTs1B44s8AJ6Oz7ss9NcCPIUTU+f+pjU+7OfxfAaGJEOQ7GTQAB34dLX/MPAO5VAOB3AdLLFIgpHnNUfYbLFVqqZ8mdJXEGr9A33ZmJUnVWrlAgZhlcE9SYgQ6mzTxz3kaXt+kTv8HlO6p8p5c7x9ioTKeJDMfV5qhS1z75CnHWfC6zBe9l1PHLzP2L31ex3AJNZAD0ujnA65g68YbM5P0WQL9cPA2f62ti1voCDWqKPtTc9NnCZWpCo65xHE+j9WvlKqzPxQ1wdzd+o/11N9sLYOtegLe3eSPA/VtjLtNOgdxWMPNdEuzDZosz40zGG6LZS4GZQyeDprDx+inTXhnF/5rVJVZnHnVrJYpiUEYOR281if8C3q80HaI9LADde/aEuHsOa7BLjIY09II/dwIgTpOiIs0FIFNXdo7n5HuK+pElfG4WH7UBxHuw+pSdJyhCHTfq9iW1azXWrmlcqi2sWrzekNT8qI6pEdDTAPSU60Uq7ZmIpP3z0xJxD6eWgsepmflFclpWAJc9ssd/p6D+S+vYf5kpw/+VLEW+SoVdx5m+pKMuronxpOOFI2F7GkrOP4wnZu+kEkxr4hwsAyRoO8m4x2c9ysQ145lsfLRalcL0qzYgfvr312/XmsAWAGbsZh1OitUA7TJlycFrtVqGD99oMB7uF4wjnFm0Zc3TWWDvcIHYug7JbMtOmar9SSaqvpOp+s1g5ofFRlBvPyQTTbsB6kcB6sUA9TKx9RXodUvvSZkGi5+o2yrTYOsEdSf76eeMb3cYGwka2HDDoaVXbEDI2OM3TxuVMgAgca1AR9XYeyXIx4aPy9KF43qpYS3du41rHG1gwcZpAxvp36WleMaohgDk4c6NCvRMXgvQopR2pSwL03SlhuYyX2vZ2l7xGdjqCgV0jmqp2UrlSi09s/etISVN3ymAz+Uz9exdnePmvDdL7JzvppiOTJmgymXm1pcbu1iOtFWu0J/FBDWCNX3VOcrGMTUrWPvksdf053O+fA6gb4xjjKp95uRvAOrvm3hT9sqx2SCrJlNfAGhbC97KMP93VbVPdq2JbOWfmNJ5sQlyoQWtveRVT/5TzVKnaI+9dKf2+VcaxT7WAm7n34Qja96m7wHy6wDs69Qilv1zT9OPYO7fGJbetlk8LZvE37kTrPyIBAeYkrcPgM688iJl6PEb5fj/Vuhm1JTca9Qwib4LSbBzxpzGOWr5qEd1H9yIsoLEyYsggJrGM16w9CgtY69V6Dx66GI+GH0pGHyeAnr4GkciK83CeymG91b8ToMsPiSg98rS8z4w88GMqQzNZS6CmV/MALoBcp09Z6ldZ89HwdDvSMoOUHc+lpSbgD4ZkYB1VqLu8wbQowD0+J9lhLF/kD37ZY/s8U+KrSf+syTZW4/sSEV8ZUnvwmACbD3hGLMkFp75EvMPY4mZO6k4lbVkEZmZ2DTBncEST7okcQ+snAlSBPh7JlGKjCdB5nO3QUNbKDZbJKDfArCDBYdZxrxSCQYOEL9cqfav7KmzZ2nAvERV7mTpnrMnNWXN2XcUgL4LgL5JXlauk8fFX8iLih8A1vvFPlAIUD+iPXPnUJG4L1WIY6hEbAB0+9lCfD9f5juPANR/lrn2g+I+dwqrWNxDefpaOIMeorIZG5HU/WYFd5ZRl9hTpYiK5iO0CmWpXa1gT0r83BGNUo0McFxttwlqObtPZ9MZ3xnp360sXQVx3T9jbVKRHAVxvpb1BtCb12u4CEFLGTgYNkeznNVUhH+QYdyrtYzuZ38cXxuWuk59zmcJ6ExEK/lIwZ5gTfbrYr+adq8AeHtmLE1tX6tXGOe4qhXKqGnhSuB1KBi/r9fnc34jUwD02QIC+lvaUyeAW8j2Acwzx3+N297RGFQK3Ngv56gZLx20fi2g1/ubxnUOIL1Q+Zky7Dmy+HKjgGfZnq/RztJ9sRG8LeC1ujmiVmV82vX3oVNcw1f4XT8XS/HH6gxHe1f2yN0Ac1fNWmyONinAO+vA2Bt/EC/AXAGdDH2ANq2HJNR7QP93tHwNcWSNo2qMAlY9SIPZeLK6lGHnyUcdssRgo6f9AOJGdRPUKN8b1Roa5AGYB7DhpOZCXQyZ3AagZ8hL4Byu0172ehk2iyaDIIwNRJRqd6YVPu5Qhp543q+mMhxZo3OjTpUQ0McNoDMtjeNpdITT3jkYetpmSu5p5+8YeiwdnLOkQ/bLqag7X5Z8K2Qp/OdZhp49ssc/LWD/pRkNBTS/ArCvTsWCB5N+Z2PSY7mcckyMJRZeuOLWx5GlmXuJpYnrqSX6wKtY57Ky9TSDJbQM3y0psJrUw2ZJEuDv1KpqWCMjyUxu18giWApBffFOExgLmDoWs8/9V5mDXqG99dBIndq/+i+XafKa/2qVlt0dvQdloWs/1mGZaQTTbtgq49U/yeOitfL01DqZaTssC2eLZQ6M3d6fJwvDxeI8R0AvEkv3CbH2nRDn+VKZ7zqGTcE+BXQffq7nwin8jNNqdhO93ahxrclH7RLnawaoL2EtXmP/vFiSV0skdPaIxm6GB48qkEf79wEs9oi/Y6uEe3ZphGps8DAY+XYJM+nr7H7tr6s4jrGpbRsViFk2DnT+rONZVJ07T69WJzQnS+y1YOI1XwNQP9CyOsGMbJhCsQV6t5/5XjxnvlO2PJcL4Dzxmo6Muarp227mvT01q4xpC81cit/R/rXOrNfQ992o4tnXnsXjaS5DBs8gFhrKWHJeA8Nm2fwD3ShYC1l6f8/09oveBXv/NcD6Da0K6JgdGPh88XLj4V4IMM/9jYI578eyOZPSFrBJmaQLHRPV8LvSlMZe8r7+TLYYOLNO5zcuV/VaVfHTYIabG/rjO05/gZ9Bpr8CjPwnNY/hyBpZOVsX/JtpP72RG6Vt4mvfDkBnXv0RLPw/+g9J5FyOhM+dAKDnqD4iMcrcgSasFoA4TV861ao4+YBObvRaZ9ZBj05nxPDe0PcsGLlv6KROX0Q57YH3a/BCgQQB8sHLpQr29EwIZEbXVCx3tVQiI1TOY+PwkP3zTgB6twJ6cuycAfGxYYA7Plv4TCUzWeaMQ03O0h3u5i/A/IGI8xHWU0l7xlJp71QsHZi2poOW66mQvVhintWyFPn3mQ37H2YBPXtkj39aZfhXbP3fqpgmmXxHEtENqYi3MO219S05Xj6M259b45YngfjMaHzxxZXU4rNhnJCGNZEt8XRAUmAWqbEhU4Z/0mFOjjx5kaHfNqNA8Tv12keP3azJlN/r9QTJOd/AzUYD3BdPqWmMCuRwogywFH6xVEHXPZwPMD8gjo6DMtu8E0x7k0w37ZQXVT/J3dzV8rj8R7H05Ip1oAAAfhKsvAAMHcz8bJHY+vIB+AdlDgzdMZAn8wxt6TkmvivV4r1UoYDOXj6T4Rgmk3jYoZa18dEmTZijg1icnu6q3gfDO5drgKJvr0SwQl07lRWGuneoGI499WDvLgD+HomwxI7bwmDo7J1zDp2iNG/9txLu3Q5w+l6tU1m2dhL4VAT3LYD7a1V128oBtBUrlcET0I0N6neqAFdnNQDv1JG/0l65j6Nep1fomBnZLwVyVJ3bCn+r3u++xjU6uuZiNjrZcakZS1NR3Kll6uHOfHSW8OfVEOZ9VbrP5v5W5vLf10U/95eH/osK5DjrzlhWvj6W3Fn+5+aC/ffpk2/IxJHXtHzOFoG3+TuZyX9H++/8PWfxujkax4oCWfxcwftG1KdJa2DbtV+JhclsYPYcS2MJfr4Qr+3UKgVzf8sG3PY1NjY/6ojaAm1h69fhexvE17FDfJ27sHZKEEDOCNzg2WM6UhYaPiERCiCxwTQMvUnZeOJJj7oZLuG6+bpbAV2zCOhuyHFLvCfD1ypMP/1alUSxIQjha7JyP1ZQy+2F6s8QBJgT6ENX2EcHmPMz8KDZGMrQJU4Z+kAGyM+ZuNPJa9pHV6c4jqepO1zG7lWV7Q8A6FS3A9BdTyTtJqBPRsQ3M5sOzp9PhV0nJR5eLhL/X7Ml9+yRPf5pAvvf7q3/uemtL65NRb2HE775tiXn1MjSwsvxJftTT3z6biw2di0VezIssUe92mOMP+iWuGaug9XQo5onxHuvXOLq1ClukSpf9hIBjpERACjAPTLCMJZqCVyvkQCZDnvrCupFehnm9wH0nDN3DeSI52yO2MHQ59sPyPQZo16fbt4rzyo3yoPSdTLWsEvsg6Uy03VSLL05Ct6OoSKxE+QB5tPNe8TGHnvvcbFTET9Uokzdy8rArWacoM/gNTerm93Soy4TEcsxNvrX48ScUPvXAolgcxECSwv1H9Rs9FDPboDOT2CKP6tqPQLWTutRAnqoa5sCOsfWgu3r8f0N6hIXaN1kjGc6N6lZCtm1DeBnK1+pc9YLVWtkrugDU7LWMTOTHU7VOJXenDW3gf1qhnnOm8r6qYInwJpUtU+xMfhaGbe96G0NWfE1fq7s3VnxkaasMQ6VwL2gzPwddZNj8trMybeNrWvxsow4LwPuee+qaG7i8F+rKY2Vueucb682eeZzhe/pc5LdTx1/TaaOYuEx/H38bT+qon2uYJkK32by3pFJfJ89cm4IZvAzGKHK/rir8QcdX+PfwkJGD6BnFYNz75bSleJq+F5bFc7qrwyg42/uqP5SRXHOhvXibdsmntafFdDpsR6ii+EA1tAJCZ+ntzo2aCyxj5pxtSQ2b7Q75v879Zyxwd0GcF/0a797iWNm2NzREMkkAtYZgL/VCPZdriX1IBez0s/n61gbhXPBS3lado8ypIUCywygJ552ydKzXlNyB6BTAKcq9ikC+mXD0jMxqGTpKkhV7/bbf6PknnY8j6fd4760b+ZpOmRvk5hvmyQXXxNZ/DevktSyZ7jskT2yvfU/Baj/J1XM6ty6uyrhmT8fd06MLdmeepZmH8RiEzdSMTD1yON+iQLQo/fbAeqG2fCEqH3I+y3G/pXhLjerFcxVNHS5WC8DmnFeqXPoZOgEdF5nRrlz4Jgq2xmnyvs4ug+KC0DMLHN7F8NVDqvQbbJ5v0y3HZXHlZvkSdUmsXSBgYORT3ccEVt/nrjOFWlP3d57QiYad+jomqM/R/vnTpblhwHqF8oV0GlFSwc7BXSyNZqAcNQILCwGVr54MQcLJ+r+o6Z8O3AI4H1Awn371Uuco1Lelo0SpHd49y5jP8qxNKrZOR/d8oOyVVqSkkmGeoxwzkvFOgCZfWh6lnsav1PQsxQu03lxslMNNaEZCy499SxJf6Hfs2ITYC0GqNZ9CeAEgJcBGEvfVgtYJxg6Q1RY2taxtdMsWdP57T2dB+fYGp+XQjiW3endzjS1yeNvqukLy/gUrM1quf19TVGjcG7y6K80QnW+kE5z76khDvvpltKPtXzOnjhFdVPHfwMm/i6Ad7Wq8lkxsJRQALdagX3s4F+qOQ7L6+yPW1l2B0N3n/lB5stWi7fxW61SaIWi6nN8nz9jFX6vdcrSF05/IW4VwW0BoH+l/XM3Nlbejp3i79iLTRU2W7Rk7T0kgf4j6osQAdiq2PGWEWuSqWt4EH0WHneBKV+QNJhziuVwAHqcJXKweHU4pBkSgXy0WRXwUbxfwmDqGiR0qUSNinQMkmV3ADpH1jiuRkFc/G6jLKlDXJvEseml7auOqlGTMgPwnr5mSu8E96krZk1eyqwrAPZrkmbp3XYvo3J/lEo7n0fS7glrOmC9LjFvsSxFvsDn9j9my+3ZI3tkj7/dWzeGNEkGvSx+k4r6cpN+x2DSOzeecEz4EranCbB1WXx5TWLPzkvkQa+EboPBsGwNMEw8NtGpCbCb+F0w39EGid6gWUypBq5o6ApOfN6hXPFybOyycYajEI72rG7c7uw5oozcOZiv5XhnX44sdB9TQLcBmAnO0+1g3u3HZKr9uDyp3SnP6/fIXHeOzHZhdR6X+W6wcQC4c6hAZtv3y4vaTXqb63y5uC9WKDv3Xsbrul4vwRs1EqNo6X6rCqR0jI3Ja1fLJDTMhK4TsgjWpb71FFqBofu7duqcs79rB1ghQL1tK4B6lwS6dwLgNwKUfsio2TeKDyzVzR5v53bxNK0H6P+svXYCOEGLMaQcx2J/3F65GiAHQKXZC5iqrWyFmS+nOK55nXga1iqjtZ/+QnvNtIJlVCp72PaSt3Wue6H8Iw1TWdDRtWUqSpvL4zz5a5m41N+qLSxH3my4blG/9ndxH+PVbgW4O8meT7ypc/Hzhe+rkQyrAiyrW/LfUFMaKucZ3erEpoKiN4ayTOH740dfl+nc91QQ92rUzAIwt59eq6r2F4f+Ws1pPI1faWneWv6ZLJBp16/D86xW8xhn7ZfaP6dv+0LVWpkv/xxs/Wt1hXOCkbvqfwAj36yA7jmzAX/zTdgw7cb/h6Nq+8zq2p8B9GMSvcRphUJZvFEuiwRzaj0A2myxpADkyRdmpZiEhku+hxkuRDBffNht1oMuzSCgdTGrTLQR5pSE7wLjeIskdLFAwtiwkplHRozCfRGfAdrKLj3E5+FxhwH0l+d1zlwV7tpLP69sPTFlQDw5RZX7dbDzWwrkKQfL7U8B5k9TsvA0AkC3p73TDyW0UC+L/g2SCP8V2Pm/zc6fZ4/skT3+n9j6n0li8S9lMbQuGfZUJXz20aRr1rG0MBaLW5+kErP3JDF9S+IvLylTD91qBDDWqWJd/dtZsmTy2h0D6uEbhoWHrhsjGVWxD+eL90KxsWQ9V6gld89QPtj4SVkAqHP+nMBOf3fXYKHYunAb++AA9/mu42DjxwDieTIJYH9UvV3Gmw7IZBuB/qh6ult7jonjbK7Y+07KOFj6VMsB7asTyN2XygHmdWDnZzJ99DN43U0mMY7zw9fKdQW1/3pcASEMpufrBvsDQw8AyL1tBOY9AHSAc4cpwdNylKVjZZBg5O4Wgs16BXmCvy/Tcw90bFJWyt65znWzj9z0g9jA0DnuxZly9pPd7KtXrlSWHmz9VnxNYOOcT6//Rh9HVzZ3/edq3GIvfUfL6Nait9VFjr12pqFNnXhdZvPekLnc1zR9zV7KuXIT3KJqcwX0twHsb6lYzcaglvJPAMpvamgLn8OqjnDL1HhmLg8svfhd7YMzFU5Fe3iN3JwwB30y712ZLlimfXCCM+fJ54o/kYX69RouMwkGP5f/jlYc7KXLFcRtlV8YEK9eoz7uHFNbqF6rfxeOqM2Xr9INgefM92Dy6/H3/VFnzhdOf6Xg7mncgM0UQJypaJ27VRgX6DkowcHjmoSm6WoM3eGI5R3qJdrNe/R+iwrhki/OAswzgP601+hBWGl62K2aEQYWEdTDI/XK0NkS8jLFj5MZ5/KUmVMMF8LPoEiO5Xiq2xfv1kuclq8P8Fw6h95twlk0oCUjjuPMOZm5svFMmhr75o7HknI+JpBz/jyFFcNypV0vn6b9lj6J+Q9KMv6eyFJWDJc9skf2+L8F9Vcuc38sEgdTj76TWvQfTgZdF5Me6yxYeiRhfZZamrsviZlRWZq+KUtjF83cLtPTrtfqonI8fseULOOqIm806naW0sGIuQI0jzkHgD1fqKI474USgHeRuMHMnb3HVNlua98jto4D2hd3DRYYUO8+omA903ZIJlsPylxPvkx1nJSXzYflZcNesPSTWEfVRY7WsHY812zbfpljOR6A7qK5DEDde6VKwndaJXqvAwwdwH6rTjcgNANhClvkyikVUrEXq9ahYHr+nv1qJRrs3QOwNnPmnrad4myh7egWVbu/ivNUNXvbFgV4GqD4Cfitm3RW3dP8PW4znuT0YnfUrtXgFjuuW8vAzplmVm3EYk6AIANXAur9/qXOnTsAfnRUo7Ma/dM5TsYUM1q/cnxsofRdAPMy7W1PU7CWY4xk2Ptmr3u+2KSe2Yo+1Hx0e/Hb2hunUM7OufCK5ZqWZqPdK+fWC41intGrlvzfqEjOdfpz/Hz29tdov5/Cvdm8t03QSuEH2gd3n1mny8o+ePkXYOPmtbJqwJx0mtrYyiiC+9xsYAD+/JtwHG3h9BoA/Wo1kbFVfKbqdmaeu8/8KI7673VEbQEM3QHG7j6zSUOCPO3YaGWU7oG+IxIYPAlAPyExuvxRE0F3OGzako8zYjgq25/3SWp8WNIvKfIEU3/abXLLn/ZppsHSs7OSeDZoAP1mnfbUFcy5IR3MxXs414jh2EPn+BpWhOz8jpk/V5c4bhYfmbJ7nPkIqqY/q8w8NX1VUrPXjKqdjnCOjAiOoM5Su/U+LV8TqYXHgbRrfFyC8+cl6s2XpdiqTKn9X2U24lkwzx7ZI3v8X4D9fzTimsV/oyw9HtyaDjr7kj77eNI1HUjYxxLxuUcA81HROfWXV3HSG9RQC02qGmkw+ebXqpXNqLIdYEmQD7FUSZ9sLO+VCvHQUOZiiQI6Fe2uoQJ1k3PhhLnQc1js3WDkHftk5sw2mWndI66zeapUn+89qfPnEy0HZQIM3dJXJDMA9nGw8BcNe/B1vli6j2Md0zl0x0CuzLJc3wP2P1yipXb20Km0jz3sxWvvlMhtvM7bDbJEd6+RKk2WixLQ+49IGCftCICBvdno4GEJUhAH8AiyxN6xSxwA9IX6DRLs3CHh/r3iVRX2Rh21ctR/p6Du79krbgJ720ZZ4JgWe+Y1X6kQjB7tnEsnuNtOfSLWUx9qaZ3jWzRdUevXxjUa3MK+trP2Cx1r8zZ/q19znEzT1U6Bcee/LraC101pHQx4Bkx79uQbat/KcvzE0V9nzGI+NL7t+YxTfUvL8Zxlp/refmqZGWdTc5sV2hO3M1KVxjG4L93j2ApgzCutazWjvW6t9tGn897TUv1M3ltacuf4Gcvxs/jefBl+Ny6OrJXR2W65CvG4QWEpncK/hSqwdQC6o2Yt7rtSNzn2qjVactexPVy6GhjMshmP+V6cYOjOM1vEjY2Vq3kTNlZbDVvvP2xK7mePSeRigdr7auoZmTfnzbF5Sz7t0Z55auKipOmvoAy925TfOU7GETaq0ScuS+xBl8Tud2h7yTOYp7bG9HNn6T14ucTE89KrYKRaAXzxdp2OQ1IYx8UKENm6lvqf9WDzMIiNxAVJg52nZq8b8RvNYyiAs95RcE/hesr+MJW2P46lnWP2tH/+lkR8VZKIrgeY/0VmSuWPsrPn2SN7ZI//GlP/Q5HI/4ITx3+UxcC6VGChKeWZe5xwjHsStheJ+PxTic8+lMXJ27I0fl3izznO1md6jffawNabjFodbJ2XzEGPgK1HaS4DlkOFu+diGVg32PjZfHEDqF0DJ8XRe1QcuO4cLMT1E2IHy7aQXTfvkJfVP8p47Rax9ebo7DnH1CaaD8lU2xGZ7y8U69kSsfTmyljDTnlRt0MsAO+5nhyxDRTqjPo8WDsFdTPdJ8R9pUb81/A6Rpok9mgAoN7zu1Q4qvJjYHNhbDSC5/IkRHHVwDEtuQd7wdD7Dkq4dx+AfAeAY4+K5ZytAJOWreLv2C7BPnyvZTMAf6OK49xNGwDkAPgeAH8Dy/Hf6Zw2S+4OxoTWfq2iOY6WUdBmRHAfasnaxhhSGq1QgFbzmcaOznEEDIyevWlf6w8yX/qBGrrQ1pWWrPMFLK+/rrPjFL9xNIwjaKpuB9OeOPwrLXnTw50jbPP5b4CpvymuimXK9l8xZ8ayOtTm9RMAMlXvbyr7p0Usx+Lspz5VUxpPzQp1f/Nwk4FNyHQumf1Hal5DYV+kc5P+DjMFeJ3FKxWc7VWfKytn24AjbVpq11jUr/G3Wq8COZf25j/DY5brTLsNj6GhjA3M3d28SXUMzlpsiurXi7MJgN66A8D+Ey6pdN+j/fRgP1n6cYnQ6S+Teha/36Yld3WG01TBPoDqZUlPXJDUs24F9DSZMxh7kiA/e1MSYxe1tRR/NiSBG/XGAOl8gQSwQpeMXTFBnXaw/DkRvIeY3sYY4Rg3iGTq2k9vUSV9cmxINwypyQxDnxsxPfO52yLzd34vgtOS+5OEUAjnm5tORzz4oIWPSzK2XGTpz7Ol9uyRPbLH3wXU/0Bdp5aW/r0sBVekQq7SpH9+JOmasC7ZX8SW5h+n4jP3wdBHJfbyusReXJLY07M46XUqKEbAfDlrzrlyis6oJA+BuQfVQAa3AeSZruY+V6jqcydtWZl13n1YU9Q4YubE7Qs9x2W2ea9M1W+RybotMlbxozyjqr3zuCwMgJV35ch48xGxAcxtQ6cMsBPU67YD7A/oGJsFoO4YKhVbX65MtexX0ZxtCCfhm80SuNMmsccDsvikX6sL1ADQEpbWnqELRRIYygUwABQA6pHzuWB8B8DSD0ro7CHNf3c1b6e4UtoAAIAASURBVAETPCLO9j0KJP6Obapy94AlUv1OcxmKt3g90L1LS+5uBpCc+ihTYgcbrV+nTJxpZa66LzTbXEviYLBUt1NwptauAHeOe7GcvUAntfovsVn4VgGXrm7smROMZwHmsyd+o45w3BDMF1LM9rqq1ecAttPHXzffA6NfUF/319WHnT7wDnVsYwzqci3zc6zOUb1SgZdsnmV4ZfO0nKX7W9n74gWgM+LVXbNabWDp224pekc3FHZ8Tb2Ao2a1MvO5MtynAa+ZPfLab2T+1Cfaeye4u1hmZ5sBfy9v6wbtn9uqVst04UdGW1DxuZbjbVgUIfrx93TUrNORNUfjBoD5Jmyq8LfmLHrXHvzPDmIdltBQjkQuFeoYpTJzqtrJwlWcdl69FFIE8/FhST3v0bK7AjrBfOYGmPMdbFgHJT52AZfnsRmtVQtj/3kayxSr4JNldjoMckwzcqNKQhSAXi0HqFdpiZ4z7Yt0p6NgFMw8SdavzP+CJCmGUyHcNTN/bsnMny+wj66jaom0ZyoiIcesxHxZQM8e2SN7/H8qu/+RyOKfaMZyxL8/HbD3pdzTdJELLM0/SCxN35LFl1ck+vyyRJ9dkujTcxKm6v3mGZzMatTONXStWgKZpc5wV06L91K5uM9zFrxIL1lmdw7kaK45y+mWtt0A8R1i7zwkzh6y9MPqxz52+ieZqNkszyt/khc1P8tcF0D/fLlMd4CptwHgh8sA7EViJ3sHO39eu12m2o/o9fm+POMo13lMo1atA8Xiulon/tF2gPmg2m/GH/ViE4KNxxXj083+eRAbjsDACfF2g5mfN3304MAhI5ADaJB9Mwfe2bFfFho2qOKdanZ32w5xA1z8nVvA1AlQmyTQuU0ifbtNWhgBufF7VXizBzxfvlLBkMYxFLrNcK6bo1tlnyq405lNAZgJZyUfA8y/1vK0r/k7FdDN572B+5gUtMnjv1bf9fmi97VcTZHd9El6t4Opn3hTZnMAyHiuadyHwMyYU46y2cs+UhtWw7bBuqs/E1/DWnEy9KVylVhKPlQTGc64q1f7qeVqK+ur+0wCrd9oW4CbkqmTb6gQjyK6BbD8UA9A9sxXWqK3Apj5N3M2fKWbHCtY93zpp/hdVxhdAJi4RzdA61UUxz76bDE2NlVrxVK2SqwAdXvNN/i77tYQFrJzF8G8/gdZwHK1bRMf88q5eg4YY5lzuRpxSrEj20KMLqXwLcVRMY6PjRO8L+Lr86aXDtacnsw4ItLcZXZEYpxXn7iGy0EJXq/T7AH/+SIJajJgmeot6Cy4eBObwZEKFcWFAOix0QYd61ykMO4RS+29RhAHlr70jDPvQ2ZToa8Bm4rJiwbYydLZQ6fVq+dlKh2wxNJhhz0ddY+k4r4KWQx8I4nYfxKJ/ausuj17ZI/s8Xcpu/9PZowt8R9lKfRNKuyuSHvJ0scdCevj2NLM7VR8/KosPjunoBh9PCSRRzjh3euSwEizOrERvH0XSnWpih3Ld7FMXeBcZ3OViTv6T2KdEAfYuLUTANx+UGaatst04zaZa9mXUbcflrGaLfLi9EZ5fnqLPAegv2zYIzOdJ8R9oVLGtZeOx/fTUKZIFsDIZzqOyrO6HTLTDUDvL5D53nw1m7EC3C09+eK6iNd3vVHiz4YlCfZFNXMMbErDOK4a69fAcK74zgLQwdL9gwDz4RNqKRoexvWePeIDWHvatwNIditDJHAHu/eAJe7ReWjXmQ0An5/F0/ITgH2TRAcARLhkb5njXlawUyq6bSxzM2Sl9gtlw1MFTF/7VE1kWB5nL5wAbAMAsxRNUxqycZ1NB/Bacl7XOFLmm0+CnU8e+436ptNxbr5omVq9ct584tBfyTgW++nTOW/KAp5vJpdz5R9oBjvZsrd+jRl/q/wIwP6ZmtVwXp5lcUshI1Hf1c0HZ9XVaraefvPMK/8Mr2WlMY858RZA+iN1uqO5jL/5exXwsXROQZv7zLfibdsIMP5eZguXy1S+YeH8GUyioxCOpXkq3+2czQeQWyqwOcFtVgA62xsBjgHi0tm4EZui72X+NDYV7bvF27FLvJ07xdd3UCLDORIYPCHhC3kSG6mS+P0OLXmnxs6ZXAKOh00YAFdWrl7q1808+Mx1SYMxJyc4Xob3x9gViT3sFz8Z+gWmA5YrU6eqPUpVO1aE2gtsBsM0sSGY05zmbjNY+hk1qiG4xxnS8rhDwZ0qd7OZMLPn6dkbmajUR5J2PZO0Z1zSvmmsmUQ6aPGlg9bn6chCXyrqOixx/zsSD/3OHS7L0rNH9sge/29l93+hsYzJ+DJmqadDzsGUZ3o2ufAskrDcTSxNjWhq1NJzgPqzIYk9BrDjpBe61yOBW83ivXwaIF4sXrBx73ChmsYoeGM5+8Cqu4+KrfuwUaQz27x9v8y2AqjZM6/bLC+qf5Lx+q0yA2C3dByRaVy+BEg/AUt/VrNd58/pELcwWCrP6nfJZBueD+Bty5TeXzTuludn9iqos7++MFQiDrB6AjwvPVdrJfKgRzOolaXf75TojdNado8R0MHw/IMAhbMnwdSPiv/sUQn3H1awDvfu1p66t3MXAH2nuFoB7q0bta8eGDgioYHDYq9dBya5DWC/HuCzAY/5WXPSPUwMq12rzFftXeu/1d65s5p981UyUQhmXvaZhpKw1E0v86lMVrmnYZ0COoGc92ci22zOG2Ir+VBBnE5zLw/+F2XcTGBj3ji92Qnsk0dekxf7/g/tubMXT4ZO9j5f/I4BdYA0GT83DgR7d/Wnxhe+nEloa7Vfz7l1JwCewSpu9varPlbg9zV+YWxmaTZDh7niD/V+bC34mtdpRcFJr/bqrwHo3+nGhvauc8UfyQwA3aq5519LsOtnMO5vAd5rdc5cy/M1X4rtNB6LZavB34qtDrBwT9t2APom3PdrfH+d9tE9HQDz3gPaCgnh/xfgRux8jgIsle3Jx50mOVBZ+GWA6qCkpkwvO81etqrORxTMFdBZDp+9KUtg6ItPzkqIlsWXGPlbod4JBHTawNI9LnyjygA8Nw93GiU6Wq/COA1noWOcprm14hJs/TkAncr6KbwOAjlT1RbuixgDGTN7TlB3v5C0dzwFYI+kAzPWdNh2KxVzV8mS/wtZiv4HkfAfZ8vu2SN7ZI+/Y9ld/gSA/mYqHtmdjvp60n7bZNo9GUraHicSs7dliV7ULy8DEM9J/ClA/VGfRO93SeRep4SYKX2lUkfSyNBVyU7xW88RMO+DYu8kiB8AiO+V6aZdAPLdYOj7xdK2T8Ybtsrzqg3ypPwHAPsmnSOfaT0s080H5WnVZrlf+qM8r9sjL5sOiZXpagP5uI4NQU+u2AdLwNbzZbbzqDyt2QZg36WldzvuR2buvFgl7ivV4rvRIKHRFqNmBkOnYCrGqMyLRRKhsx3AwM/kLqqZew+Jv++wzqH7u3dLqG+Pmsx4u/YA0E2JnUycqvcAU7n6DigbJYtnn9zbQrvSDRqraq9apelpHEmza6l9narEKYSzAMjHC1cAxL5REJ0FQFMRPn3iDR334lw2Ve5UvDPnnKYvUxrUsszMi5d9LGMH/lJV5vbyDwHCHymgWwreV6/18cOvmXjUoo/0MdrzLqQRzAoz8169ypTU8VyMY3VVLldgZu/fVpbxfj+9Ur3Zmb3O3jtbAl6wdf+ZNdpT58ZjMucdNc0hSLPNoGlydWDe1WvF2WAAnWNoHFtjyd3K5DUydAI6bWDxN7GfBkPHxofleWfDj7jtO1lo/ElczVuxmToobgA6++e2ajxv7Q/K3L2de8TXQ0A/qpuwIO16z+fpGCXNYpIZZ7gU3rf0Uk+OnVVxWhqMnKNjqjgHsKctN43afP62JOduS2Lyhiw+7pfgjUYJXKs1IUIXOHd+SsKXWWIHyF8qMXnoN6slRpU7AD1+L+MWp1nrTboSj7GxAKCbPv01/KzbRghnzyjcbfd+F8iSpn+7YerxdGDWB0B/no6622TRt14Sof8sEv2XmWpaFtCzR/bIHv9Vhv5HEo//aTIeeTMV8+1Oh9096YB9Mu2dCSWdY4mk7QHYC0B94rpmOsefD0n8SZ/EaJEJoKRdJhXuoVdmMufyxTOcC1AHS+87AmA/pqV2G9PUmvbIWM1mGa/bogEsMy27ZbJhmzyvBKif+l7GarfJS7DwsbqduL5THpdvlCencVvLUZnrLwXjZnRqsbJxltxtZwtwWSQzHYfkYcWP8rJ5vzJzsnn31XrxjbZL8F43XmunJDhrTEC/26KhGrTxZMhGePgEAHoPgPyoAjrFcaGzAHUmq509qPPoXjByV/sOnYv2tmF1bMf3GeICQG/8TgVe7Je7OJoGZkpAnwdA82stQ3M8rfYrBW/21OdKP5PJgo+xCfgO4PqFzAKI7VSPE9DBfJ11RhXPnjWtVwnoZNw0jLEDgJ3VK2X86K8B6MZznSpy+q0zGGUu/y18z5TkacPKFDSWx2m1ShMZVbnT1KZqpemrl76jgS6+xrUZi9llytApzmPUqaPqE51Jp1qe9rBk6M7KD2U29zWZOP46gPpDcWDzEWj5XtsJLgA5f0d/y3qTnoZLagbsp40AzlaJ77WzRbERwL1e5mn9WsExth8A8j8CyH/C7RvF07rNbKaweeJEgR2s3V77vThb8FhssBTUGc4ylCMhvN8il8tkEe/DJQazPDGCuNT0iDJ0jqzRYpVATjtWHR+jMI2iNPsDSTGLHOw58fISNqldEhxpkhBA3XuxTEvvIQA7dRe0gWX6GpPZOKrJdMFFjshR2f6gTcvuzEanc1zySbsR31GIN3XJ/Dwmq83fMhsJXBc72DpFcQR077iIf5q99EA6Yh9PR109EvduBqD/hUjsX2cBPXtkj+zxdwD0wL+QeOjPJOp5JxXy7uc8egoMPQlAT7knEinHM5zw7oPZjGqwxNL4JVkaOw+mPoCTWYeEbxm1e0QV77USvFJuktSG88TVDzDvPqKqdivL7Z2HZOrMDi2zs18+Ub9NJhp2yDiA/GnFT/KwbL08O71ZnlVvVTAfq9khY/V75Gkty+oHZaorRyx9BeIYPoXLPJljfGp/rga1TDbtlodg+XPdudpjd16sFN/tdok87Afr6lPzkCRH7+51qLFMGCdmPzYfdBpzsyfbfUi8yro523xYoudOSgRgH+ijvehB8XXvE0cz5593SKh3FwAd4N+3T5xnAOZNP6jIy0Yb09pvNZiFoKZMG8BoAyCrK1rtN6rkphJ8quhTsNGv1fKVZi3sLTPIxFL0oYJ/gDPujV8aL3iA9fTx13QOnTPj7vq1MnX8DZnhqJpGoX6oYD2b91v1WR87/Guw9L8CqNNB7l2ZzgOLx+sxGeafqgucvdKI8ay5r4u72pTUPXSEq1iO58OmosZktTtZ0i82JjYzOb9RkZynarlMHf1L7dFz/txa8oH4znyjtrXsp1tOrVLHN/bPPWDoDGahIM4Gxj9Xvkq87Vs0Oc3bvk0seF3z5at1Jp0bGQI3Gbm7dSv+5ruMkUzLFnz/WxXFedp3qkiRgE5mzrHDyMViM7lwvVIS95szgjiA+MyIcWhj/5wldgrgpl/Ng981i7eRtQPoF/GeDuP9ERptE/+1GvFdrpTA1dNagXplbaxgfrNWw36W7tGJrk0V7nE6EHJsDT8/8aRNUk9pOdsnSVXUX9CNBUfnyNaNwcwdEVW5g6G7n4OdT5g++itAjzn7COiJRCwL6Nkje2SPvyug+8DQg38qkeCbqYhvRzLobksHFp4nvRZfwjUZTyw8TyUsd8HSb2lKVHLiiiToUz12QUMoljgOdr9dWToBPYATHsNZ/GC/HoClA0Bob9stltZdMtuyS6Ybt8vY6Q1YGwHsFMFtlpcA92enN8n90nXy8NQP8rz6Z3latRXXf5LnYOsvGvfLEwD786aDYOsHZKr9qOaiz/flykznUTWYme85IS/qd8pEK7537pTYsTwjLarM58gaZ+gTz/q1x8rY1PCFfDUNCZ7LVXDwdNKo5Jj4OMKmM+lHVfFOF7nAAED+7BFxtO4AEP2soB7oAasnc2/eJK4m9s9/AGh9BdBaq/7uFHo5qtYoayWgm/G1b9W/nUrulwWfyELNV2bumslop78Cc18pc8XLxcU+c8dPWu5meZ1z5tM5VKq/J3MAfALvVM7bMnXyLS3Rk4VT8MbRtimw5peH/lo918cO/hXu86aZB8fS+9HohQY0VavwmI/VdMZTzbI540y/BHs3/XQCPqsDjtOfYpPxrs64Tx75a60IcC6dbnSawsbePTYVnKN3VYN9t/6gGeme5g0A9PX6O3Iun6No/BvMAewDXdvF17VL/J07tDw/d2qlbmLYS7dj0+MEoLN3rn9fXLqaN2Oj9B1uZ0CLGVfjSCF1DAT18KVSAG2FxvhqeBD+zypEo6HL1FWdMyeA6nWqy1/1sGnqomz5tqrhdZPKHvq9biOMu1IlwavVGjAUvl4t0Rs1Eh2pUXYeY6jLaNPfAHRuJl6t5KNWjRxOcO6dxjZjwwbYp/GaLBTGjRpA15L7U+2ji2cyIf4ZnwQtz9MhR5ckwhvk94CedYrLHtkje/xXAT2Tmx77VxIL/YWEvN8k/a6ypH9hJOm1WpPumUhi4WVqaf6BLM3cApBfNiDOsvvTfi29xx93q7KYDlkxnNSit2k2A1C/XCzeIfbSD4ija5/YcCKea9khM43bZLIGDL38e3kJUH8JUH9a+ZM8qdwAVr5BHpX/iOsb5XnNdrlb/L3cLvxWntfvlrHmw/LizAEZO7NPxpv3y1QHAHa4VBYGi2S6/bDMdRxWYB9rOqDz6gvnK8V5tUEiz1hNoFc3XucDc/KNUaV8vlB8A8clMJirI2tadsfXweF8ZX3hc8ckeuGElt+Dg4fxNTYn7bsUzIPd23REjcDkbGIwyzrNMmd2N61K6efO8SxrOfvoX4MZf6TlZrrJKaCXrZCZ0s90ZItiOQrU+P0ZAPpU3vvK1hmZSvW5jrUBxKfz39O+9cTxN425C5j3FONQWVYnSy9cpqK3ObD2lwDyGQD+2MFfKfCzOqCAjvtRSEcmz/l3Zq3TpEZz1Ks/EW8De+YrdbadjN9FI5xamsN8rDayE0f/GuD+Pu63Rt3f5ss/1f44RXksq3PzEmj+QdX9Dvqxt2w2RjL4+1i5udE8+C8A5NtUf8C5ffq2z59arWze2UjQ/l7sBHSdNd+hDJ0z/64mbBCaNurmK9CzD8C+W/UP4YtFCuiL18DO6eGO/zH1EuydvzJ1SdvuG/90itJc/yd77xUbZ55leQKLRaMxD43GoDFY7MNiMRgMBo2eRk9VbVWXyaxMpVKplEtJKZfy3ntLURIlit57IxoZylOUKIpG9N57770nw/sIkhFn770fs6qxGOz2yw6mu+MDPoRIUSRFE7//ueacfrg0g8q6mPTPm2QPnStPjt582HuLYG7PW12/TJV1TFPtc6lCKdGqL+VWUtrSYReYvxOwSwJh4wvFsa5dUeorPVl0wPgkfXzXSClc41V/7t1LL71ZBuXY1x3qgWXoxnUuI/fQtXQasN4UJ0d3bKr7cl/u658B9FXHOOPfwGH+e1gsW2Ez3CWoZy5rZ3pW1JOalQVS6XPs7d4KB/fR+xVAOrpyYGvPlFhSsX2tTxOTDQPnR1c+khKoufYxDJywlhcm9q6TpNBFqb9hqN/EwONrsqbGQO9iQ5mnnnJ3pdDLTzzQRUq9MfosmmPPk1L3Ilj7ENR96dEXIxl+mMgKhbo0GXOFBHV6eSYnHOOfQjFT8AiLlS+grU+HuauIPmdeWfusqCl6wrVyvGtpHAzFMVBnh0Cbxa5wPjJkZabP11Si9NYdZRECFWOeH8wFgbL/zD113QfeOb8tw3BzBHGe5Naz+xn7rr84R6+/LfamU1xeJqAzBHmdi2NAececfcvnOBb05XnpPzNYZ1I5E/2UlNEZqBxdOp+s2Kcy0DmClTPMh4K2iNLmvvsQ75yTQmcFPRa1UybPJ6K3oY9APhZDijr0B1L8h+RzYXvZmYTdMrU+EbuD3m6HmN/MJe2VATgejFPzitqrk+ICx4eDhdRD4ljHQ3RzSbsl0Y1L+vpMD8w8pgMIHSJ43W5+NUSGZwU0r5WwltnnF6BiT3Y2kqFDz/zzi/L/56+VitS7IZe+lnm+4oU/8eiwWMEKtOkwtPD6pvTOdby29oHU/Eelj67OuCdpeIYsTlvzk965uYTNgSJho+/pSvMrxce9r+BPLm0uUsQyXc7KXN0Ll3aY7hGxYBWgE+y57L7Uly+HVFtvKUxtudCUPSGQv5KwFlNNmuQUcI/eylavHPTTnE6A5yn31/I7wK/jaXeBOR8sJHL4owTDsJmNa5BL7yUK0FfX5Vw8LMcHirlV1zjVwLJLP25wGeeHXDZtgdNh8sOKdTscjr+X31H36pr7cl/u658B9X8nNrBLll/BYd0rkarGxQpS6RMrqlGTotK7sDTWCAfB0cZDce2fYOMcaVIrvMpjqk6GqeIR9CVR0HwOVpR5diBUBZEyAW8oTcBiXiim3t3H6EtPDL+4jcG0W+hJuYiuxHPoenSBQH4V3akE8+TraEu6RkC/i/ak66gLP4nWhIvoeXpbfNz7X3ljhC1eSZWPZ4VLGMvc52iMfwzGzOc4zBQ/hqr6NXTNH0mhl0q4zDLnYrOCoiddjsDUEwzYKU6XF07Q9pOSu4pUOvdjTaWk0osiYSVVbs0PhInhk++v9G1zvElNXoTu/U1xSGP1q3t/Q8rp3AdWvVJS2Ni+dIF7vu+uYyrpgMSmal5dwlTCPlHLXJLWZ1yVcBKeTuegE9WL87JWxj7p7MM+RypZ9tTZYz2ZLV53YoCAzsNuXO4eidgqPXeeVuc+/GDQBimxdz5cjxFS5sOhG8W8hhPQeMKdwa96eRrjMdvl4DCXogzbzYpaV5S3/i2BOZWzz3cJ8CUZ7dkJWbmbitmBAf/v/mwIQ+9jJnG3TMxzuZ3X8djhTvvmgtjdqsXL/pQyMPj6qgwBMtx5b9+Qy1sEfpJmN5F4UPru6re3pNQuk+xckv90n77mXrK+psvypj/7wMztj2w/grwvDHRQ1OcEy0HMWp6IpYY0rHRkwtmvAJ0BKiqd4ckWqwRyp25cBtBEFXO5m6fNJ+tlX3x5sEw8F/RsLEPq3FT7kn6+X0uUKnsXmKpTpORu5bmRuhfyej7MmurSZIaEvdwl5Y1X1vhuf4cVAruzl1V69qpjXYni78678bILXwfnBA/MtcA53+N0aXh1bW7GZV5ocFo0bDBzVibdbX/qo7tVuvtyX+7r/7P0vhrWYltDat3DZdG8dxoX+1a0k7rlhYHlpakOLI1ynGoF7N2fYeUQi8Y3kqpm5r3uymToy+IlO1pbEAZVdgDm3t/H5GtPKbPzDvoiPQEv5IaK/etMpj9G39wXqHcnnkdH/Gl0JJxFezzBnaDeGHMOzXGXCeJ30Rh7EfVRZwjq9DJBntV6//O7osrHsoLpjhCo83AcA32uNA0LNW9gaMuDpV9pEyzTIYRXmpY4v706FcaSGBgI2saiaAG1lj5f1Yf74jpmrYiXHrvEqhYGkxrnnvl9LGbcJaD7YJGB/o7X0zxk8I1jUec5GvTFBcy/uCyqkxXqlOxOn8F08lHxNhflStCbTT2uHAgyLkmYyVDwZoySwp59dkr8zCcInOwKt0iKdyp+H6l6url/zkAloHMZncvmHKgicCe1PUVA73n4DQYCvkfr3a8xELwVQ6Gb6cBwWJLS2NSGFfxc6kFZbWM/dnZ5Y0U/w5nliT/JAJz+zWmB92Sc4l7H0/YqHpB7elz83vt819HH243Fx0fFsGaK1+j4c+X1vMcnlYx0TpB7flb20zUvz0mKmvYdW7cqGfLGbC/5Opo/+4vrnhjLpJwQda7JICXObnCcRf/JS1z4dJ8eErj9xcyHDwEGjk8lhS4+7rnBMNIB0kbfs6VGBvp7UsWflKjUwVWw84qahkvtA4BuVFHqPF3ON/fRSSmvjFRhaahMHOP0vLJWRT/XHL3b8Eby0Q1lj2CsShaws0OiseYJvT6N1PszAruS0La0CnN7y2t6eTUohpU6w52taAeKlIMDgX2F2wL0uMQvD1ViebwBK3PdTqd6xOHSTeuchvk+l0mVCZv6LuzGTYDjv7gd49yX+3Jf/1yo/6X4Rou3u+U4qYMnTpOqZVk3o1peGHEsTXc6HQz0oSo4egpkEI5ViqGCQF7+SPZzeRBOWxILTWEkFnOCMJflQ4rcC6PPb2D42TUMP79FEL+H8QxvTGcGYj4nXNbZGOzdSZfQFnsGjWHH0EIw7yRlXhNyTKDekeqB6rBTqAk7jdbEa+h+ojjJDb/xxhir9E+Rsq6mrngKdeVzqCpfkjrPhLmrENaBSjj66Emz5zOWueRe9wz2qlRS4vT50sHDWBABfW4gdLkhAnRDfggcNY9hrUyUm9fX9KwWs7wki9v4OYCU5DVS2FdgzLwpe9e6jJsE9aukyC9KJrj67Q0Z4pp6elZK7Vyenl6NCZ1/elJsYLXp16B7dUqG0wYCN5Da/hGTSYcxJ2tsO0Sdq9II7rxLnnpUFPwEKfTB4C2YiFMU+SQBXeAcvhlzBNZen3Xo89+ALu+16Av6AcPhW2WAblEiWI9gKoHL66T4ueTOyp7BHbMNY5E7xCRmToJYjpHaPio9e/Zy1769IOtzc4+PiTVsz8N1pPy3CdD544+vRrWy+x2DeZ4927nszmYzGVfEbIbnBLTvbor5Dh+EjDn0dc55KIcldbqHVAHYZEZLIGegyyQ7h+KwNz6peR6eYzMfLr0bs+jfklqXmFtOWqOfM7bptVfGi0Jfbn2Nlfb3cHZ/hIuhPlSiDKAtKM5sUA8Ci92kzjsUhT7Xsrqb3iCDntbOXBgb0mFu5JXMDPH+N4ive7xscBjo58ZQznnoj2GpWR2So4Mt+xvwjAaX3NnrnUvzvNLmEMjz2uRnMTbiwUwHvexoJ/Czq1xvPpYGy+mwXI+V2W44VUPLvDLq0s+MuYzzufR76AOHcesq0N19dPflvtzXPwvoq65xjr+Fw7rHadXFrBhVVSvauZll9ZRjeW7AuTzWTEAnQEp2tBLSwhPtuuJIgng4NPnhUBEYFz/5Yy7TF9MflJ75OKn0wWdX0PPoDLoST6Pv8WWMPPfAyGsvcYhbyA0n+Adj8MUdNEWfRGXAQdSHn0JD1FmUBxxGE0G9MfYcKgKPyJBce/J1gvpNDL56gLEPwRjPChPL14XSVBgI5PrGDBhaPsHGVp5DtWLpudSVIzvKnJltpSdmcyWpdI7FJKgbcgPkUZVJ0CZl6KhJgb02Vd5WT4qQJ7K5BGwtCiVVGSABIZwYxnDiqE+2g9US1GcIejylvfD6iridsYscl5ynSbmyp/miDM0RxNN4T/uKAH2BwDgUtgPjsWwOc4CU8GmZHGdnOE5eE/AmHxLXNwb0UMhWGYDj6Xb+M++jj4ax6cw+jIRtkZW1/sBN6A/+gd7nHlLJF6TkzoNrU9LvPiAT8ezexrvvnJXOcauTHKKS8hPUjw9AzeV1cXfbKaV0CWV5dlzK7D2+30tFgYfmeP+dd9F5AI8PHDzFPsPOeK8vQUWHFy0rdFLrvI+/8EpZY2PbV1bo2g93YC0OFYizW9x8Gh0AMu9LdcOQ7SPldh3BW5t5V4boOKhFz98fepmjUzltjUvxPO1upp89e3k8luufYqXlJVba0uEkVezszsLKcLEyyU5q3MmubHwz0Be6lP1vfv1ch+yJLw2WwtKZB0v7J1haPshKJq+t6QjmegY5qXRdUSwdYumgV03QJuVu42E5GQh9R2B/RS+/IFX/QnbSBeirYTF2ArtdJuIzYOebXrfUV4Al+n0SN8aJJqzMdGJlYeDPQLdpcuEweWHFvkkyF9wK3X25L/f1z4D56nDcKtBXrLucdl0EAb1iRTdPQJ90SB99slMG49gb3d6ZLb7opponEjOp/kxAzAnEwkdfzL6/j6n0e5h6e08G4EZf3sLgkyvoSjqLtuijaI06hs64M+h7eh19BOaelOsYeHEXU6TaJ9/50OtuEdBPoDbsJKpCjhLUj6A+8gyB/jCqQ08S0G+il6fjn3pi+H0oJnNiJEKVrV4Xyp+KmYy5I4+AXg37YBVsvcVY6s5RMqxZPbGFJ0HdxGXUwmjJ1GYLWM1HAggpcWtFHOx1qVhpeg7DZ0708pMVKs5BN3/2g+b9HemN83oZ95PZ9YyNUqZIYbPS5F1qDhORIa8XZ2XXWta2np1QYkTZBe7tRelZ8174RNw+jMb8hMnE/QTGg+IcNxj4nbKjzpGkMbsJnNul1D4es0uG4xiiff7fYzRiM6Zit8p623jMDlLPW9HjswEDBPuxuJ9I5Z+U/XNW1/OisvfIv59KOCgDemxWw733sZg9ot5nE3YI0NkAZiyKY1T3yg66moNZXp7BSOROKeuP0cdnqI9E0MEhYhu9vz2S385KfuH1RVLsx6B7Q5B+d1XJhX95WXHTy7gu1q88OGgjoBvo6z2ZckJc4rgKwmuB7KUvAM9+IPv/PNVuzvMjNf4Aphx6mX3c+V5V6pbiCFLosQT0x1huSlOA3vGOoJ4J8P43m7qQGnfyepiqa9VytQfQDiorY7NtWBmrlAl3axe3k7IVoBOsDeUp0BTHSVaBpiCGgB4jCt1Q/Rim2qfyO8CgFh+GWlbrSi+dTWcE8HRb+bHplbx+idPY+vKl1M6T9eztsDzWgJXJFlLodLhYHFyGfsrkMi2OwG7IwrLFE8v29auT7u5ddPflvtzX/yvI/9dVmP+1kuy09Gss2Y46bfqEZeNCzYp+dm5ZNe5YIqA7prvhGG2Eva8EtvZsyUS30JOYoTxJlIs6LwQLn9ju1Q/T6fcx/uoOxkiJj6bdxBCp8u6k82iPO4XmsCNoCj2ClpiT6Ei8iN5kJTK175mnuMWNp/uIRSyvsTXGnEEtqfXqoKOoCjyKEl+CethZgfnQG28MvPbFBAF9ofgx1BXP6X4Gbd07WLryYe8vh2OwRuxqlzoypX/u4Il8hnlpouSh63M5kCVKgM4GM+qPpMRJ7dlrUwgQKbCUhIsqN7B3OKl0LhezMQr30cU4hoA9Q8p04dVFTHPJ/PklKbuzreliuqf00Bn0nEK28Pz0qoHKGVln45AUdm5jtTwSvROTjwjK0btIWe9Gf8C3BMw94tvOanyAPdrZ0pWDUUI3ygT70OrLc8l7ZZBuiKA/QK/rffgdhiN+xAS93/nUI/J3bBbDH5Nzy7kCMJd6XCbjOQK1z+cbOghsgublcYE3q/i5J8fR6/+d9Oo5Y1394iT0GRfpfR5Af+BGxbQmbjfG6OPz5yyJcY+PyrQ+T/pP08flgBbdu2sCdD708IwBtyoMmZ4yOMgrgeZ8f0w94TW3G9JP19PfyUpbLufQ+xO0fQTuJno7S0EgLJ8D5RDASWyGLB+xh7WVRsJRGY+VejqENT6Bk8vudDt7cmSiHLwaRuB2avrg0nDZfUCMXKAZUIblZlvhHKmin+ti2eKwyWE1Qybc1aVJ0JQkEsxjxShJxwfA8hSBN5fjuUpl4sjgmjTptStrbTwwlybuidxjN/MgHU/Di8c7h8fkyurnymA5nKMcp7o6bc8HDd5FN0ybXObFMVi12XAY7i4vm38GunsX3X25L/f13wX5//LnPXT8DT1h/CcsEcxXLOzp7klAf+s0LLYta6dVywvDDsdcv9NOCn1ppFEpZZOSsdCTHj9hSf+8OBbawkio8sOxkBNKKt0Xo89JmT++SPcV9JNC70k+TwA/j9boE6gPOYi6oENoCDuG5uhT6Ey+jM7U6wRqD/SQamejmdG3BOwXnvL60awEjGQ9Qn3cLRQ9PIwSv0NiOjORHYGRzDDMfI6X/rm+6SN0dJs6FKDbh6plbc3R9gHWmidSErWTsmKI8yQ799EZ5hzDacgLJKB7E+hjxXzGUZsIe1m4eLsbCoJlUMtE6lL99jIp7rMy7KV5eV6G3BbocZpUKceraj94ypT34jsCurjDEURTjgrIp+lt52UC/KyserFf+kTCXoxE7cJw1G5S4TulfD0QtF6sWdkFjkNX+kkVd/usF7iPEHwHgjfT6zZIP32WwD0avh19QdswGLpdBtd4IE7sYDmgJeWArKxp3pyXzHLOKOfccbaKnSUQD/itxVDwBgLyfslR58Q1XkXr8flGzGlmE3dLZro+4zJ9/kfRTx97mFT9OH0urOwn4vaK+Q330VnZq16exdSjQ9JiMLy7vhqnelVc9Hjlj532pDee7QNrUTCmn53H4ltlIM5AoDfS4YnL7mzuo+PqyEcvOliFwFoaQUqdvhek4o3SYyd1XhBK36NoOMpj4ahOwnLDE6w0Pyegv4JrsEBZEeOJdllZGyJVzp7pI4ozG6tzHoyba8fKSKWEDzkGysTP3VL/Wpzi1MWJUBUlEMyjoM6PhK4kTknrq32m9NTZ453UurHqiYS5GOnmuRJDRYoC+UYCeWO6KHmbpLK9FXMj9kVY6S8SS1qecJfPgw8a2lG2f7W4TAtTLou6wGnT+kkP3S4ld3cP3X25L/f13wX5qirn4IelfyCQb+BhOO7ZOa3a5y6LpoaAPubUTJpkyn2mF46JNtiH62Htr4K1uxiWtk+y2sNDcTwIp8oNxmI2D8MFYJZU+uTbewTzS6TAL6An9SK66bHz0QV0JF1EW/wZNIUfRW3gAdQFHySwH0VjNCn2lBsYeOlFj1fRknARfWm3MfkxBHMlL9H7OkjUeon3PhTe34v6mPNiMMO76DPcQy97Cn1rDgwdhTD1lsPGMB+sJDVUBEf7Rxlg4pANK08q0+fLaV18M8h5ME7/OYhUuheBPkIm3ZcbkmArDJI9dCP9nZGV4wcP6Q9z73zu6WmxNeV1s4WXlyT6U83xqtkPoXpzVfatF9+wFSqvZR3CNMGOV7TYhlXD6vzJUQk14b9nEA+F7ZTp9OnEIxKoMhm1g0C8V9bF+gnSnQ/WCrjHIgjafhvR6fWN9LlH6HU9BPv+kG3oDdqKPv/1AuKhMJ5mZwV/EHNJe6AloE+wRSwdACYSD4m6X+RSffgWjJLqH4vcIm5z3L+fIdAPh2ySjzspwS6HxGRGnXYSQ/RxBkKV8Jdxfl9x+wnse+kQwMlyJ8VkhxU+29bqM65JRUP95rqs9uk/3IAlj6fVlbU0a1kY5t/ehPr9fbo9ZaPAyGl3PAXPMwsEbPYCsJWGErSj6DDgDyOB30SvM+f60YEgTFHopVGk0h9hqTYFS9wuaX8D10CexJU6Beg9yv65hKCwzeqQoojZdnWhGyvsfjhYJqrZ3pkDI8GYYb5YEIcFutUF0ZKRbuB2DStvepQUtiq2h30sdsda+nt+NBLgLbyXzodIrmLVvxKVzoqdV914Z50n4hnoEvE62Sh9fOfiKtD10zaXgbPRVfSLpokglb5XfCKUICU30N2X+3LDXED+F6t9uL+SSEa78T9j2fg7gvge2PQeTos6zmVSZ64YVQ0E85EV3ZyGgO5YXhh0Oqa43N4sQ2aW3jKYJRc9G8b6N9CTKtFyyhonrGU8wPQ7L0yne2H81W0MPb2KvuSLaE84h7aYU2iOPIYmuY+jNuQQKn33otJvH6r89qPK/xCqgo6g9dFVUd/djz3QEHuOwH4Jg2meGCK13k0HgrqQo6gKPor62EtiCcurarrq55J9bmzPFZibB6phHa6VBC1xiuvIhI2taUvjYa1Khak4RpQ5p3ax3aueAK/LD4bqPSnHzyGwlEZjpSGFFGCApK4Zc31FNRpIWap5GI7UJieKcY+Y96x5GI6Tw1QZN6DPuid75uo3VwjsV8TVjYfeplKOYDx+r5TW2ad9Km4Hgf2sTL73B/6AvoDN4v42Rkp9nD3YCbTs4z4duwODpNA77n9LwN8ivW0uv3feX4uRiB2kljcSZHmq/Ud0+P+AHv+N0hcfCNqMkTDeM98ruem8RjadfEhW1ibjfiJgb8ZU1GoJP2wTqfpNdHjYhpk4PjRspfe3HQNsI0tvM5W0H1NsTPPyhJT2B4O30+v3YJzU+Uj0TxiJP0gf4wj9X47KfAAPyM09PS4rbNwX5xkDPuToCOjm3HuwfPahr6s3fX25rM52rr7S0mBLXROHruSSei+m70NRiJTYrcXBsJVFSGCL8eM9mD95SV+dgW4tZhMgUulV8ViqTiSgp8DZ/paAni8e7uBJdlbjvLbGN6t0LreTapey+0KXWBszWJeHK2DtyIGW1Pl8biQW8mOgLlSigY3lSZKFzr7u+lJlUE5668XxAnJ9eZIMy9ma38Da8h7mhncwVKdBzyltrNhJxStA55jX97JKybG+K+P1BHSewufPa5QOGxMOl3FO4zIuNsGmS6aD9kmpnkklzW0u477c1791kK8qct1fKyDn8rrlV8t28zosGQ7CovNxmjWvV0yLFU7jQo9LPze1op3WrWgmbSuq0WUCOpYI6PaRBlgZlD0E9PbPMDRlQl/7CrqKVGiK4kmhh2Hmgzcm33hi4qUHRp9dwyAp897Es2gjiDcEHUCN/0+kyvejPuQwakOPoCaYIB5wEBW+B1Byfx/yPXehiBR4Q+xFDL70RvdTDzTHX1IgT2qdV9yG6X23xZ9Fa/x5dD25LRnp6jJSSo0ZdNDIp8+xCraROtgGq5QpYklZy4C9/gUMJbEwlSeLI5yU2z+HQvOJIFESB0NhmOIxnhMAS1ksqb0EMZcx5vmQQvdb9W/3gpagvkAwV5ESVXMIycuL4s/OPuWq9GvQvL9FsL8gCp6hz+X0UckDPybKeJSAaiDw80645uVJsYnt9t8k0+kTsXsExDxBPh65XcxbJiK3YYgA3XGfA1H2SCjKYMgWdD38Xm4G+hiBnUHb4bcVPYEEfDocDARuFiiLZ3vSPlmR4z4/r7zx++73/16APxJIBwD/dQTpTatl+J30MbfLOhuv1PHhYTblkNi9ct+fWwg9fptkOn8y4SD93/ZiOEYZupuhAwP3znlWgO1sF9LOSF9cl3FdSuraDzclM95CCt1MByXzZ29R43xw0mfdJ8j7wloSTuD2hZ0gbi0MhCn7AWyFAfS9CBTAm7gcn0OHgfxAWOl7yNsH9rIY2Cti6Y7BUsNTuNrfwdWfr7ixsRObRJT2r5bbhxRzGVLn4F4628HyYNwEAb2/HJbmTCwWJmA+J5J+rkmVE7SNBHATl9crk+XwqivgFlM0tAVRckg0VqXIgCgPx0lfveEVTHV0wBRP+BQpxbNCN9c9E1dFto5das+SqoBzQlHorkX6PNQjdOAYXXbpJ9kxrod/L2HXX8eyfa0y46JMuruh7r7c179pVW78G9gNAnJ6glgHh2E/KfSrTruBnhF1711GdZPTvDDmMsyrnLppi1M9uryyOOJcYZjP9a0CnQRDHykYUuemNlLnzR9IFfPgUKrSa/wcLRnoUwT0safXMPT4EgZSz6H30Sl0Rh9DPYG84sEOlHvvRHXAfjREHEdL/Gk0kwqvDT+BClLopd77UXBnFwq4pB59Xnrq/c/voYWA3pJ4BV2pNzEg8av3SLXfxBDBfZJ93YuToKt5BWNrFoG8koBeC9tAuZjgLPcXwdGRhaWmt7CzwipJgJmgrskOJKBHQpsTLC+biiNgyPMndeinTLqXR9AdKetVBt5Hz/ZVgkUylSl3Lh/Ppp0itc6Dcacx9uiQAF7Lfuavryp72fR346Rep1MVb/ep5BME+B1Q8TrXyzNYTDsqtq5dfqSyQ7eTej9MoNwq0+zDoZsxHrEFkwRZzj5vf7AOA6E7lH10Anzng+/QcOMP4t0+Qup8KOxHND/YhL7Q3ejx3YCWu1+R6lfc4mY5wpUODjJFH7NbYN8bsEF68X1+69H74Ct0P/xOeu8cxDKX8JNUC1ihd9xfQ8peMadRPT8tk/M9/pvRev87Uug/0b0Pw6TW+f8xFr+f/u/npI/OE++8Yy4xqhlX5aDDt+HjTdjyeWPAF+bs+/T1figDb5r3HgJ3exn3yh+Keuceu5Fd5ejtzDn3CfZhAnTTp/uk8oPoDpZBOe6jy10Zh5Xm13B1ZhLQ8xSgS6pZxyrQSQHrRwXoTi6968cVO9iZFglosbfnEIjfQp0fJ4dUPa+q0c0KW1+aAHVBhPTSOU1QWxQlZkpGzgZggxmZan9NyvyFTMib6ujnkV5vrFaG47jXbqK3tdQ+lez2lZ48OIcr4ZpoFCtaZZWOVfqI06UetbgMsyMus+qz064NwoppDxyOvwNM/+Fnxzg31N2X+/o3B3PNX8Fi+d+lB2c3rIdNdxQ2g5fTok0gZf7OZdWWuSyaHqdJNec0LZichnmHUzvldKpGncvzBPP5fixNE8zHlHK7o68Elo5cGFuyYWjJgqHuDanjVOkzLuSFYzY7BJPvvDHKASzJ59CTcAadCQT0uJNojj6OxvBjMgxXTaq8OuAwQf0EWuPOoTP5EuojT5FiP4pK/4MoerCPlDop+ajz6H12B33P76I95Top9luyg96Xdkt22KcyAzCXHQR1IammKnrybMmkQ0cZHCP1sNPny+lZy905WOrMETcva1WyeLnz2po+Pxza1XK7mQeZ8kMl8IOH32wEBqXkGwpLYYisrYlCz1T2qNXp16F7f13K6PMErQmC+Xgy+7Vfkx47x33OPTsn0J5OPoKRuP0YTzggPXQuTfOamebtZTFv4V50XyD3pbeLkue+NA+bcf+b1fiEOLLtQ8u9bwjq30npeyDoe/SSwm7zIGj7EpADtmAoYg8aCegDBPbBkK3o9FqDnoffkhrnPPT9q2tmOzAetRNtd74VFT8c8gO6HqxB6+0v6PFb9HivwTCpcq4MjEbvIgW/DV3312Eo8icZelt4dlI+l0H6GJ3eXI7frYTNxBHQE/bLEB5Hr+re8Ooax6hek4x4DU+8v78htq/qjCukrP2krG4mWJvzSZWTQtd+uCVe+dwvN368K1Dn15tyeACO1DsreRlSDBCoszq3FYTQ4SAYtuJIOnxFw1GThJWW13C2Zyh55Ax09mxnYLIi15NC148R2PkmmOunCKDD4qnO5W97+yfZPzcRhFld63gPveKJDMhpCmOxmBsKNU+782ZExSOY2PZYXOMI6A3PpaRuJCXOfXVj9ROZfOdHfXmyDMtx3oGoc/Z4Z795nnLnHjqHx8zxwaOXPs8hJ31uXHZfcFlULbBpX8Oh98SKcROWzP8gNs1upe6+3Ne/NZjr/ho22/9BqvwXyqSs7iqp8ShW5LCoa+jucpnVYwRzldO0aHEaF5ad+jnnimYKTtWIwHx5htT5ZAccY00KIHuLYeGhoeZMGBoyoK99A13lM1LoSZjPi8TMxyBMZfhi7OUd9D++jJ7EC+hKOIuuuDPoSDxL8D6D5ohTaIw8KSYyjZEnUM9KnV7fknAedWEnUBlwBOX+h1HmdxhVwSfo9VfQ/+KeOMONv/OnQ0MEprICMUZAn/kUJr1LHlbiXqWx8Z2Yy9h4wp3L7vS4xKlwHJpBt62aV9ZIoTPUeTqfS6YlnNiVBP3nUInkVH+4B0txOEEiBGaCBq+tabm3/skb2nfcI79DKt1DgMxe7GyMMsGl56STsm8tpfa0s5hMOU4guyhA6w74AWNxB2QiXMrRSfvp8aRAbzbpEPqCtxHECZSh2zASvZsgv5/U83Z6e/o3pNa5FN7pvQ6t99asgnaLuMJ1kEoeCNqGbp9N9G8OoifsJwxG7aX3tx1tdxno30l/nP/9GB0MugjwwwTptntr0ePDvfft6PX7Hi13SKE/+Ab9fusw6LcWo6GbpEfO5jU9dFjoC1Xc5NikZoJU+WDoVjpEbMZg+I/SXxejGfp7bicsPFNCWti4RkNfr8W0UxJSo0u/IlPuDHYbAZ3T1hjqljwfeZnDbjhjnlW5/v1t2ftn8Fvy/OVm21fuo1vyQ8TT3ZwfQG/jD1thKOx06LKVxWC5jqfcX8LVwSX3XLg4bW26UYkq5X45K3LDBFymKfkz9BOKQp9tUYDOg2yssutJXfPAZ3Wa9NM1xQnQ5EdDlRMmYUOszGU4jmHOZkV1z8QCmQfieKZE7jI2XYqHhhP96NBoqkiUABclMz1LbGCdI9WKn/tkE5wzdOiYJ5WuHuTPbZmAbnBZFsdcNlUVbJon8vvLv8f8+yzDrG6jGfflvv4tAF1ZR7PSL/2S/ld0ut/BJ3ynTfeEVHmRS0CumqJbQyA3rRgXbKTMnQJz7TRWNONwLo5geX4AS7O9WBprgWOY4VgJW3chTO2kzAmcHGKhrXwKdWkKFgvjSaFHCdDZHGaUgZ56Gd2JBPLY0wTxYwTv46TST6MpioAedRL14TwYdwS1oUdRT3Dnnnhz/DkC/CkZjiv3PYQir30o8T2ChtjL6Hh8C0MvvTGS7ouJDwGYzw2jJ8tIGEn58P6vRe43yqBeSxasAxViLGPvLpDJYl5bs5OSMhXHwVQSI/7zDHIjDyyRijKWxUq+9mIGh4cQPIpCZC2Kga55f1d6vDzcxatpBlLp889PS/+bFfl08nGMJp+S/XM2m2HTmeHoPVC/ugDDh+sYjtiF4XBS3DG7JUKVy9H8Zx5S4yS03sCtpLB3k1LfIj306cRDsobW679RJtk5hIVVd9u9r0gdbxP/9pGI7egP3iZl+C6C8xh9vK6AHzEUcxDd/lvRcvsrGaQbCt0o++mDQVvQxf8+ZAu6fb+nA8J6DNDH63m4nt5uLVo9/yh9dQb6cPAGOUwMBP2AfoJ+X+h2iW6dJnDz0F6X/xb63DZJVYGjWKXHTsp9jA4bPOnO0/vskqdNvyoucxytyq5xmvRL0k83592X9oUAncBsyfMmwNNBKj+IAO0v7nCyd85l98JgCcjhvrqjMpa+LxHydmZR+H4Ec/o39D2yl8Zgpf4pnE1pBPR0ATpGKwAGOlu/sjonkMM4DZdxQgG7cUriVNlNzjlYjOWuLJlMNxDMjfX0WPcK2vLHUDHM6edtMTdEVtfY+pXX1njS3Vr7WNbYuFeuLae7LFmm4heygzCf5SfOiTr6ObJUPaJD5QsF6F2fsNzPu+gc81oD5wQBnWNeF7qlYgDduNNlmCaVPqtxWeaHXGZNBRy6VPo9vim/z6LU/1R+d6t09+W+/nWr89VIVIduuwJz/UteRSOY05ODoshXTAsOgvmyi2Gum4VTOwmnehwri6zOBxSFLkBvgmOwWgxl2EmLe+f8hMeZ0ZqyVKiKEwnmEZgltTxJoJ0g5Tz2xguDT68T0M+inWDdwBPtPntR9mAPSh/8hEq/A1Ja5+n2Cp99KKeXqwnudaTcm+PPoCHmpEC95MFe5HnuQYH3IdRGn0dH0g0xoBl6eR/Drx9gLidMpo3NpIys9S/oyTgdxoa30NS+gaE1B9beEtmZt7W8pyfeNBg5GrU4WtQ475pbeMWoOlX20/nJViJVP3rLCpWZc9BJofNkNTuT8RS29p2H5Jobs71l75x92RdenMd40nGMp57B/OurkvvNsaM8HT5DKl2XflkMWQZDfiA4s1HMTzKcNhK5QybONfS2QxE70cdqmQDbRXDlsJb+YFbPGzAYuEGm40fCd6L51h9Ice8Qha9EqO4k9b8FHQ+/F9D2sNJPOEJA/0Gm4NvukEr3WYeuB2vRF7AJbVxa9/6OgL4RTbe+RK8vwZxL8/TYfON36HiwBn2+a2UIbyyWFfcu+ry3i5Vsb8D34jI3/egg2n02o9vne1m3Y2Mc7qPz6hofKtTPThLAj8tBRfP6ouSm88Cc+Lq/OitrbcYPN8UxjmFuyvGW3XQOwLEQvLnkzvDm2QVW67aSUBg5hz77ARxVCfRypPTNrXwQYJDToy3HB47SaCzXpsDZ+JSAnqGsrY1Wrkan9inqnJW5YYxAPkmPk6vJa+1SlncOV8HRVwRL60cYm97TzzkdXAnqqqJEzH0KJZiHQVcYK/vmyqQ7gb3ykUBdW6xMwmvp7+ezQzHzwQ+zH32xmBMIbUEETPQzygdKrhI52jII6B8l0lem3EdrsMIld+7zL/axnzv30bnf74R+ysZQl/kWXmOzaJ/BpvWQ8rvYwfKgq3vy3X25r3+tMFfUOZfabaY1sBsuOi2izBsI5hNOs8rgJJC7jAtOl36enuTm4NTNkSqfwYp6gmA+hKW5fjhmeuCY7pTdc+5H2/o5iSof5vZsmJozSJ2nQU1KRFUYh8XP0ZjLDsM0B6UwzN96Y/gVD61xzvkFdCSeQ1vcGTSGn0Q1QboqQFlP4z56pd9BlPscQPnDfSh9+BNKffeiisDeRKq+Luo4KgMPo9h7H/Lv70Wh72GUBZLSj7mE9uQb6H12F+MZgTKNrC1JhLGKp4hfwdyUAR09EWvq3sHUnis9f2vrBwL6M5jpSVj3OQLarAAYCey2uidym6uT4Gh+DW1+BDRZD6XsbuWVqdwgmD4HC8zVH+5LLvf8C96n9hSb13HOG396CmOJhzH95BxU6TfFGW3+6XEpQU/G7RdDGQ5YYdMYtm8dJVAyjLn0zWp7Kn6/GLHw+tf0o6NKOZwAy4DmVbY+v+/o7bbL0Fzr7S/RTwCffrSXFP82tHlvIFW/nRT2ejoU7JIS+AR9Ln0hP6KH/m3b3a/Q6vEHdNz7Rnbcm+nPzR5f0fv4gf7ua1HlLQT51rvfoPHG79F48wu031uDYfpYXPJnC1nul7P1bJfPd/L581479+y7fTdJdWA6cT99btvogLKHHnlob6+S7JZylA43l8SPfiaJM9PPikrn/rrl022YPt2VwTgLwdtIal1PCp1hbmGQE9h5hsFaGkYqPUjUPEN+qTaZgB4m/8bCOfVsyZv9ELb8QCxXxGC5+pHiFtdJQO/NgWuiSsrpSrl9RBmIY2VOwHSKBWyvAnt1P1Ym6eDaXwQ72wRzomBnDswtH6Ajha4t4eG4JAXm5SlSFWJDJU0hK/dQUe+qHCWTgO/F3HCo+eesOFacFHk6nlferGwX2/gKDk7+68qSxDV2qXNyZjv30Oc7Fahz2Z1X2PSk1PWTDpdpzsDucS6rugYOTSqWOFbV+rvV0rtbpbsv9/WvFOh/CRj+PRymv+XSHClzP9j0uaTOR5wmlY5h7jQuOhWQz8i9op3CimoUKwvDBHMus/dhaboHSwzz0SbYh+tgZ3e43mJR6OaOHJhIwRh4aKgsRdSJuiCGVHokqZOwVbgHYzLDD6Os1NNuo+/pLfSk3kR3ynV0plxDa8Il1EexCj+IMt99otqLvXbQvRMFnjtRRoBnsFcHH6O/P4TihwdQ6n8UFUEnUBtxBq2Jl9FFUO9Pu4uRtz6YzqIn1WJSSpXPoK1+AX0tAb3mDSn1dAlrMTWm0xPqExiKSJ0XxsiqmvqTLxyNz+FookNARTzs9QT2MmU/XZ8TKANxPAgnO+h0K5ncD6QvrCUFz+X1wah9mH18CpPJx8TClMNF1K/PyxAah6FMEvAnk4+IQp0Qlb1Nyu/cI+8PIljL/vkWCWnhKfGRqJ8EpD1+G8SwpY+A2v1wrcCcJ9Pb734pJfJxUv9cgu94sI4ed6CDFHOX72aB9ij9O+7ZT8QfJPW9Fk0E6Zbba6Qn3uTxR9Rd/wP6A0nVPyBV7vElqfgvUHPtt2j3/p5U+1cC/1Eu/wdslZL7UPgOOoTsRq/fRtmPn0veJxWFHgY+PbJin4jeLdUI/pjsJz8S/oPioPfsLGbpAMBtBvZ6V3E++otTMH68CXPufRmKM+XwwBun2T0gWAeRSg8UmJsL/QnwYTDnB4ktLD/ynrm9NEJR53k87e5NUPeGjRT7Ulk0lqriCehPV3vobCxTowB91e5Vpty5xM4BLfTIO+mQVbZRMZhhte5ktT5aLUlo1tZMGZLTVz6RcjrnpMvEO0Fa9TmSlDsBPNMfs3IHYP5TiJTb+XdCUxglw3Oys04HSVH0VclSDWKgL3d/xEp/vuSji2OcQL1N+TxUfMhgZztFqbv0U3wI17jMqgEObXHadD6wG7fAISls/96t0t2X+/pXWWpfHYRjw5gl/Un2ZIdVV0NPBHPSK19V5lxi5+G3FQ2pcvUoZNeclLl9ppduUueT7bCPNsLGvXPePe+tEHc4Mxu3NPFAXLrkRqsJ6Azz+ewQTL1/iIm3Xhh75YWhF3cwLPdd9D/1IKV+DR0E8u7Ht9BHEO5/7iWPPc88CfDX0RZ7HjWk2MtJpRfe+RH5t7eh8C6B3We/+LiX+x1GZcBR1IadJvV+EV0pdDhIvU4HhKt0YPDA2NuHmP4Yitkc+lxKnmKx5DE0lS+xUP4C2rp0KZ2yYxeXTLWfw6EjJT7/3gv2xjQ42tJh4VJuDcGi5pGoeDM9EZvy/EVBGrPvw/DxtrjEabN8oc28I8Eri6+vYzzxGGaenMX4o8OYSDouKWLad5cFgJOJBwnoB+j1R2QXXKbDCXbcJx+PYbvX/QLhrofrJdd8nqA3QtDtD9xK0N9JcCTVHneQFPNXUp4fDNkmE+nd3mtlKI7fV8eD7+QA0Oq9CW2k0vs5NpWUfsdDpQfeRaBv8fialPdXMnjXcmcNys7/Bt3+G6Q/X3/t92hjle75NfrCdqHl7rd0CPgWg8E/yKGC3x8fMvgwMkiHBTakmU/ejzF6eSBsh7QJxqWFcEjMdmZTj9FhYDuGgzdKwhvnu3N1gsNauATPvfSFJ0dgzvKA9bO3rKLxTrqR1Dqvr5nz/WTXnI1kTHnesBcFSxleeu08qFgeTao9nFR7sJTbzbyTnk1vR6reVhSGZV5bq0+Fs+M9XAMFMuWOeWXCXcrrC6zK++Fkpa5joPcryp2hzhCd74BzvBbO4XIs9xXC0vxBsYAtJEAXJwrYeWVt5gMdItMfYOrdfUy+uY8ZAvoCKXQN76gXJ0jpXZPPdrER0OTR6+lnTl8cA1vtEzpA8g56hpKV3ss56flwjZSLCQ4P8LlmWpW99Pmen+1g4TLMOF2mBYvLopqBVV0Hi+aRbKyISv/Tfrob6u7Lff2rg7kMwpl2OW0GHxfvmJs0XU7zos5pWFhWeuXTpMpnsMxAV4+RMv+5zN4Lx1QXwbwTjrFW2Hn1a7AG1n6GeREp81wYmj/KqhpP/2rKH4vtqrowEYu5kcoOeoaP9M9Hnt/GQNotSVPrfXyNoH0V7UmX0RJ/Tu7WhPPy2BR3Ds3xF9CZfIUUN6nulMvoJfizRWxr7FlS6EelPF8XdhylPgeRfUfpp9dEnUdd9HlUhp5APQG++9kD9L3wxvBrH4xkBGMyNwmTn0lFVb+FmpS6tvqlTC1zqXT+vTfUuSFYoCdlY2killroCbbxGZbrOTI1CaayeFjKSVXl+Ippieyev78hQSPaD/dgzPIS9cnl9ZEEUuappzBFKn0s4bCEtOjeXRGf84nEIzIRPvnoiPSe2cZ1hNe9SAH3BWwgqLPl6y7pdXN+OSvd8XjeSd8gvekxgvlE6jk5AHSLtet2eez2+hojwRvEPY7L6r3+P6CNgM5l8y6f76UN0EFqu8t3A0H6JzowENTvrEXLve/RSaq8+NQv0E7Q7vZdT7D/Es23WKH/ET10kOikgwCX5DvurUHDzT+QKt9MB5PDEsIyGrFNjG84MGbm0SEM0QGgmw4Mw7wKF8P56udkRW88eo+43M0/OSZDgzxnwDv4vMOufnkaC48PEdBviUK35t0XgxmecOckO2tRkHi28765gRQ799jNhYrtLgPdWhIhCt1WHEawp+/NJx86GATK+pqjOALLFXGi0J2dBPTBolUv91ZlD32+YzUAZUhZXePAFnU33T2K8QxnpHOQy2il5JfzpDv/fPN8iCovEtqieCzSn6fePsDk6ztyT6Tfw8KnIOhL4mRPXVMYBxWBnHfYuafOZXdec9OXxq720F/JDrqj/R1WOj/CSQpdpt1Jpbs4GY7X7CbqBepy+FDzrjwP79HvrXne4TQt6lxWVZ/Lqs7i4Bb6Pd8h3hJK6f2v3FB3X+7rX37P/C/kl9lm+z+xZP01wxw2w12nVftyxaSuI1U+Jad7/ZzTxTDnXrn0y0dXYT6ApVWY2yc6xEDGOkQigJU5G8l0F8DalQdrRx5MrZ9gZHVew0AndU5qRJUfI5nms1lBmP7gh+kMX4yTahl66YmBZxyPSqBOuoD2RwTwmJNoiDiK+jBS28GHUR1wAJV+P6HS9yeUPNhBqnw7Sr13E8SPoiXuEoH+GloZ/DFn0Rx3AQ1R51ATRu8j+hzaEy6h49EVSV4bfBOE7hf+6Hrhh7bHd9H7yh/DH6MxW/Yc6toMaCufQ1uVBkPlU6g+BmAuw5se/Ug9RUjvfKn1FZYbUuCoT4GZYM576CaCiXi4E1j0GRwDeg66jFswffKSVaz5Z2cw8fgcJlJOYIrLzSmnMJd2Btr0S7KKNs6rbFG7FBUbs1sMXXhwTNbPSBWzJ/pIJEGRwNvsuYYAvk/+DQOxN2AjqeJ9GIjYQ+/7jCjxHr+NaL+/jg4Aa8RnnUNYGOID9H7aCdrN99bJZPtg+A70Bm4mqK+jf78X3QHb0f5gIxo814vhTMmp/4aGG1+idfXtq6/+HllHf4MO/60YCN9JH2O99OpZvbfcW09qnA4WdEAZj1Ly17mfPpdyjNQ7fdz7G0i175Xs9Rk62DC4OcVtJOLHP+WjTyXRgebRYczTIYj76ov0OsO7q6Ss7xLM70gFRPuevq4EdHt5FOwVceLQZ8h+ADMpbzO7w7HZT1mMqHdHZYwY/vC6mikvUAxmrJ+DYSfYL1clwNn0nICeJVPrUnLnCfbJBiUHnV3hWPXOtwNzrXLz37tIlbtGS8VdbqX7E8H8NVRFj7DwOUaG3OazgkmVB2Dk9V1JD5xKv4/5T/6kwkNJkZMSL4jEIkcI53PfPE5ZWWNvd/qzsSIJFo7trU8T4xlHS7pYvy7Rx+GDw1JvLlb6ClYH5CrhZKDPtgCLnAwnE+/KvrxxZtllmrfQ4XyGgN7gtGlS4TCuTr0z1EWp/7XbeMZ9ua9/mUD/OWTlr+SEzr/UfGK3aT2dZvVzgnkNwXyMVLluRTvtIIg7nWqC+OKwgFxZS+tXYC4DcATz0VbYhuoF5uaecpi6CmFiIxn2bWd13pgBQ/0b6Hg/l9dzSJFwaXExJ0x6iNPv/TD1TlHpA2m30ZN6HZ1Jl9CeeE520BsjTqAm6BBBfC/KH9L9YDfKCeDlPntQ9mAXCjy3Ie/mFny6thE59FjktQvVgYfRFn8RvaT2edhu+OVtuj0xSjcfHEbf+mLoTQBBPADNqfdRG3cDjUme6EuPwHjhEyzWvoO2PgO62tfSJtDSAWSG1JXqoz8W6RAiPU2CwFJdEpbqk6WPbiY42MrCJbjF/JmeuNMvY54h/uICKfa70KVflEGv6WeXMJlKYE/Yj/GkM1h4eUWmuRlcXDZne9R2UsW8XjbKU+2x+2Q6nG1cB4N/JBhvl5W17offS696kpQvq192eBtgf3ZS9H0RBPrY/ejx+Q5Nnl8ThL8UdzdOPGu4/jtR5X30Prjk3nTrjzIp3x+yVUxoegnQA5F70OG7BU0EXx6oKz3zS5Sf/SXa7n2LFjpYNFz/ApmHf4kWn61iTtPuvZFU+1cE9C/Q4LEWg7yDziX2oI1iFcue8VxN4MNKr/8WGYrjTPeJ+P30/z4iK3a8osd2uOyWxxP+7FA3zV+jmF0S4sK+8oZMD5iy7xDYvaDP5Il3fyxVRgmsLazKcx6K85uFFLmFFPiSTLiHwVEVB1spqXU2AfrwgFS6H8x5QaTYw7BSnYSV5jdw9uQS0HngrIxgXquocx4643I296p58p3L6zMtYuzCqtzZly0Z6kttH6CveobF/DiCdiim3/liOv0hRriF9NyDXn4gQUS64hhS5rGkxCNlz1xbEiN9cslLXzWSsdQo/u2cnc4mNNYGzkZ/LTcbHdk5ga3tHZa7skmpl0jqm5NL77N02JDwmEGl5M5GOPpJJ4xzDpd5gVS6ZoTuEvF6d2g9VgTqhn8UW2dlne3nErwb7O7Lff0LgbmizNk5ymH6O9gtW2DV33SaNU9WjIsE88Uxp2Fe59TP2pyaceeKSgE527kyzB08/MbGMVOrE+3jreLXzjA39ZTB2FkAQ8sn6Bs+QFeXThB/AQ2vqvFebskjLBbGYDEvktR5BOY+BmPynR8m6IlvIv2BMgz3goDOpXaOTI09RUA/TUr7lESmNgQfQl3QAbmrBO675a54yGDfiYr7P6LywXaU39uKYs/NqPXbg+6EcxhOu0Eg9yCQ3yPF5Ctl/uHX99Gb5oXOp15oSLiF8sjrKI+6gZa0QIwVPMNMBamtuvfQVL+GpuyxDPJNvrqDWXofCwR0nkB21D8mUMTCUZMAYxGBnFSfvSpGFDrvQC++PCeDXTNPz0CXeQ/mLE/MPzmOaVKl0095CO4AuoMJYs/OiaHK4mrgCt+8I97jt5ngrgzEddxbi/obvydlTuAlqNfc/BqDkT8JhLnvzgAcifwRXQ/XYSR0GzofErwJyuwJ3+b1LdpuM9RJ4QdvlHJ53Y0/0vvfgg6fTai68gVaCewDYdsE6I30Z+6Nd/huQr3nWvk8qi//DsUn/4EOAN+h3esbUet5x3+B8mtr0PZwE9rp8229+y2aPb5Gw81vlNCY6D0SADNC6nw0crfkrTO4ucIwm3wYU/Q5j8XulpI7v56H7qYSDmLusTIox7MEPCcwEb0D86TutbyT/vYKDO9vwMiGMpyeVhAocbW2sjBYpczuQ0BPgLWSWyCkynkHvSxK/NptxeFSbte+96LvESn1XH953XLNYyy3vSeVzaqXoD5arsSnild7PSngKnpdHZbHG7E0Vo8lCfCpIXVchJWuD7K6aKH3oSmIhr4ong6rkRijg+NI2i06qD7E4qcgUuNKP1yJDI4WLwS2g1UX8BBcjICc41TFPa42bTVelVckCeh1T2XSndW6teG5TLzbW0mxr+6lc+/eOVYrVrQy8a7qhXO1j84mOFB66TaXRaUhlT5AUK9wWtXP4dDdFTtn3myRZDYuwctK21+6oe6+3Ne/iJ45ncLN5v9NJtpt+jWwaM9KYppxscxlmB9zGRYMdDsU97dp2S8XVT7Hdq69WJ7qlWl2x3QXqfN2OMaapW/OASyWnlKY2nOga8qEtvYt1BXPoClJxULhI8wXxGM+L0rUy89l9skMH4y/fYjR1w8wwir6lZdkmfc95eG1q+hIuoy2R6TU6W57dAHNsWfRFH0ajdEE+MhjqAs9jKbIo+iIPY6ehBPoiT0m/u9d0ccxkHQawynn0Z10AX0pl9H/5Br6Uq9IOX+S931zIjDxIQg9Lx6i+ckDVMZ6ojjKAxXxXujNTsF8dQbmqtKxWPEKi8WcYU3qiw4CEy886FDgL0/GSw2PYS0jZVgaCV1eMLRZD2EujoCRVCPHfLIfOQ+EzT49DfX7uwSQAOjf38LC03Okqo+KYxyXvnkfnQfB5p+ekNJ0P0+me6+Xm1fKhiJ3inqtu/Y7gvN3pMp3E9y/RP2d9WIK08spZrH7ZVr9ZzOYflLrHQ++JRW+meC+URR5+cVfofchQZcUefnFL9Di9T16An9E2cXfov42gTtoq5TnG+6sQ1fgdnTTyzU3vxRQN3iskTI7/7nX70c5EBSe/CWKzv0eLaTOu0l19/hvQhv9ufLKH8QRjisJPJQ3LGtxR2VYjlsCbI4zRqCepoMI99J5kn4yeicdNrbJah7v4/NcAM8D8AofT8lPxOyhA88pqF9egObVRahfXZKvsbkoGCYCOZfVbcXBEthiqyA1TkC3E9D570yFPCQXSrAPIKD7QksK3VQUIRPwtvJY8epfaiHF256JFe5LkxpfIQW+NFoPBxsN9ZfBPlQD+wD7KpRiiV5e5rsnDysdmXC2voO1JhXmqiQYCqMwy6mBaTcxQ4c/VU6wDFSqeU0tJwSLfGcHY4FurlBpi+gwSMreVPschpo0GNn3gC1kJTf9kWSn8wobK3hjZZLAnsvvy50fsdybB+dQmVIpYOc4riLMKL1/Jw/r/Qx0Lr0buPS+YOO5GII6r7I1uezaTKddF8VBLisOwx4ZiuXsBvajcJfg3Zf7+p++b/6XMHLgiv4/wqr+NayaHbDpvJxm1VuXYbHNpZ9T0e1w6WbFNMalnhQ7Vwb68lwflmU1rVd82tnadWm8XeJRf05UE6B35ELfnCXqXMMQJBgu5CdgLi8Gc5/CMJMZjKn3BHNSLuN8pzPQ72Hw+W0ZhuNye0/KNXQlXVKG4BIvoi3xElriL6Ap9jzB/BzqIs4Q0M+gMeYMmuKUBDVW9D1JdD86h4HUS+jnA0HCBbTHnUcnPbL3e2v0WbTFXkBnyk10pt1H9wsfDL4LxdDHWDQ/D0JJrBcKIz3R+CwY0xUZBPW3WCx/icWiZNmfZxvPyZe36ck4BCp6krZWJ4sKNBeGi0vc/Ovr0JPqMxWFQZ/tTUrQA9MpRzHJ/eBnF6HL8oH+oxfB6Cqp6iME9JMyVT5KsJvjbHRS6qxc+wIJjA/Wo/H2NwTZHdIjn0k5QVDegEZSwF1+W+nvN6L4zC/RTuq48fYaKZ8Phf4ow3BDbLHK2ecEdFbTPGneF7wFTXe/Eae3dlL7+Sd/jSY6EPQG70LlVe6J/0EUOU+pN9z5Dr2k0IdjD6D6xldoIJXeeOcbVFz8jfz7TvqYtde+RAEp9PzT/0hA3yw9fS7vcwm/7MJv0emzQcru3fTIXvDTySfExY4n39lvnisHXHJXlDv9OZr37XfJPrr6xXlR6BNJnMR2VOxjufXAKl39nO1gr2GO4M4ufOwMx4Y9lnwfWIsCYOI0tVV1biN1zjDnjHSLHLQ4YjUQ+hx/8d83c0gL+wqQErY3vCZI5oitKpfT7UO8pVEOc3eJksQnL5dA35IDY0exbHA4+ktg78wVwPLwmq4wkmAdCM0nf2hzQ6DJC5FpdYb5IoFd/TlM1tL00iePhY7T2CQe9QVBPA0GArm+8jFBPBV6grmObYbZXlgiVxMF7Oaax7A1vMJSa4Z4u/95ha1K+ujcDpAVtp8V+movHQZ2upslpT7ncFoW2B52xmVTd8GmKXHaSK3btH5Y0h3Esu4rOIz/RRIWFai7B+bcl/v6nxLm/9Sn3W5eD7vptNOqi3FZtAVO4+IAwdxAIF9WrFzpVK8aJaD/3DvvV5T6TB8453xpogOOcd45b4F9uF7W1CwckdqRLyV3MWmpfA5VCandgkQB+kxWCCYI4qNv7mL01V0Mv+C88tsYeuZBCvoG+h9fR2/KVXQnXCT4nkSDDMEdRXXwEVQGKsYyFX77UfpwDyr9D0hfvSb4ML3+sPi8txPcW1jBR5wg9X5MXs9uciUP96Hg/m4UPdhP9wEU+dD7CT2D2phrqEu4jfYXweh4HY6Gp4EoCL1FSv0OBvPSMF+biYWK11CXP4GqKF6eVOfePxSgcxymuSwO1vJoAkaYhH/MvboCVfotUunhMBVzr/YOKe8zmOKhL1Lh6gwvAn8A1O88ZBhuJJZA/eQCBqIPENCvYeHldcw9OYXBMAIyQbjl3jq03t8oQ26swNnXvclzDVoIuJ2+2/D5+H8T5dxMqpnhz+lpDFwuXXOqWhsBvP3uV0qPnIHrv5lU+waC95coOvUb1N5ch76wPSi//CXKCcJ19HYDIVvo8Wspo48SVJu9NqDiyh+lBVB86ldoubtOAlZqrn+FwlP/F/Lobr6/UVzm2KGulQ4Lpef/EV2+G2W4rpP7/HTA4IpEf+gu6aGPr1rQilMcKfXRmP1SmeDhv/G4/eJbzwNxU8nHJT5WpuBjdkivnQcLdenXBei6TE/Jnef0Nctnb5g4bY2UuLUyEdaKGDiq4+l7w1PuUfQ9iYKRDl763GAY8oLk+2DMCRAHQHvtU9ibSPX2Fki2+fJYI6x9ldC15UPfXghjVym0rXlQ1X6Eqp5+tpvzYCXQ2zlityuHDgIfZOvBQh/XXB5HjwkwlccL4JU7GrqiaBhK42AkOBtkxzxW7GDZaMZY+VhW2zicRYDOfyaFzqY0upIE2U/Xlz6Ssjwnr7FlsQzJdbwX29nlvnxR6s7RGjinCehzXXAu9sOpHeZYVcV7Xk9AN8yuQn1+2WVe5HU2FR3qR+hwTydyzXtwQtuS/iSWDevh0P69AnWNewrefbmv/4l65n+pDLuY/gPs9v8oE+0r9k0E9ZNOm9HPZdG9W+EYVCOd2PXzFgK6eLM7Gei8nrY4tKrQB0Sh2wnmDlLm9hFl39w6VKuo815lGM7YngtDUxa0tQRC9mwvSRKFPv85DvPZ4Zj+EIDxt/cx8twDQ1wGT7lMqvqCTLR3ksruiDuDtphTaIrghDW2eT2ICrZ7DTgi62iVAfy6fagNOUQqnYF/UPrpFT4EJnaMI/CX+x5A/u0fkXNzGz5c346My1uRfmkr3l7ejvQrP+IN//nKdry9vhvPruxC0oVdSL56EEVRnqhL9kFNkg9a3sRivPwd5ms+YKYwlVR6PDQlcTLItJATKv1SIz0p26piYS4Jl7656t1tzD6/CC0pR36Z16dmWIUTmMYSj2P25Q1oMxVvd3WGJwYif8LC88v096cxmczT7pew+OKSWLZ2k8Ju5fL37bUE1e/RG/ADRnlHnNR5+cXf08vbUXDudyg+91vUE+CLzvwaA9x79yaFzfasD78TYxi2aG30+Ap1135PkF+HZnrb6mtfIOvQ36Ps8tcYjD5IL/8RZed/i4pLv5eyfZsXfcw738rgXV/IDvl7/nwqLv6WDgFrFWhf+B2KTv8SZRf/QCp+DSnyTVJS73qwng4HvxNXuMHwfVIdGOVo17iD6AvdKTGvnNXOUa4M79FIBvshDEcSzAnsPMg3+/iYZKbzwNz0o0Oy9jadrOSzc8SqNv0GfV1PSWY6J6wZPt4RoxmefLeUREjbw1oaRUAnsJdFk1qPJqUeJqpc4m5zg6D75CN9dFsFqXPuSbdkyA758lgdHVIbCOTFUNdnY7HuE2arMzFZ/ByLNe/psJoDa1cBbF15sHEaX89nOQg42j9K3KmVFLSVrYF5Sp2DVbiKU5kEAx3+TKUxdMdL4IqpPHEV5smSeW4ilc6eBxbOROeyOye2Mcw5EZD+jYEVOr3Mat1Sw7bDaXSIeCt2sMv9BVghoK+M1SpAn+2Ac76HDuPKcBy0/yQlTq8odadp3ukyq2x0G1xW1RTdHS6rNkspwesuw6HbSnD/hQiA/0df3Q139+W+/scr8r/4E8hh/08Ccj5524zH4bDcdVoNcS6TKnNFv9hEIJ9w6hcMLt2cw6mddvJ6Gget8GQ7x6H+PNm+PMnKvB0OXlHjXXNSMVx6tHSXwdjBw3DZ0DVmQl/3HtrKF2Igs1iYgIXcSLG2ZJjzENzoW28Mvbwt2eQDj0mRJ10UmLcyyPmOIpUdeQoNEcpdH34StaS4OZClmlR5lf9+gvth1IQcIZVOjwEHUMVAv78Dxfd+FOe4knu7ke/5I95f2oDXp75F2rFvkHLkGyTzfew7JB7dgOD96+G3dx1CDm1GwMFNCD22Hak3jiE/8g463idigoCuas7FTAk9mefHQ/2ZVF55MmYzg6AtiJPENV5VM+YFKL3zgmBMPj5DavsKtB+9YM1nm1FPiUDlffOpx+cI+negeXsNGlLycwTzEYLYRMoZKbdPPmLDmdNiD9vhu1mMXqqv/EH2vXkYrZMgzcEm9bd43/srNN5Zh+yjv0CN53pR2azW2XSm5S7B3OMLNHl8TX/+RlzlKi5/IR7tnQR8Vs3pe/4OOcd/jfaAHWj0XEtw/g2K6VDAA3Qj0TvRdO9bOhj8USbuG29/hfYH36ON1H2T5zrJWGeFXnTmN6i++Q1B/Uu0e7OhzBa00wGi7OIX6A3aRoePLRiL3CUe88ORuzFIir2foD4aTkAP3USv2ymDcuP8tUk8Ji2D0eh9osonHikDc6zU2XSGjWZmkg5JyV318iKmn56G/qOnJLHx+hrH05rz/WGvipO+Oit0awUduKofKd+jQgI9KXVbdZIY/Rhy2SI2ToJ3uITt6PiEpUGC4gSp8+F6LDZ+xmxlJhZqP2Gu8h0WSJmrm/OhbsqTyo267gP0zR9hbskUH3dba6Y4uYkBTOMbLDW9wlLzazosvICj4TmW659hqe4JlmSo7bVsSZjr0mClt+XqgK31A2x0KLC1Z8HS+BaG6mfQs7tcWbLssqvzwqHKC5N1N/aBt6xGqjo6P2KprxjL9LkvDVdhebQezqlWOGc7Cep9yk46e7xrVsH+s1I3zdE973SaF0mtq0StO+2aPpddW8YleKdN4y0Dc8umL/9cghe1/nMZ/i/ccHdf7ut/GMjxN7JjurT0Cyzb12PJfFim2XkAjlW5SVPhNC50uQwLrMy51O5wahjmStCKlNl535zzzcXatQdLUxyJ2kIKplFyzhno3Dc3d+bLipq2IVMc1rQ1dFc8hUrUeayEVExm+GKU98xfeKL/6S2ltE7qvDvlijx2MtQTVtfUonjo7Z8CnZR4yGFR5bVhxwnkh1FJUJfQlvs7UXx3OwF8O0rvbEO+x2Z8vrWFHrfS4zZkX92EDxfW48Xxr5F88I9IpDv64BqE7P8Wt7d+hfPf/Q5H1/wjzqz/And/2oDQk7vw/PYplCf7Y7joLRabcqGuTcc8AZ13iw2kkNjhbj4nHHpSTObyWDExMeUHwUp/nntzA9NpFwjcHuIYZy8KkrW0MYL1KHu4v+Td9KtYfHUJcy8u0+uPi1KfeXYeE0mHpW88n3ZOMYTx34La61+ijFR43Y2v0HZ3rSScdRIoq67+UfrVDNRqj+/QcHcDQfsPUvrmvjq7uNVd/R2B/48yNd9Ah4DKC7+WPfJu/83I2P9f8fan/4r62+vkdUVnfoXaG1+imSfhQ7cRuL9FPX1M7nv3B24ilb9GVtNavNaLkQx/7KKzv0XljbUoPPNbgT2XzdvvrKUDyNfo8ftBDiEcLjMcvh2DkXswHHdE3t9A8Ga5JcSFDgzceuBM9wEC+mAEfS1SuHd+iJT7blHp/fS2nJs+xUB/eV567FMpJ6DNuAkVH47e3ZC1QN49V/bRQ2GvjpceuoONf6oeSX69tZx764mkzv3p8BUuJXKZHmcA9+QTFCvoZ7sehp5KOsgVYK7mE6ZJnU+UvcdIcQYG8l9hOD8N459TMZWfivnS51DTwVVX9VwSBPWVz8SzwMh3VZoods42txC47ayoCe7LpKqXGPyt6XC0vMMSQXyJDxMdH2GnQ4GlKUPK7mwyw+5xfHM1SPM5ErqiWFlx4x11M1cD6PO20b919BRgqb8EjoEyZQJ/rJmgvhqrutivQF1NUCegKwNyXHpnoC/Qveike9lpUilT8DZZbZMSvNOmD5AS/Iplg6y32o3/WdIYZWjuT3B3D865L/f1/xPI/51iEsG/dI6/xbKNTtfmvRyf6DRrouiX9vWKabHCZVzschoWSJXP8xAcl9ll3/xnkK8wxGWyndfU+O5V1tQmlSE4x0gD7EN1Umq39pTA0vmZgP4J+vp34omulmG4ZAXmOVxmDyRVzjD3QP/ja6LIO/5v9t4zOOpzS/f9cuqemTl79uy9nchgMhhMsME2YJuMEJKQyDmIaHLOUTkgCYkoEUWOAoQQCOWcc84559hK3c9Za/0b21N169a9U/fDmRl11VvdLQkl1P/f+6x3ree5sh1xTltEkcdd2SVNa/F0H3tpO8LtN5Hy3iihLKE2xgi3XUfqfAMiCeych873YdZraa1GiMVKBJouk9E1P1LoH48vhNdxA3gT3N8f1sPLnXPwZPss3N80Hc6rp+La2pm4vMUI55brYMfcn7D8pwmYP24MdMaPxeKpk3BsuR7un/gN/s4WSHpzB2XhHmiIfUsX7nuoootqFdtyfnRC5Ts7cfRqJMXEIGlklU4KsN7DgkC9h9ZuiUxtfW+K2pfHUfbgALIur5fSe80TAvqDnTKulnlpPTLsliObgFZyZytyrq6Vrnge6Uq0NBQ4e2/9DoF7CbbHZksQSrIJgfWsnsA69sw8eO8lBW1Nv4O9PyOG1DmbvXBpPmzfFPFgj6GNQOzJWQjeM1mgzeo5YP8MPFgySmAcd3Y+vLZ/J6V47oDPtCEYn5uHEBln00Ou/RJE0saCz+k5YpVH3VLN9PBx+4/w2TsDXjumIe7MfOTaGdH3NAMRR2aJfSwb32TasGXtCmTTpiX94hqkWy5EhqW+BMkUX1kpJf3cK+sJ7MuQbU/LaZWkyhU7s0f9EuRfWYU0dsi7slrMZqrp91Z1f4d43Vc92oNS+j1XP90nEwXNXlYyosa2rx2hV9ERcg1dUXflTL3JlxR7EDv6XRHP/RZfJ7SH3pbxQxUp5E6CIo+i8TFSfZIfKqO9UBTigUzPh0h6dRMJbi6Ie3YV4XetEelqiUy3Syh8ewVF7o4oeeuIMs9LqHh/jTZ+yvFS1fsrYp5U43VZLF25vM5Z6O3sXxD1EO0xj0hh033UfVoPoYp8IJBuDL6DelLl3K9R7+8s2ehcdpfSu88VpTku6JZ0xbfGPIeKm/JSaDOS7otO2pB05Yahu/BTTjqHtqSJvzvHq6rZe15K70U8ykaLwN5IYG+qELCrm6uUEnxrdTFaa+PRXveG1iW6fhwjQbCuu7tVTxS79OBwN7w0zv1VW47vgXrPref2/8MZ+SeQ/+NPIJ/GZjHq9sZdBHI7eqE+7W6pClQ3VyarGyqL1XXltd11Za3ddUUdXbXFXV01BWplPE3xZldWmnS0dxRqx9M+NcAJzOnClx4AVSoHr3Camgeaol6iMYzVyl2l1M6K1sMBpa+VwJVc7mS/e0TOzJOddyHh8jbEErgjbNYh3IqUN60QOR9fS3BeLSvATDlDD7FaS6p8vVJ2l4x0Y8Re3IRo+/WIsl+LCNvV9DlW0eegZUmQN18OP1LsHwnsngfn4/XuuQT2eXDdvgDPTA/g0qEdosrnjRmOn0cMx4/DhuHXb0ZhJq2V0ybD/rfViHhwGYnu95EX4IYqPkIIfyZBLgz1et/LpJocFaD7XZMmuDp3M+mebvhoR+r8KErZ8YwA3fDquFjAVj/aj7KHR5DluEaiUzmMpZTAnXvVmCC2GhmcOEZqPe/qJhRe2yDd3bmX10rTWujhGfDZTir9yBxEEXC5dJ5AII84QiA314ffvukIPDSPwK2DMFLicaSi400M5d+FHpgmM+Ri+HKEoEwr/Aj9ezN9eGyeBPdN3yHGxAB+u36gr/G9KHt2l0sy1aF/8wvizy9EPn0f/PWieSbdylCa4JLPz0fIgen4sPMXvDaeRF9TT87NY47PEHUff2auBLnw2Fr+xSUE9OVIInhn0PebaW2A2FMzkUcbgAxrQzmOyGY/etvFpMjXSuAMZ6RzMhzfp1rMl7E9PlfnhrlSPmO/vg5lt7bKUUX5/V2odzsuAS2tvnZSMekMc0ZnJJe4CaIhzmgNvIY2Aiqr8kZPG7T6EeCDXWTOu53AyBGonfnspxCGqnh/lER8RH6QO1II5l5Op3Hv5C7cOr4dz8324v3FE4i8Y4XMZ7YoeHUBJW/s6W/dERXvnFDubi/NnxUel+lv5ZKitLWJa5ycxovDVpr4HJ02GC0h9DjIWXlb8C1R9XKGHnoPDQT3BmmYu6U0ywXTBiSUZ9Efk5p/STB/KwlvnWleisFMDs/LhykGOOWfFHo6NBytWqONV63NF8MZfAK7dMCXik2sRs7Vy7s0LRWtmraqSoJ6Kin2QFHr7TVX1B0c7lJ/AJ31G8BwF6e59sHaoBc5Y++5Kvfcem7/cWWuLa/TTrm9fTg6235ER6shGORtDZbq1jpXTVOlL5fWu5sqi7sbKuoVkJd0dNcWqdU1+eo/n5VLaZ1hLuYx7M+eKOlpnQWxdLGLIpiHQ5XFMPdHqySovUNL/Fs0R79GQ9gT1HNqGYdS+LoQ0C+hnC5sJS8sJAQl5+FpZN45jNSbe5DssgtJLruReG0HYh03I4rUNzfAhTKMLVbTPXevkzq/YIxggnmwxSqxeuX7EPqYKIJ7vJMx4hw3IM5hLaJsViDEbDECzy2itUTO0v1OLyalvhCeRxbg3QGC+kEDBLheQpjnR5zbvRuzRo/GhAED8P2QwZg8ZCimjhiGud+OxtIfJ+LECn34utgg5d0T5Pq/QVnoS9SGPUa13y1SYg5iz8lWnQz1Oq+LaAu8gsa3Zqh9dU7A3vTeCoW3NhPQt6CSYFP9aBfKb/Pjvchx3oKS29tJoe9A7ZO9yBOIrxPHNy5Lc3ALq1nu/C5y2UzqdQMSLBbDZ/fPpKBnksqeguijMwicsxC6fyoiT8xFktUyAvMkBB+cjujT8xB3aq4YvsQRqMNI1QeQcvffOQlBe35CJP3biKOzEXroVwQd+BVepNAjT+sh7PhceBiPo/dNJ5jPQ+zpWeLlzmNz3K3OzW18Hp9CQI47py/e8eH0eTx3/Yznaycg5txCiUVNtjBAElcISMFzxz2HueQ5LZUxtRTrxTJjn2Gug+hj05FpoStldz5myCJ1zlnu7KTH1YlMGyMp1edfXCpxrLw4a73iznaU0GaH3fNKGeh3fkPl44No9DCRHPQ2HwcCuiUB3QWdpM7ZyY9h3hzogrbwe9Ko1uhFH+N3GS0B3GDmivb4V+jICpDqU2NmNKoSglEc/hHZ/q8Qed8Bz0334ObBDbi0ew0cd63F1SM78cTeAsGuDkh/aoPiVzYoc7+A8tc8xXEeZa8tUf3eEbU+19AQeAv1gTcVa1dfLqM7KZ3v2kS1Rv5+OCaVFDevJlbpodzlflv+LSt26XqnjbKU8CMeSUWhI8ENHclcbvdAN5vLcJd7bqCSwFYYRVCPg6aMgF5JQK/KhLoqSxuvmqssdpKTEnyB4vvOYG/Wnq23VHRpWlmtV9bSfbGmrYZ94COhqvMioD9Xt9c5/25K09U0TcZg/+iG74F6z63n9h8ss/+LnGdx04qq/he0Na5Cq1i43tI0Vr3rbqyIVjdU5KvrK6q760pbu2qLOrpritTd1YX04i6QGXM1d7FrXeC6BOakzEt5zpxAnh+DzrxIdOSEKaqc41AzSJmneUskanO8O5pjXqJJbF1dUet/S1Qsl9or2AmOgf7KEoV8fv70PLIenkQ6Q/3GXqWr3Xk3Eq7tRCyp9RinrYgi9R3psBnhdsYE801yH07wZtCHEszDbUiN261DjD1B7pIxkkjNxjutE6CHEtBDTBYjlNR5kMkyBehyjm4Ij8NG8L98BlnxybjtdAO6P03B+AGDMGnoMAL6UHw/eDA9H4gZ34zEsp8mYq/BHLjbn0LCa1fkBLxFfuAL1Ea8QDVtWMpoo1IXcIMu1oojWJ23k4wqtXywQc3L06h8ekRCQUpcd6PoxmaC9zZS43vl/JfT1fII6IU3thCIthLgt4vVac4lAuaFxQRPI2ReJLVOAE2zImV8dSOyHFaQeqVNzKn54ujGo2OhdB9NQA/e9zOCuNnNdCHCj+vgw7bJ9HE6SDbRw0c+3z40GxGn9RFCyt7TeDwCd04mxf6LKPmgvVMQuH8afcxMgrkOos7o4s2GCfDfMxWJBOIIUvKhpNDTbJYg+pyBGOCkW+oRzHWQaLlYola5u953/wy8Wv8dos8aSBd7gokuUqwWI43UeLLZfHGe4zx09mrnvHXuok85P0ca+thXPtdpOfJvbEX+lTWyqeHGt6LLq6Srn5Ph2N89jb4um9TkOa2UuNUS2iwVXN+gnSDYhPrXp9H4zkSsX1s+XqBlI0DvCL8lXvtt7BwXdkuy7XlsrMn3ijJiFuhMb7uPjsS3aM8MhCo3GvXpESiL9kdhiBdyfF4g8IYF7h7fCtP1htinPwM7dH7BoUW6MN2+Ga9driHp7X1kvbiAYjcr8Vcopb/3Sg87OffmwJUqT3s5nmHfAjGUYdc4ei5QZ9tX/2u0EXYRcAvMOa43RFHl9fR3JnPoAc5SfmeF3hL+EKqop3L+3pHwkqD+Whlby/KDOidQO48eqaj0skQZYePAFs5xV1dnKkpdYE6r5pM97CfzmRK6nHwqwVeq6b6D1bqY0ahqytFem6tpr00m1R6s7vjkNMf2sfXjlebbqr/0QL3n1nP7j8H8j7nyttopaKtbAVXNKXVTzX1S48GahspMdUN5ubq+tLGrtljVVV3Q1UWKvLs6n17YeQLz373ZK7RldoZ5STLBPIFgHivjO+3ZBPPMYLSTKm9P9YYq9SNUKUqZvTn2FZoJ5o10UWwgBVHLsaje11H13kk625UxNVKrz82R++S8qPTs+8eRcfeIko52Yx8SnPchXjs/zjCPsFdAHmm/EdEOxgRvY0Qw1K0I6tarEWazBlF26xHjwFDfgsTLxoi1W4MIy6UIN1+CcIvliLRchVCCuu9JQ3wkqPvZ7EZ+dDh8PAOwXn8JKfNBmDh0OMYTzMcM+BoTBw7B+P4E9f4DMGPEUCz6YTwemx5CzPMbyA3wQLL7bVRyWEvYE9QG3pGfs8FfKb/z2WYTNyp52UqqWhWpxeqnh1H57DiK7uwg9WlMCvIAKkipFzhvRMqFZchyWiNmMYXX16Dyzia6X4uci0tkjjvTfrmctadYGiLHcRWtFVLK5pI0u7O93/wdfH77QVLQQg7PQ8C+6Yg8qUMqfTn89v6qdJhbGSFk/xR4bp5EgNcj4C/Gm/UT8HHLBDGECSXA+5AyDznwM2LO6iPBciV93AJ4bftRqgApZmwcMxXe2yYh0ZQUt/UKpNLnzLZbRF93DuLNSWmToo4+NVfCWzy2/kCAni/ucnFcajfTR6qFET1WlH6O3UKC+lIZu0u3NpTxuYgT82iDoEM/3zLkcsIcbXZyCPpF19agkDY4PALHPzeX5NlGlrPdecyNzXhK72xG7uU1KHfdQVDfLrnn7OHe+tEWjR+sZXStI5QUetgNdIXfQHvIdajCbqM9/L7MgLeG3CSY8+iYM8HxGdri3NGeEYS2vDjUJIaiNNIXhaHvkfLmNm4c3oRTy3VxdNE8bNOZgQXjx2LW2NEwnPIjTmzdAt/nz5Dl/wa5rwnYHo70d++ECnd71LC9sbstqXUL2thaosbjgrjEsZ97HYez0Gr0uyQd6zxb3hpxXzzbWyIeKGV3XiF3RZ03kIKvJ7A3EdBbIwjo0U/F070j5rk003WlvlMsYLNYpQcrNrAC9Tht6T1Jm5eeQYuUem0OAT1XZtQF6I1Fykgbn6s3lSpQJ6WOpjI1LQ536dC01qoI5s1Q1VZr2uqy6bG3ur3WkZ4bo4uuP6j7NN72Lz0d8D23ntv/Z2Xe+A8lKU3CVRZxgpJaVX9L01wdrG7kcBUur5eo1LXFXaTG1erqArAy72TnN233ene5tuGtLB1dbOdaFPd7F7s0vuWGK5aXGYHoSPOBKskTraTKW+JeoyXGDc1Rz9EU9kBGbOqDFNDV+rpII1A5qZDS11biBpf3+IzknGffVwxk0kihc0c7n6MnXtqOeMctBO0Nkm3OK8x6g/i1h1isQZAZl9lJnVuv+X1FXlhLUN9AsGfobxDFHnWB3kdgCj5vhMAzhrQWw/eUEd6fWIYE94fITc/BljVb8OOQYZg5bgImjRqNsYOGYESfgRj0RR+M6tOfgN4fs0cOg8G4b+BybAfCH15Clu9LpHq4ItfLVc7RGyQG1pVU0w1SYHTh/qB4dDd62aHu9TlUvziF0vt7UPXsCMoeHULx3Z2iyKsI6iV3diLTYSWSbRQXNiWcZJWAPcd+KbKtFpBKX4RsAn6a/Upk2rGhzGopW8cRGFNI8TKo324Yh9BDM0h5z8PH3wjKp3URb7ZI4Oy1lbvVZyH+zHy8JuUcdlSHVLMBvLZPhvu6b8VUJuKELjy2/EgfN4M2A6SobdcgkEDut+dXBB+eLVBmr3afLRMRtP8XpF6gTQXBmjvTuYs+6swCJJovRPih6Yijr+m7ayqCD0xHzBkdRB6fpVQJzFnRGyH+7GxxkWMHOx5Jiz+rS0CfT5sBHaRyWAwpdI6TLaQNDpvM5F9eI+5xPMKWabtUmujSrPXFwpYb4ziIhjvc+Zii/N4OlLn+hroXRyVlje1fG96aoMWbgE4wVwVfEy/3Lj5Lj3oAFduzBlyBKvyugLRFzs9fylx5W2YomrJjUUVAZ4VeEPAWUQ8d4bRjFUzWGGHjvOmYOOhrjPyqLwb9oxeGfNEbs8aPx5mduxDs+QH54V4o87wifSNVtNh8qJJAzquaYF7n5SgVnRpPa9S9t0L9e9p8kEJvDnKWDQaf5SuhLPcE7nzP8+lcamfjmaaQ2/K8hYDeGvFYoN4Rp81HT34rNrB8ji6+7nmhCtCLYySwRVOWoATNVCYrUbDcKFeVKd3vv0Odz9TZTU7O06XsDk1rhdIJ38LPq9Sk0rugqmvVqOpKNe11tMuvu4bOhu1Q1U9XmuRYpTPUy/6lxw++59Zz+38Nc37hdIxUmt/alqCjhWDe5KxprvHSNFSkd9eV1nezKq9lRc5qPF9iTzsrc7UjaMo5eVep4svOVq5dRUmkyqPRmUswZ+e3rDCouAyZRqo8xYtg/h5tCW/RSiBvJZC3kLJpIXXeFHof9aQc6gNuoc7XmWB+CVUci0owL9LCPO8Rd7gr5fYU591IurwVsRe3IJZAHnNxM8F5EwGdVPkFY+WxHfu0b6T7jYi8uBHh9utEkUfZrUOEDUOdAG+1EmEE8BBS5HzP5/AM+Ah6u/8pA3w8qocPxw3h73gMhalpeHDnKcYTwMf164c5kyYrZfehIzCszyAM+Lwv+v79K0wcMBC/DvsaBhPG4MpB+j4eX0X6x+fI83+BLM+7qAy8j0q/O2gMe0g/63Upt1fLRdoWTQSROncT1LidRcn9/Sh7sF+yzwtvbkfBjW0ovLUdJQR3boKLPqtHKn09AW458p1W0lohGeFZNgslVS2Z1G0Wd787rJAAFlax0Ud/RtzJXxF/ejo+bp2Ij9tIFZ8xQMjR+Yg8Og9Rx+fSvzNEMClwbwJsnBkp9v1z8H77VALtPALuDHhsmgSfXdMQcVIPrzdMQsD+2YglIHMJPfT4fIQeow3Dsbni686leTabeb9lkpyJ8/w6j82lWi+mjYMe4kz06OvOQeJ5fTGeCdr3CxJM9QjUs8WWNo02JhznyhnqPBaXZmkoJfmok/OQSpDmkn3SeZ55p5/x8jpkOhLML62k56uRS5ubdAs9ZFgZStwqn7un0XMuyxdf34ACVvQumwnoe+RIg8fXeESw9b05Gt6cQRtBuyPUGe2Bl9FOUO+OfyrjYqowAnjYTTF/aQnVzoDTBlWV5oe2rHA05cShIj4IRSEfkPrmDp6c3419+tOxZdZUaZqcOmYcJgwejiGf9xGoDyaoz57wHayOnkBCaDiKg91Q8soWRfQ3X/T4BEqenUGZmxkq6LVQ4U7rlRmq3pih5i0vc9TR302Dt6NSepfyO3fDX1P820mVNwa5iKd7Cyl1ZfztgZyhM9D5e+/Q+s93JLmj85NKF8e4ECm7i7c7p8JpPd7VFQl/qHWGenWmErX6J4vY38vuzRVQt1TK0rRUE9yrgbZaNS0VWmvL0VEXrm5vuEEg30NLV5zlVPWDJPTp34+19aS39dx6bv+PMOeUtK4WMYlRt9afVzfVuGoaq73VDRXJpMgrCeIqdXWeJKWJMQxBvFsbedpdmk4rFd0McS6vFycRzBPQJc1vMRJI0ZkTio7MACmxt6d8oPUe7cnvoUqgi1/sS6hiXgjMJVAi6Lac9dX70SKg1xLQqz0d6AJmK7PnuQ9PI+feSWS6HpOZ88SrO5DgxOYxPGO+VdR4iDmrcgY4n59vklnzMHtS7Q4Ee8dNtIwJ/hsJ2usQLcp8PaJJpUfarNZ2tq8kyK8W9R5Bz0NNlyLw+Zf2mAAAgABJREFU9CJ4nVyCJI/HSInPwMYl6zD6i68wYeDXBPKR0Jv6MxZOm4qRfQej/2d90PvfvsCYXn0xc8RgGEwci4u71yPorgMS3j5Accgb5Po8QJnvHVT53kI1gb2FG5f8r0njUw3PCbNH+DszVD8/gcoXZ1D6+Chq3U4KcIpv7yAVupkU+m/IcFxDsDUiiC5TAkgIZFkOy2S+O9VmkZylxxEQ2R89j8DFYOQGsbiTsxDw2wSZE+c88g8EWr8DsxDLQSmksoP2T9eGrRgh9MgseO2bjyT6nXhum4LAA79KRrnf/rnw2DYNwQTud/T21+u5kW4WwZlU92k9Uuc6CDsxHzHn2YhmOvx2T5VSPXu3p2jT1NJsl4tiT2A/eRMj+b4juPFu/0wkmRlIHwCPovGZO1cWEgjwcbRSzA2QfXE1Ytg6lj4X/5wM9CyCdxbPoDtyMtwKpHOFQjzgF5Aq55n1xbTRMZLFJXfuOci9tAqVD/ai7P5eFN/aKgYzbAHb6H4ODe7nCeIuYjDTxmlrodehjmOzl/toj3QVda4o4Qe0MX0iVac2bvLk83MCemlMAPL83BD/2Aku+zZg34KZWD11Mn4YOhTjvh6BySPGY3S/Iej1r1/gq798Lkp9If0t3XK4gvy4KOS9uYS8ByeQ73oYeXcPo/DhSRQ8oE3lo2Mof36G4G6CSrdzqGawv7NEPaew+XEKm6Nyru51EY20UWxgV0JaPHdez810fteU83RulAtxRUs4/Tyk0jsJ6BISk+FNCt1bq9C1ZfeCcGjyWa3TfUm0tvyeKFCH5LwrKl05U2egK53vf7KJ/WRAwwqdWF1DUK/p0LRVV6Odx9rqn6OjyZyuQ8boapiLzsbJEvokTXKf5tV/H2vrgXrPref2fwNzesE06aGtfp+6pd5R01z3qrulMlLdyGfmZeXq2sJWdVVOFy0127Zy7CmfkTPQ1aW0ytMF5t3FiQRyWoVx6C6MQRerc4F5iBhsdJIy5/nWTrpYdCa/RUfCG7QxzOkiwmMz0pEbRBcXf2e6GF2VLt46n8tSVuQUqfI3pNCfmSD/0WnkC9SPI/32QSQ570HCVSU1LeICAZyd3izWIdSKS+4EdytS5HZbFLDb8vPVCDRbiiCTpTKKFmCyTGmOo8Uldl48phZMEPc/u4jU+WJaRmIy42u5FcVJSXj20A0/jfyGgN0H4wYNwzeDRmDMoOFYN38O5n3/PSn03qTQvyTgf4kf+/eFHil0pz0bEHDLFrGvXFEY6oE87wcoeH+DgH4TpV7OcpbZFnxb3OLqvK+g2t0CDaS86l6eIKVuhfInp0itn1Jmy6/T9+G6H4UEdD4jT7BYgqhzC6WDna1OsxyWy6gYB6AUXF+HFAJZ9Kn5yHFahTye0bZdhFRTHQT/NhG+W8eLjav/zsl4t3kSQgjAQSf0CcZzpcEt026pOLbdW0Hwp81NMCn4D1snIfzwLwg+NBcf98yB9745iDhlgJdrv8Pbjd8j+hw3uOnCb88MBB4i+Fotge/emQT1X8QNjkvwbPfKKj3BYiltTrYghcCeYLlU4CxAPzgHkcfnyHgaw5qDZBLFT36GGMxwVGum3RJEHJmB6JNz5edlO9lsx1XIoH9T4LwOWfS9p9Omhl3lUsy5EW4xfR16G4fO2HBPwXKU3NwiGyA23ym6sx2VD/ehkYDe+PqUjK41eVpBFXQNrX52UPlfRGfoNSm5t0e4oivuify/tYTdQ0skPaaNKW9YW9MD0ZIXh7rMGBSHeyPP5wXC79ji6LL5WDJ5HBaM/Qajew/AAC61fzUAE4aMpftB+Pyf/44v/tdnGN1nAIz1FiLg3UcUhngi68FpZLjsQc7tvci9sx/5dw+g7OkpAjlHqVqQOrdG/Qc7UucOaPJ1Qksg28I60d+S4mvAM/Oi1AOUEBeJWX1vL5GrSqDLbclG56a4ziTlDL077QMtLrt/lLAWDXe8E9g1DPaiSC3Q4yTfHZWJvwNd6XwnlV5bICr90zibKHWtWldWBV1+eFV1kVpvlGz19tpgqBoeq9kDvr1xFzixrf0T2Gu1YOdZ9Z5I1p5bz+3PMNdGnrZ8280wV9WdULfV39e01gWjpSZT01xVqW6saFQ3lKo0tQVdmupcNS16weZATUDvriCFXp4KdRktuu8uTSZ1Hk8wjyWQR6I7NwxdDHJS5V0ZvgTzjxI60cHlvDg3acDhEl9r5EOxq+SGHS4J8sVFUqO8tRnPdOGpfmcnJcbSF6YoenoGhY9PkTo5LdnQWbcPIO3GHiRf30FKfTsSL29H7KWtpLw3akfWViHcdiMi7QnmVmsQbLaCQM5jaIvge1IfH0hBvj84H76nFiHIdCUCzi+G94mF8D5pSLBfAh96/PGIHt4e0MXLnXMRds8BuZn52L3xN3z7ZR9phhvz9UiM6j8cI/sPw/gho7BFXwczx32L8QOH4HuC+Zgvv8CEvr1weo0RQu45IsH9EQqDPVDs/whZ7tdQ+sEFxe8vyXgeZ2C3hd6UjOt6LzvUvjkv4SzVL0+hilbls1Pi255ouwKFt+kCf30bcq9uQOzZ+Yg4o4dkgmL+NQIZQT7DmkfBSNGSymU72KBD05FutwrJlkZSdmejlcQzswjoE0ipT4L/9knw3fkTqe8ZpLh1EXbaACEHCbpmhkix0MOHbT/Aa/cvSOM59qNzJVGNY029d9PHH5mPsOO68N71C56sGEPP5yL67AKB+bO1E6W5zWffLDlT9901DQmmBgg7OA2ploZIu7AKOfwzmBpKbKrMpZ+eh/ATuvL5uektzcpARty4KS7ZchESzfXp7ZzjbiCfK5qUfvy5uWJjy+Nq6TZLkSed/kvoYwxl7j2b4J59cZUcI3CTHmer5zixp/tmul+J8rs7SJ0z0PfSJuqwQJ03U81etmj2sUd7kCM6aXVF3ERX1B10xT5ERwwpctqMqmKeaE1Z3MVdrSUzFI3ZMahMCUdR6Adphrt7bCvWT/sOyyaOwaxhQzHs874E9D4Y8Pc+GPzlQEwcPg4DPuuLz/7p76TUP8NPXw/F+f0HkRgUhIzXl5BOG9c81wMof2EiAK/1tEPdBwdS4azEHaTU3uRP4GaQ+yiPOSGuleDeGnIDbeGcqnYfKnq9tfD5OXe4h7rK999Jr0dZfIYep4V6ylt0ywjbB6gzfaDJ4VhVpesdhRFK6b0khl7/cYpKr1JK79z9LkpdjGf+PJ/OKr1YKcM3lfyh1vksva26A221HMNaSGCP17TWe0tiW3udreIDL2Cfjc4aBexttf2k56cnva3n9t8c6Ioy18JclHl74z6ZL2+tDVU30y65qbJW01Ch0tSXdqGuSK2py1ezb/PvQJfmN1bliVAXxZMyjyNlHovugmh0M8xzQtGVHSjWkQxytsBUFLkCcp55ZUXeGn5fmnK4OYebdDjKUUqB3gS3D06o8XQgmPPi8Rzu7jVH8XMTFD05i/wHJ5HjehA5dw4i8+ZepF3/DYmXtiBOe34ebr1eAM6mMAz2IAK5/zlS3OdIbZ8lpX1qIXyP6cP3uD5Bm+5PGiCQ3hfE7z9FMKf3+5wwhBdbvtLyOKiPF3v0kOrriUDfcOj88DMmD/waEwcPIaCPEJiP6DsMw/sOxaQRY7B67nQs/ul7zBk9koD+Fcb36YNNc3+Gr7MVUjyfIMffDaUBj5H3zhmF766j4sMVVHhdURqaAkgxsZqii3KduzlqX51GxZPDqH5xHOVcdn95jCBO0L6yiYC+BbnOm5B6YSlCjs1Bit1KOSdn5za2es2+uERK2JkEsthzugT+BQS0hYg5s4CU/UrkXlwmxjIft0wklf4z/Hb/BJ+dU0ht6yHyjIF4qsfSx7KHeuihX/BhO6lrs4VItFqGgH0zEHpwOkH8V1Ltuog5bwj/fTPxeOVE+B+cp8ysn9TD41Xfy9cLPDALQYfnSTxqgulCBO+biuTzeshwWo8MHqOjfx/F3yuBl8vsYcfmIWjfNJlx5xI7u8RJA5zlEsSd0xPI85x6qs1yRJ3gs/f5kgqXTWo722E5AXuVNAZy81wRTwNYLUb2pXWyOWG1n3t5FbIJ5EV8hn51Lcpdt6Po1jZUPtgtGfNi4PP6NFp8LogNb4efgzjFcad7NwGdz9FZ1XKFiT3TW9l7nZQtj6u15kaiITMKFYmhKA77iOjHl3Ftz3oYT58C3dHDMaX/AAz9vA/6Ecz7/UO5H9prMMYO/gaf/+sX+AdBfeg/vsKK2bPh5voAOYHvkHn3uJyf10mPBW32aKNbyyr7PYPdTsJaeNX/rsivoIkW/y010Wrh7HN6vfGoXUvYXWmS4y54fi22cWNcGMGeU9dinkljXHfyG3SnuItKV2d6kUr3/UOlM9CLWaXHQlNKSr0s9ne1rqlMUhrluAO+lsNccqBhRzkuvzd+KsMXCNyhmM9A00pQb63poNVIq5KuRbkE+Ui01bxVZtQbTqCzyVgCXnictqNujHK+LiX4v/R0wffc/ruq839SyuwdY9DeaoC2pgNqVZ2zRuxbKwnmVfWaxkqVpqFcra6nnXR9oZhFKPPlSuypuiJDlHk3wbyrIIoUeQS6csPFVaqbQN6V6YfOdG+6uDHI39HyQGfiG3TEv1RCI6L4AvKALip3SCXckiYdXo08I+t3nZQGqfP3pMx5JIeUSKW7JSl0c5SxQn/C6vw4Af0oqRUt0G9ogX5lK+JJncc5bSOVvgUxTuz8tgGRtuukw51tXUMtlFJ6sOkyhJovRZjFEoRb0nPzxaTel4iRTMBpQwXqpM59TxrB+9RifDhmBPcTq5AXFwOXS7cxa9wkmB09h7HDviGgD6c1CqMGjMCIfsMwtPdgTBg6AkeW6eDw4nn4YeBAjPr8CxjPnoZ3F08j8c1d5Pi9QknQMxT53EWehzMqvZ0J6MoMcZOvI5pJXTWQMqx/Z0EgPyFRqGL/+nA/qp4eQ8ntrUi6sJKgvhFZl0h9XjNG5Dl9xJotInivkDGvdFKqmRx/SjBOtVFm0kMO/0qKfSHiafHcNp+n87my97bvJXM87MgMeJFSDzw0C9EmCxW1fmiGdKJHHptBin26bBySrVlxz4QXqXb/vb8i9ORCKbMHHZqDZ+t+pPfNkTn0MNoYvNn6K8JP6hPMdaRRzos2BfGm+mILy81u2Zc3INNxFWJM9BFxYhaSOEOdNih+tJkIo6/Nc/GxtOlg45hUUtfRp3Vlk5Fmu1TUfaK5EeLO6khJPdlknihzdojjiFgutWeQai++tZk+53JkiXucAdL4DJ02M1y5KLi6TplFv71FQl3YE7/xFanz50fR5H5ORtdavSyhYqCHOsscujrmHjrjlb/l9tjnCtDZQz3dC6qsELQVxKExJx5VSWHID3qHoNu2OLPGAPrjvyF1/jV+/nqQAL3Pv/VCn7/1Rt+/EdT/1heDaUPYm55/9j//jr5/+QdmjBoFi4OHkRocgKK3V6SznVU5j6qxQlfUuSNt/i6JS1wzd9oHXpe41aaAy2gKpI2h/1UZZ2v0u6w4yYUq8+lN/PpjY5nQe2KGw30Aqoj7pNSfoivhBboTXkJNSr2bNuOatPcE9Y/QZLNKD4GmQFt2L4qAujCU7sMF8GpxlNNCnVc1KfZqDnQhsNfnarvftQ1zBHdxlfuzUm+pZFc5NqBhu1jJVyfF7qvuqLuv7miwRlfTAXQ2riMRoiNleDa/kqY59Iy39dz+2wH9/5KGkvb2oWhvmYu2+gPq5uobBHF/2iXnoqmyXtNSzbtktfgxM9BrCySEgc/NeSRNXZYOdTm9SEmddxeSMs+NQHduiLKy/NFFirwr7YN0yHJqE6vyzjg3dMS9lLzlNq3HNCdDtZJKUCwrnWV+t9FPcb2q81IuWFUE8Qo3U5S9PIuS56dR/Ow0ih6dpEVAf3gUuXcOIOvWXmS47JKVTivNeQeSr25DwlXOMt+MhMvGBPiNMoYWc3GjOMHFsxvcRb5fT8/XE/BZxS8VI5kgArr3MS7FL6ClB68jC/Hu8EJR6G/PbkF+SjoO7TiIn4aMwArD1Rg2YBjGEszHDf0G348ah5EDhmNo3yEY0msgZo0ZCZvty3FilR7GfvUF5tDz5xbHEP3UGVk+BPPA5yjzu08K3QWVvreVJkD21v5ohyZSWQ0feBzJBtWvzolve4nrXlQ+OYiSe3tp7UPqxTVIsF6CdIeVSLIhuDmsRgSBLoOex59fINBOtlQsUfl5qs0SxJBKjzqtgyTrZaKaUyyMpPM7xWQ+Anb+AL9dUxG0d6qYwUQwkE/qIGAP27USRE/OIODPRKyp4hbHJXFucAs6OBsBxxYgjlR3yJHZeLV5Kty3/iwxrYEHZiLg0HxEniUQmywS1e2z62f52rwR4E0Fh6dkkCpPsjAQ85m403MIuIvo/fQ5TsynrzsHCSemk0qfJdWF0EMzEUM/A29YEqyXI/asrpypx52cjcQzsyXNjUNoMuwWI8dxJYF/EUrubKPfzwpS6ew+xxGui5BB6r1IxtW4MW6zmMrwcQX7uTe+OSlHG81vz6GNYN7KjnF+dgT0a+iOvkPQuy/e6aooZYZbSTZzl4oUhwy1FyWjMTcRVYlhyPJ+Be+rZji2bD7mjByGaQP7YerA/hj6WW/0JqD31kK9/z/6Y+BXQzGy/wiCe2988c9/x7i+fWGsp4ePL9xQ7P9U1Hk9vT5EkbOZDW2IVcE3ad1AK5vaMLA5RtWHo3gJ8uJox1nqV+jtV9HG2eef5tOlQnZPATo9Zpi3RyrHCJ1xHPhCSj3uBd2/lNWlzUpXp3+AJtOb4O4HTU6AqHZNPqn2Ai3YS6KU0bbfS/HJBHZaNWlShud5dVHsWgMapQteC3W+bypV0+M/Ettaq7NZrWvaa98R2F3VShn+gLjKtbfoSOojpz8qPvD/0Cr2nvP1ntt/E3XOQQiq+nXq1qpLmuZKX01jRTap83oCegfdq9WNFfRiK4K6Nlfyj7s/nZmXpUkXO5fau4tjRJ3zWTnDXJ0dJGfliir3QAcp8nYusZN6aY99ppQmCeIqTqIiZSBjPnQhYv/pBt/LpMovEcicUOPFkY6KWUblW0uUvziHUoJ50dNTtAjqL0xQ9OI8ip6dIZV+DLms0u8dIKW+Dxk39yDV+TckX9uKxMubEU9AT7yySSAeSyvG6Q+gJzgpK4473W1XIMJqGSLMlyDSgs1kliLoLIPdAN5HF8LrsL6cob+33IvM2GSs1jPE972+wuT+gzBaC/Qxg0dj4six+GnsBIweOBxjBw7Bj4MG4qehg2C+bRmsty2G0Xff4NH5AwT0q0jzuIvKsNeoCn6CYu87yHtzUfy5uXeAz0Nr6XdQ72kljU51nrS5eX4KxffYu/0AKh7tRrHrbpQ8OIxcl20SnBJvbihd7AmkxpPZDtVxDRItjQjoCwWQMQQ77nRn+1S2do0iwKaQwk8gpZxGH8fGMbxCD8/Ex+0M9inwZ/e4swvo4+ch4ZyeZKDHn6PNgMUiaZYLPzYL3rumEbDnIODwPHF5Cz2uA9/9s/By408IIXXts3uK4hp3zgDxVsvF/MVn70yC/TyZe084Ox/ZPEpHEE7imFb6XhO44c3aCJEcHHN8DuIJ5DE8Ynd6Hm1G5iNw36/0s+gi02kN/Rz8/c1B9MlZCD8wTbzeU2kTwz9njsNSUuNL5GihlICefmEZkniUj96eTGDPvbxacuW59M7vV6YHtqHy4R7UvTyC+peciW6iGMww1H1s0RlyBZroW+hgP/eoewT0+xI52pn4SrFNpddAO21yVQUJaMiKQUViCLJ93fD2wnHs1p+B6aTOpw4cgF++HoBRXxDQ//oVetHq/dde6Pv3vuj/xVAMHzia/oZG4h8E9OGffwG9CeNx1cxSyu5Vng5o+OgkipwB3hrsQmC/TH8jF1DjocyiN3hzVztnAjigyd9J0vs4N72FnexCb0ozX7vMpSurLfIJ/RxPZKPN5Xi2s5V7joHl4BeGPG1auuKei3JX08+pTntLYH9HYH//78GexyuIVDup+GKCe2kMiQACe2WiqHVNTSYBPRtgExoBOit1gnoTn6sXSdOcnK83l6nFWa61RqWU4avL0VaTTY+jaXmpVTUP1e31Dtz7A1XDZvGB72qbgo6ObxUveB7DxV97ztd7bv+VG+H+KvGnnJjG5+YttY9pF5xIq5JePCo0Vqg1DaW0iy4UC0c1n5dru9q7K3g0LUlUuVrOyiMUmGcHkzIPQHemn9L8Rrv3Tm4MYl9o2t23R/PF4hGpgntS0mOIc0mwye+ymKdwuZDPAGveKeX1KoJ4lbu5lNjLX5E6J3iXsDJ/cpJUOsHdzYygbori5+dR+PwsCgj0+Y+PIu/eIWTfJrV+g1T6da1Kv7wF8Zc4dGU9oi6sRrgNh62sRITtWnrbRgK6sax4x3WItV+NKAIOO8OFmS1DMCl1vxMG+HhkAd6Twny9Zx48LPchyjcE+j/9jCn9++G7QaymhmLMoFH4hqA+etAITBv/PWZMnIQfhg/Hj19/jW969caMMaNht2cdbh7eAHfb40h8dRPpHx6hLPglKgPuocr/LvLcaAPzwVFUV7WHDSlzW9R6WKD6tQnB3You2PS7eXEapQ8OofrxPhSy5/jDwyh/fBxp9iuQRFDmM+vQowQ3gl6aHcGL7VJJxYYfnU5gJGV9VkciSlkdBx3RRaLtGoLoQhkJ4y54/vh4AmTAnmnwIxBzQ1owAZ4NZsJJKXP0KQekRPFMOcE48DB9rbP6CCLVHXJ8Pqn3WYg4rYdQes6jbV67f0XA/l9EpXP3esqFVWIQE0hfm1V28P5faaOwQLraORWN89FjT82VsbI02pRE0wYh5sRsJJ+dgegj0+R9MWd0EcCjdQTmFJul9Dl+QcTRWfSxMxF9fMbvTnCcHsed8dlO6yS8hpU4N9MlmRpINSCFNgylBO8Cl03SRc+2udlX1pOS34HKBzvFWrf+9Rk0e5oL0Fs+KCEtHSGX0BV2BV2Rt9ERoTTGdcU/kSYybvpsZyvjnAi0sYd7Thwqk8OR6f0Cz0z3Y8mPEzBzxFBS6APw66AB+LbPAFLlfQnoXypQZ5X+xRAMHzQG34+ejF5/+RID/+0zTB86GCc30eb041uUvyc4+zsTpJ0F6rwRltfNK55DZ6BfEKjXv7OUI5smH3v6+Ito8Segk1Ln5rj28DtQcYMc3Uu2ujjEPZWNCZ+hM8TZAa+DAN9Jar2L3tcd/xJq2rSoSaFr0gjk6VyCJ6We4ysABy1W6chVwK7Op+cFBPWiUOWMncfb2ISmOpWuLel0jcn809l6/p/O1YsE7ArgSyXcBZyvzj7wrVWNdJ0q1zRXZdM1K5ZUuy/B/TlB/Rq6COydzdvR3bYCXS1z0dkyXq51Sim+B+o9t/9SMP+UntZLdrDtrQbqjsbzmta697ToxVHbSC+QLlLo9KIqpxda8R9Ar8yUBjiZKy+IkbPyLoI4N711ZwaIk1RX+keJiuzklCZufosnkNOFoINBzmX1kJtiaNFIioKB1fDRUUqGtXTxYSMMBlj1GwK5mwkqX55HBany8mdnUcr3BPRSVuZPCOoE8OKXpihhyPPj52dQ+OwU8h5plfrtPQL05Gu/IeESKXRHJWwlxoEAbr8KkTakxAnqnKjGhjEye263jt6+CuGWK8SzPcSE1PkZZUyNjWQ89ungza7ZeLp1Bl6b7oHXC3fM/vZbzBg2WLrYR/QbilEDRxDMR2IkrdGDRkPnp2kwmvIjfviaFHyvXvhh6BAsm/4Tbp3egegHF5Dk5oxcfzcUBbmhwv8eagLuoOzdRRS8tES97zXld+PBJiEWUm6vfHESde/MJaSl+MFBAvlBFN3eTip9D8qfHielfgDJNkuQarcCIUfnEnznId5ET5zXUi6soOf0Nnp7/HkDxJAiZiUfdX4xYq3XIdV2qXSOc/c3l+1jTQne3IxGsGVHN6/ffpSz8Fj6t59yzqMJ6LGn5kkaW5IlbRyslyKUQB4kzm66CDvB5fTppNxnEsDp40i9Z1zaKFGnrKwDDusi4tgcBGrn3HmELYMUejwBnTccDPPE8wtkvjyevjfuxOcNSdx5XZlvDzmuR5sPI8lLD9k7TUbzYkjFc3BLzsVlSLdS4lhZ+Wc6LEc6bW6KbmyRKgX/XtgCl53zylx3IPfqRvG1L3AxRv71Tai8vwc1j/ag9ulhArmpuMU1eZwjoFtKyb2TgR7iqCSvRd0loN8joCvBJqqUd5JN0JEfQ0CPRX1OAioTQpH14TFcT+7A6qmT8MuQoZjYpzem09/GxL4DMOiz/ujzt16i1PkcfeCXQzCA1tjBY+V9vf/X32TscYvefAS9fIpynztoYo92gjq/fj69hnj2nDfGtR7WtAk0Rc0bUwK7lUCdV6PPRQmUUYW40LqJNgJ7c7CLKHaumKlow90eqZTc2+i+I+ox/WykyAnkvLoZ5imkzFP4PJ1WugcB3ZOA7qcAncvttFDAYNfCnFV6URgBPZKAHquU36uT6brC8asZAEEddTnKqs2j+3ztGbt2SdCLUpLXNJWrNY2lXWgsJeFR3qhpqqjUtFTma1qq+Iw9EB21L9HRcEvdweX4hkP0eBk6G38U58sepd5z+y8Gc96l9gM6J6K7XRedbbvUqoYbmua6cE1zbammuUalaaqSUru6vlQJWZHmN+5kJ1WeH4uuPKXxrSsnFGppfAsgNe6HDgY5QZxVeXsCN765yW5fzhbZcjLkT4rcm9W4Lalxa1ETtW/MUfPKBBVu5wla51BBgC57ehKlpMZLH59A0cOjKHpwBAX3eR1F/iNaj4/JGXrxY3rboyPIe3BYlHm6y29Iub5FzsxjL25QoO2wQYAdbbtWoB1mtUIUerg1LXocycYxlstJjRvC76SB0vV+dAF8aDHMeXkeWIC3e3Xhtmsu3lrsxRvXx5hJinveNyMwYTCpqf7DpBlu1IDhGDFwOIb0HYoJw0ZhzxJ96E8aJ3Pq4/v1x5JpU7F/sR5inlxG3od7KAtxR77fcxR5u6Iu5BFqfFxQ/MoK1Ryl6n1RAfobE/mdVD4/jconR2jDc0783Atu70bZvd3IdzZGKUE9+9pWZF7egGTbFQT11Qg+roME80UyrpZsQ+CzMCKozqXFEaeG4qwWSaCNNFmMnKubRRlz+TyF/m2i9TLEmxvRJkBHTGDY3tVv7y8EQn3aDCwU+EeRao4+rYNYEyPEmC2VzvooPqY4NEfOyNlkxnffTCntJ5obIMpkEdKvbEUaAT1KUtvmEPy5430OEs4vkCMB7mxPNtNHotlCGWWLoX/L5fdkUwL+iZmkwmfK+T87z4Ue1ZFmvuiTc8SLntPc+Ptitzhugku3NUKihYESUHNxpTjksf0rl/K5FyCDAF94YyuK7+yij1mPvOvGKHDeIi5xFfc4yY5L7qfQ9NYEDW7H0OpJCt3TDG0+NugMvIiuYCdS6LeUKFWGesILZSQzzUsMlFT5CWjKi0NtRhSKo/2Q+c4Vtw4bY/640RjzVS+M+fJL/NivD6Z+PZA2hSPl/LzXv/VCv8/6YfBXg9H77/0xuPdQDKX11T//jTYAvbB06g9wu34FxfT3wv7r9e8dUEmvlcpnJ1H7+jxq3zHIzek1ZUbq3AqNH+1o43wBjR9s0OhtT4qeYM7RrkHX6PV4VVZzAN0HkdoPvQFV6G1xvWsLuSORsHye3sFHCbF8lv4c3UlvZIRNTUvDi0vuGe+hyfL54wydFyv1Au15OkFdXRyqqPSSCHGWk/N0PkvnJc1yGYpi51I8N85JJKs2lrUu//esdSnLE9zVDYVqTUNxF0G+Q9Nc3izpbS1V3DyXifYaVu3+6rbax2pVrak0z3Fym0D997n1Hqj33P7Tw5z+oDsno6NtGdqbDqlbG66QKvcSdd5cU6/ms3Puaq8tElWuIUWuKaWdNBvE5H86Jw+VufLu7BB0ZmtL7Ok+Shd7Ije/vZY85Y7Yl6LO+YLAO38elWlm+0lSCA0fSFG8sxSLyprXJqh+cZZgdYIgfgxlT44SyOkxrdInBOwHBG/XQ7QOIu/uAeTfPSgzuHmu++W8PJvUeNatXUh3/g1JVzb/cS5+aYOU0GNEha8nkK9RlLc527muQoT1ckRzQxip9Ri7NYi+QIqdAB9BYA8zXUzq3FBK7Xx+/v7QAnjsn493+3XxZg8t05144XITc8Z+A50xozDh66EYTgp9eB9lDes3BIP68Ln6AMybMBZHVi/EHLqIj+3TB1OGDYWp8XL43bBE3sf7KA9+hkK/B8jzuo3akMdoDH2Acg97lLtbyTEEl9xrSJGXsQJ/eEi83PNv70QFAb2EwFNKK+/aRlKWm+U+nZRo1qV1SCJFnmi7XNzeEi0XEeCXIufKOgL1UviSIg5hX3WCMwOd3eDibNYi94qx+KDHnF6AdKd1BH02oSEwH5wh8ak8isYbgnSHtYgmBR5JQBdvdcvF9PVWI95qCZLs1yGUNkUc5hJyTEfMZ9iHnb+vBJvlSHLcRJ97Pan8WQRlHQI6QfrYXFLW8xBHoGWFzp34XEbn8j/nryeZ6AqEg/dPpe97phwl8KaBz9959jyGnrN3fPCBX0mR60vDGxvEcMhLKs+jOywhBb5ejh943jzRdIFktmfzOBu9vdR1N7IJ6AUuW1B4cwsq7u+UkbW6Z0fQ8PosmtzPo/HNaVHqLazS35tC5XuBVPplpeQefpOg91C63dtTCOgZfmgvjIeKG+KyYlCdGoHS2EBkvL2B82v1MKFfb4z64kuM/vxzTB3YD4u+H4/vvh6Fvn/tLeX2AV8MkNHHgZ8PxKAvv8ao/iPwJTfGffUVDCdOwG1zM+S8uY5aT3uBdzltbquenUL1y3OkyPk1ZYo6D0vF1537L94z2G3R4ucIVdB1xRwnwEmZTefHQVclv53L7x20MemIdKV1D10xj6Uhrlua4lilv0BXohut16LUu+mxOokV+xuC+1t081k6l+EzPkCTrZ1Xz/XXnqkz4GkVBotaV5fFAOWJAHfAs2UsqXZ1ecK/C3tR/z7ulvfHObuktxUqYOdxt8YSNal17ojv4HI8WmsawW5zqtpCtNfFatprX6pVdZaSs97V/Is0Av/7Ebf/0dM013P7zwb0f5HOTz5P6mgyREvdMXVztbOmqfo9KfJkelypbq5s1dSXdcm5OZfYtTDXFMcrM+U8jkYwVwvQteflWb5yXt6V7o3OFAb6WzGL4aQmmTOPeiQlvDZR59dInTuROrdHg5cdXWTs5Dy4jqDOyqLajaD+4hTKnx5B6aPDKL6/D0X39hLASYESuHNv70POrb3KPRupaEGecWMHUq9vJYhvRJzDejkLZ7AnSWf7JlLmCswjtB7t0fZrCfabkETvSyawJNqvRoL9GklVi7ZZrah19nA3XYqQ84tJtS+G/0nFVOb9QV0CO63z2/H6xg3ojh8HndEjMXHQUJk7H9Z7CIb1UR4P6N2fVHsvTBrSH3Mnf4sdi+bhh2ED8R1dwM+tX4QAF0sxGSnye4SqkCco8bmDSn9X1Ae7Spwlh8/wjHG9t5N0uPOGp9h1L8oe7EPBrd+QR1AvurtLut6L7uxEvssmsSrl2fNsAnfW1U1IoZ8t2sQQCZYENp41v7aBwL4cwUfmwH/PNFGpkaTSwwnOwcd1Cf5slWqMyLN6SKKNTrzZEil3++7+meA7FxGndOG1cwptBBaJcU3kGT2ZOY87u0C+Vgx9rRSHDYg4u4g+3wJxmos3NZRYVIGrPW2azJeKVS3PjwcfnCmNbHFn5stcPKe8pVpo58rZ4Y7jVeltbP7C+el8Ts7P480WI+LkAvm6CRaLJECG5+SjaCOS6bgGSRbslLeeVPlqpNLn4vQ0DqxJldjYNaTwOb3NSDGccVyJ8oe0UbxmLCNt3BTHc+icYFf74hjqXp1Co/tZUupH0UBQb/M8D9UHcwF6R8gVSVzrJKh3xj4SU5lOAltndhA6ipOgKkxAfVoYqlLDURFHQHd3wQGDGZg8oB/G9vqKFPrnWDB2BFb8MIH+Loai97/2loa4QV8OxMh+wzG41xAM+HwQPR6BXn/5DGNJ0et9+w2cjh5E0kNrlL80IyVugSraENe8MiV426KBFHodqXN5Xb01o+eWqCd13sAK/aMNmnzt0epPYA+8LKst+KoCdFLoKlLoHZF30BX1gGD+CF0Jz6FOdoMmmcHthu4EWokvf79nwHcnsAENn60/gzrxpQBewyV5hrsod2+lHC9wV87XWamrtV3wkLl1to1VRtwE8J/O11mt12Zr/eDzf4c6pGmuSDGnaSpRUtzEQrZcrWmu6CJ1riKl3qhR1ZZq2upi0VZD6qLOWmxkVc0zxd76D/vYv/V0w/fc/rMB/S/SGNLWNAUtNetIidtqmipeobEiUtNYUajhs6j6kg5Nbb6am980FTyWRsq8mK1boxXHN1bodC8l92x2fvMnmPvInHlniic6Et3RSeq8I/aFEr/IiU3cLRt6my4YLjIqw1GgbJLCtpQNXvZ0AbKRiw6XlGtenUPVy9Mof3YMJY8OyhlxMcGq+OFBUqZHUMj+1bf3I/vWbmTd2I4M561Iu75FVuq1rVqIbyK4byFYbxZ/9piLGxBly41wa+nxOsk3T6N/l3FzJ9JpI5BGG4HkyxsJ7PQ+hzUEc45HXYFw8xWI5JK8xQqC+lIEnDaSETbvYwtlfM3j7Ca8cbmGLQt0YUCKadLwP2bPR/YfLuX3IX3pQtz3S3w3fAAmjRyM1fN+xg6jmZg6YiCOrzRA+G1bJL50Qb7PY9SEPpaGuCp/groPO3nR4w+XRaWznWcdbYAquRHu0RHk39qO4jvbkU1qvIjUeT4pcx5jKyS4F97cLOe/KReWEtQ3yJk2z4SzUUucmSHS7ZfTop+NVHX40TmkjGch/MhMhJ2Yi7BT+gg6Mg/pjhuQzpUOCyMkk6JONteHz66p8CHFHXhoJgIIwrEE0Az6PAzl0BMEW7pnNZ/IzXe0oYo1N0LoWSNEEeDj6X3Rp0nVszvb1Q1yxp59dSOSrJZKiloUwZwDWYIPzZLxNi6tJ5nokIpeKPPlYXxef3Y+wkmZc7c8d+OLvS3BO8VmmYS/8AbFd89MUfUZBPE82sxkXFwjI29x5+ZJWT2TFHuW/RLkEdi5KZDDXHLF5325+LYX3tyGsrvbUcZAv7dTXOKqnx2Shria5wdQ9/wgmt6cQsu782glhd5GQG8PukRAd0Z3jCsB/SHa45+jI0XJP+dUQVVBvHS412ZGoyYpEOnut3DAaDZ+GjRQDIamfD0ASyeNw7LvxmJcn/7S4d5Pzs8HYZh2gzjgHwME7v3/RhuAzxnoo3Bh91bE3jyPSjc+I6e/j7fWaPa+LCYyTfS64nS+ZnqdtfpfEXc4hnUbvf5afR3R5GNHb7+E9hBnWldJrRPYCertoS6SIsc5752szmMfE7SfC8w1ya9lMdyV83NaSQrQlUXgZ7jHvaD75wJ7ddILAvsrIM0dmnRPpQNeSvJaqBewy1yotgP+T1BnlzkebavWjraxkVV9rpyrS3obA72RVfqfmucaGfDFSmd8o7aBTrGRbUZbbbEC9bq36vZaB3V73S5JkOTwKXSMUcbcGO74vMdtruf2nwfora190NnwPf2BL0NrDV2Rah5qmqs42zxb01Beq6krUokTHAcqSBMce7SnKHau5Wn0WDGQ6c4JR1dWkAL0dF/FOCbZU/zYecZcFf1cOtrbo57I2IuMpLFJit9VOT/nUaw6UhG1HpbSsFPtxmfDx1H6+DCB/ADBmyB+/4CUl0seHyGgH0HBvQPIu8sKnWH+mwA902Ur0gnkqaT2kgnkiaS24502yLl5pO0ahFqupLWCFPk6JJIaT6GLPMOf/10GfQ4+a0932Sb3qVc3078nhW+3FtHWKxDBuedWqxBhvlzCWIJNlhPUF+PjUUN4HtCD26Fl+HjHGdfNLHB4/WasXLAE839dgDlT52HOtDmYOnkGfvl+GvR/moKpY8Zg3g8/YtGMn7HFcDYOrtLDWeNlCLpzAfEvnJHsdgMVAQ9QR8q8JuieGMs0Bd9AS9htAjo3CZrTJueM9BeUPKLfyQOlsz2P1HY+/Sz5BKtCUut8VJF/Y4uMXKXZLhMYppMqZwWbYL0MUZx8xtavV4zFK51zy/kMPGDfz6R4DUm1LhAzmjhz5Tw9izY6KdZLCK76iCYVHUIwDzw4C0GcwHaCm+dWSHk74MgCJFkulWY5HpnLpP8HhjAbx8SaGombHFcC2Ec9yXYlAk8aSANeOm2wOE6VZ+FZnUedULrmMyw4eW0mIk6RiuaOeEv6/knhs01s2LG5EtcaeWoBbTgWIc1uNX2Py8Wdjs/xk8QBbj39DnbI1+SP5RG1ItrkcAc/275mWC+ShjtW7ZkXFouhDAOd+xCKXDai/PYWVD8+gJpHe1H/4ijq3E5It3vDy2NoFqDz6JoN2nwuEAydSM3eQHfkDQlo4VltVcIrqNJ8CeiRUJWkojlfKbvXJgch/P5FLP5hPCYP7E9QH4BVU7/D/G9HQ2/MSEzuP5Dg3RcDPuuPIb2+xvA+wwTogz4fKJtEtocd92UvMaSx3bERUddPoOq1JaluR2XTHHJbIlNl5tz/mmyi+ay8jbPZfQn2Hwny763FvrbN7yJUAZfQxko9wFFiYCXfPeKWdOxzHGxnzEO6v4fOaF4P0UWrm1S7KHEeWWPDGQY5P9aW3jVJbgL67sQXykYghVbqG1LqHgR0b61KD1Du/6zYZW49QuxjNWXakBcGOq8qEhY1adoz9gw5X0etdtStLv/3OfZPCh5SkpfsdUWtt1Y2E9grSbVnyrl6R819tarBEp2Ne2R+nSuWXaTapRtewN7TONdz+z8e6P8k5aWOppFScmpv2K5ub7DVtNY+17TURKOpsljTUEYqvbhLzSV36W7P/31crUs7e95dFIeunDBR6J3c4S5Q54Y4gnrSW0lLaxeg04Ut6ilaw+6hOfAmGjnNiYDOFxxlttoGNe5KIxwrz3I+Oyeglz7mcvshiQgtvq+o9IK7e5F3Zxdy7+xE7u1dyCF1nemyhWBOgCY4JV9WVsLFjUp53ZbL66ulxB5ju4pAbkwA307g30IfswEJjusJ3sZiKBOnNZiJ5S53mzUE81Vyhh5qugSBpMr9T+rD/zgpcym368ODYP5mz3w82a6DV/bnce+iI87vPYTNKzbCSG8VDHRXYLH+SujNXYRlOgthrG+IZbN1sWDabGxYaIjD65Zj74oFuHt2N2KeXUMiwTzu6WXkfriDalLntX43UON7A/X+18Wqk811Kun3xElanLJW/vSozJ+XkoLkMauca8bIpd8FR4QW0e+o8ulxFDHsr3LXOpe4V4jJDJ9ZM6xZcWcRrHOctyHq1HzpdPfe8SOiz+gTkBmKBvIx8Wb69Dk20uddL13kCSYLEH6cPdtnIOjYAgKoDrKdVoutLHu1p9HvMcZkEaLP6iLFYZ2Mq/myCQ2p56hzRogntc1d5VyeD6HfKUemZhFII8/oylk827Um0MYh7PB0yTHPsFqgjLZxnrqloXSvf9g+VbLSEziZjb6fnMvcL7Cafs4V9HZ92Tyk2q9GIf0+8kh5hxyZJfP16XbLkX9lrYyopdssljE2NpvJdVwp6WscOVt09zcxksmjj6t+vBcV935D9aNdqH9+hJT6blQ/OYjGVyfR7H4GTQT0Fi9rArotOoJJoUeQsg29Tqr2rox9tSe8hirlPToKYtFRliHBLPUpwaiK90fQbTtsm/sz5owejtVTJ0J3wgjMGjkMv5JSnztqJL7pNwyDSZ2PIHXOFZ9hvQdj4OcDZBZ9+Bd98V3fPlg4cSyst69GzPWjqPdyIpjznPh9MZbhEbaWQBdS5S5oIag3csIal+D5PN3TEg18lv7BBi0+XHa/qCw/BwK+gyh5yXgPvk7K3UXAzuV3FUG+PeK2/Hyd0XcJ7PfRHfuQQP5UgXaquwLsTE8g66Ocn6u58z39rfK+NO37M7QleJlX9wZyAv84W88P/cOMhtV6ZapiGSsleM5ZTwGqtM1zfK7ODXM1uUqS2yelzk1zv/vFf5pnL1GMaZrLWzXN3DRXmd/dWhWtUdW+F2Oarno7dNWfIqGzFd0c08qKXUxp/tID9Z7b/8lQ/x9/qHQ+R29bhPa2Q+r25hua9iZ/TVtdtvi2N1Z0qBvK1Zr6MnqxlNKLpkjrDMdqPR3dxcno5pE1Uh+drNQ5cEUL9PaEtxJ9ykErDPO2iMdiI9nEQGdAEdTZ+KL+U5Sjpy1q31qilhOiXpuS2jBB1cuzEjpS9uwYqdITojq55F54fx8KXPcQ2HcS0Fmhkzq/vlnK5fEX1yNGOtgZ5vTYkeB+hc/INxK418mZeixBhjvb/c4ukmQ1hj7DnF3jGP5s/RpybjGCzy5GCCnyUPoY/xOG8D6ki3d7ZuPNjll4tWMOXu+aB7edOni8bS4eHN+KJ46OsD52CrvWb8PyRRuwUG819OYvx4qFK3FwvTF2LV+BjQuXwWD6fKzSM8Jh440w22WMq4c3I8P9JjI+PCCouyDr3W2U+ZFC979FML+FOv8bCtC9HVDlYYUK+p3w7Ln8np4fI6DvQgGp8bxbBPY7e6SzPcNxFYpIaZbc3SHnxazO0x1WyQhbjstOxFmtQhyfpdMGJvP6b6SkNxDQdRG4/xeC8jwkWiwUkCfaLEEkZ46Tos69Tpsl2hhw81wqKVy2fo01XQz/I7oSzJJuu1isVqPOk1p22CA2rgLis/rw2T1VAfY5PSmps1Mdgz1GzueXisUrB7VEnuKsdB4jW4iIozOQYjZfAlIy6P+MR9rYupbny/32ziTVP0/sa9lulkv+afbLBejxBHP+mnkE8wLnjXJMwJuONIe10mCXd5k2dpZG8rnYtIY93jPtFkuXOx9XsIkMx6sW0++0gm117+9EzdP9qCaYc1BLg/s5NL7hbvczaPE0F6Cr/O3FXIa93NvZ151Ax1UpMZZJ9YQqNxLtRYlozQxHXYIvisPeIeKeA86vNcC6n7/DyinjoTN2GH4gtW703bcwHP8tRnw5AMN7DcaEYd9i3OAxGDtoJAZ90Z+APgIjeg3ATwT+JZPH4+LONUi4dYJeV9zIdl/cFVsCCOKcbx5Ifzscj8oe72+UbvdGnkP3tkOjDzsPOqCFVLwq8Kpyhk4qvdnXXqDeQsq9zfeiotyDnSXfvYNhzh38MfdkNK87loH+iID+hBT5S+B/s/eeQXWnWZrnl4mJjo6Ojo2OmN6KjenZ6e7p2t6Znqre2nJdlZWVXpkpZcohhwAJJwQIhEcghEAChBAe4b0HIYQREiADwnvvvffe23ufPef8r5S5sd93ciIg4o17gYv7A/f3Puc953k6SZkzvHl0jVU4N8MxtHsY4s81MC8A6D7eP4Yb5Rjk0ihXJVaxmKhVfOAlgrVVudUkt2FeA/iFH5S6akE5X3/vMqfSNMkJzD+U4icUt7l1MafZU2xkZ2cUtb5Yp95bfq7aW4lV7S25Y3+FO+H/gN21901zR2fqRy//k6j0w61vsbthqdpeDVVvLRerN1f6SKkvqXhsbW2OgM52rwz0UQXkM904mGJ3uE7sT7QS0BtIoVdhv6dUOUPvKpJRNQb6Tv0TbNWmEcyTsclzsuLLTur8dag0eLFd5VJRgMzMLpJy4NI7d7wv5BOs5Bxdo0bpdppXFgOex9McMZpkTSrdXIDeFWEo3ez1PDvOyvqhLup9GeiGaA4xRlOgAep89VAjwSzaqNDEoFZ4nJPmOPZ1r/dT/N2rvbRR7XlRQM5NcGWuZ/DW6aQA/bn5p8gx+TOyjT9GpvGnyLj2OVKNvkS8+SmkPnTH43secLxuiSsXjXHmpC6OfXkWZ7+9AHfzm/CwvAkLnas49/VpnP3qJKyvGMLTyhypno6oSfGXlLUOAXo0ZkpSsFyZgo2qVGxw+bQkmFQWR6c+wBxtdLirfTabx5JoA5TjiokkCwwQwEYSrDBEm5w+Ut6dvloEeiOMEZjYPrXFS0tAz8EtDPG6ewzeK6Kmx2JuSBhKgxvPi3+LyltfoY1NZQjg1c5fo8ntuEC3N1gX1U5fYihUTzzWWWWX3foODfe1pJzd6nUatS7H5fNyyZvPtGucvkalzZ8VBzjPMwJxPrPmsnyD81f0eU6ik6DMLnDNBONy+y+Ukr3rMfQQcHsJ1N30ubmhrs37nBwJVN0+gVpnbmY7K853XQ9PojfwIjrp+2V13kGPm4q7jqHgi6h1+kyiWHlMTdnc0EaGvh4fIfDnYm93/vgR2rBM0WZxUnLQL8nZ+TQBfT7dmpYVqXRrzNH7eQZ97Tl3u7uKFSy7xe0S0A/ro8QClpvidhtSsdeUgUM2lul8id2uN+LlvtlbjeW2EoxU5KHlSSju6X2Pa1/+Gy787r/j8//jH3Hmt7/CpT/+Tnzdf/13f4/fEMz/75//An/8xe/w30iZ//3f/u/4r3/3c/zy7/4JX/z857jyp98i2kYfPcl3sUUA32ZlrgH5GtsFv/Sn/yuugHlLx/vyc85Ff6SMrhX7Yr3YVwC/JmAnhV8Wgt3yUOyRQt+j2/2qCBzURkssLHfwS8NfQ5Kkyinz9sm00iSQRtXGJfcnAnZ1d64G4i8I3qzYWaUrTnLKvDqtflLx70vvw+8APk/ncBeN4YyKG+Ik2KXlR1DXBLx8CHnp0zTM9WpG3AY0Sn2cXeUUZb42+b4DXpPmxq9r1PrWwhZnrpNKHyKgV6n2VtOxxyX4JSPsrH4mEdIsfI5iWY9e/ucAOmeeL5/A5pIVATxcvTlfrN5Y6KHFLnFbqhXazcrY2hAOZvtxIOqcgd6BA4L5PimP/f4K7Mn5+Vsl27y9QDysdxuVUvtmdSrWK0mdl8djrex9rvljTYBEoHi0vy+7M8h5zT27S6pcOUufSLXHZMYtTGQ4YSzNUTlDJyXaH22CXlHmV0l165Aq10YTKcJGXx1auhpzmMuixiu9zgu8K70uEMAvy3qfbc4qXVk8wqYnmwFW6nX0mFqvS6i8dx5lzqfxyu4bFFl/hQKLz5F97c9IvvIHxOr+ATGX/4DIK58j1skCcT6P4GXnBFN9C+hduIbvuOz+9VlY6erD95YjQlycYH3VEKe+OAFDLW15vSD8IZqfhGP0VSLGXsejJzcMk28TpTFu+V28nJ9v0BMtu3vx2Nr8cy/pWp5Mc8AUZ18/dcFsFieu2WKYYD4ab0HX56akrTGUWaVOxRuh5s7XpMzPooNU6hg9pifkKjr9ddH+8JIEuPDHccc8j7KxEU2dy7ek0M9JGAt7tLeT0uUY0XZvLYLw9wLSSscvUed+FvUPLtLbz6D+zgm8ufmJmM50+3IACm2e7I+h/OZHqLT+BB1eWhK72hegLeDnc/tmd05tO4kOj+OizKtJeVc7fYPGW5+hx/M4KX8OWzmHVu/z0nHP5+Xv7L9Es8dZUuQXSG2fFF/2nkClpM4z9WNRhtLhz7noLR4nCNLX0UdA51x4hn6PPzfA6cq16A26RLenMM3z5skWmIzWx3CYLibjlAz0yRgjzKdaYjLeVHzcl3OcpdN9Lfc21gno28Ve2HsXiAOC3151lJyf79UmknLNwEHHM1LohdjrVoC+0VWCpcZCTJZloz7xIXyva8Hoy9/j+C9/Dr1P/g3af/oDgf0fcOZX/w2XP/sUn/76I5z40+f4w7/8Gv/0v/0j/gstHmH73X/5Z5z+1S9g+S1tKp2NMfzEi0Aei9XXnHXO/SmRUoJfYzvYokCsFgfIiOjaa2VMdI0Wn6Ovv2aok2Iv9pHyO8fBbr8Lxm5FGME8Cqq6BByKGk+WW3VDIlSN/DYCfEM8VPJ6srKa06BuSYe6jaDeQVDvylVK7DKbXiDrQ6m9vxgY/NEI21gFMK40xammNUltdB90i+lmWR9S297DndS66r27HJvRLBHUlznsZRBYHSKAj/7IXe7HTnOTCuy5C357/gA7Sxv0HDil3l+twf5GKg62XOU8/YDT25b+K3aW/5Oi0pf++qhR7ujlpwr0v8QGp6vxDnT5W1pmqs3lR2yZeLg+X6Nemx1Src2uqFam9tRLYypxiJsflPNzFTfFsXf7WKO4w+33lgjI97tekRopxG7bc+x+AHoWtusysVWThs0qUpyVSdigJ561dxFYKVHOhUWlv/CWpri57DsEJ2c5R+cu7olka4xx1zZ3cMffUCDOI1hBemgP1EE73TaL4xst38toptVIq8FPV7rZ+ey8miBe6aFF6xyqvEixPeQ5c+54V9zg6uSs/JJAnM/duWRfT/freT6dHl9HH88NcRWup1F66wSKrL7Cs+t/xhPDPyFN/2MkXvkTovU+RaS5NuK9PBDkfg92pja4YWRFUDeEsZYOTAje1gZGCLrtiGBa5pd1oH3iLB452qM8NQztudEkZGIw+y4ZE6/jMFYch5k30ZgtDsNqaYQo9JWiRzKrP5ftqlQwcu9hOMka4yl2mEixwjQpSI5TnaANT3/ENSnBswtbFyn1wVBtDBC4Grgx7T5njV/CGL2/P/I6Pc6CoHxS3jeRQJsB9oF/dElMZBpEhX8vkG24cwyDIZcJ6iZSOuf8dM4/r3U7jTZ/UuSkeOtpE/DK7I+od/pcXNm44a7p7neosf8Ulfafi3d7HwejEKAbXE+g4fZXtFE4Kalt7fe/Qe1tPss/jkqHL8XStdf7pDyWY15bPLVoU/IdmknllzseQ5e/nij0ZrdvxDCmP+iypLGxaUzXQ9q4PDglX4v7C/pp88Jjcv08xvf4CsFdVzzf+dpwOMtQqC6mky0luW40/Ip0wsuoWqYtFjOsMJNsSsA3xcozJ6wSyFeyHbFG9zcKXLH75iH2SaHvlQUK9HarY6U7XGbR2/MI5q+w1fkW2z3vsNVejIWaPEyVpqM5yRsPDU7i4u9/QTD/La589kec/u0vcfXzP8Lm/GlYaevA7LIBDC9exXdfnsJXH32Fz3/3KT759Z9w/Ld/EIc5x7PHUHD/OqbySHWTIufY1NVXj7FaGECbvwA5N18mhc7e/2v0/7bJPu/0v7dVEkLgDiU1HoHt0mB6nUvrAdKpv1sZoZydV4Rjr4JUOt/S2/Zps3JISl1NIFc3EsibCPDNSZIwp+LX6b66JUV5nUHflIJDgvxhcyq9PZOU+1OCvKYkz2DnM3YuyZM6V5zjGhVoC8yrlcXGMxzqMsXBLhqr2HklYx20VIuk1JcY6uww163cLg8I1KVBbk3jCa/xhcfGB5hDvTWnwu7CAXYXN0idT0GAvpaIg3Vnel5UHOWkz4itYtkDnnPW549G2o5efqJA510nnxHtrH9Ef8Ba2N24oTTHLWapNwjqG3Nj6tXZDdXKxIF0kHK6GgFdPd0FFZfaRxpkBl3V/0463PcI6LsdL5Xz86ZsAjmX29OVknsNqfTqFEWpl8UoVqb0ZLNU5CcOcfO59zUNcY6Y4o72VFuZPefxqxFSSoPRRgQpfXSH6qHzsR66+QmaFFdnqD46SHW1BupJ0xuvBj9S6PRkL93t98/jnZsWyty1SKGfJ6BfEnVeS6uOgM2qvpFVPW0AmjU+7twgJ41xBP7qe2dRTkqy1PkESlxO0e1JvLn1PfKtvsYTo48J6H9GquFnSDU+hnDD44h2tkHcI194Ot6Go5kdblvYwMHQBJZ6BjC6cBkeNy2Q4HUHrmYmuGVkBC8rS5SnhKIjNxIDL2IwVkhQJ2U+SUp95k0UpgtDMP/SXzY8a68CsFDoi8V8d7F9nc9xxwyH0qQp1YuJpJsEdFvMk2IfS7RCf7gxBqPM6FoxbDk+9YJyVu2vI2Nrw5FGGIwxE9c93gDUEri57M4NdX3cj+B1Vs7cq12+QcsDLTR5nCa4apFiNRB4cjMbN9PVuJ5BR4CBOL7x+XWh8W9Rxt3ypLz57L6JVDWX1jlxreLWMQyFXRUl3cKhMe7fiCrv8DyNTs/vCPLHfxhbow3FYNBFsWhlCLNbXRufkdOqu3sSAzyN4EWbCVLoPfR9DdHfBQO7P/iihNH0BVzCcIQhxuJM0ebDM+a6GArWxnC4oRw99NPfUi+9zsp+LNpAktd4KmCYvr9ZgvtC2k0sZ9ljNuk6Ad2E1LmtzJ6vEsj5TH39+R3slPgqJfe3jwh8BL9K5Syax744QlWaQzsKsdVRhN2uYqw1F2KxrgBzldnoyAjELa3PYfz5b2F6/DPof/Ux3A21YXPpIhz19elvwwI2hqa4pKUP7XOG0LtojGu6pjDVN4O9gTGcdC7Cx/gi3vmaYeE5qe1Sbn6LFJAv5XlLqZ17U9bob2abQL7DiWqcvlb6mGAeIjDfq4gQaEueO0O7KkxG2HbK6ecg0G+/DcImN8nR2ikNkbN07n4/rIuVEvxhQxzBm5V6ggL1DytBwH4o5flEDeCTRcFLAx2X5Ttzpeudm+bE551tYRnuI4rpjIqd5cZ+sIpVTWqgT0DHggJ0JbGtU0bbIPaxnYqF7Hu1vjbyI6AzzHlGnVT6JkNdut53aK2odxfH1PvLNaq9lWRpjDsUi9jfYnf959jmbvf3QBeVfgT0o5efYsmd/jg3N38m2cH7W7/GwepX2F+/qtpZua/aXsokqDeRUp9TLY/tqBaGVNwQx3nnqvEW+mdrxOFQnQCdu9vZDYuViAC9vQC7LXnYaXhKUE/HZo0C8tXyOEkOW2YlURwkuc0LbE35/AHmOAqUIDUjI2s8nmajAF2UuRlGSBUO0JNzX/hV9Ibrk0onuLOtKT3RtwaQKqcn+cZHl0Vdv+9s54zzUpeTKHQ4jrcEY1HnPjr0flLlbPHqdY6gfhaNPudonUeTfA5tMZNh4Fd7chgLqXKn4yi0PYYX1sfwyv47AvoZvLT7Xpzicm4cQ6bJlwL0aMNjCLx2HjEe9/HY7T4e2Drjgb0TvGzscPMKPRlrX4W5zlUEOdsh1sMZnjfNEOHmjJKEEPS+iMVwYSyGCOjTb+KwXJ6ApbI4zL8KI6D7SXf7UoEHgd0Hc8/uSW/BQq47pun+RJbibz+dcZs2P6YEdkvMZTlinNU2AZsnAxjQ1be/Eoc2Np3pCdETAPfRhmgqwwVD8TfRStev/Na38rbxuBtopWvCJfiBMEM0emmh5eElNLufwAgrWPp99BKsuSGt+SFdS09SvmHGaCfwF5t/hFKrP4vbW7eftsSntpJa54AYHocTBzvf82IBy77rfD7fQMqem+o4IY5n2Lk6wBGpff4X0O9/EYP0PfH5eRd/PtpoNLqfJHArs+UM8x5/Lcky7/M/Lx3z/Qxsev9whBFGYkzQTj8Ld7ZzJCpXLXgiYDjKCKO0SWTTmtEIA4zTzzXBxxNcaid1Pp9yA7OJJpiJN8JqlgNWnjpI1zsrds5FZ4hLl3vhPezzuNe7QEleY0BuExQ5Fph7SbabnmG/I5/+L/Kx2lwgUF+qy0Vdog/8TS8i3M4IftYmyAzwhK+DLez1DeFrcxP3LW7AXNcQpnqmMNIxgd5lE5gZWMHW1AF+t+8i2c8XT7wc0RJhh/W34dJoulIcQkDn0nqIjKjtEcQZqIf1SdjjRDVubmP1LefkBHUGe0WYosRpM3JQE4X92hg5O9/jmfTSQGy85nP2h1jn/HeBe7CY0WzT+3dlExAl67AmRoE9AZ3P1GU1KwBXtWZBLeNrPM6WI+NsXJaXDvihUqgG3yqhLqLaNQlt3CzHIS98S3BXjb+fU2e13qhEsc62fjChEVc5BrwsNqPpUsDOeetr41AxyDdYpU9DtTWrUu9wJPTcmnp7boru96h3FktVe0vx2Fl0OdxbvqgAnQSPnKG/L7nP/9VRtvrRy08R6P9Os9P8K9l58i5UKS99QnA3Um2vBKm3ll6LSl+Z3lAvjR8ccsLaVKfMn7M6F7e4PkWd74s6L1TOz+lJjEvuPIOuqPQ0bHCHe3m0jKxxHOpyob8AfbGA08N8COqemM9TGuFYfc48cZDRtYkUa4wmmouBykCUAXpJVXVwBGiANlr8WF1fUuxafUgJsjp/eAE1HHXK5+X3TqPS/RSqORWMYNDgR4/l0jyp92Y/gv/Dc6gnAMnH8vK9LJ+j3vuS2L1W3D2N8jsnUep4AkUE84KbX8uYWp7FN8ilxfdzLb/FE7NjSDH8HAnGX+GR9hfwMriMIEdneNs6wY0UuretAxyMzGB8QR+XT17ETd2rSPB0QfqjOwgnoD+PDkTvy3hMEsin3iZh/l0qAT0e63TNVuh2kaA+S9dpNt9Txo0WucfgKQGdrhe7x3FAzWC8HaayXElt26MvzAAj0YaYJYXJ1rBcgh9LtkE7/cwNBEJWuxPx5hgIJ4XOPQj+3BFvja5gfZTdOk6K+zu69o60eTKSx3DGenegHjoDr6DuznFxk5vh30vUNaW7PegKmh5exWDUTXQF6KHc7gtR2NX2n4tC7/K9QKA/pZjCeJ6V+XiGNzu6NbqwZSupd1LufXyEwmNpd79DI/3O2gjcvT6nMCzObvriSd8uTXEnpVu9l0DMDm/cTNdNn6+fYD5MgGYTHVbm/HU5fIVn9Jvcj6M/8IJUB/qC9WQ+nZU4z5+PhNEGhdZomK64wrE73GjEVUzF0DUkmC9n2WGZYL78xIYAfx0LqZZiKrP1wg1bRR4ERoJbiT82+Sy9PFjgtlefin2OCG7MlE73g45cbDXlYLX+GdabcjFTnommdH8UBToj4Z41olxtEH7XGfcsLfDI3gY+dtZwMjCCt70DnC3soa9jCj0dM5ga2eC2jTMiPL2Q7v8Qzx/aYvypN7beRUnC2npJBLbKOQs9FrtV8QRnUsi1yXSbQLeJ2K+Op++RoP6OYPw2EDsEaD77Z4e7A+5ip+9dTGZIoe/Sz7XPJXjarGzSz7dd6i9BNNtv/OSWKxF7FQRz+jj+eFbtqjpFrfMmYp9NaWpYyfN4W4rSDd9McG95AnUrwbz7BVTs+U5Qh3TGE8zfQ51BLl3yP8pXHy7TpLeVK6p9sk6Tr640zWFWKcXz2ToD/X3Yi8SyrmqUOpfcN+eg3po/UG/Pb6l3lxbUeysDtOrUe6s5qt1l2gkt2WFv8Yz4dOyu/jhy9S9/ZA97BPOjl58k1P+9AnXege7+g2QH729eVe2tP1LvrhaqN5aG1GtzG2wDy41xqpk+qKa6cDjWROq8RhPG8kZR551FSrm9JRc7jVkC8s3qFFrJ2NQAfbVESVVbKQpQgP7iEYHcC/O5HkrZ/ZmrnKFPpdMTFcFoOE4BeQ89KXeGXCaYa6OdE8AI6K2Bl9EedFkA3073W/wuoPnReVHb9Q/OiPrmJrlmAlEbqfnOUAN0E6B6I43RTdBrD7isqHJfPVL2SmBL/UMd1LDHu9splDkrc+cM9Nei0L+RUbV048+QavQZko0+Rdq1z5Gk/wkSrn6KGIMv4Kf9KRyOfwy786fheOUqnK6ZwdH4OlzNLWF6yQA631+Azsnz8LQ0R3bgPTx77I2CmMdozo3D+Ks4TBdGYbIwGgulcVirUqC+xlCn6zX9xAWz2S5YynfDPG16FnnMj8NsXj7CaLI9+mNIUWbfwViiNfo1o2s8tjaT7iBHGEMx5nSdSB0/NtTMnxuKAu+ia8l2uiNxFqS2tVFi/yWG6RqNxFkSHA0wEHGNNlRmGIq+Lt7sr258hPF4S9ow2EnXOzvCtYeYYjDJCW3+V/Ha8lMC/wnUOn2DTu9zAl1W3tWc+Hb7a9oI6KOf1DJbtXInOyv1Oto8DT42kOS0pnsnUU/Xn5vzFAc3XYxEGJPiviIucK0EdFbbHV4nxTWuzfM72iCckfnyiZhros7ZrGYwhAFtjn4BvxZG6ecdjrxGX99Eyu7c+Mbw5sUZ6NwQJ53tSWa0ETAUuM/TpojP0fnMfPmJHRYybLBMayP/jgB9h8C2WxasKbv7isrlcBZOWtvnpjgC1wEpU1br63WZ9L+RjZW6bEyVPcFQYSyKgl0R7nQD6V638MDKjJY53G6Yws5AHxGudxDmehcW+uakzk1heMUSN03s4HnrLuJ9fJDh5YyywJtYeBko5+fr7yIlbW2jNEJCVTghjd0Z92oSsVfL99MI8vT2yhgNhGMVVV0TJ+fje3J2zkcGGpMZAvguKfR9UuIHrN6rw3FYHYbDKr5Pb6vmW9oI1LCij6afPYoeF4296gilO547/mWx6o8j4McR8OMU1c4w7yxQjGg+NNI9EzMadRub0OQp3fDsA8/QHyhVoP5+jVQBYzUy4qaebFACXmZ+GG8T/3eeVZcZdSW1Tel8F+c4WnPs976l3lqcI5D30HNdmWp/M111sOmH/Q1LMZjZ3/oVwAEuH7zej0rtRy8/eahrgL75MzFSONj8GrvbVqrd9Uj19nKpen1+Qr06s6VaGjvgpLVDgjl3tx+MNsjs+X6/AvRdUug7HS/pCSsfO03PsFmrdLavlSdgrUJzyyri7WMCeqAo9AWOSGU70xwPArk7qfLbmCRlOJbCwSs3ZBytN5xUOSkpXv2kugaiSDVGGsn9/kgDKcF3hV5BJ4OF1GAbqTz2ZO8I0aO308dG0eeJtUQfe73H3RBnuV56Qu+mz8tNdU20AeBQlgZfXSnVy8gbn7N7XETZXS0US7LaNyiw/hoFVsfw/OY3yCZFnnH9SySRKo/U+RiPL36EEO2PEar3JYKufAPXs59D/+NfQ/fTP8LgxHEYnTkHJ4K67dVr0COYG1/Qkxn06LsOKIr2Q0lSGKozo9CbH4Hp4nBMvgzFdFE45t9GSYLW6rsYunbRWC7wxkyGPabT7DH75BbmaE1l3iKwe2D1pY80Dw4SdFmNM5wHwq5hiH5WrnRIMhttAliFNz8i8CXbEcgvianMAMGNPfFn0p1JsV9Dk6eWJKvx55inj2OQc89CP5uuJFmj4tbX0nE+k+GEUXofA73B4xwm0lzp92aL59c/Qp3bSVnc7V7POez+F1FLMG9yPyFpZ72+nLF+Qs7Q2Y+9zu2MuMXxLDw30rX7XJImu37/CxikTdt4zHWC+yWU235GH3NCnN46vL5H271vZbPQ63dW5tVHSJ33+GvLUcB0rDEmCMztD0jR+57HCAG9L0SfNgdGotSn4q7JnPkQgX0wWJuAfpNev4mZZDOCvDGmEkyx+MQeiwTw1RzaSGU7SdraSjY3w93F5st74uG+VnAP2699SPlyhCpBj5vBuNzcmoWD5gwckjrdb0jDPjvHNRPQG3KxWPsM7dkhyPN3wYtgN8R5OCLIyQYPbS1hp38V0fddkRbwiDZ+VrAxMIXRFQuYG1rD1fo2wj18kPrIC1lu5uhOuYeNqiTxedipU7wedqsSlK/XkI499pPnW4I7v11K8LUJyugZKWcumW+TWt/hznYuwVcoYS3cKLf9LhB77wII6EH0c4XisJaVfIQC8yol/11VG02QVjYG3Dy3Xx4u1rF7sgGIFLAL6BnmfI5O12S/IxcHjanyfRwQ6OUsvj5BzttVrOJlBE5TnpfRN01622Dpj1LbKgGJYuUyfIModQ5zUc0owS6YfV92V5LaFKCPAWvTYgeLNXaOm9mhtURwH1JvLSgK/XArVKXauSX56fvbv1esYP+/QD+C+tHLTxnofyPn6Owat7V6XbW9EqLeWipUbcx1kTpfUi1P7B3OD6oOp3pwON6KfS63s4c7A53Pzxnm7YXYas7DVuMzbDVkYYOb4CqTsCYrUYF6WRRWCOhLRVxu98XCC28ps0sQyxNnTBKoRpPZ1pXd4CxInZtiOPY6qUEzpTkuwRyDsSboJ6j3cYMcN8exfScBvjucvdxN0BNjhgGGGa3+WHOCNxvPmMv9HlKoHN7C2ei9UWboCqMne3qCb2Nfdz8dUucXxbu9wfuyKPVqTwKI+zmU3D6FIrsTypm5xTFkEszZTCbV5GvEXP1cYO578c94eP5TeOt+i0iba7A79RUu/f6XOPHL/xMn/vWX0PrkE9hc1saV4ydx5ftzMLukjUAHS+QEuaO7IFaa4toyAjFe8BgLb6IxRVCfKgjC4uvHdO3isVQag02ZR38sI33Tkq52Uxb3GcznuGIx567i507wG6HrN8BqlCA/lWYrnfBT7BxHr1fdIRAGGMrZ8ghdL7aL5VzyiTSOYDXHGF1z7ghnR7kF2gSwEh8gCPbQpokBPkLXtJLU91CkGabp8w5w9cOfN13XMZPpgrcOx1F37xzeOSgd65zD3h+sJzGnrfdPyjhZ271vJBKVs9nbPM+gxeOcRLwynLmMPxBmIsYzvdzh7n9ZjGO4tF7v9JXEqfbT98KfSz7+wWnpbGdf9kHpXmeXNx1MRNH35HtGFDwr9iHauAzS73wy3hxTiTcwQep9OOKq2ND20eefSjQVz/Y5UukTcdexmOWCtdw7WGJlnumAlXwPrOSyqYyrdLpvFd3Hxot7WH9xn4D+iNRsgMBcRQp0n0vO9QRNgtghg6zzKan1J9hpe461pnxMv8tAW1YoqhIeINPbAf62Zoh2uwV3C1Ppr8gI9Iab+Q08IKB7WdrivrUjHji4INTtHmI97yHxtgVK/W2wUp0hc+777Zx6lkObiGz6HrJw2JhJ0KTNBNsvVydg420wNkqCCODR0rC3y9DmTnd623ZZqKLYGaxcMme41iUqkK0hGNeESfAMQ3qv4jFtXJRSPCv0Q1LjKnqMqpYWl91rY0SJH9bGynk6VwG4AnDQlIrDrny6Bs+UUjwpe1VNnFKiF5jzdeKZ9hSom9Jlpp2939XdpNR78hWwa1zlVENK+V2Be7UAHXymPtPyg0Jni1ieU1/QRK8uD2nc40YVgxmeQ1+bPCDFvqVen5ojsA+oN+arSLHnqLaX6Ydbt8Hh+okfWcD+zY+gfjS2dvTyU26O2/hb+cPdWNJSbSzeV68v5KnW5lpUa7Mz6uWpLdXC6MHhTB/BvA37w/WkzKslMvWgv0wpt3cWY6/9BXZb86Xcvt34FFv1aaTS07BFSn2zOgnrVXGakvtjLL/yx3LRQyy/eIClvHsCIy4hc7LadLotAcialg0tK0yQgppMZpibYogAxGXiAYI5d7z3R7JKJ7iznzup8P4EG/TRLUO9j41SCOAcuMJhLR0c1hJiIClskqwmFrGGSohLmBFa6O1Nfmz5qotGHx0ZWWPf9ko2l3E/J6EsZW7n8OrWKeRZHcdTi+NINz+B5OvHEWf8DR5f+Qo+F7/AvfPHEGR6FcEWhnC5fBYXf/8rfPpPf4+P/vE/4+RvfoUb3x/DhU8+hu6xL+Gqr4Ncfzc0Z4Vj7HUiBnKCMZQTgNmiUCyWRGGuMBgz+Y+w8iYEGxWxMh2wwRnypRxqE4LZ7LtKUE2SFd1akWp3xFSKNUHeWqodrML7IozpffZybSdTHcX7fZg2Mzxq1kfqfIiu1VQql+h10PvYSBzoxmnjxAYrA+GkcGkjtZxzB5N02xukgx5S9Tyv3frwggB4jg1+OOHOX0fy17l60MW58w8uo8jyMzS4fY+6O8fQ6aMl6Wvtnmwgw+qaQ1VOiZ98u8dpertiQsMWtf3BVzFEvzeea+dxtb4AHXR5n8OA3znUk8rvpLd3POSS/XcE43NSUmcPdlbgPGfOmwfOOR8MoK9z72v0+2qJbS3/XJP8s9H3Px1vKk5w3Knf4X0KY5H6pMxv0NuvKfnn9HMtZd/G0jNnzGcS0LMcscqVkFxXLD21l9hUhvr6czfJRd9+7U0Ai5A8dAYjG6+wmxo7qbHZiorgtNecha22fKw1EtDfpqArKwg1id7I8buFLB8nRN91QpS7I/JCPHHf8gbumJrBx9Yej+zsEePhiXhPT0S53MLjm0ZIv6WPvmdB2GjMETdGRZFnYLcmSc7Odyt5dC4JO2wF+45Udxk3wkVLl/p2WbiEs7A73AGrZwZqIyljWuoGTXd6C9u5Elhb+NybfduTxQWPQS2Ly/Wkzg9rIhWHvKpwqOtilJE27nqvj1O63flzcHgLl9i5OY4/fz0/JhnqRoK3zK/TJqgtQym3kypHxzNaOQrQuzRQ73uhAL2/mKD+VvGAH+FGOQXo7wNdVDNtSnPcQjdUrM6Xudw++EOGOjvGrZNK35gR1zhsTO9hY2ZNvTk7o9qc7VFvzVfwlI+ksYlb3MrH0ukuFrDc5f7hLP2o9H708lMFOkepbv0aO2s6qs2lAPXqXJl6dXpEvTyxxjBXsaHMZCcORxqVc/PBKiWQpZfPzotl9pyb4XbpyWqHvaubnmK7IV2TfZ6Ijcp4DZCiZBZ29Q2X3B9itcALy/nuWOQnyRzOb3YioDiQWrfHLD2JTqfbEIAsxVt7KMYIg1H0hM0rmlaMMYHcGD0RHLJiJODuJKBw/nkzKW4OZWnwUxbf5zE27oBvJji0ckSq3yW00G1LgC5aeEwt4Kqcpdc9OI8az3Oo9TyPKg+6/4Cd5XQJ5udR5n4R5R7aeHtHC0VOZ1HgcBZPbc8g1fI04ky+Q6jBcfjpHUeI6WVE2JnB76YZHC6cxsV/+7/wrz/7D/jFz36GcwR4/S/+CJ1P/w12F07iiY8L+l4mopdU+uiLCIzkh2DseSgW3kaK5etCcbBiJFPsrzjscUpdaRhtiNhzm6BOG6IRUt28seHGwdkMnt93JAV/W0bdRhIs5eycI2gXC7wxkWonsOomaLYThLtDScXTY6YI9KzKJ1NsaVnLxoAb49iAhvPBlwlog2FXxV51PM4M3YGX0enHZ/Q3MZloiy5fUsjhBvS65Yez+Nc2X6De/XtJc2Or2O5AXYlhZaCzKuZ0NC6Hc2JauyfBnm75fRzZOhpNmzdS/vw5e8RW9hypbS0ZdesgCHOZvp02AD2PCOZBF8QBboQ+ZojL6fQ3MRquJ+p8wO+MAne2gY25Tt8rbX5InU/GsRucHlo9Tyvn56TWZ5JuYCaBriFdi4VMul5PHbGS50ZK/RbB/RbW+G/1qRPW8++IQ5wAveAutos9pPy8WxkqiWWHbInK89gMMwIV26Ie0jpoz8FG63Ms1TzFRGEM+nJDSaUHoSHND3nB7gi7bYucIFLfnrdx18wcDwjkD61tEXLbGXEPPBB52x5+JpcRbkp/iyHOGC+Ox3JFslJyp/8z9m3nIJbtMvZe50a4FCXXvDJGzs13OGmtNJiUdrQsVuWHtQmS386NcKycGbYCbm5sY4g3pihHCAxdBjTDv1Z5nCxS5Hy2zgpd3UigbkqgpdkQEJBV3QUCdDVvamRzkCwQV7dkyNm56j3Q6VqpGfh8lt6epcCdx9q6nynmNAz0fg3QufQujXEM8/chLs2ARqFDRtl6lHL7kgJ0rLxPZptQ5tBlzaqwNbcH7nTfWphSb9MHbS1UYHspG7tLAdhZMfjgFifmMgz1DwYz0hx3RJGjl58a0P9S8XTf/j1B3UC1sxZ+uDZfo16enDqcH9w6mOlRqcREplkZUxvQKPNenjvXwLzjBXY0o2p7zaTQG55guy6VnmQI5KQUNkgZsL80h7GsvgrASuEjiUnl3PMlUn8Lzwjk2Y6Yy3LATAbBJPUmqUsLjCbyyJUpAeIaLRMMxxgL1AdITfWzExgpsq5wfRld6wy5QoDWRrWHklte6cmWrtriz95KgGAvd05h6+CZbAJLq7/SJd/iSyuAk9kM6dZAgbr3JQE6276WuzPYL6PUVUuiUoscT6HY6QwKHU6j0JHA7nIexe46yHPSxhP7y4i/eRFRljp45n0H4XYWMP7qE1ofweiz3+B3f/e/4l/+w9/g7G//O8787pewO3sMMbfN0PM8Bu05kWjNCMRUYShG84Mx9YJAXvwYS6/DsCTGOw+x+NIHswW0ESp9jNWih5jLdpHYWX4fn5/38yhWLCnuDEeMpzhiJusOXd+7Mv7XQmp6IsNFQM/pdVMpDmj1voDeCFP0hhsRvB0wSqBm+1hW9ly6n0q+iZk0awwRHJee3cZ8hg3BVgHnGDv1hRphigA+QV+z4+F5UcecVLZAX6P3sSHeOX6L2ntnJXCFfdr76G3dAXpSYmff9F4GdcBFgTkr9R7vU+JGN0gbM/6cfcH0teh766bNFxvadNP72cymmy1bJaL1pIypDYVckACaifgbBG0zjMVcE7/2YVLt4xFKN/twlCnGacPD398k/T1NJZhIaZ9H20Yjr2KWYM4NhAuZjlikzeQiN8IRzNcK7mORNppr+a6YS7PD+gsvgri7KPP1PFdsPHfBXskj7JUFyzn0IXeLswptSxejlcOGGKiaEgmIGeKeuEn/HxyPO/smHoMFURh7lYiatGD42ZsjP/AuXoY+gK+9NYKcb+GBjS387WwQ7GADTxMD3L10EgFGZ/DktjGqIu5jqCAGi6UJ2GB/h/I4bFUlYLc6QVzqWK3vc1McN8TR2mEDmXchdEvglka5WIlH3a+Ko1tanH2uGWfjx4kFbEW40jgn0E39wTDmgwqPV+bNmxJlqZsTBdhclVB3PYeqq0DZzPDHfdjkpCpucjyLLvfpbe2kzntyNPDmpZjPYIDhzV3ur35YMsZW9iFHXUxnppsI5q0fmuLY710JbVEUuoS0MMzfh7SwOlc63VXYXtyhNafeWelT7y5X0OJO93DsLTtjb1VLzGV4dG176T9ic/7HQP+LI6Afvfw0gc5OSAfrH0nq2tZSvGpttkW1NDp3ONO3dzDWqhIDmSHOPa/Cfl8ZKfMSxbO9+xX2O4sE6KLO2UyGY1JrU7FVk4ItAvp6eRQp80iJTJXsc8k998USqfMFesJcyHHF7FNnSVXjEbUxemIdJ7U0Rk+uo4kmmEw2xUQi25mS+oo2oCd7XfRH6NC6gq4QBcwMaG6Ga/bl/HItAvIFNDzSQRPBnEvtnKzWTmqvPUhXGuFaCBDNpCj5MfU+l2XuvObBJdTcv4hKWmwDW+pyWgxkink5nsSrW2fw3PJbZJl9iewbx5Bt+Q1Sr3+NFJNvkGR+HKlWZ5B/Rx957tfw9I4xkp0M8fS+NeIdjGD//SdwPncMYWbncPP4n6D7p1/B8JPfwPCz3yHCVh+1CR4YeRWPzuzHGH8ZjpnCIEwT2BdfhWK+KBBzL/3EhIeT6RZfErzTb0mG/PorX9oM3aGNkAtdwzt0/W6Jt/0EqXEGN/cJTGY4Y7nAU1z3au5rYSLdBTOZzvR4F3GSaw+8irYAXUylO0mZfjTJiq6zCRbYQz/TCZPxtOEI1MYMvX+RVPpMkgX9DvTpdUfaONwhQNrK/DbPlbPinkywIDVL3wttMBo9z0oITL3rCXT5XJAyen/YdYKovijrLtoE9PhpSyRqOwOd59BJpQ9H0u+bNid9/pcwFGYoZ+KdD09LA1wXbQwaXL9Hrcu36PQ+LcEq3d4nJe1tOtla5ucnogykOW482gi9gfS7JiU/GEqqn5T7DI/x0eaQoc/jbX30/tFwemwUbWro724+3U5K7yvPnAncHljNvydld26OW8p0wHqRN9ZfemKj4B62Ctyw89oLu6W+Ej/K58sH1RGkcGOgrosg1UrKlVQrN8jttz6T/5ONhhwZS5wsjMRiTTY6n8cjwd0eZTHeqIzxRJiDOSJv3UCgjQm8r1+Bg9YJXPnz73H983+Dt/5JRNHfS/gNHZSHeqDvWQTm3yZgpTQOK2Vx4sa4S6qcR9V2axjSsXJmvsOmMhWx2GHgk3LfIzW/y8qdTWV4Nr0mXhrhNl/708/3CJtvAqUcz93pcnzA9q+ixqNwWB0pZXblln7GuigCe4x0r8t5OMH6kHPSWX2/Bz0pe3ULq/JEcZaT+7ThUbcw0An2bSlQd2QCXdmkxJ8TrEvEWEZG06TxrULTAFcJ1TjdTnASm/K6hLiws9x00w9n6KLQe5Wwlh+fn3NIi7jFzRLMFwjqnJE+v6HeXhwjoNep9tYyeboH+5tWONz4AeYflPkHY5kj+9ejl58k0JXUtZ2d/yylpe0lK9XafLp6ZbpLtTC8dDjTu3cw3qaMqI3UC9APejki9Y3AXMbUNDavO42syjPkzHyrRikDrlcS0Dn/vCJOyu3c4b7yOhBLhX5S/p3P9xD7UlaaEgWaYYfpNCtMp9ykdYNUpLmsUVJUwwTzIVLmA1xKDdMhmOugjUfWQq5KRztDvZ29yUmFd0WYoD3MGB3SKGcsHe2doVfQEcSd8Dpo9bssirWZHeXYJtZHE5MqYSxnUMEKX9Z5KbW/u6uFktun8VrArqj0V6TSX90+i3yb48i48TUyrE4i77YuXt67hjy3a8i5a4zcuyZ4evc60hyvINzkLKLMtJB3zwTpTlcRaa4Fb93v4HP1LEpD7DCY64+p13GYeZuEhTcRmC0MwXJZPNbKozH7nK+VF916YoGrG6zUn7nJHPpKsS8p8duYTLGTGfTJJ3cwm+uBObquI5IZbynNcAt596TprT/GEnN0X3LnCbyDkdfRGXCVHmsrvvncxS6d8an2mCWFP08Q6w28jBGC4UKWE71uj1GC3wSBfpogP/f0LkbCdDEcqli/8u0cd9XT6qfr387++gR2Tjpjg5rBKFL2jw1kFr6dgM6les5q77h/AgP+58QxbuixPiYIxgP0+2XFzbatrfe/lYAZ7oCvvfMdGtxOopfUOTfNdT04JWNsvPkYiyA409/HFBviBNHXvn8KrbSZGKfXGdis0Cfir0tnP4/2sbEMn6mzDe5sigVmU+n6pFliKcsea3l3SaXfIaDTz51mgw3OPS8JInXugfX8u9gu9MReKY+tBcpc9u47f2WUqyaUIMbnyaTW6xVjl4P2XOx3vcRW20us1mVjtfYJZsrSUZfih4Ykb7Qme6DQ3wFP7lsg0OIyXLS/h/Wpz3HuN7/E2d/8Au56J3FP7xSczn2LeLtrqIjwQmOCN8YKwrBYEoe1iiT5v2Og71SxI5zGGa5ac6ZOa4dAvlOTROo8WYDOjnFsEsOhP5tsFsNz6SXBEpf63r52VxrYeJ48RsxnOIRmvywIh5WPpdtdVRcpZ+eqBlLgHM7C9q7cGMiQ541NfTRdiwQCOUG8iUvycQRzBvgTqDuzSMnT4zsJ5D2kzHtzoe5/AfXwj9LXpPmNS+x0O1qmgF4MZqp/uP1QdtdAXQJcODud41X7oGKoa0ru78/QVazQBegLaxCgczDLSrzYvh5ua+Ng5yOlw/3DDPpfaUB+1BR39PKTBvpfY5f+cHe3viWoO6s3FnLUy1MDqvmhtcPZnoPD6S4cTrTJ+TkbyUhXe3cxwZwd4X4M83RR5Zv0ZMFNcGIkwzavlQlyf5XAxB3uywT0xUJ/mT9feO5FoLpP8HHD/DMXzGffkrPzGYL6VPJ1UnnXMUbKfDiWLUqV1RdpiN4IHkczRl+MKXqjzQnchlJO7440lTG13mgLdMXcQHesBXqizejtxpKDrpTb9dAaRKo0mB3mSKF7n6d1UTzby++ewTuXk2Lv+tb5e5S7X0Cll46sCnceY2O4n8dr57O0CPKuF/DK+QwK7L9H4e0LeONlhKrAmyj3s0C5vwUqAm3wxteKwH4NT25dRbqDHlIddPD6kRVqI11Q4m+DTGcjFD2yRnfGA4wWBGOhnE1lkrD0NgxzRcGShb7MOei59zGd44FpgvVCwQOskpLibveFPHcsafzdx0ktj6WScs5yo02TrzjJMdCHE+0wnGyPiQxnUfKTtHlaoo9b5Ga3FBtlJj3WmjZVTppGOCsM0KZoMs2RAGctpeohAvVsug0WaSPA6naErj/n1M9mu9H7jZX572BdGUfjLvK5NGvZHHCjXeuD8+gg9c7xrf2RZuj0vUiqmzZYDy8K0Dn1rO3ecSmT9/hooZejWh/riYJmoPcG6oh65yz2Th/F9rXJ/TsBNpfje/0uiKMcz45P0qaPFfpkrInY3LbSpqE76Io0us0kmcn3zUYzotjpb4ktXqfp5+Szf846n8+wFqizvevGC3csP3MUdb76/K6cQW9woAkp962X7tgu9pQZdJnX5hGv8kDsVwQSyKIEXIek0A/qohVXtIHX2O99je22F9hpycFa3RP054VjMC8I7WmeqI9zxdsQRwSYn8f1rz8iZf4FjEiV6/zp13C6cALXvvoDbnzzMR6b6uKFzy28C3ZBQ5w7Jopoo1yZJhbLkoVO/2fc9CZd63w+XpdMME7UqPZk6Xjn8bXt8khslnBcaqiodO5E3+Pcc7F95cXn8EnY59Q4LuHX/OAeJ+Y5Fcoc+iHBnPPQD2U8j8BdH6c01tFGRlWrqHkeaxOgs1Jnxd6aBnV7JtTdTxWgd+cA/QVQDxZCPfQWGHmngXqZclauSWLDiOb1MY1jnKxaYKrxR4lsrZou9/fWsJrmuKUhyUZXEtc0Cn1rUUUiZouAPqPeXmphd0yCujv2NrWVkTX2cMf/8iOI/7ujZrijl58y0JWRtb29X9Cu9Lxqd/Ohen3u7eHy5JhqcXRDtTB4cDjbq8ydi287AV3yzjmEhdQ5d7a3KEAXNzgCOo+rbdKS+3y2R6pgrTKOgB6J1dIwrJaESK73MgeNvPTG0gtPUuv3CTB8lk5ApyfP6XRuyrKQMvtw7DUMxZtiiJu74m5gIOa6zKf3c0QoB7VEXkMPqUweT+NbGV2LMkNPnBV6E+3Rl2SPbgZ8xHW0hRiSKteVRjk+W+dUttoH51DjxWY0l9Hko0P3L8oMevV9Uud3zkojXKXXFVQ90EPZvYsE8tMovnUaRbTybE7j5a1zKHLSwhtXbZR4G6EiyAY1Ec6ofOyMEj9blAY5oILvB9jjuYcZct1N8czNFCVBt9CV9hBtCe5oTnqIwfwwUum+mH0ThaV3pLi4ulEeI4YyS2/CJHZ2loA+meVCQPcmwHtglUGf4y7HF7IpIoBz6Xwk0QYTnML2nP286XPH3xQXuYHo66S6XSRbfjnfkyDlivksB7FA7SXATbMnfLyFOMMpZjLKeBdHh45EXMEE/S7mMrjsbiWubax6Jwjac+m20mTGrmz9floYJBgzPGdSbTBEv49WUeIKxEd4dJBz2X0Z5troeHBWYN/ucUI+tseH1PbDU+gisA/S5mI0in6nDOxAbQlgYfi3epxFL6n6AY5Cpc/FI2d9pNBHQi7KqNoox8jS98umNxw4w2YybBIzHmMoGemDoXoYjmDv9usEcGeMJ1gL8BcybTCTbIGFDFus5dI1ynYimDsQ2D1Ega8VPsBGoRe2ih6QOr+PnTcPCfLByuhXSaCodVUVqdbGOAVoXHLueQ7VwBvsdxZgl8vuLdnYrM/EEIF8qjgS86Xx9DuPQd/TR0hxMYTNdx/BTftrOJ3/GlbHCeAEeA+9b+FjeBq592+i6KE93vjboyLYFt3p3ph9HS1phrv1GvCyK1ttPME3UhOoooD9oJ7BnoCtd+HYoI31Zmk4tso44zxOAT4rcjaHkTI7CVUeHWvPh6rzuZi/cHKcqjFVZsUPueLAne4yZpYpJfu9ihAcyBx+GAE8Ws7WGd6s0pXZdYJ7bZzS/c6Lz9mbuRwfK2V3NZ+jc8m9N5/ATip96DXB+x1U4uOuLIxVfPB1V4/XKaYyE+8DW5RYVdX7aFUCOUSlayJVCejqpRGNuQwBfXuR1hIxe3mP1hp26J3bi6WqnSW6KCtWih/H7s8142p/8X72/AjmRy8/7XI7z1gesN3rhqVqczH+cGW6QbUyPadentxRLQxLXOrBGM+e1ytGMuLZTgqdG+F4TE1j8brF5faajB+AXs1AT5ay+1p5jKSrrZIaWHkbREDnsTUfLL30xFI+qcyc25h/6ixmKdMZPDOtOMT1cSALKb+hODNSkNcVUxl6IuaRNblPAOmL4pK6oUSodpKi6wrTl8CWLu56jzBDe5gZWkOvoZ1Wa7ChdLqzK1xLoCEB3khG2FqDDNBCb2NDmXJXUumuWqhwu4BSAnrRrVPS0V7sfA5vXc9Lhzur8xcOp5FleRJPbbXw/DaB3k0XZY9MURVijcbYO2hO8EJVpDuqaVWE30E1rdrIuygJtEdVhKu8vTbmPlqSPNEY746erABMFoZi6mUQFkmdz7M6J4hvVMVh8XUwFouDpLudHfWmn7oqI2tPXGWmf5btcp9prGDz7ol3+0DMDZnnZ6Mezr2ez/OUGFrueufglpknLlh75Yvl3DuYTrHGCBvSxN/A3BNHjNHHjXGDHF3TsRhjOXeeo03WKG2kGN7zpNQHQnTRH3IZ43HXJKFsKs5YyuQjoToYpN/BdKIFPdZZgl44VIUtZ9m0ZjSOjVwMCOqX0RWgIyEtnazSvU6j79FpDAZqSVd6m8cZDNDnGaDNQQePpgVdJqX/PTp8aXPgz+fe+uim285HWooF7IOTmIjUVc7PI43lTL3F4zRtPM7T92eLqXhzOfsfYIOiECUalUfXhmmDOJduJw1/MxyRGmuMpfQbWMqwwnzqTayxxWvRfVqeAvat1z4SN7r11g+7FcHKmTqBfodeP2SYc5mZu71bUqDuJPXZkyfZ4Idt2ThoeYp9Arp4M1QlYeZVJEYL6H+iMgWDOQEo9DZH8QMzvPWzwksvM1SH2uFdoA3KguzxwssCxT7WeOtrRX9jjuhI8ZBz+NXaDOw1ZBBYM7DfmKz4thPYGcoqniUnAIvtax2r7DjFy51Az4+Rx9XESae7qo4b+NJw2Jgu1qyHDHEBOb1NNgnc3R4vSp0/F4P8kKB/wL7vDPOyEKj4VjPCxoYzatrUqHlzw13s3BTHI318/s7z6txrUEkfUx1Kip4e06ZR7bRU3BjHpfehNwR0jYkMq3JR5rWKMxyDfLxBk9BGQJdxtQ5gtutDqR0LgwTxYQXktMBreVTJR38P9d1llXp3dY9uV0it96m3lopVuytB2F81kjN0RaX/9ZF/+9HLTx3mfB70t4Co84uq7eWH6tWZF6rliQHV0sTa4fzwwcE0q/N2ZfZ8oBL7feXK3HlXsQSwsGf7drNm7rwuk2CeRoo8mZ6wEhSXuIp4UuaxWGWHOAY6x6W+DiKY+2LxOavKu5gjkPOaIZhPpFrLvDnPl3MASx/Dm7vaaQ1GXMVgpL5mGWCIz1jFYMZIQM4Q72SjmFAGtQHaNKlpDO/mgKtoe8xn6ib0GLoNM0JHKN0Pv04bAWMBPXe41z/URRWp88p7l1Dpro0ygnoxj6fZn0KO9UlkWZxAru1p5JAyz7U7jWzrM0i7eQrpNueR5aRLT8amqAyxQn2EA1pJeXdn+GEgJwy9T/zRnuiG1sR76EzzViCeQLfpgWjL8EfP0wB0ZjxCfzYp9OLHmC0KIqAHYK7QDyslpM7LImgjFELXMFyaDJeKAyWshc/JF+kx7IPP2fFs7zqXdVvy0UcJpMOcmkabnbmce1gtpscR+CdSOEveChNpjpKNzYEb7AEwl+mIYYI6f+xMmj2pdAt6nVQ6Xeeh8KuYJ9APESh55GsmxQpjfO0fXyHgGyold1qSVBauR+Cn+/S1Z+hrjJGK7/S5gCrnb0itm6IvRDk/H5TxMtqQBdPvxuuMjKYN8Jz7w5MYpU1BO72NNxSDYVfED57DWdjKlufZu/zO0/dkhDZvLVLuF8V5biDwAsYiLmMkykg2DD3+5yUWdSTSCLOpdlJeH6SfgxPWhki9T8XS5oL+jmbob45DV2YTTWUtpRPEn9pgIc1CvNs5hGXzhTs2Ctyx9vwe1gpIrb9h33Zv6YBfyXHBJqn2/fJgxTmtPkEAJmfEHQQnBlRHFoH8iTjH8RjXQUeemC0N5wZilf5n1gjKowVhqI1wREvMbXQk30cnrfowB1QEWqHkkQVKfKzQFHuPVLkvBp+FYJI2AovlKdhszMF+ay7229m0hTYQLVkav/QMJemMTV2qozQrWgN6xTjmgJS1vJ9u2VDmgEvsBPQDLrOzHSw7yrFta3W0qGs2mhFP9kZlLl0a4RrYvz2GAB4npjJyn0vsPGvOHfDNSoc7z59LrjpvOhoSJZlOXOj4PJ7L8lySb8tUctTZ173/vaf7G6X0Lk1x1XJWjukWpczOdq+zmrnzD4uAPtet6XJnh7ghgviIdLqrNUDH2rhSepfmuHkGu4rU+g6p9BmCegt2l7Kwt+SK3fXvsbf5C4DDWVb+X6X3I4ocvfxUutp/DPN/Bna/oj9aB9XGYqp6ebxJtTA0dzA/uEPKXHUw3o6DYZ49r5azcxlVe19qf28i05SDrfonUmJfJ9WxVqFYva6WKx7ka2UK0FdKw0VpcvznXP4DzGS7YZrgM0UgmsrkdDVbDBEEBkmR8xrixWe3sSak0E2k650Xj64x4Hnuupdn0MOV8/HOsGsKsGl1Eajbw0zQSgq8NYQg/5gUehjBO9IMXVEWotw76PW2YGOCvSHq/QxQ43MFtbSqvLRRcf8SSl0vyFn5G5fzeOVyAXm2p5B98ztk3jghhjKZDHLL08iwPotsx0soum+MNw+MUOJxFRWPrqMpklRUwl30ZHhjKCcQI3nB6Mv0IXj7Y/BFNDqfBqIlMxCdOREYLozDWGE0PVEHYfJFCJZLYzD/+rE0x62WxSnVDdoMLdJGaPVtMK0wUuaBWClW0uq41D6b5aQJs7GTbnUGPKfW8RjbULyl5KhzI9w8rf4oc4wlO4rl7lpxgIyszbCRT/JNcexbyHIWF7VJjrHlJrkIfVL1lhhPtMZwpKGU2qeS6HdFv4OxeDNMCNSvCyAZsGORrJKvkSq+Ic103FTHVrF9jxVf+L5gji7VF5/4kcjrMoI2GHxFATqbvITpoY8UfG+wnqhq7rIfijKTqkCnz1mCtWJq0+mvrQCcFP1w8EWZR+ckN55d7ws4J197LNqENhemYu/az1+XPgfDnKsJvGnhfPPpBBOxgF3NdsTWc9rcpJhhNskMixn0NjaReUnX6cV96W7feuUjpXhePKu+ln8XexVhBLtYgRKXkrmzXd2aoqj0jqekPjNlDl3d+QyHPYXYrk0Rb4bd5qdYJ6BPF0eiLdkT7Un3MVkUTSsGfVkBtAGktyV6oCXeE50pjzCcF4rxl/T+lzFYKEnCSvUTbNZmYq+JlHR7jjixqdgPvVE5r37v2Maz4gpQUwT0agIyl+Z5nE3ALiX5BLGoFUtWvmWXu/pkgfshbRC4AnBAt3t8Ll8eKv7u0u3One81UQJ8CXh57xYn6jxByU2XUbekD+V65RolSun9oDZSNhv8MTy/zteLPdxVfcWa5LViZUxtsAyqgVKohirEx101xuX2JslPx0wnQbxLgfmMZs31aDrdh6BeHiYej0DF42srYzKLDo5S5Zn0dTaYmVOpNrhBbmkNO8sj6p2VUvDo2v6GGQ63vlU83Xf/gZ4zf6Y5U//LI6gfvfwUQP4Xmj/I/yjKHLtfQ7VrptpZjT5cmalQLQ6NHc71bxxOdx8wzNnidX+AYN5fQcr8rcbi9YXYV+42cyxkNrYanmKDFAYr840qUucE8pWyeKy8i8EyrcU3YZh7GYCZfB9M5XhiKvseQfwOJtPZ4ewmKXILOR8fTbYW05PJNFr0RDmWZid2pWO0RpNppdpjmL3KY5Uz9D5Sk+wE1xNtiq5IE3RHsjucJXrZMY7WQIIN+hNt0RNrhY7om2iPvIHWxwz5a6TWNbcE/LZgI1LyhqgldV5J6rzU/TxK3QjobpeRb/s9si2PI4dAnmt1As/tTuK5DS16+3NS7VyGL/fQQ63vNdT6m6A+6AZq/M1R9uAqagLN0BrnjNZ4F3SkeGIwN0SMYwa5EYoAPkRPyiO0OrOC0ZwaiGG6P/s2HnNvosQlbulNOBZehUuM6gZPDciUAPcfBGO5mBT8Cz/M80w6AXml2B+LAnVnUePT2e50LUl18uhZrhv6eHwt8zbB3E062xdy3NEbaY7BeFsBPV/34VgL6UyfzXDAEp/Hy1y6hTjGTadYYJCu81TqLXGOYwU8ShuuiThzGSsbjyLgx5jKmBiPgXGX+gABepIeMx7FwSe60njXRkp9gFQ5n1/3+Cm61PLRAACAAElEQVThKeO04eh8cFY62geCLkq3OpfTWZ3znPtIuKEo9P4wY1HrvQT3bp5WCKSPpU3JDP2cAwGXZBZ9kKNhQ3WlC3+IoM7+7xyLOk0/Qz/bBNNGYJg2G7NJ5gJ1sXmlxUcIa3lu2Mi7g/nUGxLQwuX2+WRzrOe7kiJ/JCBfJUXOrnEr2c4KzHNdJUdcMUZJVUxZWLHyfDXPoXPzF8OLDVW4/E7qfF9K7+wcl4ed+lSslCdhriQZc6WpWG98hsWaZxijv4X+3EhZA7QGcyMwTpvAiRfhmCmOwdQL9vmn/7HaLGy3PMdBVxF9vlzFiIXNWeo1Cpm90dnApTVToKyknaXL2beqKUMa2UTNtz2jjUCOdKgf8sdLKEohVJxVzi5vXS9w2JaDfS6/88+o2Sgo6Wpxyuw9Q5lhzlax3DwnUawEfIK2zKU3KWV3xUiGPo/konMoS6pmpI1L7k8Vdd77QmP1WqTMobNCZ6gz0AXqnLhWQ6pdU3YfJ7BPkFqfaoF6uk1Tfu8CGPILfR8MZpRzdFLtDHg+SyeVDnaNE6jPqtSb8zvqncU59e5Km3pv9YVqfy0IB5t2ONzUOWSwgxvlWATxGJt0vR9B/ejlfwjM/71yDsQjGDyKcfARDvfO8x+ramc5XL0yXapaGB0gmK+oeFRtok2a4Njidb+/XBrhdjuLJet8p40d4QoE6ttNpNDrucmHS+7s356JtcpUAnkcgZyA9DoMC0WhBJ9AzOX5YCbPU/K7p5+4SoDIYLw5hmmx0xmDfFpG1xzolhQ7vS4hIwz9JCuB+VACLYZ6grIG4iyls707msDOHe1s98r3o96/7SZ646zp1ppgb4UuUuXtBPEOLruHmhDMr6EpQB9NgQZooVueR+dAltdOZ/DWhW5vn8UL25PII5i/dDgjav3tHVLu/D4+S6fX3927jOqHhqjyNUC1rzEaHlujNdZZVluCm5TYOzN80Ps0QAA++SYZk6VpGC2Kxwg9SY++jEQPPWG3Zz3G2Ks4LJTSE3VFApbeRdP1C8FSSThWSyMl2Eac9t6Fy7TAyttQGU/jLHl2kVsu8hOAs6vcYnGgjAOOcNmbAD6e7kgbHCuZKljI88BygRemn7rQ9bTBdJYLVl94oCvEgNQ9B7/YYp42Bsv02HFS5WzWMh5jTGC3xXiSLSl4F4wShBnKDOOxGBNpOBshcE/R44fCrxDk9aWJbYgAzOfzY9HG9DHmaPfRRl/QFWma63x4ioB+SbrZB0PobZxfTovT1cajrpEyNyKo0+cheHf5EdDl/mX6euwzr4shUvbjqY5yJj/As+QRV9Hrz37t+phgj3vaKLJC59fFxpa+l0ExmDHEBPcFkGrnDvfZVCssP3OW4JWFVAuxfuWENQY9q/fNIi9sFD3A2nOCedZtrBLgVwvcsFX8ELvcBEaA2+Nydo1m/pxBTspcwM4GLOwU152rlJDZ8YzBSZA87NYcWXW8oP+xEuz1l2K1MR8T/PfxOhEzJamYepuCMdr8TRTT30p+BGZeJdCGLwHzb+KwUvMEWy35MmWy35iplMEZuJr8cTWpdQE8Z4+3Eah5E8GBJ5xuxm5skmbG4HwhJjDyvXUrnukq/tj2PFL8BfR9vlSA3vn8h8/JP0NHruSbs+qXBrmaGI1ij/2h6Y1L6K0ZCsibNd3t7NHenk0fTx8rmx76vlvpenUogSziLsefnz3p258pr/fShqX/LcG8RMCuGlZUunqkWsCuolvVaC1UDPdphnqrnKe/Xwx2LPQA88pSz3M5nmfTxwTsKi6/c1jL+vSBemN2Tb0xN4HN+Tb11nyxansxVc7U99ZcsL9ugIPVr7C38S+awJa/ODpTP3r5H1Fe/xuJAdzf/1cc7H5Ff5hGqq1lT9X6QjLD/HBhcOBgpm/pYLp752CiXYxk9odqSZ1XYa+3FPtdb2TmfKftJSkCLrUTzFtpsUpvyCGgE9Rrn5BKT8dqZapkeC+VRGO5lEvt0QQkuv/6scyfM3BmnrmTSncRlT6VoVHladaYTKWVZkXK/KacpXNjnJTbCejjqazab2EkhZW6DYGdly2pcGsMpThgOM0RI6TWBun1PoI5n5XL2XiQIVpDCQLRlqTmLQjk/HYjUei8GgIMUPtID9UPCMxevEidE9Tf3D6NkrvnUOJ6ieB9EUWkxoud6e13zuMNKfiS+7oo8dDBO08dUvXaAvZyD1L5PtdQF2qL5pjbaIx1RX3MHXSkP0TPEx8M5odikp6o56uzMVuRgenSZEzRmqt+hsl36RgtJJVemiiqfLUqQaYDVrjv4E0IXb8QAnq0nKFz+Z3NergUv1DgI+foS6Tc5/Lp2ubcp1tvLL70xTK9fZIDWdIc6PrZ0XKQrndOZ5vLorfThmmWfhcbr30xS48bjL5BMLTCDP1O2LBmOt1ORtC4e50BOUbXe4aUPs9yc+wqW8AqwFfG2IYZsvRYPiNnMA8E6mA6la1WLUXR9wTpyQhaX/BldD06K2NngwHn0R+gLUqa4d7lc1qUNQO8l1R+L6lvHnPrIUU+GHpFNhC9tCkYCNEXT3qemR8IVjYG3A0/wspcZs4t5PHj9PczxC5yMabKqB3PoieYYT6F4J1kIeqcO9mXn96S7vYZ9kAghc4xqSs5t8TmdSXPFYu0MWKTma3X3tguDcTW2wDxMN96zWDnDPQwGdtiN7WD2ijsM9y4c5u7tns5MYyd03IJ7qR4e/JxQCA97HuFA1KcewNl2OoqIaA/x1LtM6w05Inf+yrdrtQ8xWJlBpYr07BYlizOcMu01qrSsFmXib0GLufniOIX4HK5mlf/K/o6LxQ40xJvdFnP5JyavdUlZ3zgjaKEezX2qgRwdddLgnkxDntf0Sqm970i0BeTgs+hjcFTafCT0r5sFNJF9UtKGpfRxSY2VRbDnG1c+chBXPOkkpGmWOLy99DOdrCpOGDgi298umxIePPBX+OQYH5IG4hD2nAc8tfvY6i/I6BXKjAniKtHa5TFJfjxRgE6ZtqB2U6CeacC9TnNTLqsPiWw5X0pnpZiOsMuctME9Zk9rE1vEOBn6P4AqfYW7n5Xby+xv/sj7K9ew8HKJ9iWwJaj0vvRy//fqpzPffb+GQc7H0sk4O6mjWpjPlS9NptHMK9TL40NkTJfOpzs2DkcbTqQBjiBeSX22USmi8NXXmG3vUhmaJVEtVwF5HUE8SqCeEXSh7VekSwdvMo5ehzWeFXEEtTDNaYyBCBSiAyVhby7Mn/OinycFBEHjHCH+1iiqYB8JJ7d4qxIqdsJxN8vhvYgqcvBJDv0xN0UJT4Yz28nwJMSlbjUGEt0RpqjjaDdQkq8haDeSmq+PcIcreFmaHlsgiZ/AzT4GaKBbqu8dVHleZnATMB2ZXV+BqVu51FKoC5xp3VPD6VeBih7oE+3V1DxiNX4DdQFmaLsvo6A/vVtLby6fQGl3tdQG2KDlnhXUuie6M/yxcCzQIw8D8N4cSym3hHUq55gsfYp5irSMVPxhKCejYWqDFJjMZh7m6BpMEwUY5n/h703jYkzTbNE/1yVWqVW6/4aXY1Go9bVaNQatVpXratWazTqH9M91V1VWVVZlZlOp53OdHpLpzPtdC7e931f8AI2GINtFgNm8cJmwAuLwWxm3yHYAoidIICA2J57zvN+2Kn5c6+ms+8vkF59H0EQy2cc5z3Pc55zyMo1R74iHuB+XbwVV7V37i66iNvwfQkYOd33OOIGps5xNRvY60jOEXEVXdC8eRuuVb86x+0RT9FpLdFT1T6WuVdn2n2PD8swxXL3dsikqr53igP/LpMMy7m7DUBI5Tv+bXAfjnux3z4MkCTADidu0nQyjpjZAJ6DAPSusyu0Dz6WvEEBnbPtTDprO/2R9F5fr9nmTFCz0dL1/IdipykMAJcxqAT33qufac+d1qwcayOo91+n4G6D9F1fi99ZqY9Lu9n+yytkUDcJH4KVrzMz53QbvLlO7z/InHS8Pq0m4G/MQXtaALkJYflRZ+3d2bvU9tVOMM/6UfwF+2WmYDeAfodehxmOqj09ralqPrD1+fKzOqa2+DJOZ7PZO442GGFYqOa6hGmNyv45AU1nrvNNKVnBFCDVX6a53pGBKmyaX8hcW7HMtJTIbHu5BFqKxN/0WGaan8gs/q/NNj+SQH0O/n/dU33F9Itk1abQsGm+Nk1Cb9ibL7Tyw4veMm0Fd4ulCwGf9+ktMr3pwecmkpTfa0RpobFVBWBGusvAigGgeKwoS++8HwEVrDxKoAV7jrXmG6bdkaebiWj7Q8OsO0zpXsfQWpYsXu+/C2BpzTZWr0sbC14busZ15L1LVuuxglh6S8zGpJevp8xi6cxF52z6K4kMvza99NF6o3ofa3zL0EUjVBmfSjYOEHf2meW2glqsJdpXJ6CPLYW2RGOzDjL1YGwGbH3W6YjNu21YTQD2HFn0HdSsdA1seevpvszSl7/+/xC9yX8SCf29LM7/SeZ926OzvgvRgCsr4puoifrGemNu22TUORCIjHcshofqoyp+66tRNftiF1h5e4ksthWpCC7YYkqEcw25MlObBQaZpgDuA5v0vmSJOAXM8ra6m2nJ/dkt8VTc1F6wG+zSTT/yUiPkmn56TrylZwE+APfCU6p2nwRjJFsfy/hBjU9GwCqH034EEAG8ASIDt8G4Ur+T/rs/ALh/lF7LNIZKda5OGsokE8wJ9rgPgKkPINbDefQkgvtW6cTPepK/l64kluq/lk4wyvalkTYAPwVyDefX68x55bGVYOgfA+BX4vwTgPZqeX1pk7Qm/ShdaWDdKbulDectiWDj8dvA8jfofapOrgVLXy+1FzdJE25vTd4rA3mXZLz8tow/TZax4psyUQYmXklQvw/2lSGeyjvirLglrpcA8Howsqp0MDHmoCepIY8JtrkhAc7yg627n8Zpch1Zubv8hsy8SBTn41MylX9UrWE9T69g83RN7FkHdWMziiPjaodSsPEBCNuz96qnvufhcbGDtXOmPVB2Vn3bbbfpo/+DxqY6sveI4/4OcWXvVSvXkeQtMgDQZmQr59U7wZTbz32kIGq/87X20Ie0tL1OOs+vBjh/IsPxazS2dAybrbHb30jb2Y8B1hu1994Xh59dYZraJwB+lu6/kb6LYPaXPlLw15z2hC8A1J8A1D+WoVvfKOvmbYPX12kCHG1b+ynEo9kQwH/s9lfi0DG6TTKC1zOKx2XJfzR5k0zh/ZGVO9K3iTPDzM97AOST97brfD1H9Cj284Cx07vdl79P3Hj/LLurQ9yT4+LJ3SszRcdltvy0msnMP7tkPNzrk9V4Zf7ZeWXrGsrSdt8wTx45vkbwBJhH+0ok0lcGhl6hQlNaKc9j4zzbWSHzBPeuFxJoeyqB5kKZAbC7qzIsz/ZMtXcNVN+VAP7N5/D3sFBzW0IUrzFDvCXHAtAsU3YnaGp14Imy7yiPBEwtsVu9aoK+9qvByLvByLuKrVQzAimZebH2/ln2ZkUh2mVVATpNCV5T1HB7pI8bgELzXN3Wc9ICliy8Lduo1+kIx+vCETUd6SswGx2+lj48Tj+ea+CpSVIbsqxfR63McyrcR2oVwHWxxD4CIB+3fNzpDudoN6r3pcQ1MvOl/jln0ZWZDxkwnx5+5xw3bfXSNYFtCkdnlKYzYOXh2IInCDD3EdRlzl0WXfBgF+df9ZOy+3Ly2vLXvymY/7my8sXFv7bK6+uiAc+x6IzzTszvKotNT7ZGPaNjUdegL+romQvbO8JLKWqhgWots4d7wRq68GHTUQpWXiTBN4+0vD7b8EBmKYCrSRd/dRqYuGHj09VGCOetNKDuUUBPUlGXqwRssvgiGOU5cRef14ARd+FpgPl5DR1xF55VK1KKtTi6NkqxHCM5aZCStkNsYOeDAGaCeD+AvQeA06dM/Afp1f74dum8tVXaAOjtN+gat0W6cd5961vpTWVJHsB++3u9r/4umHwff09NaBityln0ddpb5zx6o5rOfK7pa2+ubJT6C19I7dm1APk1UntmjdRf2iBvbmyX9tR90pmyHwC/A6D+o7Ql71Rgf5OwTZqufCl1AP+m61ul9RaeP+ukjBReEwdAnOVTZ2Wanjtf3hMHNj5TZTfFievlBDjzuvnBunhNKSp0PsX1KwczZx/9eYIK48jQydqDr9N0/IkOffyZG6x9ilnpuQdlsuCYuJ+cF9fjc9gMfasld95O8aFqFrL2mp563lGZzD0iPrB2/8MDZtzt9tcA+h/E8QD/Jpk7tHc8xU0WftYHsB7DpsqOzRZNY9oAtkPXP1OnuPHEDTJJ0RzH066Rba8C8K7WnvooGPrIzQ3q/sbUtT6wdM6i266TzX8oo/jZ2K3NGo3aDcY+ePNLNZbhZqHrwmotsw/htt4rK/U2qtdHAd7DN7/Q5+fsO+fkTcl8qxmjS/1KRm9tUA3ARNp2ceI9UNlO0xuOmzHj3JnJMvt3Gqs6mrgejB2bmawfNHxl+hFH1Y4AwE+J78kxmS44AHA/JbNg6fMv4rSHzplumqbMgbEztEWjRJvuvV3aO+55bAFVmVFtM2QEgBkGWEaHXgKcqpWpRwBSoYEamcdmOgAgZ9a5szxZpooTxMMNHjZ8vgpGECeaMBZ1hbspi6+SJUyhW7OJO2X4ifbJOy2mzghSqsdbDEPWWNLuIlNu52J62cALZcCxgWeGvXOxJN+3VJIv1BXlxoCPyd8n0BOMec7yPqsD/VaYiuoFHrxj3jSNUf/2NJ0AiP7USKbfEr8NlJjrNGR5udMJbrwOjHtp1twKYNGxtSZdyshxm4I6QZzf60hbkxHIWWV2UXOZ/ncxqpYoLjZjx3HCYudqB2sWTWcWvFxhCXoDEvSMxOZ8ZdGQzwJ0jrNRHPcuqGUZ1Je/fk5A/ymY/43OUM77twnjUAOuhzH/1OuYd2ww4hp2GSU7WPnom2h4sF7CQ6+NCI7l9qE6w9J7XqqyPQiWPvfmscw15sns6xwVwLHUPqtz55mmNFxrwH2aZXYF+TTx4Zzxn96KBPFSma2gfhZM8rQ4wCbZS+ei0xmDQsjQOWo1AVAfv79TTVBYXmcJvQfMsg9Mm2yzF+DdSwU7QT5tt/QD6FvjN0oTwLg5br2W2DsA6p0Ad46o9aTsxP3pGMfjjwr0fbe2qyq+I36Dzq4zG51z6xTKtQDEGzV2lQlsG8DaN0j9+XXK2quOm+CWyqMr5NW5L+T15a8B4N9Jx+3d0nN3H9Ze6Us7pOcdKXsB9ADzjKNiy7+IdUFsDy+LvTxF3K+yxFuXjWO2uCrvqbJ9qjReXGU3VEjoBoj7KIarTNZMeRfYtgPAPFVwUoWFHF/zgoUHqm5JsPG+LDZnq2Ka33tKcZ3pHJdPoD4qrqLLAPrzMgLWPXRnuwrkKITjOQNc3PnMoz+mvgA+AJgja4eMZ+6WEYA2U9pGkg0jn354TOfTbcyax/Wa4ETCnW3ScXGNOrYNgYmPMqkNoGxLxmYK/wb9AO3Bq6vUKGY0+RsNTKEorePyarD0tVpGZ5pax+n38bPPwObXqoUre+uDtxjDuk2GEj6XfmwiGItK0O65stqU+ZO+0vxzjsr1g5nTAY5e7faUzWr7Os4++t1t2t+3s2eOjQnFcWO3t4jnwW7NOp/E61cWD9Dn702lfyuunN0A+72apOZib73gkAQKTypbnyk8JnMVF2UObH326XlZrIxXQJ97ekbH14Jg7DRaofI9TGMVLSXnGOW2AhUAc/iFOqCxvG3AnKXjWonYamWRscT9VTLfXmxYeSU3y+b/lRcbP2cxo3Txb18SJ35s8mjdOvciXs1iQpwDb7DG5pZK3Uw1e2P61QrqnQWGVROQ+416PEomTNV4/xKIV+iKKtg/07jSpV686cc/NkI7iuv08bP0eyOU4/M8NCxeBXT5ysCjXblmLp+VCl6Ttsy3DD3a+8SYyJCdE9i5GRgsN9eKVq+jVQD2ehPAAqCOjjeIjNaL8EjgBkPXRYX7ZJth5wryltmMo8MC9AHTL2eZnf1yjqwtATmWjrER3GctW9h5N8DcFxU1nZkGQ/d2Yz2MBmkN6/uTMnSmVL4LbFmeT1/++lnB/JdvmfnC3HsyP70zOudLigU8ZdEZR2fMa5+M0Z/d0bcYmeiORoYboybbHGu4QeNRw8NNssj+OcB8oeu59vbI1BeUqT/R/vmSKG6uuUDBPcA+OoDd/woLzH2aCx9CVGr7XiaDZRLUr+vctBOgNJl/QibzjskUWOEkHc7AGjlupXPUONrvA0wA5gP0E7/9rR4HU7/THnkfAJ4svQug3oUP/G4szpy3q5nMF9LKeNRrX+qceXcSR9cA+nd3y2D6Hhm6v18GM/ZL371dYPy7ZIjleJbtE2kdu0G6E9ZL57X1ytTb8BgcaeOmoA3A1AyQbwBT1xn14x9LFQD9NWfWz3wmr86uk4bLX0krWHtXyi7pTwMLzj2rc+cDuedlIOuUjD25LhNPE2W8OF5GnsTJGBiXsyodoJ4r09go+euzTSBLyVVxVyTig/uSTD45Iy62KcqvY9N0V2ZrknVDNI7rRXbtIABTHAcQD9Qwbz5JFurvynwtmFx5HNj5KbHnHJKp/FP6e1S3k6kPYnM0fn+fOPIOK8gzgGUy64Aa0rAE7+XoFn42lXtMRu9+D6CjGcwacYGtM2udzmp9CVS9f6cmM/0J60w5HIA8ksh57w1iS9oiA7j+PVfBrs9+JLYrq2QM13kI15hz4kxP6wY7H7qxScfT2k/+Xob5+wmfyWDcapNtDjCnN/3g1U/VRIb2rTSXoZkNZ8+Hk78x8/EJa5WZj6Z8rcY24wDncarYU7eaZDXczv45WTqPVLUzDpXn7LMT8MnSqXJXVo73P527U5XublwTL66J7+Eh0z9/BjAvv4jbDitLny2/IIHi0zINZr5QFa8gPg/AD3GUjaBFIFPXsycGsHoBcn1FqninJWy477lEBmsA6NhI216r0n2Bo6H0euh+JsG2IvV58OP/k7filkbpkp3z/xUB3f/0kvjLLiqgc57cjIRZKneycQrTyMi5oeDqIlt/oqX3KEEbrDzcydL4I7091ldmSuw9Vp+9r8z00Fl673tmBHKsKui8e4FE2gq0b05xXGwp65zPR0ZOUFdGfs9kpHMmvTUd1yUDz5Vlwlh4PXqfWFnnRe/yznX+vMza9LzQUruK3rTUXmtG1RjEQjU7QZtAruK3DsPSteRuljja3lrBmn76gIrhlKXTYIbgjiVLrN3MpZuye9AbjgV9AVmcHost+mqiQe9NMPYtAPl/0h76nOvfm7L7W9OZZUBf/vq5eubMNA/9XxKZ+70szuyMzrrvxfzOmtj05GDMZ/fF3MPBqHMgHJ7qjUZGWiU0+NpYuWIRxBXI+1/JIvvn3QTyZ/rhMt9WbMRwLYUyv7QA6HSomgGgz7x+IP7abAD5fYB4hnhf3gUzT9Eeugvg5Cq9Ji4AlPPJBXE8OiOTBXSIO6FWpE6wPkc+++cA8ixTbh8CiHDGvJfxlre/ApADNFK2KpB3Y3UkfiMt8WDhSd8AQL9Tn3YCfP9dbALAwgcJ2Jl7Aax7ZADnLM1zJp0BJYMAeArmenD/Hvw+S/GDd3jb11p+776xGcD+lXQlbsPjfivtid9KZzKAP3WP9NzZhdu2Y/OwWZovrpXm859J/bnPpOnyRmm7wfvtxOvZDWDHY6XukMEHp9Xac6TwqvbMXZVp4npxR3w198RTmSqOiiRx4vq4X2DTU5UmgYZsbI6wGaoEQFengpGBrWMTNAV2zfjU6Zfsld8QN84nHhwRG97bCN6nE2Dtr4iXGbA1f8UVCdalakLWQk2izqhzRJA+7p6iUzIBIO9nWAs2M2PY5DA8ZZyucBm7lXFzBt0J9jrz+IiMp4PJZx/WfrotkR7oX5rMdDBjWrWyv82SN3vntGCl1erY7a0ydQ/XlGwb/1Z9uJ4d5z5Rn3Wybrq19QOgyc5pNDN8e7uW4vtpIMORtIQ1MoDHYeAKe+4T2IRx/I3PPYDn07hTsvHrn2pMKl3gWFq3JW1Upj2evEEmU+hYx3MD1vSiH+aoWtJ6MPZvANJ4v3eocv9OpsDgHff3AMQPyXTBXrDwPeJ98CM2MRvV092Lv0+6680BvNXyteSc5ssT+GdLzxhQf3YZAH5DzVaCL6/i/KpEmCjWTvU5AKwjG6Bn9Y07c0UIWgPlANQygPkLHcGK2qpxrNGKWKi3QiI4X+wsMi2uxlzxVd8Vz7ObAPJUNRri/ylv6VWZfnpF7YDnKhmBmiqhJrrRUWxWaIC7Y2l07YFhywTfNjMPr6NozdlGnU5A5s8I6t0lpuxOMKUYDcuU3UtNWZ2PSXFcuwFziuRib7Itpk4m/tAalcsBg7+nI3yaeW5VK2RJTd/PUnuhVW4v1+cTPT4zlQG2ALiGKhXEI8NmNC02Um965wT2oWpzGxn6GNj7iFG8a4+dpjOcTx+3HOUU+DssW9huiXqsnHQGtgDIaTjDMbaY324AfYZ9dEcgNuu0x+bcTdFFb3o0PL1TIpZ7nLLzt2C+zNCXv342Jfufay+HYL4AMF/wfR8NuJJi/smqqG98MOId98W8o4tRZ380MtUrYXu3hEbasdqwmiUEVh6yNb4F9FAvTWQA6J1g5u1PtYc+1/LELLDz2aZHEgCYBwDkM3XZ4q/Lkem6BzJdmyVegJb3BcE8WcGKJWTn0+viKooTxxMaoZwDszxjnOIKjun42iTYIL3JOVo1dHe7mTEHiA/TevTOVjDKrTpv3pP8rYJsFwCdAN6jZfddMpC+V4YywMAB4EP3yLx3ANx/NMAOgB+6t1vX4J0dRixHNTzvw+AWADp76oP6811qtMKf997+QXrv7pHetH3Sl35I+jMPS3/6QZyT4e82r+Xm19Ie/5W0J2zW0bjG85/Lm2tfA9C3Si/uYyOgM3wDID4GZu5l5eJVunheUmMAtv2M/fKb5vxpvIrbOO43W3NH/C9vGtbNlLqq2/phztlyNz7APU8vq7hw6tFpsd39Ae/3BxlnuhrZ/NM4CTAKsypBgtWJMl8ZLx4APkvsbGV4wdqH07HpwUZo5N5OZeCcPWdm+jCAewLMfzxtu/gK9osD50xum8jcrfnoBHCGtjD9jKXvrkufqtMbxWwEV5a9aS7jTP9By+RD2gPfpL3y3ksrdcacDF1T1OJxvY69D2AHAGMz0QfWzXG1wbiV6ubGUvwQ2D6V9Ux5Y0iMja8B5wR0ZpcT5Mf1uTcbC9rEdTKR8iUAfbOMkLmD0dOediL1a130cqdlrTNju2aesww/BVD35B3U8vp0/m7x5PyoWekEfm/+XgkUnVABXADgPf3osLjzDoj/0RGZKz0lsyWnTdzoy2sK+DSfCb2KNzPoTSkAytR3eeDNdyxAB9gOlYuwP8zS++AziXKuerBSV4QaFk0zBEtvtZwYmwuw2cvF/zlTDWNWAhXu/mcJ2MTdkMCLJAD6bVl4dUcWGzjyxZGyJ2bUrJejXsVmFI1LR9sI5k/MuZrJ5JqZ8s6HxkyGzB0AHu0tV3auJXRsCtRkpvOxbgSiXbhfNwCeArqlx9GRuAID6izF0/6WeedUtrfnaIldOI+vYF5q9ARk37R0tVVZKWpVJhKV5wB2lv114bWEOULXW24U7nSLWxpdU5Fcnc6ixwZrsAmo1hUZ5LFK76sCOirg7Usz6m3GWY4jbB6azIxhjVsl+EmW3MnOgzLvceC8FYD+EOz8BJj6CgnN/d+af2EMun4aqbrcQ1/++lcBujWWRmHG4l+Dmb8nC/5t0YDzKlh5cdQ70R31jDtinpG5qHsoHHb0RsHOJTLVJ2Gs0GSPhOxdAPguCY13AtibZWEATL2vGh8oz82oGtaijqsB1Dk605AngXoycyrds3XmnOzSU3kXTDNV3BUA8nIwTzBTRymAnGD+9Jo4i+NkCoA++egcgPy0TOSfEnvecawjMpF7WDO8CUzDYHcE9jGwJrJ1AhbnzQm67Jv3AJBpFNN1C4AKdtdHRp55QGxZh2U4c78K6YYBEIPKyHfg8cBiCfg49hPIU2hUg9sB/sP3D8hwFn43HYCfxvl2gFrGPgDebhzxO5n7ZACP0X2LQrwfAeh7ZfD+IRnIPCQ2HEdyjskg7j+QtlMrA/0p3+lr6wXjt2UdktFHF2TqaYL46rJkuj5HpsDIZ6g7eJ0pMwBqV/l1cYJpuZ/fEs/zJIA1rlUp582vK2j7n9+Q2epkNZWhDay74rpa6FLB7iqJM7fT/IXvGWyb12ky/6j4nl4EqF8Rf9kFCTyLk7mXCeIvj9O2hjuf1q94D9QjJH2tdrvjYPlTuUexgfpepugNkE7B2/cAtMNa9qbla3/iJungCBpHy25/rX31llMfasb5QPwameA0AoNXbm7E2qDMuZ/lcaxuWroCcBlZytAUgjfFbi0nPwBwr5JRbNj64j7VsnvfhY/VPa7n6uc6tmbj79xYL0NJX+kmgOV5snl1gAPI09CGUa58zLFb2BwAiAnUtoQv9LUwHY59dZbsOZvuur9Do1A5Z05TGY6pURw383CfeOjnnrZNf8Ys9NnCoxIoPAxQP66M3MtM9JydMlt8XGafnlGGPvP0rPq7B5iLTjEcQ0Y4otVAn/REiRDgGaVKARgV3RR9sS/MONBBq4cOwCH4RHjsrwJw0ZGxRJXvBLAQgJNhSIsMQ2rKlWD9ff378T1PxN9AooL6LDaC8wD0hddpEmrMNhawvVYPfOC5lsyjXSzzF1sCtidgyta4Gkvjes6WgCWQY+mdZe9eq/yufuovLOCtNuyZj80SvI6y5amPPI+m/G4p7dlT54aBvXsKA61RNFPOx2tif57H/jJcDwrhLECnun2sxqSq8dxmctGjfC90jCNY00zGVieRoVda3Ygqgwc75/cEdt6HYK4VELL2BrWKlfFmI6yz5tOj6vc+ZIW2TEiU7HzOFZZ5byA27x2UoKciOu+7KsHpDRKc+W8SDP7l/+Tr/otlMF/++pnU7Arm/0XT0vAHF52ZOhX12tMjvomq6DQA3We3x8DQAehabmd6WtQ1LGHHAFa/RByDEnGaRLXQaDsA/bUs9FQCzMu13E5AD7YXg5kXgpk/BJg/0OV/nSP+V1nWXGyquABWjrJEcZQkyBTYqLMYYFV0RSYJ5CVXcdtVBXQ7wHw8j8IusMaHp8Wef1xGCeYAcVv6DhklQ8w5gNsArGCGNgAlxW+9dwDkWATLPqxugnPaLgDyQRkCKA8CgAeVie9UwFbQXjq/t0OzwM0Mu5lpHyVok8XTmxxAxh4957T7AC4DZK9p/Dl+B+d9dJxL+FJjWcnM+y3V/MAdbDzwXqYKL4mj8ALOj+t7G889KSME9LwTYscGxv7kkirYp8riNXjFD+Y99/qezDVlylxDlk4JUG/A2WKOo3FunHnx3vKr4sEKMHoWH9yOoou4fidMib38mvjwQe4DwDvAunkNu5kLTxtWjpoVHBU/WKSPoFRxCR/4CTLNEcH8Q+IqOKy2sN0Jm8WW+o0q3imem8o7rLGqnEEfSd0ONr5NGbkxY9kqHQxIAfMmqLPETU/3/murlXnb736nArg+gHDf5ZUqkOu+/Il0MPL08hoF96H4tTqq1nNtvYykbJOeK2uxKfiTgjyNXzrP/Ek6zvxRS/KDAHz+nIDO7zkGxzL9UOJmFeCxdM/fG0n8QoNg+nAfltTpJ29PpSgOi+2AlK+wAflKBrEh8NLyNuMHcd//Ua1dHWDrnpw94stjTOouNZVxZ+1QYJ95aAJXmK6mo2tZP6pK3ldwQOaVrR9Qxj6D80DpOQlWXjfBJ3WJuuYr4wDwTF5LshzS0o0IDKw0StAatLK+hwE8o7WGYSoYAdhxe3iQvfVKMw4GVrzYmg8wz5KFpgcyX58lM9X4m8HGzk2hJP7unPi/NF12VWZ1Lv2ehJrougbW3FkEEAeQ91Ls9tKAdf8zZeFk42TX0bY8iaj160MD0HSGI7j3lb+9r/axKZ5j6hlBHYD+brNQapzcVPVuzcIrk3+kQTR8LNODt9Ty6kxXYJLV2FNnOZ79fgV909/XeXhbpar/FeQB6lH7a7DrZomM1+s0QGSI1+u1RGw/WSzHqxVso/F5H21SIFcw1/J78zsnOfbdWX6n+p2ucTrORuX7pBhfd7df5jydsYWZXAnP7VdPd5099y/HqS5//eyA/mfq/raw8H9KyP93Mud6TwKOLQD0E9HpqaRYwJkbm3VXxGZcDbEZZ390epJxqHNR73g44h4FiNsU2KMuG877JTQGlm5rUnU7e+eLHWUA8lKjcG+xwPw1S360d80GCGWKvzpDpivTxPfyrs6gc27apez8Btg5wKvkGgDdgLkDy1l0CaB+DuB3DqB0UVXb9rxjYLoHZfTBQYD7MfV6H3twBGC+V+fNVdkO1ssxNfbIBzPAqLMPg5XvB4MGiLNPfhfsmyI3LbnvkP7bnFnfZi0mjm1Vpm+juO72Vk0aG2LpHY/L+9jA5qnoJsizSjCI3yeQ999i/vr3APad5vtkMMlktgR+1JI9+9Bk+qMPjskw2PpQ1hEZA5iPF5yVEWxYxh9fkPGHeI+PzstEYZxMYJMzUnBRJktvqGqZeefz9ZmqUp9vysYxS+ZfU6meor1yCgm9AHiCO0vpvufxWmofx/WhDmHqMZ4DAD/1+LT65E88PCP92MR0AfTofT9VcExmKs7rfHng2RXxFJ4UV/4Bcefu1dEsjqZxJr0nYR2OW1XxzghWdZADENqSNon93vdq58rEtPaLK8Gc18goNgBk5L0AUdq/dlxYIZNgxYME7OufS98lAPqVTzRApePCJ9JKm1YwZJrF9F1fJ51XvwAAf64bhTb8vPvyanWdYwm/9dh70gcG3kMF/OVPwc7Xqje8iukAyu0XVksvHtuWYBg/hW58nEFsLDjPzvK7/faXyszJ1CcoisNmZDJzF97zDnHQjZDBLHh/FL15c3YB2L8VV/r34mAOunq678c6KJ7c3eIE+DuwmDQ3U3xas9A1ZY0hLc/jZO6ZKbkznIVz6gvVVJunYIGdN9ySSONtiby5C3DLteJAK5TtylCFyIgZy5JxGqPUKftVxj5k9Y0HyNDLJARQXmzKA6g/xN9Itm7wZlhur4iXwPMbWIkyByAPVGJV35FgLQNVsgDSDyUMVh/pKTMe6L1k1DRnKTPA3WGp1Vku77asX1l2J7DqONoTo1RnGZ39c2XophSuDL7XmM5EaBXLWXQV05WYCgABnJsGVgZUdFdg5t/1eR5a/Xyq3lmSzzCWsAR4zqlj40MnPR1jYzVjKTLV/tPRtTemL84S+liTxb4b1c89Ov7Guh3nSx7vBPdx63cVzNtNeIs10gayo85xspSXPjMZjs26GKfaKkF/pvq5h2f/ybBz57KH+/LXv4WiPfDvdMc47/47mfX8Sua9q2TBv4WCOPwRHosuBK5G56fTYwFPRdg/1R31TrrA2oNhz3g04hkTBXbXoJbeI+ypg52HwM4XyM7JzNtKZMHqn8/TrYqAXrcE6BlmnKaSYH5HPGDpNL7g0UUxXHmiLmcp2TrAvJCiuIvKZDVUpPC8jl/ZWW5nkAiOIzmHtMxNIO+9/a30goX3E3jJiFnSJrBm7NdSNwF0OOuw2FhuxxoCGNsydstIxh6w610AcID0vR0m1AVHG9k5ncqSv9agkv5b3ypYDwCgBwHwzA4nYA9SVY/VD7bbD5AbTCa4A9TxGga5objLvvxuM9PO3723T0Zz8D7oU/8Y76nwMjY0CeJ+YQx23BU3weAvy2TJFbHjOowWnJfB3LPiLGOKWrL4+UH8KhVMPR1gznnyOzimSbA+Ded3TcpaxTWw9rMyRREhwFvH/4ovmw1SodEkTAHQKTqcwrmN5feUb1VLMJl/RGbKLwB8rso0M9HBwmkY436wV+wAtxGa9gAoe25gE4DrY6dQLHu3TKbjOtxYr0BLZmq7tVm6Ln8u7edXgu1u0Tn0HgrhLn9i7FUT1xkGzkhU9rnPf6i97k5mnsd9DrBeDfA1vfYuMPT2cx/j52DxYOFdFxl5ukm64tZJ64n3pScOLJ+OchdWSc+lFQD0j3UkbeDml/Lm1EdaFbAl4D74fbJzmsxQJKejccxjB9Czt85KAh3umIXuAGBP3vtWe+kcqyM7d2dsl4k7W2Q85UuA+/caxuIDU+f4mQsgPoX7cEPAHvtcyRkF88DT89rCCOCakp3Pll9UoZwfmyWq3+c5QgamTmMZusVFGlMA6OkqCFNQp7EMgUrHsp5b7LPKAq1aw0QB7BECupbgX0i4+6nMN9zXv4XAyxsy9ypZRxQX6jPUh2Ch7p4EsWgyM1+drPGnkbbH6vYW7nqqZjFafueMOXvfGrRCQZsxiDEl9yfG8IYz4wRbPZoRNCOWe2jG1Tre+b0r2yZwUzSnffcyq/deasr07Md3Gbc6FeZZbnTcPHCWnep26X2E9fgnSvdSI5JTncHzdz11BfQmC9CtRRW7ox0ADtY+0gjwJoA3gr0T4BsVzHlUlj7aqEsZOsA+OtEq0akuywZ2QBm6jrUZQI/G/BOLIEK+2KyzHUw9V4K+/bIw+y9KoIwAbhnQl79+ZkAPANCDvr+UWe/fyDxYejjwDxJe+CcdWVuc/1BCcxsA7Pujc56UyIyrKuZ3jMSmpwJRnz0c9hLQR7T0rv3zwUZZ7K026vbOMgXzYGuhBJsfKTun1etsY56Kc2Yshs7+OZ3iPM/vALhSxFWRLO5nFHCl4LYUPbKfTrY+CYY6+fC8ltxHcwnGh8SWBTDM2i+2+0bUNpC+y5TXU7cBzL+VPgDxIMB5MH2fDGTsAzM/AkZ6WiYenZNx9uCxxnKP4/FOyGj2IRm5TxEXgD3V2MSOpNGgBgCfvlMBnSydTFzPU79T8CZbt7HsngKmDiY/CMY6SGCnEpzgjnMCO4GfKnn210dZTsdzDmUckIE0qun3yUjuKWXgU09vYIOTKr6adFWtz9bzWt1R8xca7kzTeOflbdz3mo7z0RKXoSsMW5l+Fq+jZwT1YB0Wy/KvUnC8o2v6ebx6unuwGaInPnvpdIrjPLq7+JI4wNCdNJIh2D+hWc9xbD5+kAkAuLeIG4FT4sZtE7hOrgeHxENR4v09CuqdDD65uRnvf4vYAOKTzA+/vUV6rq9XhjuauhXX4xuw5s+0v81xsgFas4KFM4BF+94Uvd3coAr3zrMfav+868rnGpPax3I5PdZTWCH5AZuDtZqDPoTr2gyQJivvZ+ztxVUqtOu78SVA/xPpOf+RdJ39kwxxc5G0GZuMTSrCY2WAkazDAHoK5foB5rb4NZqLTrvXCfr/U+F+FyCevgNg/b0K3Sbv0CVuu0ajOvk9mLrjnrF6ZZ+cxjAebHqYKDcOhu/J2adgPlt8QkvwMwDuQNklsOPLAPM4MPUz4sk/oIA+g+vLiNVgxXlZqIyT6OsktTuNtP903vqpYekEdM6ijzPfG0Bux5oEU7fT+ey1KcWz5ExgB1iGwHJDYNMcMaNILAzWztL6LN0Dn12XIP5OFrEpZIpbCMxbmXlbgQaqKHumN3v7Y70txkUHuTYjiNN5dQamqPFMptEAqEWrJWZjwIo6vT1Q0I/R8Y7AqzPr5Va/vdzqhVdY6vTn1qJeoMrMufN8qadtldFlvE5E58utOfPJJhE1kWkya+lnU5YT3JRlLKNjaR0mLnWiXSLjAOiRJlGDLFuDVWYnuDdIeLjelOaH6nU8UMEejD1CFg9QF1c/wHzQAnZbVKbHwuKfnIvNOByxgLM1FnDl4zP0iPp6LCz8Z0sM94tlJFr++rnV7X+hoK6Ky+B/1PAVzexlvF/obwHu/wJQ3xQNzV6IBf3FsTlvf8yPXafHvsjeeXiyV8ITXRIaalAwD1kz5yYitVitXucbH6kITlXtjVTb5quq3c8RtepM8QDYvS/TFMhdVLaXM8c7GeB+W0HeSZFc2U1xlMTLVNFVgPF5Gcs7BYZ9VEYeHAUwkp0fk/G8YzKBxXLy2AOwdaxhgjS+H809KbYc3nZchrGG7h9UFbmCfOZBI0B7cAxMGY+J+41m7tUQkuG0HcrYKZazsTRPNXvqDwrMNoLzXUaz7tAIV7qj0URlLI3Mfrv22pkhbnrw2BCk7tCe+sj9fToqNnL/oG4oyMq5ybCDITvwPt0v08X7CtemPlemKYajyU5thsy+eSgzrzNVtc7M+JlX6ar+94F1UfxG9zeq1L3lBPYbMsMy6qu7ytbnG8DCXt/FuiOLTZn4dylQD+/ZamwInl/XmXOf5sxf0P46qx9sZzjZiy86J64np8SVTye+/eJ5eEgms2jgcwDfH1IRHFXstuRvpB9MnaN7A4weTTRgyDL3QBKNYrbICMC4N2GTtF80I2uDN5lz/olJMeMo2qVPALRgyDeoWP+TtJ75WLqvbwBDB/DHG5EcjWD6ErZo5YOz6DZs3OoOvy9tp1fgOfEamJwHRt8Zt1baL+H3rq+Vzgsfag+d1YL++A2amEZVe981bAjAyPn8/VdW6Wug7/vorfU6yqY56FS349/TnvqVjrUxlMV+e6NMpGwQO21eqWgHQ6cIzme1Iqisd2TtFj+uVbDsnATByil8myk8rq5x02Dw/lLcVnpRPI9PKJjPloG5A8gXX1xRo5locyqA8a4Rw9FYhep2hrJwZG2o/F05ecxyQZsCeDkAMA6AlbNVM74V0CZwHLdmrtlnByiG2vH/En9Li005CtgRKwktgtvDnaUA9BIAe65mmYdqb8tCbYpRwFMwx/UqRU1owvh7UiMaLJOJnqLnsZZsM8OupjHp7xZ1AO33FdBladSMoE7RGm1ZbUZRbvrrz43vOjUA9IDnKJzOrxdhg1FkSv5k9xS4jbE3DgDme55aYt8txsZV58eX/Nj7TL9bY1AHJIrvKWiLOv/n1Qv23W2AfvQN2HuTgn1Uy/EtumJLy94mUUePAXO1gx0Jy/RIIOYbccT89l6A+kuZddyRWfduWfD/BoD+nyxB3C+W++fLXz83S/8za2TiL6xdIxe9hQHunEdfeE9C89uj8/7rsVnv8+gMtp8eeyA81R+O2HskPNqB3azVN++pljAAPaSAXmqS1dqpbi+WeQZEND0GoD+SGYC7vzZHpl9lg4Vmi7cax+os8VQC1F/cFTfYuoL5sxQ9KsiXJclkyXWZKLqi/XRXyRVxllwCAMWpqptH5qVrX51lY86rF/O+YPVPLusmYOIhgfOMbgYU4LMOyyBAlb102/0DMpJ9FMeDMnx/P8B2j4xl7LIWzjP3Ye3XEBJmgtvBUO1g7pzJtjM5TNcBGQW4DwO0lvrpXBTHjfIxMvYq46dwjlUAquepkp94CMAkkD9L0vEz36tMmWFozZvHJmYWbGi+JU975LMN92XudbrM4sM1UJf2Vgw335Al83XpAHCC/W1l7J7ic7gWYH8AeAVv/IyK90BlIu57T+br09Udbh4fwkF8YM/XJMtc1S3dHMyAsTFpjdGio3jvzkcnxfPktLjzjyigO3L2ygQAfQqbpom0H8QOBjuBDRCT19qvbZCOuDUAyk0yCkAnMx9MBDO+uUljUZlp3gKg7ry4Wm/vuvihlsX7r32mSvMesGstj4Mxt5z6AMAMlh7/pXRdo0p+De7zqXq/cz696zLY+M2vpfnMamk7vwqbhc3YVGyVNpb2rcWNRW/8FxqVyjG47sufas+d8+gDAPTuOFrIrpH+q6ul8/zHOK4Re/J6VbxT1e6giv82HeW+0NAYGs6QnY8nrVNGz/u5Mr4Vz4M9WpZnSAvT13x5+8HMTwPAj+N8n0xjBZ4cU5ZO4xgKDf34+WwFTV0SZKHmhoTqUwCSYOWvb5mRNYAgk8jCNHpZ8j+nyptATnZOe1MtKb8yim4wc5nAAriLAvsSI32D21pM+AiDU3rIhp9JGCAZ6gBzb38kC9jkLbYVgskD0Luegs0XamjLXHWKzL1Mknls/Oaex6tN7EIN2HztXbzeDAk33jcgT3BvzMDrpnVsjoI6DWqUvesYWoaxlAVTl458ER09e2r66hT3UTDHc5bfl+JYOyy3uKVzjr6pt3uO8XVfGmEbtK7DcKUZ5+P14LUYr1cnOGXsfP9LJXYHWDXjT7EUjAneOEYZvOKylgrdrPzzJcGb2/Jwp6kMv/eYUruxgrWS1hjIMgtmPjvVHZt3P4/O++5Fg9MnJDizQSugSpiYXKmfu8sK9+WvfxO1+y8scP9zE8iy8J8lHPzvsjC3OTrruRDzOx5G1b993BF1DgZpLBOe6JHQSIuEBuokBHa+QJtXxqRSENdZpqBOps45dO2jq7FMkcw0AdRfFwDQcwFeD8BGs/XowdFTdV8Zquv5XXE8TxXn8xQ1UnEB3Glt6iwH8FUkaayqzl8/S9QesxOg7iy+rGA+qUIvAPfDMzIK5juSdxJs/ojpl98/BHZ+yPTPs4++7aWbkbXD2l8fStunRjEUvQ2z5E6gwhq5+z0Am8EvO7W/TnHcwK2vZfDWNzp/zfsRsMczGRCzX73NJ6xlf0Bv9GPqcDfGUbd0MyZGQB/LPYHXe07GH12UCWxW3Opnf1c8L1l2xwdq8wOZB1sKNufI4psHstjyQEJYC81ZKobzvWSv/ZbMN+boWmh9rB/O83V3ZbbqpvhpFvMsXkfUZl/dU3APYDEXnSV6b9ll7asG2XuvSpKAmoxgVSWKt+gsNip71MZ16sEB8Tw6Ia4CAHo2NjoA8gmKEe9sl2FcizG890lscHrAwFvOfYLbvpah21t0Tp1jbHRlG7i+RlPO2i98Yvzbb20BoK8wLJ2MmWz68hrto4+mfis9cZ9K69mV0h63TtriNkjr+ZXSduYDbAi4PlJzml4w+LYrm6T7GoH7S+lN/Fo6ruL+YOcd2AzQ8pU9eJbh2W/vv4H7cHQNbJ8xrG3nV0gX41XxmjovGJY+BrCmYxz7586MHwHcuL/21Terc9xEykZ1pBsGwE/d+wbs3Pi5T935GuD+vbjSvxX3/e9UAU97WF/BPlW9zzAHHex8uvCYzqUzcpZGMvRxZ8Ia09YYD8qQlFDzfZM/DhCP9BYbQGdymYq8qqz565fGp9xeZ5Xd6wBeDYatuzoANp0G1KnsxgoPVauznLrLDdXge464lUm4oxj/b0t1xC1ifb/YnG+0GGzf0EGw5pYs4m8q1JCB15VjIlDxtxlpygJLTwebv6uMfbHK+MIvvrotwZokvU2BnSV5nVN/rP11nUvXJDTLCIaz9FS9U1HPvnmHBeIcj+srxTL3iw4+s5zginUWXbgpGHgqMvTsrZpddINTa0BdAd0qvyuot7yLRKWwDSycLDtmB/PmUhbe/I6Ns1c+ARY+2QHW3mnAfykP3QpqUTtY9s59o2Ew8kBszj0SC/pex8KBnGh4/oyEFrZJZPFDkfm/N4DOqqiC+pKhzC+XE9eWv/4tQP1/1z+4cPC/YUe5Nup3XmJEatTnaIr6JsYinpFA1DUYjjj61VwmPNIqi3SLozscAR1gHuqsUEDnyNpiZ7kE8X2wo1zm20qxSmQW4D77plCDI2bA2P2ND2W64ZH4uOoLxFuXB3DPNQEkL+8B0FMV0Kc40vY0QYGd1qYuAnl5vDiLLqqQi6KuqSdnZfLRGRnPPymjD47IAJi2LYsiOLBngDqjQIezj8gQwT3bADzXcPYxZe52sOXxvDMyknUUYHvQLDDUJVEcs9PpGNeXvFU61BFuoyaHjQKcWe53YAPh1E3FeWwuzmuYDA1wJnKPyri1RrGBGM8/jdup1r+k4jbPs2RsYmgUk6SOXj7adDJ17oWxvZ2uBsOuS1U2HcCHZQAsXN3cXt9VMROvBb3wF8nmm8ycegAfxOyfs6xOoROVzX6AuCrgq+9o0hrjVGn76S06peXfmbIrOm8++yJBhVvT/Fkxrm3uIVWwszLBsTU7I2rvfKVqdd7WS490bG5oMMPbWs5+pAEsQ7dNtWIcDJ7ja4MKjF8AfNfKGwDyAMC17xpZN0vjnytL7wIQ00xmKOlrGU3ZJm8A6J3X6MC3VboB1B1nP5SGw7+V+sPvKYPvvvKZ1J1chY3EN5rF3nplIxj9ZgD6GmkB4Hec+xAbgdXSBSbeeXElNmLf4HE+15x0lvS7cFsn7tcOMO+6bEboaCbDOXV76tcykoTXAobPWXaO3lHoRsEcgZ8WsVN3vxJX5nZx3Nkik8kbxZ2G+6R+qaBP5j6dt0f8jw6Ln3PqLMvng6mXnJSZkjOqcA8z87wuSRZfXjGpa1UUxSUCEAnuAM8OjoRlm8xwCs+GyiTKcnuvATQ1lxl5aSWKWeliLDkD0CPjjRIarMKmG8DNkTbcHnV2AphMWToyUithZoOzbG1juEulzqxH1NmtwlQEyIgb7pngFo09zQEzT5fF11gN9yWMjWa4OVtCZOr1YOq1KQr8i69SJYRjpIEmOWTqOeomF8VGNFyPn9WD0Teb0ThjJVtqRuL0tVSJsARPHYCmplnq+KURtCGr946jzp5TT0CTGZvxuJe3ynYL2BXc642P+5gRu0V0NRjLalsdjq/xfaOOrdFCl3109su5YiPWCBvV7QxrmWgzFrGunneZ6B5l8eGY3x6IzbpGYoveGgnNZkbDcyckOv8NAH2lkqRQ6G9lkS1Nlt7Z5mS7UxPX/nwZ1Je/fk5A/3Or1P73Egp+Fp7xnItNTxWqh/uMczLqmQhE3SM6h05zmdBYp4RG2yQ0/EbV7Yt9AHWW3gdwpFsc1kJ/ja5gX7UEu1/KfEcFAL1YZpoLxd/wUPyv88FCwc6rssRdmSmul6bs7noGVv78jvbPKRJzliUomLPU7np6VX3KXQTyJ+fEXnAKIHxC++k27asTnM337LMP6pz5YT0fzjkOMDVldwI7/dkHaQjDXnr6fjWJGQfQ2wH8ZNI0lBnBz0bBuEe1ZG5K6OPsf2OxFD9CN7kUuq3tMn3xPDrYgdkWcIOB18mqwvNbxvwF4Owqu64bEjq6eatSjRseANn7MlnT0WYoVKpLk1mW0ZtzZb4lX+Y4O8wZYpbIAeKB6lvifxEv/ufXDAMH+6ajHn9/DvebBZD7yi/i9niZeZ6gxzn8znz1TcPAcc7y+8yLmzJHN7lnceKhAj73sHgfnxBf0XkJANRnnl7UlDBvIX6WzxlzJqbtExfH07J2yBCAT8NPUsCmwZR7AeKjjC8FOLddWI3rdEBsnMlP3SrjaTje5vy56YWz1N1+aa10XAJLvrACTPxj6bu6Rvvl7IOT5fcnbAD4b5S2y+ukK2GzNF/4QpoB4q8P/LO82vdrsPQV0n35M2k6+xkAfauW51+f/ERaaKULQG+/uFraAdb1Jz+WHvbgb24UW/I2gPta/GyNbhDazq6QN6c/lrZzq6Xn0iqx3dwkwwTv5PVaVtd5dY7Lxa2WUWa1Y/PSjU3ACNj56M21Yr+9QSYB5mO3NooDYD7Bjc4tXIek9eLO/Faz0GkFO51/UJPWGNQyeX+XeAr2y3zpSZl/ekod4maxFiqvaPpaqOqaKbtTXMbVZsWnUljWBYDttTzLewuNDSwBjKVmAFwErD0MNhvqLQWY43uW4snaWYJ3tRvGrmBO//dqHXejzWkYYE5zGvbZ1T1tyTbVmv2mgQvZMnPLIx35EgEIR2g001EIcM4BG0+VIDaNC/jbCtXdUcYeaUzX8nu06b45VzafIeGm+yam1Upso0GOgjWZNV+PlswbzPuiCFCft0DNZTRKlb15y19eek3iW1SNZmiJW2pEg9zcsGqhywC7LNm32vH+1ea13szuDwPQbbUK3uHBOlwHGs3QOY5z6dYMOkfXdFyt00SqcqkFrFV2N4AejflG5mRmyiFBd7ss+Mqii/470ZD/kiwGDkoosAXHFRKe/ZUazMxNA9zdfyXznv/wE6OZZUBf/vpXA/qfae+cCWuLc+9H57x7I35PZtTveRObcU9Gp6fmou5RA+aOPglNgJ2Pd2J1SHisVUL0dVfr11qAOUC9r0rV7vPKzEtkDiAeZC/9zWN1imP/fPpVjkzX5gLQs8QDNu5hLOiLdHGy1F6eLI6KW8rGHQT08psK6rQt5cjaxMOTKl4b4Bx5xh7pp8IdwDvEBRDuBbj23N1tldePqhjOln0UwM4S+0kFdY6JTVCMRiMXAL0ycRWrgc2TmaftUje0AQAAR7jI0snExzII7gB/Wsbe/l7H1zhvrir21B+l/85uMHiw+TT24sHIs0/IKFm/zpdTYQ92XnwZrNwA8Ey9CaaZrk6VaXwo+nGcqSYTv6t98tn6TIA5PjAB6gtttPLMBbDnmpJ6ZSLAOUlmqxI155yGMr7yKwDjqzjGib/iusy+vKmz6K7CM+ItvQAGflk923m/Garin18XHy1fi88ByM9qdKrr4Wm9X+AFGHzpOZl+ckJcD/arVzsV7oxFJUBPgqkPxH8OUAeYAtDbWS4HAx9NWgug/BDXbLeM3ftRxu5+L47M3dprJ6izR042/ObMJ9J5ZZ00n/5I6g/9Xu1au65+AfDdDHb9qXRe/lQ68P2rwx9I28XPAdS878dSf/A3UrXn11J39EPdFNQdW4mNwRcA6VVSeeRDqT/9qW4IOKPeem6lNJ1ZiY3Beq0IUIzXc20dHtsI7RqPfyCNp1YA0FdK+9mPtIrAxDc7QfnmWnWsG2AF4epnqrJXVT6+t+F929X7fZOO0zE7fSxpg7ke2ATQPnY650fx3N8uzvQt2mN35e6VCVrF0lymnDPpR2W29IRmoi++vCzBZ+exzkm4JgFMNkNTz5TB1ydLtPGu9qCjVLv3PJJofxFArMiUsDUbnTnkhRIG+EbIYFmGp5EKWepSGR4rMkIm/kzH2jjOFVVjGjDRiZ+UpKkMHzWslolkKrzTcrZxW3vr8kbxWjeer6VAQthsRgjcAPIQXnsIzDzcCPB+TbaeAoZvgTtYfpQq+aWoVDWgKbMc6Ip/4i5XamJVl2xh+Xvsy7daGe2qsn9g8tK7HuKxrNG1HpPZHmUyHVsSNqtqoeLBZtNHV6FcuzGIYXl9HNeFS0fWmBwJgB+qVeMZZe82BroYUI/aWyXKUj093Vm6Zw/ewdG1ftNj99gWxTfqF7/dHgtMdcfmnLWxOXcpwD1H5qevS9C7W4K+tTLnfQ9A/l8B8P/lJzawywx9+etnEcf9uQSD/xF/aP8QDbg2RQPuqxTBxQLuEYC5P+K1h2OeUctEZhAMvR8fAAD1sQ7toy9y1AMMPdTNpKcyCXaUasrT3JuHMttUoOp2HV2juUxjvgliIajzWAuAr8sXb00OQJ1MPUOZuksFcmaUzckQEoJ76TWA+VmA41FVplPENkpVui6waoK3msbQypUldtwvm6B+2BpzO2yEb5lY2Yet28G0cw7JWDbXAR0pG8P9xsm+KXLj/HnKNj3SOW40bS8AHeCfRntYmsPQw32nDPAcawQgpjPn9/bJYDqeM/MIQP2YKbXnHlfjG75W9vVpHmMvwiaFY2p198VflyFzHFV7naHz5QxZmWG5HSx6BuBNts3eN8Vvc+xR4oNyoT7dgLuycs7rnwNrJ6jH60jSLPOuKXirTJBAxRWzyi+Jr+Q0Fu6LRVbuKjiqaWpTnOvPAGjj2jD8hoDuB0v30PI1Z5dMZBCgt6vobZDl6KQvAZTrpP/GRmkAMHaBYTPIpOfiCukF02YYC+NSOeY2lvajltzpENcNxtt2FgAOVt10aiXOV8mbkx9J15W10hn/pYJs08kPpPn8Gnl9wrDs5gufy+tjH0nVrv8hlbt+LbVHPsLPP5dnO98D0H8CNr5Kqg59JC3Mm+fjnV6pI22tF9dKH9X13DBQFHd1rVrO0nGuBfdrPvMxnpuqemxCEjfIyM0vxJ64Vsvq7O33Xvkc73GjMnPOzQ/itnEa0KR8Zcxn7mxRtTuBn4x+Eizdm7kN6xtxpX0ljrubxXn/e1y7H8SZBbb+cL8ECo/IzJNDMgeWvlBxHgAPMK84B3Z+BcDIfnSKBF/EaRl+ofKaluXfgnpbztvI0DDAbrE1T0JkzQRCLb9XGjCfwJq0wBwMNUrGDrCPsjxPsANIR2m2Qtbu7DBgx3I9RWQEQPajNaa13My/c+PQaxzdIu1k6ux1E5RLjTd7Z6GOskVYmgfAx+geRx0AS+studbKUWtXusupExyBnSY0bXnWvLoBcbrO6W06Ikdmnm+Z2OSJ0GRGfd/zjIkNTWTw+rRaoZWLIk1eY39dOPo2ZMr4WsJn+ArZub3ZhK9YPXO2JyLWrLlZlmMcx9SGzQibMZhp1n57jMCujL1DR9eirl6r/G6LxqaHF2PTo4HYjN0DUGcwS78seJtiQU9hdNaNf1T3Nh1hk9DfmdI7dUtaIV0Wxy1//asB/Rda7qHBDP/IgtN7owFPFtl5ZNqpRjJR34QxknH266gajWTC410SZskdYK6BLN3PZLGrTBbaS1XZTne4uTdPZJarycyiBxqtxXJ7fb6K4ahw96raHSy9KlO8VTjiNnfNfZxnivsls75Zer8pkyUJRrFecEqdziaw6BRnf3AEYHnMOMRlHZBhjoYBpEcA0rbsA9pHH+JtLJ3je95vjP1srBGW5MnGM3YqmLNkznEyPscEATj7iCrdtdwO9s8ZdY6g0VJ2JBP3zyXLP4PHPKnfD6Tu1Mx1hpfwd51Fl1XFTse78cIreA/x4nh6XZxl8Vp5YJocU+Wcz1iSv63RsbNk4G2PZbGzWPviwaZsTcEKNYDt1Kdi3ZUFun6B8dD5yxjJZGhalsaellwC+74q02VXZLoiXu08WWrXMjoY+XwNv78qMyWnxPfkuEwD1AMcowJwT2Xv0543NzCDt7+TUZxP3d+h7NL5YK9mfU9m/oCff6t975FUbHZuf6OjWl1gvQTQnmtr1VKVvWqK52gww/lx+71vweABlFjdl1bpeFnX1fVSffBP0nx2tbReWidtl9eqVW4dmHbtofcB0B9K9eGPAOofSw2OL/Z/INV7fycvdv5GKve9L/Wn1shL3KcJrLzp1MdSe/RjaTr7ubReYEn/U2k8+aG0xH0p3fFfanmeCvuWc5+qLWzv9fXShA1Bx8XPtI/OMTb20AcurRDb1dVqGdt9/mPpu/GVOtQR0HvjVivo2wnoyfR63yyD19eqR7wNDH7cKrW7wcodKV/I5O114ry3RWfV3cxQZx+dIrklxXvpWQmWnZZZ/FsEKy7IIhXvVTck+PyyzD9nCttNtYSNvE6VMFXw9XSOywArpo1rpo6UReiQRnOVQYAte8mjL7XMHKWhCsA7OlYDVl6uR4I7rWKNa1qzOTqsMTf2mTkCNlytveuo2qw+MYBJQVubpV5vytCxtVB1IlayLGBzuViXqmNuEfbSOdZGVk6R3KtksPZUHWvTeFaOtb25b4xi1CTmyVtzmihn3nU9UdMa+rqzpB9te4T3m2u+b7FeA9XzGtiSZx6L1QqycjXdeWY2LDoBUG2ONiuznTPtDFoZtWbN6RI32qQsnOV2HiMK4E3vwJt9c7u1xtuMY9y4sX+NOKwSvMuygFX7V4C6bzgMQF+MBSbnYgGHJzbrsGnYVcB1Uxb830h44Vf47P0rjat+l7S2DObLX/9qdv5LmZ39P2Ru7m8l6P8sOuu5FPO7yqK+ycGImshMhiPeCTWRibjwxwqGTlFclDPoo+0SGqoHoNcYUVx3hWUqU2QA3VoE9UDzE5mhEK6hwBLC4ajMPEuBnCV3D8CbAS1UtjsqUmQKQD5ZmqSJY1OlCTqKxtlo42x2UtPWJpi0lndIJvKPKwjb847K+AMK2vYC0MG+AfijOpN+QA1oOAdORs6++yjn2MnsAfAjYPUjZO7pe8QGgNfeufbNd+ks+YA6wG1TW1cCOvvmtjSAX84p/P4J9V4fo2I+fb9xpmPq2p3deE7Ov59R0xi6v/noXY/loVNeXbbGW8415Wq/PNj8wKjU8QG20PYQrKsI1/SpLHY8klBrjiyC6Sw23zcLH25afgegBwHwdP+axwfrPI4+2rw+BRN/fhMAfxXnl1XdPl2G20su6M/8FdfEW3gKQL1H3Ln7xfvwiPgA6NM6nnZMJnHtRpmMlvqd9Cd+qVauU5nbxZO3T2esxwHUo/d+lJHbW3Gf79VEZyx1qzq4NR1/X7rOfSBvjv1WwXv09haAIJPLNsoQZ87j15v58KsbpAdg+erwh8q2O+K/ltarAN7rm6Xh9CqpOfBHqQLYP/3hN1J95AOp2PlbKdv1Bynf+7683PdHqQF4v8B56Xe/kddHV4DBr5XaU6sU1FvOfiKNJ/4ktcc/xmNukra4jTrW1nhipbL87mtf4PnXSsOZNdJ5hX7uWwDYYOQcobvIqFZGsHKMbZ0MsJ1wEu/pwgp9/bSNHb62RkZpH3vdWMga3/cvAdxbxAlAX8pUn0jZLJOpm8Sbs1M8uQfFQ1Fc4VGZLTou8xxbo3tc0QkJll+QIINwyi4osJOdL1RdBximKJBHGqkWJ0O/KyEw9WBNoh5jnQQ1+pg/MCXnQYCaDWu0SgE9AoYdphmL+o83GNc0lps9XaanTjAnO1dL0ybTu6YwjfPetFxdSitj8hrnv8msl6JS1RGuwIjlGtMkTJCvuWVWbTJAPUkWq5MA+LdwxOutSdKSPMvv2kcn66aanbnoS8EszEdve6S9es1L17jWAqOsZ0xrU5pZzfeMpqAzX4Qe9zSrYXDNYLnpyaswrvIdqOuqNe+P4sBJOr1xhK1Tx9h0npwz5yy52+px3ZYMZCz1OwA8Ok5Ab383g05wnzAGNUKxoatHojrqZsbbxG+Pxvzj4ZjHNhfzDE/G/BM1sjCNf9TgBpHwf8Vn739YFsMtf/0cPfMlY5lfqsKS7kXBwH+X+ZkfowF3OnaRTdHpKUfM71iMTU9FwdAl4h2XKFbMPWwxdc6ht1qA/kpBPdTD3vlztX01kalF2j+nqp3jatP1Bdo3n1ZGnqWs3FuVYYRwFanqCjfFmWzOpHOEDUvL7y/vKBiqwKz0imajc8Z6suAIAPwg2PlBsHQK0g6/s4Ilc89nqfugAjld5WyZe9Q5jjavBHi6w41m4/4PAGC5p1QIZ8bO9uicOVPE7AA2zlyP3DNe7gNYnCFnv5xe7sNMWCNoc0NA1TyT2Wgxy+fJYFvgmAxmnZKhvIsy9iRBnJUA8oZ8XJcnYOJ5Mstxs6YcmWvIlFkw7UU6deGDjeNpZkwtz4jhGsHAsYL4MAziGOI5mDYV7Cy/E9DnahiDeUNmwcanGb4CYPcWnxVf8RmZAbB7i86odasD12YqjyV29sYPgnHvEGfWTrUodeXsB5jvB1M/AGa+S/vfdMMbYIk9cZ2M3dmiISSTd7cZsxiG0tD6NnmbzuD3X/8MgP5HaTz8W2k89GtpOf47MNhPdb6bjnB9Vz6RnsurNE61LW6dtF/ZoLnwdSdWSTOYdMeNbdJyeYOW71/ueQ/A/b4UfvcvUk3wBriX7Xpfao6tklcnwMgvb5bXZz6X0u9/IxU7fiNVh1dI9fFPAf5g8/t/K1X7fyeVB/4EFv6ZtF/D813dKLUnPgHTx22nV0r75fXSemWT9CTQcGaTdJz5QNqPvyeD14wzHY1uBnDec26FtB55TwbA2ofx/obiVkr/hQ9k6Jph8ZqZnrIFwL1Zpu4y2GWjZqjTDpajbB5cL9/DQ+J9dFxT1QKPD2le/CyT2J4cBDs/alzmHh2SebL2snOqeg/V3tI+uolPvSehhhRZBJAv1iRIpCEZYJhlgLwrRy1QTS74UwNko+yVl0mElqpUjGNpufmti1qziKrdm03PXNl57U9WnQHA0VdvHec0rYze6uxv09SFPW+yY4s1x9j3b7ynIjiy+IWqRJ2WmK8CKcWi8Yya1RDUG9NM+AvZOP7elwCdTDxMJTxXE8f3ssyIHDcS7XnvNhGawmZ66OrtzgkALbVbI219JcrUdS5d1e6WAc/bPnq3WrdGuCaxAOg0kQkByENDtaZvPrJUfrdMZcZaLEBvFQHAy9gbU3qfBKArS+9RYxq1gdUxtmGJeoaiAPlgdNo+GZt31kYjAQL6OhUfG3b+y2Ub2OWv/xUA/99+Mp72S6Oq1KS1v5Jw8B8kNPtZdN4XF/G7ywDo/bEZpz/qd4Wjfmc04ncIgB1/oHbsQIeEmegRltypcB/Ef4CBWjO61letSWsLnc+sMbVimcOiqYy/LhfsNEO8L8BOqWKvsIxjAOSOsmRxPKV/+y0dUfOAtfvq82WaY21NHG3LB7PP1QhRuqZN16RhI3BHVePuZ/HiYhxoEcfFToGpn5CJh6eMRSzZOXvoBGQA+whBPQMMnAI4MlAw9zEt1R8z4jgw9gmsqdzjOkc+SSafaZnMAKCpah/POQrgPwLQ3qN9c7Lw4awjKqwbo4qeM+X5p1Vwx6jXKVrWgp27aGlbaTYn3tosADqYeEehBmYstLAPmgvwZsBKuvqwBzmSVn9HFuruykItFj4IddG5qyZZR4MWODtefUuFbTNUvJfHyUzZRQmUXQYbvyTeEhxp7/r4hHgAJu6HR8WZewDroDj4/vDeaYgzkQHGzXCR7D3aK5/K3qumOZNZ2NDc+06T00bByG1g2n3XGT26AQC2UcZub5K+G+ulE2y79wYV5JtlkC5vF1dJ1a5fScOBX0vd7n+UjpO/lx6w2x4w3y4AYQu+J0PnnDiBtj1uvbRc+VLqAM7NYOjNlzdK5b73pOLH38iLPX+QEhyrDn0gz/f/SZ7tB5s/tVZeHF4l9Re/ksaL66Ri1++leOs/Svmu30nd2bVSd/oLqdr3e6k++AEA/Y9g6R9J41lsNM6vkTe4f+X+97UU/+b853j+TdJ+db2+5jeHfyMtx/6grLz9zEcqgOu7uFL94TtP/VF76/2XV8rAxRXSdeq3APRPFdDtYOcT7KfjetjpMoeNz9S9zWpQ40zbKt6s7zRi1Z13SKYLDqrXO0fXZgtxfHxApvN2qcvc7JPDslB+VhaeX5JI7Q2AY4qGjvC4UJ0gC5XxElHjmSSJvQHItzIv/B6ALUOBPdKd/7aHHAbgRXqtMBcFNWM8o2BtrxchoAPgjG1qnQE9zrRPGKtU/dmUxdoJ7EtObgOcF3+hBjUE4zBH0hj1yo1Hwx0FcrLpaLMB9QiOZONhzq83ZumomornKJqjEr4p07BviuresLfO7PRH+th0sAu3P5YwNrV0rouwh65gTpFcthrvRBnQoh7uJZb/e6G1Hluq9woRm2Hn0bF60xsfNyNonDOP0A1uogMsvM2w8LFmqwzfYti5BrQsHZuM37vVexcNa2nTHvo71XufKt8FxyiNa1wD0Zh3OBgLTLli896m6KIvRUKBbZpuacRwy4C+/PW/wsS1tPMXxtBg7t+reQx3ieoGN7chGgyciM37HkYDnvZYwOUCoAejM+4oluAcgD6J3eaIltsjEwDzkRYJDzViN/taFgHoC5a5jDJ0Arr20otMub3hoczU5okfQO3lbDnAnAA+WXxTJopZTr+loE53OCfZOli5h8ycfu4v6ekOoC+9LlMsuZdcMxnp5Qnaf6a5jLciQdxl18SD27zPk8VXeVe8AH0Pznl/xrBOMfiEvXEszqlPYHF2nRanU/R1B4hPYTMwlX9cPcxdjziqdVR7ypM5hrFOAOCnCjhDflGm6Cv/4DiY+X4zrpZ7UkfVRi0nOs60TxbieUtviJPOd5Xm/bCXzhE8T+Ud8RHYWx5raT3ciQ+u7kf4AMtT45jFxkysDLD0HAB+riywX84AFoA97Vs1WIMObyy1Kyu/pmxo9kW8zL0wAjhf6UVxYlPhKTwn7kcA8wf7xZXLdUBcABeOoY0BsMfTd2lp3XbrKy2tj9/7VkvqnCtnTOnAzfU6ojZIB7cEqr0/l+HEL2QsFbfd+ELaLqxUARvFYz2XTC+66eRH8nL7P0jNjn+UWoB615k/StuJ30kbwJzHTprLXFwDIN8ERv6FvInbKFVg4Y0A84bz6+QpQLx42z9JGY5lO34vz3e9B2B/T8r2vC+1J9dK2e4P5OVRMPVjK7XsXrL9V/LyAMD+5GoF9FfHPpZne/8Ixr4KjH2FNJxeI01nsc59Kq8OvC9vzn0ib86sUgc6jti1nv6jNB3+vfGAP7tCveTbz3woneexGTj6BwX3UQB616k/gK3/WjpP/Bq3rdAEuHGq3W+ulfFb62QiGeeJa2Xk2goZvb5aJlPoLPclAH6rzrF7AO4zRcdkBkzdQxV8zg/izt4pgUcHZaHslITKz0jo+QVZfHFJwtVXJVQdD8Z+UYLPr2hgS6TuJgA9EeCZKOHXN8GK07XsTOV7rJsMN1Nn1pWx9hcbNzmK5MZrzAjXVKOxhp2yzFYmG40HPAEe58LbaJnq6TNHMlqAepRiOh1fe2osVymC6y4y4rZGADOz22tvYcMBFk4NADYfoVeJOnPOGXaWy2lCEyUTJ4iDoXOUzcyi52j5nX3zCC1eGb/a81Td7LQawChVRrS+yVJmH2m8Z6oB9I1nuZ3mMrSQ5cy6jvC9sjYglcaIhxsSHU+r0RE9BfUxK2hlov3dGJqubmXc9HYPj4O129sB9u1aXleGzr669s/bcK0s5zkGtKjSvc+Etaj7XJdZHpbex8MAdH9sztUv896Hsug5Iosz7xsb2OWgluWv/+/9cePXrsYFZOPcESqQ/62KMoL+z2R2emd01hMXm/fkxuan38TmvPbYrGcOQB6OzbgkCnYe9ZKZD4OZ9+EPvEsio3Sd4uwqjSlqJNRbJQvdLwDkVsraW9tXAHpLoWX5anrm/pocq8yeJs5yhq/clqmnt2WiJEnsRTdlHGuihAI4AH0Jx9WYkX5dZ7qnCmnrel4chefVc9xdDKCiH3bpJe2tTz4EMwagjgGgRwvOKFtm9OgUAJ0BLxrJCkDVjHVuDrgKLwPsAeqPzojz8RlxPeHxlDjUu/ywKT+D3TvyjiprH885rM8xBcDmJmHq8QUAO8Ndjoo9/wxeX5wmpjmKr2nkqwJ4eRI2GOyZ52joir8Wqy4Tm5wM8b9KUyOZmcYHAOwsZeYhZTYZ+iHHMA2d+eU4UnexhCkaauOYEAAejH2uKsmMmD27ChDnuiaB8iviLzovM6XnwcxP6munbStB3PmAzHufgjmzy8fSAN73tmm/fOzOtxqsMpKyRcZSvtaAEfViBwsncPddXS3dlz+W7ksrpefKp9IXt1KGrq6SDoAeVeKNR9/XVLTW8x+rg17Vzn+Smt2/ktq9/0OaDv6zdJ5+X+r3/0rqD/yzNB15T0fL3lz8XFoB6C1xm7SM/vrcWqk9sVKe/vBrefz1f8f6R3m87V/A1H8vJTt+Jy8A2i8OrpQysPKXh1dKNUC9bMd7yuJfHvoILP4DKdu3Ao+1Wirx89rT66R875+kGsDPUnzdcYD+4T8ooDef+UR6EraAna+RttMfSTeYOjUSTUd/r6y87eQfpfnYH6X+yPs6o95/9TN5c+g30nron6WDpfkrn2gfve/ihwDwVboGL62QkaufYK1Upfx40hcykfolQH69til8uTvAyHdqProne4eOs808OiLzAPlg6SmA+llVvS++uCzB8nMSKDT99cirBABmgjJ3Zel1NzQr/W3gCefTWyiWA3MFW43anqnpTHSs2oA5GTrOo5P1AB16vjdbo2zNhpXraFuzAXv22L19ZrlpRNNqDF76LMEZleM0g1FV+iMzXkbBHFkzNhgaKEMgf02L2NtYqbKIv+swNqNhGs2wh95omHlUDWfyDKC35kuEc+5UuGv0apGxfl2ygG23QmFYbm/Ptyxkn5gyOzcw3da5zfJ3tzeIMGGNwj8ctRoxYSWuLWWaM2CFffDJNsPYKZCj2YwljCMzj4zg827YHPnZR+c4BWvOpLN0r0AORs44VWXqdJHrVWtY8Q7T35299GBs1mmXoOdldMETJ0HfZ7I4+zdWNvpyUMvy1/8rO/+FYeVMVAv+parYFwN/LaH5v9cYv1nfZ9EZ596o3309NufLicz7anC0Acx90YB7EWAeJSuPecawAx2UyGSvjqpF1L+9UcE81Fel6nb6ty+B+YKOrJVoOMtPRXEUw03X5en8ue8Ve+gA9koGs2QYq1cF9mRl7BOF13VNFSUAeBnKApYNhu4pN+V1poS5Nef7gmZ9uwHQ6hinmd5gxyqQA5DRPW6JhbP8TY93er6XXlNXNjfT3Spu4XFvipuz7iVxet9Jiutyj8lo1gEZu79f7CxLPzii5XyaxkwCzCceX5LJJ9golCSISzcKeA0lJrfdVXFLPeiZ705DGRePWjUAkDMPvh7MHAAeqP9/2Hur2EzXLjtQGo1GrVY0ykUuornIxWjUipKenv77pwPF6GIXMzNzlYvBBS5mZnCxmZmZmanMzOzPa/baz+s6J9Fo8neSS1t69H7wflgur2ftvfZaX9Gd8hU9aeylMyv+Mzpi3qirG81j+hLYb3ynM70UwvWxBC9/INmD7Ld66pz/pdLZjKXdQ3vgbWHkstkRIGcyWhM3Jp9PqiGMBqk4C/N+ux/VzofUzrb0+TZUvNwqDHyjSTp7sllY6nrjk/5gncaS0sGt5DFDTpYqu06XxZlxep/nXZ0v7FsAUgA6/sQMpNF/XR7LPPLMa0sRe2ImEgXoE09MR8blBUg8OwvRhybIuTORdEEAU4A1/uJS7WWTXSc4rdLyeIiDPbwFyP32yTowAyFHZ6kYLkzAOejYAoQKwEedWSCsfLEy8cAjcxB2YhEChc277p6BmEurkHh1lTD01bIJWIooxxWyEViIxAtLEXduEZIuLkG6bCZy729D5lUa0KxUE5zCR1tlcyKf4cpCpJyZjVTZAGReWaJRq5lOi5ByahpST09Drnzu74/le7m7DAXXFqD87hKU3JiPkpsL5fIiVD5aJSDO8bYtqHmzEzXPt6D29XY0fWBvfQ8aKDD85oBWt1PCzs+ikz10H2HuAuDdAUYsR5vYbmHyfRxni7gtzPeeAPtDAXNh5onPMcySPP3eBcj7WfZO+mhZqvoIqAnwlrHcbvmccxHcWV5Xli5A1mAFuTRZNrH11hy6hrkk/9ZbLxNmm2dyyTV9jWI5+q3njfSsLfMXAip73GTcqR8FwN9oFCz7573Rj9Ef+9zqn3/AoDB1Be4sPp+fBq7oyvdXlm569UZlbxuJYCWgs2fP12D/nJdzfgfy2kv3NIy9fMTjPhZQW9wE/UywQB5WFrqOr1mWrwRx4xKXgCFdiZq0Zq4nqXscBXMsu6vinexeZ9FzjHtcTcZvZfdmE9aCVtNLH26r7BeWXj/c05gggP4MAx2b1DXO2MCOAvroz98E6P87eoSV9zX+g4lIbfoLOlsnoLNpga2zZZuts/mcrbvlkQC5m6wEuV451N7YaWur6+eoGsF8uJEiuGLTNyegV2YYW0TOnTOMJS9EAD0YA+rfHqzLjK4JkKd6oTvVG50pPmhPNICuznAUwwmYN1ul9abwd+oOZ0DdlN9/BLSw3C7g2xL+HK0RL9Aa9gitoQ/RHHRP08HoGMf+OW1fybK5CMrGepWAf1s3AA3+t+W8W2jiGJkAb0OAgLEv/d/J7u/IRuEpGriCnmu/u142ELUckXOVDcIXR1R8OImydw4olVX46jDyXxxE3isHFLw/jfJvl9U4ptLjurz3ZyryIxNXNi4MnPPlHQLWZObs/bfH0g3OGR2xBrx7kz6gN92o3Ht1rvwdOq1Y1HaWzyOe6jw5w1Posd4d88KMqckfxm75Y9kZQhOZO+gKu4eeyIfqod0hLL3N/zpaPC6i2fWcKteVpX87peNjFa93KJgXPtqkiWP5wrYLCMQ3lwiQr0buvdVIOjdLe8l5N1eo33me3Jdxaa46tcWfnomsq4uQ7TQPOVfttZSeLACYeGqmMN7Fct48ecwqNYJJEcCMPTlbzWDSrq1EnIA5e+zxBPpLwpovLkec41IkXduAhEsrkChg67d3Oly3TkbAwVmIOGmPoEN2CuJhJ+Yh5Jg9gg/PRKjDHMReWIbwkwvgtW8mghzmI/yEAP5pYefC3KPOCdjL9ahzK4StL0XwkdkK5nyt2DP2GvYSc3KOvGf5nNeWyUZmC9JpNXtjpXyuxToXn81M9eumn558ehbijkxA1sXZKLixEIW3l6Dgij2Kri9EweUZKBJgL6HxzJ0lKH2wRnvuzFevfrIOJfdXKbjXvdqE+jdbhaEfROPnwzrG1vTpEJq+HEULAd7lONrdT6LN7YQe292Oo9v/MvoF1LkGox5gOOEFbEkvhaG/1L41fdY5OqZmNBxhy3M3dqjMA682nuZG5R2l11FnsXGu+hFWnmHm1tWtjT3zOM1VZ99c2TmV74XBxha2OMSKObXK3DSGyfEwWeg5btZsuJcaxCjI6xy5iynPZ7urR7361BPUKXjLsPrmnGMvCLD83cNNXCqjW3W23dVsAtI+GbU7R9/UXMblx+iabSTwRVPcQi1TmSjAGt0zbnFJ6u+ubQRWHhpyDbOu+U29PlRhDGaGypJ+5KIPV6ZZeenWZfbcawTMq7OAH0w/3YyvsV3RUmwsYVtLfwfotY0C6ClgH512sAMqjPs/rJboqMp99OdvYehd/x59ff8n+jv+Iwa6/hk97T8N9rVNQ0/bIvS1bUF/23FbXzuNZLxsHc05Qx319TYdV6vrH26qtCk7ryvEYG2e6Sd9T7eU7dHK0PsLItRQpl893AXQs4OFnQeYUjvFcCy3J9MhzlNA3QOtce5mvjxsxOL1LZoI6hEf0SBsvYmLM+nK4ulp/lpAn/31p9onJzNv8LsuLPmyrIto8GJP20mY8wXUcXbc7ZLcflUBvYFgrcfrKlDT5XVDE86Yh/7dxfS7K75e0P43WT692Ou9byrbbgx6JOxdAJrxrYxuZY/8y3kNcjHrDIrfHUOp80kdWyv7TCMbR1R53pDNwUOjAZDPwBjUjkSGrLipEK4vy0++Ix8BcTdVsBPE+4Rd9VomMf3Cyrk4L64WrVGv0SmbgP4UKt9dhLm/l9ufo4c9dPbPWXIPvC7rhmZtk6l3hd5X69Y2OsR5CJi7nEbdp2Oo/XAQVe8OaGmdpjAc3Sp5tEHdzQrurVV3tpw7ws4frkfhw43CThcjVwA93WkJUhztkX5pEVIvCiges9PeOAVueQJ42QJyKednySbAHmkX5yHz8jzEn5mDNAHGBLkt7vR8RAugJzou0XS0sINTEX9OGPvFZYi/vEZ75SyJJ18Rhn5lBXz3TcXXrRPhs2caAg/awXv3JAQfmoFIYdkR55Yg4ICdAjQFbiyn+x6xV9Fc1KkFCD69AkFH58tGYCEizyxC5KmFOuYWKiyerxcpl2NPzEHS+XkIPTBZ3zODWTi7niSMPP3KcqRfX6tGQXl31qsqP/vaEoTt/RXxR8Yj69xU/bwZ5+yQ4zgDmeemI/fyHBRxU6ROcmtRRje5e8tR/nAligX482RDVPlsPapfbBCmvhXlAvZUw9fK5qru42E0fjyAli9HNKWt/iMB/qD6wHd7nhOWflWV7z1B19EXdgf9DHSJeojBGNnMhd5FvxypLteyd46LCsIw4pxWTGtYAbiqKDOfrmlkVk+d/fORPHUF9wzD0Gk0w5E2LlXBj/igUwnPca542GjVqrawQWacLd/PiNJYgk/7YsJYCOLKqD21TaQOcRS0CeAPce6cKnfLNMb00N1/HNW4hj31TJrUfEV//Hv1kFfr2CRnFdupz3zuSCLbiFucj/G4p5mMxrLGGCMdzUS3PqPGzGaYz8mWQqMVuKIq9XwzzkY3OAa4WOV1TWWrzbWCXax+O0vuDG+hMI7XGdHaMgLmslpLAD0yVpVz6VWtw90NWcN0jRvsPInBLjvTAh3NRx/9+dt66H9nflmszPNezTv/B7V4Hej5i4YFDPUsQF/nHltP6z1h6UHD3S1Zw11NlcPt9a3DzVW9Qw1FtkFl5lmya2XvPAmDTFijql0z0CPRp5GpIQJWQejNClRjmc4UTzWR6VBAp1LdS1ebAHorR9LC3hsw5xKGToc4erpznI0Z6c3R71UQ1xj2HA0UwAXeQ1OAMGn/W6jzuoQqV5q6nEa9zqLzsjBPBqB8tUxmXC6qm1zxewe1hGXeeZXLZe1zV7tf0WOVMOoaTz7fLRXaUVyn5Xxh81wNvtwMXEUje+teV9HM2wNlUxH0WM5/jKZgk9+ugO93R+1kK92chK1fVHFctddNNMv7ZyRqW9wntMU6oyvpC/oy3NGfxVQ0V40w7Uv5IkeK3uSY/Al98Ua9ruM+8se6L/6FAn139GtTjo8Uxk4BHMvsYQ/R6n8TrQLcrb5OaPG+jGbPy2ii8xtH1Oi//sUBNe/ZI9+Dije71G/9+6udKHu+RV3TMgWwS59s0JJ7/kOGm2xB9u3VSL9GE5ZlqgDPubNKvdHjTghwX1ygTDzm2DQkkpWfmYHU83ZIOTsdscftEO1gh7TzAphn52n/mfarcWftFSzVsvXsQoQdsUPQgakIOTRdWLW9lswD9tshSgA6VgDbd58dvPbOgP/B2fDaMxXu2ycjSIDdf/90hJxeKux8rrD0WfDfO0Xn0UOOy3ML2FMc57N3JgIPz5aNwCwECeiHHbeX8+cjQDYN8U6r9XEJjgsRJZ8l5sRcbQukXpRNCUfoZEMRL+w9Xu4reLAZJc92oeTpDiSelQ3CgQlIPTkZ2Y6zkH5eAP3MNGQLmOfI5iX/mmx8ri5A/s3lKHu8XkG87O5ylN5diRynRci7ugiVDwXUn6xBsdxe/nidmVF/sxP171mCN7GrNZrwtgfNX/YJSz8m6xRaPc5pZnq3/xX0BJp89Z4AmgHdQH/0Q2Hpr8x4G2ezMz4awxXmqGd/NfPZhd7qcY4Sf1OKrySgM8QlUdPZdHxthKU3ZVkl+DwBNwvQ2V+vssrvVcnWCBz9zo3qnSI5mzq8uQO0amXPmz1wsnQGvGiOubcuw7KFoWeZUTUdR+PM+ch5BVbOOS9zLC7Xy3qsl8XiLdMZgj/L8YWBlo97kFkFVguAgS5qrCOATgV/dYKJUa3P1Jnx4cYcOWYbvUDDyDy6NZPO4BVh7TqKVmuV1WutNaJm55LbbbXp8v3Rac8CdLJzAXIBcAy3lwFtAubtvFwxONxe2Wnrqi0Tlh5m4zz6QMcGbYEatfu/GWXpoz//LZb+uzG1H5nn/87MP6pA7v/CQPe/oK97Jvrad6CnRUC9xWO4syFuuL22xNZS2TrUUNw7VJtnG6rMVEAfEnY+ODKmJoDeT0C3lO0E824K4VQE56q53h1UuAsz5wx6K8NY4lyEoX8RsP4oYP0ODcLSVRxH5TtXMA1lBMRH+tDBTxXMGwNuy/GOgiwTzGrdGE16BnWu58xlV2Otqm5xdIijA9yHUygR9lz07jhKOWMubJxldLL0OgFbzrQ3sfzuc0fL8I3+dxTQW6zNAz3QW4PMLHeLj5POcbM3Xe9xyZT2/e6hjqExZOIcyYv+aGbow9/K5ffyuU2/vCP2LdqjXml+OZl2Z5wzOuOd0ZsqgJ7yFQOcvZU/bBwBYjwlZ8z7KBziZbJ1jrDRNIZl93BhZSzF04s92Fi5dghDbxMwb5KNTiOV+V9Poe7zMZ0vr3p/QAG8nMEoz7eiVJh5iazy59vk+jYUPt6M5MvLkHV9iSm7C7sseroTeQ82CltfKeBtj2THeXL/Us0VZ5xpojDvFLktQcA85vgMAfBpiD40DtH7f0HSyWl6W9K5ecLq2UOfJddlE+C0Eql0cjs2XW1bI4/ORPCBafDbNRFB+6cKoM8W1j0DvjsmKpv23z8DPgdmw/ewPXwPzcLnLRMF5KfDY8dkeO+fhejzyxAjrN93z0QEO8xB5NklWo532zpJgdxHzv26eSw8d0yCn5zvs8dOzp0mDH8RQo/Olc+8XB4j7P3YHGHp05Asm43suxuQdGk5Es8vNI53d5arbiDlvDD6k/OQ6bQEGY5zkCGbleQTU5F1fhYKri5EuiOV+3OR5TgT+VfmK0vPF3DPvWIvQG6PrMsL5LZlqHiwEiV3lgpzX4GqJ2vx/fFaHXGj61yVbLZqOLv+ZhsaaRUroF7vvE+BvvnbCbR5OqJLQL3T/7ps1M6hzeuCGtEMUl3O0jttYVX17WaANMdVxXLQnjJZq68ar4AOajVxCubDmpueKivldww204CcHjMt0ZzlIMdSfGWCOs2xHG8jmKunu1WCJ5AKUzdjZx6GOasLnLfavGqqGsFbrV+/qUmNMnbdBHhYqWs+mvluYxmfYE1lPcvwTGPLNyX5Yb4W09ZYIWDJn6V/3qatgfDfWgGsIlRa/fMqs8BseH4+JqWNLPbAFZwtO1eOtFmJbEbRnmHiVcnWRzzcNX41w5ppz9QNAjdBCuhtpRaIfxcuVYnhzioumzD03uHO6sbh7rqs4Z4mD1tv6zlmZwjB+kcrTnXUYGb0528G9t/nno9kn/9bHWGjWI4JQH2dW2y9HRdtPU3vhjrqI4Zba8qGm8rbh+qLBoc4ylGRpur2gZJ44w6nJfcoYegRGpeqqvZUYeYE8gQB9HhZCW6af95Oz/aRDPToLxrEouAd9BL1XIHPUENrV9+HqgpvDntpjaw9E1DnSBqZMYGWffPrqHO/ICB+WsBcAMzjkjrFMRWNY2RlcmQZvPidLOdT6tZG5Xu9AHdTgEk74/O2kj2HPkYzR97kuVuC7gqAE9BvoyXgls5ytwbeECAXsKSDmpcTmn2uCwu+hmbfW3L+I7TI41vkfZJ9tye7yqYmQLUDbQkuaE8xHvZdCZ8U2HsEwLXUnuGJvtRvOl87kM74yU8K5v20ykx8pdaujEflWBr7o+ydd0U8FeC+j66wB7Ieyfu4gVY/w8xbvC4Li2Ov/CzqPtHF7Qi+v96jAF72jC5vO1DxYgcK769HEaNOH29ScOYYGgVyuY+3Iv3GauTfW6PCL/qd5z/YoICeJ0ydHumJZwni8wXk5Db2xh3thZULMJ6brYAevm8CfDb8M8L3jkHCaQG8i4vk8WuRfnWVsOB5iD45H2k31wtLF2bsMAuhwpaDhXH7CID77pmsY2pBDvPgLQAcKsdwAXWf3VPhs1+Y9lF7uO+cptfdd8oS5h5yfL4w7Dnw3jUBQYdnCvueA/+j8/Fl21TdGLjtmIKP68fJYybDfdtk3QgEUzjnYI/IkxTTLUDoCXu5LpuBIzMQx/csG5soeZ/s4WfcWCOffQXSZOMSumcc4uUz5jgtRs7NVQLe85B2aqowc3tkXpiH+CMTBeRnIP3MFGRfmIVMYfA5wtizL8/VUnzimVkC5MvNurcSZQ/WqBtdIWfahcEXP1iraW0ceat5uUlY/AZUPN2ImtcC7B9NUluHgHm7gHrpiz3y73sY3cE30Bf9GIPxxlpVE8iocNeesotRv/NI21Y6qLH0XhJovNnp905g/x77W546BXFk5s35AIFJQMpmsXY9Ml9dl7BYYekcKWMwyzD73uyZE7hp7MLePdkxM861t26Vw7nRoLiNpXb5XadoTh3nsq3b8o3ITpPkZJOggK7gbZ5HNwrsp5O1jwTDMOKVlwuCjCqeQr18E/YyEsUKjrB9N4p3m47p/ZfK9mEr45wmMzquxnlzOsVpOEuskJgE7afbuL4nG7AniNf/xu6HG0fYeYGw80LY2ootUK+wAL0a6KqVY83gcGdt53BXbfVwd2OSmUmnDSxn0lk9NX7uo6g1+vOvAff/5f9jRv3fmRz0nl8w1L9EfsGO23rbnYe7GtKG22vqh5vLem21nD1PUTAfYegcVzOBLIECUr7oEQDrTnJBt4B5Z6KbAXM5clytVcfVPqI16qM1Y26U7fVk6LysDP2lBrK0RtIe9S2a2T8XNtocRgDmrDl9ygXQfa5qeliDp5OA+QVl6pV0dft8UufJacX6/et5ZeR1PjdVId+kXummF98c9kwvN4c+0cst4cwKf6FiuyaK7AS4G4WJN3tfFiDnURbZr9xW/e0MqmTDQH/37x9PyKbiopb4GfhSxJCWD6dR7WtmzQn07KFzXr424LF8thcqjFNle/Jn9WAn+2a/nGX1vngBcAH1HgFxZpJztpwMvDv8gSardYQ80AS1tgCGq3BjcRV1LudR735Jg1Ua5L1Rzd7wle/vsCrWix9tRNGjDSh9vh1FT7ai8MF65AqIMByFAE7f9dKnW5B02cxl591cri5vqQJUDCuJFTbOPPGc2+v0mOS4AKlOyzSdjGCefNoOycJYY49NRfj+iXBf9wcE7hyLGGG0yZeWIuu2sN6LSxHvuES92GnxGn1qPoIEXN13TBVGLRuBnVO0HE6W7XfAqNrDBGxDD9vBQ0DcS0Dda+9sfN00VkVuPgfnIeDIPAQL0/68YQw8tk+Bx67p+LR1Gt5vmCggbwdP2QB4C/j7yWbBZ9c0uT4VYcLO/Q7OQNChGfA/MAteO6fDe/s4hB+YJIA+F3FnZOMhrD/t+mr5fKtVLxB7bCb8t/wVcUemCHBPQJxcz3JaIWA9X9l6onzuxGNThLFPQYLDRDlnHHIuzUWOfH/ZjrORykrF+Xkov2MMaQquL0Tx7eU6wpcrK+fiHB3941hb5VMT1UrnOVrJ1rzbgzrnA7JRO4nGrydQ/mofauXftSvgOrrYO49+qv1z+qqrPWzaZwH2z+oqN5z6RsBSADPfUn4XemnpHYU+AP3eS4OsiNF4nUe3EcDZM2/KVQarLJYlds5zl5iENY1W5chXfZYZB2PJfWRWvNBa7KP/GDNzM4AtS0fMtHrgYYCfPvEEcZbUM0wPnZsDBfJieV+ybARsWs5S7S7LJmBNsxxbnnluCuU02IWldyrg6e/OWNVcd2tjIBuYUmvjUploieHSlFkrG69gspqA93cazGRgUI79xfEm/lmOgyUcy43GYGGkHocYqcpxtu9UywvT55x+Q7YK64wYzuqh/wD0Mgx3VMgyTB0dCu79Aujtwz2NFcOMVx1ovYGhrjUY6P6TpXgfjVAd/fkfZu9/b0o+ff+gu8WBbjL1J8NdjQnDbdW1tobiXlt1lo0jG793hRssiLQAPUAA3UcA3U0A3RXdAuJdSVYQS4o1g05mrhGp73QGvZkhLMxBZz898hMaBegbeF/YG0skRzC3TGUYZuJ/06jafa6ZWXEBWxrAsOROu9dKOp8xtMXjqq4ajyvCyG+hMeAeGvh4prUJsNZrIMpj2VA8k+cVANfy+j0B80fC2J+gJVgAU4C9LeQemuX16twvKojXfjuLWjdH2UA4aV+9XoNhjLFMgfyhZa46+/YU29V43dDn5kahMeQZ6oOMCQ6z0Ntkg9Ia/lxeR+4PeahKdr52Rwj91WVFPtFktc7wx3q9xZcjaMK+vU2VoNHjEhpkA0PFesO3U6j5eAwV7w6jXFh5pfMR1HDMzlney5t9qHi5TRg5TWG2ooDe5bdWamk948piBetMWRnCyDOuLlQzlbgz85F6cQEyLtnreFqW00INM0m6sBipTEQTps6yc/w5eySctUfKmZmmxH5kEmIcBNAPTUbowenw3TYeoUcFHIUFJ5wXED+zADGn7TVgJeL4bBXAhRybp6I3Ajp74767p2i/O/jobAHfyfDbP0OY+xS4bB4Ht+3T4L57Bjz3TkeQPC7g8Dxh7fMRLEzeef0YeR5h4Xtm4sOWqXi/cQoCj8yVNU/v99s3XWfa/Q/NRYhsBiimC5XX4IYi9PhC+MnmI/zQNEQemy1rLmIp3jtpr0K+5PPzEbp/Gvy3jUH80emIOzQJ0YcmIvnUDGRckPvPztHPT6Fc7MFxiD00DikC7KknpyLp+FQBcir/5yJfvt88Yes5ytjnIvuSbJbOz9KSfS7n2YWtl99fhdJH61H2bBsqngmgv9mFug8HUft+L8qfmX+/mncH0O5PfNAAAIAASURBVCJsvd33EropkAu/p2Eug9FPMBT3zMSsppKpfxJg+6wMHXluulQgp730QFN2r7AS11iOZlmdAjl1iUv6bV6bgM7xL7Jdgjf752S7lVYvXc1ZZDMgLFjDXOS8IYIw/dlZKaASnaV1jpPlGIYO7asbINcqwkjJndfzjbObTUvolspdGbifluG13F7ga7F5T1MZyLFaDBTHZdMe9pseVRRY5AsUBwuoh2mbAPKeMWL9SoYt4G6Yd6r2yukYp+CuXu7JagE7VBSFwfww+VsXLsAeIe/NmNPoZyfbH/HCb8o1gE6W3lYiLL1cy+6wAP23VWnT0Jbu+mZh6Rm23ubP6G9zwFD3TCVVo0Yzoz//k0D932jZxwD6Nltv67OhjrqkoebyeltdXu9QRaptwNqxDgiQ9+vIWjj6dQY9UOfOCerdHFVL8dKENYrhVBzHPrqwdZ1B117zBw1lYcoaQ1nqQ8nW3wiLfYE6/6dqLFMjjLY+iOYyAsa+txTMmxTQKVC7pOYvVLjXWqEstV5XUKtz6FfV8KXR/66W1huFkWuiWYiAaNRref3XwpxfoC361Q8wZTm/hWElgbKCef2xzrxrP92f5fd7ppceZO5vCXuKNm44GO8aJIxfQLs1nM/5Tp3rmgMe6HntUW80DrU/0weDOf7oT3fR1LReZpzHvVEFe1uYbC4C7qgSv56bBd9r8th76OR4XtBtNLESoSNnjgLk51DHzcXnY+pg1ygbmSbXs3r8/vaABsmUvj6g8+WVbw7IbXvx/fVuYXZ7UPpilzLyHPqSOy1GykVasM5Xr/UEAZ94hymIPDQV0RwnI+s8NVOAXYDoDtPIhLHeWKvq9BRh3RS5JZ6dreeF7x2LRHl8glyOP8WccgHLvXK7w1xh5Yt1MxB3dqFmmsfo0V6AeqqAqb2W2cOPz9fQFfdtk+C9b5qWwb322gloz4Xv/ulw2zJGhXHfds2E1yF7uAqrV9HbsYXC0ufiy+YJCHCYD899s+G+dy6+bhMAZvld7gs9uRA+u6crwEedXy6sf4G8lry/gzOVpTMUJnDPRATumoCww7MQxNc/PENd6WJOzZPjDAQIw49ymK0bmYRj09XKNvHYRFmTkHh6DtIc5yP2wERE7RunTJ0r7vB4pJ+bqcCfcGIGcgXAU09NFxCfqWCfyln2k3L9jJ0w+TkC9vOQLxutwtsrUXBnlaa51b7brUY0nEqoeLpFL7e4OKDd7RTaPM+h0+cSekOYo34fA5EPMBT7BDammtFLPY29dAHUdAH3tPdGIJfrZsbZhOEyZtTGVLKR0JJyk42ucakEejLaajOLDmHwoFUqgZ1MvSjMUq2bmFQTifrNRJtS4EZlO2fQ41/J+3mL4VTZWDBERc1gXE3ZXefKrdnxbCsClaCvxjCBP0rmmrnO8vuIQ12uMbPREbaMb2pCY8uzLF6LAgS8gwCW/EtkU1AaqkCumxe2APi5qi0QrrVm0LkZqWA5PQFDZOsVFPxGq9tlf26wrEAB8xD5O8dx3AD0ZwfIdY7UyXOV/VbKN5MBWaaPrmX3EmuV/g7UK7QEb9Z3mzB1prBVDHU1RqCnxRLIcS4doyx99Od/iiL+3wL9/wl93XPR23pyuLPBRdh5nq2ptNlWm9s/NFJuL4rR3Wo/41K5dPY8CH3Z/sa7PZ19dF90J3v+iEqlQM6YyrgIS/8gLPy1OsSpEC7oBap9HqHK+z4qvR6g2vcRqv0ea0gLc9DrOf4VQMHabTSoQ9xNVaBzpryeeeKu59UEhraudW5OZuTM756CeWvkay1zN6oq/ZGW2TkG1yZA2xL+DM3CmCmAa7SMapoDzNLn9ryiznD1wtC5kWgJuGNm2imkU9tZebyy7ofyOm/QEcss82/oTmSQylddfZne6EmXJYBOe9fetG/oS/6sM+S0du1L+qDWrd1Wn7xdGDs3LzX6WYSVU70u76uNr80NjHzW+m9nBdTPqdkNw2NqPp4w4C5svZZpcm8PIvfRNuTeXS8Azizv1Sh6xJG0NSh+sF5d3lIuzEPaxcVIdlyANJbWhSXGHByLKAHn4L0TkCLgEyOgFOtghxQBZW4A0oW5p19ejsRzC9URLuH0DKQJQMUfnYTQPWMQvu9XxB2dojPm4YemC9NdgGSnlZp1TiU7w1dizi3SUTW/PZN0FC3s6FxNUwsTZuy1204AfTrChdWHnV6iqWosu3/bMg5+AtBftwn7Xj8B72R57ZkmbHuRAP4seApzjzy3RB47C667Z8JbWDyV8L6yCYg8s1CvR55ZgpRraxF1ar5WDQLlviAB8LDj82TzMVnWFETI5WAB+tCj9giV90Yg99g6DiFyXyZn6c/MEpCehdQzM5FwdKKw8UmI2i/M/ZidLPnMO/+KJPnsEfvHIfn4ZCQ5CMgfnChMfRoSZZOUoBsB2QQ4TEKSbH5i94/Xy2mn2Zufj2wBdUa3Erzr3mzXUBf1iH+9E02fOLN+SFfTJ2HpLifUjKYnUFh66G0B9IcaZTqo1qsvLVD/YPrqGRag5pgRL6rJwTI8g1y09C4AVRZm1O+8TEV4rTWbzr46xXIa0hKneeJmHj1IBWmcF6f5i4aqMGwl5bOOq6lbHcvhGn/qbQxitPTuZkrsdHXLNb1zKNO2ktt4mUY1WhGINKskyoo9jTZl/3yjqFeVO1Pe6DbHETmOx7H0XmDFqAqQ27gJqRjxsI8XAE8wav3viaZ9UBan5f3BQmHgRZHy942ul+HoFfBm1ZF/1wjmg/mh6rXRn+WHgSxfDNAIpzBM35cJvEkxTJ0tCwJ6SxHA0ntrkbJ1FcgpoFeOMHUBdM6lV7cOd9XnDPc1udn6WznGNsVi6aO99NGf/yGG/ne6M1QXubYtts6mR5rd21xWbWss7h6qp8rdEsQR0Avllz8/TFm68W8XgKfK/UfK2khkqpdGpbYLoKs7nIA5DWM02zzA+LjXkpH7PkSVD8H8obkt4Kmy8wYBTM0MF+BtEDCtZ3/bn05x9y1nOCdh41ctY5iHCtx0ZmO/nMdmRrFaxjTMGm/Q7HFh0OFyH8VwysaNA52ybwH3Zi65jWK5VmHP7K23R75SZTrd3Dh21hlnjGI6FbwZY8qAFR85esr1b+hJEkBP/KRWrn1pZna8n6YxnDVPcNbF/nm3HLuiX6IjnDGnd9ER+hBdEc8U2GmKU+PKGftrcvmmUd77mBG6WgH76s9nUfrqAIqe70Lxc2Hhbw4KI9+PmvcHUfPuIAoebjYpYk93qBCOTmeFtGuVY/rFeUg4aSegPFsNX2jbmn5+hoD6OATv+AmBu8ch7sgkAXQydbn//Hxh4dMQSW/24zORdnkRks/N1TGu2MOTBMQmwHfrXxGw/SdEHZ6mIMlZ7/jzyxREgw/YacQpbVtDj9lrgpr3zkkIcZin5jAE1qgLKxF7cYX20aMcVwmoL1Sg9949DV+3TNQeu+eOyXDdOU1Y+WRh4zOFqdtp7/zL1on4tGE8nGV57pJzhNW7CJMPOTJTLWNDDs9B7PklCJfXChFmTgc6JrTRMjb82Gztm9OcJuz4UgTIxsBfnsNlwy/w2z5WNiizVBsQc3iigPJU+X7GIHDbzwja+hcEbfkXBG3/i47yxcj3EClgHnVANkZ7fkL8kckI2PErouU7InuPkftiD443S8A8eu+vSDkxDVmOs+W7n4VcAXX21yvur0LF47Uoe7gWlS93ouHbabS4nkOzyxkF8hZaxbqfRpe3I3o4xhZsZtP7ogTUWXaPp+nMWy11a6+ZpWctSbsbwFTQFNArpSrdx4B6cYCV0hZlwI8z5yxLa6Sqlc5WY+Wo02yGCW7sZ1PElmeJ1eQ6qCwXEKbT2yBtiun6Rs93AWKbbAQMsHsqO1fb2GzL1lXL7VaoigaqBJuNg3qyxxuFPYGYfXu61hWFqQmNhrrQGz79qxrOaEY6S/26eXEzc/HcdFCgx6Q4WUNsC8jmwMzS0wGOaXJxmo8+RFOZSlnlyRgoNpbWZOuDythD1TyLG/P+DC8MyGZ9KJepcyFm48FNAt3nqD9g+b21EGgr0mV66iVmjO0HuFfYmJWOzvpK9DRG2Xpa7qG/fZmxg9VJpNG59NGf/25AZ7n9P6jRQX/b8eHuZhcB9JzhxpJWW31hv0YMMiu4NN78ohfFKlPvZ+mdfXSNTY2wRteYsuavsamdGpvqZWJTY7+asa7wd4aZW65wdYHPUBfwzBwDjXiMx0YB9MZgAeiQJ8KE2eu+K9fvm8sC8HSHa/AToCNAR7ySzcIba72V66+VnTN3vCXiDVqFkbMcznI72Xm7XG7Xo9we+RxtAqItoY/k+BQdUS/QGfsW3fRaj5HzYt6jg2NmcR+0fN6b7KKA3S2A3SPXNcdcQVwAO4Xg7iYA7i4s3AB6t7Dx7vh3Wl7vDH+E9tAHAuCPjXJdbuuKeaGucB1hjzS7vC3orjJzrhYV6F1FretF+fzymekR73oBtfST/3QC1UyOe30AJS92o+jFLpS93INyOVYJsNd/PIxq52PqTV74dJuq03NvLELW1YVIOTsbSadmqkNa7NHpAsgCWEfZG54mjHs8Anf+LGsMwoR5xwhLjz0yRYBqooDZz7J+VeaecHKmPHaKsPOxCN31i4DZBITtnyTgNwlBuyYgUFhyjDBjgnbQwRlq5Rp0eB48tk+GH13dDs3SPnrK9bWIO79IjhsRI4DOvjcFb/HC7sNPzofffjrGTZCjMHgB2oBDs/F+wzi8WDUGX7ZMUOB2Xj8W79eNleN4fN44Dl9kuW6biNAj07V377lzCkKOztGZ9RB5Xb62/76pCDsqrPv6StlgzNOeeozjSsScX67pbYH7pslnn6kRrv67hJEfny3fx0T4bv4VIbvGC5Cb7yJij7D4nfKdHLFDjIB5+M4/I3r3z/Df8jN8Nv1VWxIRu39B+Pa/InLvGEQfmiLfsazD44W9T9YyfNaluSi6sRglt5eh9O5yFN9ZhrJH61Ghtrw7UflqN+qcGeJCJ7mjaBdA7/RxQrffNfQGXDNZ6iEC7BF3MRj7FENJry3WaqWTkb3SdIZLmLH2l8mSCewE9CIy9TAz4vXdhJoYBfxILz3BmM9UW8Iyjq6R8QoDZrSqGRULN2BfHo0hYdGaQaBgL6yZLJlz6yyj81wrglXnzdk3p0Kdl4vN2Bn0eWLUrU779ZZNK0fOtGzOUjffL9k8n5+l/jRTGRhh+raRtDUdbwuyglsiTetAWXWqUazT+pX9cCao0f2tNkfH02gDO1gUZblgBgiQBwiwy+X8EAHyIAzl+MttsmmhJa6mzzGFLkJDYPS5G0f66lw5gArmSgCdUbfYemdt/3BPQ+NwX3OarbfJGQNtWzDY8YsJzxp1jxv9+R8qt/f9A4Y6l6Cv9cZwZ33IcOv3CltDUbeAuW2oimDOMBaCeZTJPi+MUZe4/nw6xUWouUyvsnRGpwaiywL0zlRvdYtrYw89wRUt8S7aO2+K+mDU7sqiX6Eh7KXxPJfr6nse+UaZdFMYe+D3Lf/222gMuKXl92bL4KVZ++NPLOb9SnPTWWZXRq6RpW+tQJSPCsztAtIddG8TMG+NNGNxav6iTFyONGohuEa8FNB/bZYC/yvdCLC83hn/SUvqvSnfFMy7ae1KD/bY9+rq1hX1Ej1x7zQRjVatnRGPhX3f13nx9qA76Ay7L0z8CTrk9jYBePbnW1nuZ/+cQO5/HU1yuUM+d3fkM3TKOc0Bt9Ea+hy13y6g4Nk+Yd57UOV8BBVvD6FUgLz01X4UP9uhYSr5DzehVEC86rWcQ3GcAAKV7BRdFd5ZroI3Mu74Y9MQ5zBdGXb43nEI2/sLEo5NVr/yoF3C1gWoogXUog5OR6iAV8CWv8B7/b/oBiBCAD6QoLZLbt8mbFUWQT3OYRrCDkyG97Zx8BUGzQAVOroFW0Dqx/65MOWUy8sFSOcg9cYak4DmuByxl9ZoBKr/gRkC8ovVFc5j+0Rh5hPhd3AWPHZM0ZG0L1sm4/PW6fi8eQK+7pgmzHwCnNeNw4f14/BVbiOAu2wZr5GqjFF13T5J2XmYsPzYM/MRKbeFHZmhpjcplxbpObw/gKY1x+drlSDmlD0iBfA1hvUEZ+4XIVLOCdozBWHstQuoxxyaJKD9L3Bf/X/L/QvkO/orQrf9GcHyXbis/pN8f2MRJt9h2Paf5PizLG58JiLu8ATEO0xQT3idW7++WAG9+PoilN5ajLIHK1H6YDUqnmwUpr4Olc+3oO4tPeD3GobueQHtnufR5euEXvld6Q24qqDeH8U0tpcYSnhjRsM0+MTqXZMRcy5dGXCQAjnI0tljVovUaKN6Zz+9fMRRLs4ylRHwHgk7IRhqHKtlKSsMnmXnQWHiQ7m+GCoI0JJ0vzBYstiBDDdhuuxpCysmu2bqGY+ylNmS7atS3c9YvhLMK6z+NF+zjDa0CQBV6gRKgrosmwaspJjNhc7EhxqGr2V3/x8WsCgOMSN0pZHK0DXXvSQSg2XRsuIwUMK/Z1SxG9HbSOl9sCRWAX2wMFzef5j20ocKwoXh0wpX3n8J8+ZjhOEzN56bjCTTVyeo81htudKpSU+2AHqegDkZuxln09n0rrpBW3d9+3BvY8Fwf5MXBtuOWO5xoylsoz//3YD+dzouQUFGX+cOW3fTq+G2miRbY2njUH1Bv+xWbUMVSRjiL7n+gssvfb7VQ8+1+ue5AuR5YbIiZIWjJztEGHoAumgBmxkk4B6EjnR/tKf6oj3FR8G9Ne4bWmI/ozn6g3GFEzbdFOWM5li5LgDM63SJ05hU9rcZxkL2Sjc3ltO56PGulw2Ac/ExTeGGsRt3to/W5uCFBrBQxMYyPr3a672Nr3uzbAg4T94e/kQZeqsw9WaCLEfEIoTBR7+V5/mkmwICOvPYWyNfoo1CONkIdCV8kPVeQF8eK++7S1g82XyPRpzS4e2l+rF3Rgk4C0B3kKnL6rBG0Tjz3uxHEL8qx2vCyi+jwd1RjWJYiucMemeIbDSCH6OFI3VfzyD30R5kP9qF7x9Ooprz95YgrkwYeenT7WrnWvKYaxPKn22W6+vUySzHaR6yBNDZJydTTDg+Q33VQ/dNRKSANGeuaesac2QafLaPR/DeiYimEczByQiX+1xW/md8XvaPAuK/wmfjH+C98U9abg7byRL0H+ErABckIBZy0A5eu6bg6/apCD62QIE8+MhMRJ6cp33zjJurkey4UIB7IeIvLkHUGXtVpsecX6ag7rJ1rCrUqYL/svFXLdX77LOD27bx+LhxAtx2z7ZK77PxbsNEvF4zFh+FubtsHi+gL4/bOVUAeoYazHjsnIz4c/MRSxHblaVqSJNwnop+e+TdWYXM68tUzJd4kb7za9WpLlDYfMbVpYg9OUtZPnvsrpvGIGDXJPhuHSObmknw3PBP+LbiP8N/609IubUFgQLk/hv+IN/Rv8Bzk7D13eMRtuNnRAlDj9kv7HzPz4jb/6sK49LPzkLuJXuU0DtfgLz4xiJNaqNdLFfFwzXC1lfIWirAvkHjVwnmzFVvczuOTveT6Pa9qH30Xtkg9kc/0/ATHWVjP52gnsws9TeawqZjZDou5msYOVXjRRa48zrjRyss9TvZrzqtWWEuVYnKxIeKIxT4BnL90Zfu8aMK1ZvyVd0PB/KDtB/N+wfk+mCuEZENsjxdGCrMPUQZ7SDFZnlyrpw/VBAsABxs2DvBVsvscVpaH2aOOZn9dxN9qteVucebbPNKS2mvPXGrx8/nGJlhJ5CPVA9Y9i+iWj1E34ut2DBqAvaQ/E0bskB9wBLBsZeu7cXSOA1n0XTJ0ngTziJ/D20MbNHrCQbQK1Ot9LZULd8bFXyaGQXkbL9awhYJmJcC7RW/Kd47a7oF0CuFpUfZBlpvmRG2nr+YdMxRcdzoz7+enY+o2yehv/PkcGeTm62tKs/WWNw+VJc3qCEEFcnml7nY6p/LjpU9dKasadIaGXp+lAJ6X264MvUeYeqdWbKyw9CZGaJg3pZExzhh6sLSW+O/oTnOBU0xnzT/XHPQw4WxR7xRZl0X+Bh1jCD1EdD1u6NldpbXWyhsE/bMknqrbgTeCzsXVh7yTIVqTDpj77wp9IVGrzbI89CTXX3ZuQEgI2cpX56PojidRSeghzxW8O4Qdt3F0BRZXfHCuKOFoQtQd0bzNlN670n9hp4UAW1h6QTzblm9qV/12BH9Vlk9y/Y9vE8AnYr27tjXujplA8CSu5beqWQPvieAflvZeZNGtzqZOXhvJ9S5nEMDx9S8aB4jgO/pZEbW2FN1N5GotZ+OofLtARS/3C9gLiz9yXYUCXgXPViDYoI6w1eeGIOZwttLkeU4Axlnpyug68jVcTsVxyWe5RiW8WpPpGXrqdmIOmInAMby8i8IFMbOcjoNZLw3/hn+235BiDDOz8v+k4q/og4K+G//CzzX/D9wW/PPcN/0CwIOzlDLVo6MUagW6jAbyZeXIvjwDAHIWcKW5yLFaZmGr0QcmylAPAv+wsQDD8xUZv5t4xhlzW9X/6JhLRxj+7j+F7xdN0bWJDxd+hNerBoL501T4Cwg/20ze+lj4Sas3ffIfGX1X4SpBxyahTiK+S4sQNrVZYgWlp50eQly767VufysW2sUzAsfb0fq9XUIOmCnbnYJp+zUNCdCmHqIvI8gAeiQvZMQsnsiQvaMh+faf0Lg5j+qaU7KnR0I2Pxnue1PcF3NisUvCNr6Z0Rs/zPiD41D8rHJSD46DhmnpiL7whwUXFuMQrJyAfFS+Xcpu71MZ9VLby4Utr4QhdcXoPCaPSrurVSDmcYP+9Trvd3VwSymtHldQKf/NfSE3kNfxCNh6I9VXT6U4myEaQxAoYGLms58NuXofC8BUV8zClbob4nQQgyAc2kJ3l8AL0TZ9mBhiFF65wtICxgPkLEKqx7SvniY8Uz/TnV8DCDAj8p4syEoCdEsdpu1eeDYGZ+P5i8jnu1DXAxroWd7tg+G8gJMBjrH1SwwN1WAVMtyNl5L/UakF29YvAA52GfndTrDEdD53gjiGiBjgTmfV1eYlsgHuTkRtq1jaWTj8veNbJtmMsq+y4ypDMF7mAEtFSlahtcUNgF3W2mCMZ8piVVwV0CnTSzNagTYofGsqcZNjm50zUWWr/uIi5zVS6c4rruuWUA9xxphO46+jrlA/38c9Xgf/fnXAvr/pgIMWg/29yyy9TTfGu6oCxtuKddyu60212ZTkUii/NLHWyX3aC27s9RuVqSAeSR6csPQnR2MniyuID12yeoUht6R5qtpa60JAuRxXwWIP6pVamMEWTgDWl4LiL+S9QL19EcPoXMcBXMC6AH3Bawf66gZV2vUK+2DU/jWyNlyAWw1jiH7Dn6q8+aqjg8y1zXUheV4bgZoIhPy2LB8OrzJdZbaybLbBbg7BLTbrR47NwxtchtBvSfhowCzs1z+oPatBPmOSJbjR9j4V/QKuFP8NkB/ditohb7sAynyf5Q+7JFP0Bl029i1htKH/bmCO81s2oIfoJ1L3lebNSrHI0fzjMmNE1qoFxDQb3Q5ryEr9Z8dtK9a++4Aqt7uRbGw8uKnpuQ+Ul4vp1EJI1EfCrDTGe7BKnUny3CcLWAuQH56JmIPT0Ts0ak6ghXL8BQB80yy2KPTES0sPfTAFGHnUwTMxiBsP0fbJqswzG/LTwjbNx7uAt5h+8YJs2fp/Sd8Wf0HfF7xB7iu/0kYvgDf4bkajhJ8ZJbOnyc5LUf8hSXq2R4tzDfl2grEOC6Bz+4p8NohIC7M1msH++zThG3L5kFYtsv2SQLW4+G6dZywcDLxCXi1agxerPgV9xb8Ce82ThZGPl2Y+3gFdrfdMxF6arHOrAcdEWa/Z7q60jEHne5y8Y4LkXFzJdLltdNvrNRqQdbtdci/v0Hd4mLPLBTQX4TgfZPV1S5ovx3CZBMSvHc8wtkrp9OdXPbf9EcB7b8i5fJaRMpmhX3zLyv/CK+NP6twzn/jHxGy5Y9IPDoJ8YcnI+nYJORcmIls2VTlO9kroJOFl99fLaC+TBi6bCqu2st9swXMF+D7ozWoe70dDe/2oPHtDjS+24km590C6MfQ4X0BXT5X0BV4Cz3hj9AnDH0w/rWW2jWWNFOAksI4+qZTgc4wEwrIyNRVLOZvQkwI7pqI5oZBnqsg622J2gIEsCK0pD1E+9c6M3NtY9Qqe8T1GWpIo/7oVoKZAjCB3gLvYXq8FwRaxjD+xjGO42oU6hHcsw24qwo+3/TRtYReFm2OytoZsBKrSnVuGowNrQXollhOfdpHFPllkeZx3GxYR24ShqhKF7C2CWgPsuJYLH/LCOY//rZZ4K6xqcYhzuSimzVE4Vy5AfNhgjgFdcWm9K6GM2oRm2r68VWp5jJH/hTUcxXU2Ucf/s3fnSNsg2aErbYaXQ0Rtt6mR9pLV4/3UZY++vOvE8P9vRHD9Y7BQOcO9DQ5D7fVpNkaS+qH6gv7h6uzbIwSHJDda39JnP7ya/98xMe9IFJV7j1k5dkh1tiaN7rTfMz4miz20Onn3i5g3kYwj/kgwPxW+92NdGujeYyy8ucC5k8VzJnCRnAnaBs2/sq4uwmDbpHLjZpdLiAurFtHyHidj+XsesADLak3yXO3qkhOHssRtVCTe06W38oyegT75bz8TK9TMGfEbx/REfteju8F2F/p6rDEdGToplcut0WaMbNWKuQDbsm6YZTq8nwcTRuUP1KD6S46ntYb80LDVDrljy8T0DoFxGkc082KAFXtYY+FtT9Vj/ZOXpf72GNXYxn/W8Le5bkDb6vVa7PnFTTS5MbZAfVMT3u/H5Uvt6Pi5Q5UC7jXfD6Jmo8OKqYqebZFLV/LH65F6Z3lKH+wGiV3V6LozgqkXbAX0J6CCI5PnZmHeAH0JGHM0QLYUbIST85E2N6x8Fj/Z2Gk41TNToFX5OHp8Nr8C7w3EbTGqrLdc/0f4CvsNFo2AVS4f133M9zkHL8d44WJ2ysjJgvnvDktV2POLxaGvAqJl5cj4eIihJ2Yq6zYR853EWbvvXMyQgT8P60fg3fCxr12TdI++NdNE4SBT4Drlil4teInve+m/R/xav0UnT//sEEAf8tk+DosRODROfBlItvR+eokF3xwhpbao+W1UoSdJ19ehNQry9SKljGqxU+3ovDRFhQ83orse5uR/WCHnLMCsVTb06ZWBXUzBLhnqb7Afe0/w182MEnnFyJWGHqwMHbXtX+B67q/yvfxJ/ht+osA+p8QtuMnROz6Scvu6aemCaDPQhYtYs9PF+Ceh4LLc1F8ZwlKhKUXXJ6N/EuzUHZrAaoeb0T92z2oe7sb1S82ovb5ejS+2Y6WzwfR7n5GAP0S2r0vo8v/KnqCb6M39C56w++jTzPHndV9cCDuJQYE5AcTZLGfbqWfwcoRp9J8MEM2obIR5e/qALPOCyzGrn3yeMvjPcMo3a3ZdAVUK3lNledWL9uo0ROUKdPbfYiqdpa91ec9SG4zo26aiFZgqdmVzZtzoI50kSqis7FHzxE6zseX/242Xt+HyWqHvC7qrEx3Odo4blc1MmY3Mq6WYH0OYdnyXm2VSWbmnKDNv2nFsep8qf4arD4qqMf8xtpLYsx4G3v/FYm/Cei+JwvAsxURq4+1Cbu3Wf19BXEtuyeZy1XGoU5T3UZYelv5bzPpHVX9wx01rcPd9TnDPY1u6G89jaH2mZYd7GgvffTnbwJzw87R/0/o71yC3pbLws5DhJ2Xsdw+XJM3yKhUDSmg4lP+A/Sryn3EKS7G+Ljnm755by7L7IHCzP1k+aI7k/PoNJRxEaD8ZPrZMaYH3Rz2WkG8RcVvRonOMBaWyBnIwkXlOhXmnBtX29aw5wqq9UF0fjOz4E1W/1xd2EZK7qEG9BXIldFbZjJk3DF8zjcCyq+1tE5nOIamdCn7lsXscorhmL0uoNtCVX3gPdR7XUedx1U0et9Eraz6oMdqLsMeO5XrrXJeW6gsjr4FPTRGNaqaF8COfoFu2RR0a565LMad0gmOvXRaufKxwXdU3a7X2Vrwv4tW+Yzt8lnJ1Js5/y4svdHN0TjFuV1AnQL3MbV5rf94FNVv9mjAR8Xr3ah6dwjlL/ag6P565N4QFnppAbJZ4r0nTPDRRo33LH28AQW3VymIJ502JXZ6tac6LhDwnoyIfWMQc2gCgnb+DB8BppC94+Sy3CaAHrx7EvwEzIP3CJPe+jN8t/6Ebyv/SfvtUcfnqpI84uQCRMrl8CMztbRO4Ey5uhoJl5Yj9eoqYeeyeTi9ANGn5sF//zQtp7ttHgP/XWPhJ5cjT8yG396pAso82qnI7cWqn/F8pQD56l/weuXPeLn8z7g+5w94vGIMXq/5FW/XjMWHTVPgL4AefNRe581pYENxHXvzofKeMm6vRaaw8ay7G5D/YBNybq1CpnxHxc92ocL5mM74c7a/6Nke5N7fhKxba5Eo30nEkdkqkIs8Phvhh+xUuZ8mG5Kks3O1asFSvKcwc89NP8FjnbD09cLed/yC6P0TkHhoItLPzEDKicnIPDsdWednIvMcY1ftkOwwHpmnhLmfm4o8x2kC6DPVNY42sDxW3F+BygfLUPN0nTD0XWj56oAWl9MK6F2+V9HpdUnjVTv9b8pmkdGqT9Af9RQDMZxL50z6B7WD1dn0lPcG3AXwB1k5SvwgrPyrxdq9LRFZsGHYVLDr7Hm06WsTGLW/Hq73g4uXyyKUQUOOKA01KvIqK9mMDnQEYS2Hxxi3uXILoK2euIlkTVAGbqswKnkVxlmlc31NK8tcwfr38a4NTE6zUuIa0n/cpudUW6YvVVbloCbViOro406/9spULZ0PaG88zgC4MvYYYdxxCuRDpbJYfpf7tBxfHm8AXRPYrAhVBrtwvE976GkmdY2WsDXGuEY3PFyyCWAy23BzsclHVzBnaEsNhrvqbQLmvcPdDZUC6PJHteUB+rtWqS+IFdoyilqjP38rO5+AvvZd6Gp6NdxalTbcXFI/3FDYa6vNtv3XgD6gwSwWoBf9HtDZOzeJa31Z/mYOPdVTfdw74oWVxwqYR79X4GboCvvbTQxfsRTuBPemiHdojjQ98dbYz2iN+4JWOq+RoUe90Y1AY8gT1FPdzvK5Mm9jHMPnM6K4F+qfrmV5MmsBaJbJu5I+y/qKbjl2xr1TQKeinfarBPXOqFcK8J1Rz3VRrNYexhL4PWXIdZ6XUOt6XgNhGryuoYmpbNqDv2/G5kKeWccnstEwLQCT3nZXx804164sPOyh9s0J5l0EdDL1iMfqz94edFeXsneW5IWld8omodXvuoC6HAPkvbCXLgy92esqmjycUPvppAlieXNAQPwwKt/s1QS1YmF35U+3oJyRqA/WIO/GUqSdn60Jadk31whz34nCh5tQKMBeeG8tsq4sQcoFRobS2Ww6kk/PQsKxKYg+IAx731iEcFxt5y8C5gJc+6cIY7WD77Yxyno9to6F/85xmrDmvX0CYs4IeJ6aj9izsjE4txAhB6cj+uQ8hMpGIOXKSmTcWofka8u1/E23Ns6Bcx6crnFeOyfCf88kYegT1bHNh4B+SM5zWACPPdPwQkD8/sI/4p2A95tVsgTcby/4E96uHW9uW/0rvm6dCpdtU+GxewZ8906H126OrM1EiJXIlnVvE9LpfHeTcbCr5PtYoQly+XfX6dhfzefT8u98Rf69L6Hk9WHkPtiG1GtrkeK0Chk31yL34U6kX98gLH+FbIZmI/bIZNnYTIT35l+FuY+H35af4b3hj/K9jUe8fCfJp2Yh/fQMZJybjbj9Y5F4ZCKSj01Stp4qAJ92YiIyT09FxqkpyL0wQ8Vx3x+vQdlt9taXoPz2Ynx/sFwY+kY0vN6OJnq7fz2mArkW17No97ggoH4ZPX7X0Bd6T4D8GQZjX6gdLPPSB4Sx98W8EOb+SmN5+xMEzFM/mzlwtWR1N7apOublb7Hm8N8YLsFYgTfegGq51dsmcJM1E/Q5libXCepa7h65PCKuGxG5kYHr+Fi0uU2WUZ1bI2WlIWaWXYVsIdb7sVLUrF79j3nvGst2leY3jH9lOhzL2iOBKZrtnqZgq8yZoKoAm6YJavTVsFXJY6vS1fqV5fUB1QkZxq16oZI4I3yjPSz76GTmBO5qk5E+3JAvG4pck4lenmgYOd/HSK58lRU7S6Cvs5LZGgtga7EYegcBvZZqd9twV8OgrbuxcbinOc3W3/IOA53bRv3dR3/+VjD/O7PzM+zcJuwcHXU+wy0VZbamknZbff6grTpLftHlF7/i92BugllYfieg92l0qmHnfTkh6M0O0rI708a6mIWe5Ib2hG8K0G1RzsqSCdAK6ALkjaEvDSMPF7Cmwj36s461tSe5o0U2AVSrcyPQHvtBy+66dJ78rYI8wVuTzqLfqkCO6nOOpbXFvNOSuY6VpbvKcjOz4omfVezWLmDK1cG+NgGc5i7CpNvlcpvcTr/1ds6kq5+6MPXAWyY61VvA1M94ytO1rl5Yc72AKw1var1uosb7Nqq976LS6xaqPG/KuoFqn/uo9b2Pej/60d+TzcBdZfoNnteV+XP8rkVYeCvH0jh/zkAYT0e0+98Qxn4PHUG30SnMq0c2ID2RL9HNnruAPA1Haj44oFLYeJXzYZS92I2Sp1uNK9zDDSh+sA7Fd1eg4OYSNZQpf7ZNV/Hjzci/t0HO24wiOafw/joNZMm4bK/JYkmnp6v7G61ck07N0LhTjraF7B6L8H3jECKAS2tX/22/IvTAdCQ4LkPQgWmIOz9fGXfixRWIc1wqgLdUQ1nYK0+4wGCWRUhyWq2ObcnXVsvtcxW4/Q8wgGW6CtcC9k1FgDy/26Zf4b59Inz2TFVFu/c+Af1j8/F+3Tjct/8DXLdPw5et0/B582Rl51+2TMKHjRPxafNEHW37sG48vm1jhvoUWcKcd02Cvzw/WTqrA0mXZINzdSVy761BtrDz3DurUEKtweNN+P5qLyplk1T18ZgA+iEdEcy8K9+bMPa8RztR8nIvcm+vQfol+UxHZMOx7Wf4bf1VGPpk9bAPFlDn+F7ySWHk5+2Rcm4O0miTK8AftWcM4g5ORAYDb+R2iuNyLswWxj5Dlh0KnOag6NoCFF2dg+JrcwXMF6GC654A+gs6yO1Gnbyvuo9HUPd+L5q+ENiPo8PjLLqEpffI70q3bAK1px71BD1RsnGUTWRPOANc3hhXtczfAXiRAXDapYLGMhSycRGMrSxxLXtXC6AxxEVnuIW5FwWY/HParJZH/samac+aM+JG52v65Cyvj2wSyLwJzpalqxGsRapnOxXoQ+o8F2iS3Fh6HxG08f5SVgziLTDP/C/61BoUM+I/z6Wlb/bVE02lgJGpel+aWdbsOcmKiUk1ol+1tlaGbnrpQyqUS9DeuY0bARW9ZWmv3MbLZOcE9NpMDWzRNRKnyqXJbqY68NuGI8+I5Jo4wkZQr7SAvWZwqLOufbirsWC4r8UNgx1HrBS2/zDqHDf6898qtf9bk67WNwWDXQds3S1vhjtqk4Y5qlaX36ujaixJlSdYgpGRMnusmT9Xdh79Y0ytV9i5rpwQy1TGF11pPmhP8USrgDojUymEayELV9vXF+oWRyU7S+1N7KnHcFztE1qEmRPMW1TF/lYY/he0x3+W9RGdiS6ySRDAj/ukpXM1fUn6ho7Eb+iUY1vcBzNnzhJ6widh5cbZTS8nfEQPjV7o0hb/zji1xb1VZt4eZQR3zeoOZ5X3KZhj+TvgrjBxmr3cQpOfWfSL/+5yERVfHFH5lYEs11HpfgPf3a+j3MUJ392uoNrrNur8H6pSv0aAu9LVSc6zAmN8hfV7XEHVV0dZF1Ajt2uojLewf58bAupX1Lu9XkNYzqNDXpuRqV2y0ejhRiNQgN/dES1MWPt6XBO46j4cRdWrnah8uQulAtpFAtQUwrGsnnVloYD3BpS/2K5mJYzrLLwtYH9rmYrkCgX0MwVYMs7NQtblhUgSMGK5Pe7oNMQctUO0LL+tP8Fn3Z8QuGOsltwZTMI59uxbq3T0LMFpBRIvLUea00rECYAnCYPNvL1RbluBtOtrkHZrE+IurUTqzQ1IvrEe2Xc3IvrUXHVyc9s+VcNXGI/qK8/tuvEXuG4ZD//9wtr32MFtlx2CjgtL322HZ8v/gvdrx8B913QNZHm/2bDxz1smCzOfpud/2jJFmbqHPK+fbAa85H73XVMR5jDbKNaPyOe8uUbL7dk3ViJHWHr+3dUC7CtR9Xaffk+cDNAI2XsbkXOXG6AtKHm+S27bgvQrtM9dgIhD0xB1dLqA9lwkyMYlaO80tYFNOj4dUQeMc1yqbIpSBdATjtnJBkm+44uLkCrnM1M999oi5DnZI++CHXLOG4aed3GWlt1LrtvrTHqJsPTKZ1vw/el2lMkm7PuzragmuL/bhabPh4StHxamfgqt3k5acu+WTWBP8B30CpAT1PtkU9oX8RgDcQT0L5rINsTYUs6ma9Sqh7Fi5VKhmucPxzbbiD2s+qMHWWNgloJd7V8DTcIaZ79HEtay3eQ1GI9qlfrTvmFQXmOIRjM6phYkr8djmCrJOfalASkV1mKJu9ACehWxxVhqc3quc1Mhi5d1VM2U1CHAbrMY+BDH2aos8Caw16X/BrIshaseIE0BfbAiUYNYlKxYTNyQF5bczbgamTmz0DUvvT7fKrOPZKLnWFnqZoPBcTV9LQK3gne2vj40DCbT5KVzfK2pwDwHn4s9de2nW/7uXfVlw71NIbb+tisY6lmgpMv4u//9KKiP/vz/gHnvOE1V62l7QGW7jb3zusLOoaqsQVuFVYIqjjVGMpp7HqmjaSqGK4zSy2Tovbnh6FFDmWB0C5h3We5wZNkcT1OAtlLWGmXVBz9HXcBTXfRzb2IvXRg8z1NAjxUAV+BmBCvBmte/mkUw532JFoinuKKLS87Rknryb+NknYkC4sLIadfK2+nsRvvWjth3qmansr0l+LEK49jr1vI7+9khD9WxTVkz+9f0bier9rujFrN1wqzrPK8JQ7+lI3V13sKWvW+g1t2kvNGytVbur/x6HqXCoEveHkLJ+6MofnsQeS/2ouSdA8o/n0K1yzlUfzuLyo8nTFrauyMofnVI1kGUvT2KMmc559tF1DN4xtURzbIpaPWjMO6G/PG+otGpFMg1fD2NWmd5zNMNKH20RmeWWWpnv7yA2eUCVjnCwJnWVfZipzDQXXK/AMTzHah4tl1Y/CrkX1soYC6M8uRkDR9JODkLaRcWCVOfpir4eAGliKMz4Lt9Any2jkOQsOiUC4uRfXUx0mUDkEGf9yvLEX9uITJvbRBGu1F75ZEnZwugCxu+vha5j/Yi6/42JF9fj6Qrq+WczRqpGn1uMYJPLkbY6aU6L+61fTw8tsraOUk924OOzIPHrinwOzwXwXLZbcdkfFg7Fl47Jyvrdtk5DR57ZsHnwFz47Z+FQDnPeaOw/O2TNfDFUzYBnsLS3bdNRNjRmfCTDQMrCUnCsMMOz9SeeOY1+Y5uy/f1cKMA9kYdY8u5sxYFj3fKku/p5R4Uy+aI2fDJjouRJqCcLxulXNkMFMjGKOf6UsTqdzUZccLEaTjDxcS1zPOzkX1xHjIvLZLzliPn6lLkXFuO7CsLkCW3p5+agswzU/T7z74w16SyOQpbF6ZeeGs5Cu+v0dHD4jsrUHZ3uWalV7/YJmydRjMH0exyCi3usunzuYZOsvSAa+gLvIYeWQOhdzAY+Ujd4wZjn8t6hiE6yUU/MscE2sRSGf8OtoxPxpI12yrF51v55pxTL7cc1krCdAyNwrkhZdScSQ/QufN+hg9leKE/ywf92X4Y4HW5PJDFYCIfPV/75gK0QwQ39rRHPNa1Z27149V7Pe63cr6q2NOs3neSNY8eZZXtY6w89ySjsmd2e2Pmbz32RgO+2ruuyzKArqCepQzbVmcuD1ebkjkBnSLgoQoyeLmNpfUqOY/VSp6jKnYTvzqkG4NsgJ+FgK6pcwmmFaAOcXlWFG22taxo2lb20ItN5rw8h43A3qygbkP7915h6vXD3Q10jnsnLP2ASWHr/8dRUB/9+a8B/X/9YfHKkYj+rlW2nuZrw+21fraWiryhxuJGW01uv60y3TbSMx+0wlio/qQrXF+BAfEfYJ5j1O29BHLtm3sLmHsKmFLVLoAe5/ojUU0BPeyNhrFwJK0xiMI3ZzPGligsnuAfT9B2k+eQxyZ8VVMYlutbYuS8WGHfBPlUD3SmecrryWsluwqD/yTrswF/gnuau7wPN3QLsGvvXJg5y++dMW+1f94lq5sCuDjOmL9CF1Xr0S/RGnLf9M1D72vamQHyOwbMhVE3MfFN/mgyNrXe9ZwGpVCg1sjSu9cVvb2Oy/USqgXMKbAqer4XeU+2If/pThQJUJe+P47i1/sFtPej7A0jTx009rTk1W4Uv9gtoG5u+y6PrXA+qrnr9QLmtV/l9YTFN3jIa7k5oe7beWHkDqj9eFxX5Tt5bh1PW6t52uVPNqL43hottRfJseDmMmQ5CYBcWYpcAauCu7LuyBKAyr22TMElhTPpB8Yh5sAELRnT3jVRmGborl+RcGY20gWIcu9tQSL92Y/N0RS1gvvr5DkF4BznIvncHKRcXIyE80uQQfe3q6sE0OmhvlB91FNubETu411Iu71ZmXwMvdWZeX7cHgFH7OF/YCa8haG7bR6L1yv+Igx7AtwEhMm4ffbSFW4ifAjYAuJMY3OXzYWvnM/5dB9h4WEnF2kIS7hsDjyEuYcen6fldp5PH3j20kOFmTNjPfnSMk1T894xUdk6U+FSrq7UHn/MaQFfqt45/vf6MKqcHVDz/pBsmLYhWwA59Zy9fJdLFMhLHq6T726RWujGHJmC1DOzVX+QKRuctPNy3iV7ZMtKPWWHdMd5GqeaQYCXx6Q7zhGwn4vU0zNN+f3yfORcpqf+HB0nzLxgLxuAZSiRjVnZ/VUoETAve7BKXeNqXu1A/bv9aHAWhv7tONo9HdHlcxndsmgF2x90A93+TuhV0xnOqD8wXu8xTxTYKZijq9ygRq6+Uu939UEXIKdAzpblIqzbV9n0YGGw/P8PRX9RhGzwI9T1TeNEBaAHSqPVaY2ua0OMUOXirPhIaZtgXGFZyaqgLfW3ZDKWwAnaBHLOqquzW5ABdQJ6TYJRtBOkR6JJmWYmAGqrsYRu+nwWE6+1nNlGXkOtV3MUTJUpN5pl0+vWvLi1bFzC2EfG1BTU2VevFHbP9T1N++zsodtGSv2a2pZjnrsh32wMfgjjLNvXJoul12f+tpng56DHOy1gebkhx/ThWYJvLR8cbq9st3XUlA13NYTZKI4baN9jgfp/sjzeR/vpo2A+IoLr+vfqCNffswS9reeGO+tdbC3fM2wNRbW2uvxuWxXBPNmAeZkptxub1yhLABepQSzq2a798kD1bKcIrjPNW3vnHZp/7qEZ6G1xAtLRn9HM/nj4W2sx6eyNsnbeR0ZOk5m2hJElAB/3Se1a2+II5h+NdWuCMHUBamXlqQLa6YxolevC3AnqbbHOWqLXPjotWDkvror2N+iKfWsBN8fNXuiRoriRy930bo8TwOf5NJLhGBtd4oLvoD2IvurX1PyFqnfmpTfRCEajXK9qUEqNsO2ar2Tbx1H18SQqnY9rEhod3Mqdj6Dq8xlUfj6N71/OoEKAuPTtYRS+2IOSN4fk+glUfjqBKuapsycuj/kuj/3+0QHVH4+i/M0+Va3XELw/n5Tb6AwnjxHWX8FNwcu9KJdNQqlsCNg7zxPmmC9AnXdrJXKFmecKe8wTYMgTUM+4MA8Jp2Yi+byAy2Vh144C5GfmCntciLyrS5ApoJMi4MTbYo/ZIfa4sHZh6rn3NgljXYOix1tRQYvZR9u1XJ1GYHu4DZk3ViNegDCF5WSnlUi6KK91ay1izsxDsgB7MkVlNzci/c5WJF1djfRb67X8HuQwH2Gnlgirnq2xpt57puo8+tvVP+PlqjHKrt2FgdMK9uu28Qg8vgABcm7AITu4bZ1kIld3TELQUXkeWraeWST3zZHnXIC4C0u1Lx91ZjFCjs4TYJ+LoMNztE8fRVvXY7MRd24xQh3sESy3R59ZgAR53+nyWQqf7ULpMzLzfahxPoxq2TAVPdiMpPPzlWHnCXMuvrdKgH2RsPUFiJfvjFMCjFjNk++p8MEm2TSt1++cCW1pp2UTcZJgPxsZ8h1nXuamYDGyZfF61nl+7zMQ7zAVccdnI+3cPORfXSQbsaXC1Bch/5q5TDvYcvb5n21FzZvdaHi/Hy2fD6PV5YQazXR4nEEn1e8+Tur13iWA3sNRtijjHtcb8Qg9YQ/RLSDfzdspmot/id7Y1xolzEyDjrAn6AiV86hBSf6C/hTjr0DHt6FS09e2URhXlSzgmGNmrC01vPbZ2W+vN7PpCrQj1qzlVjRrGVPQLCEcy/Yck2M+Okv+HGVTIZwVFsMEOFW5W+NzdKyjFW0NS9vpCpDKfgnkNVYfvfp3YK+9bCsshSloXAT2Bm4KUnTsTsvknCHXMbQUo36n9wbNtMqMCp5/E2ksY9TxI8I4q6fO74AldIIyS/NU1WvZPfvHaxnfeMtohpuS/5e99/qNM8+yBF8Wg30YDAaLxmCwaAwa+zCYh0HP7KKrurqqsjMrU6mUMlNeKS+lvKW8obyXKMqT8o4URcqQohEleoqi9957b4Pe+4i759zfF1T2n1DVevjwMYJBRjAiGOeee889R9vsdeYgsHdX6Vxdemrsjv76MUd/Y49jsK0cTD3aPtqNaqzX5TdJbP/5C0v/Aub/54yBDOcyYwMnp4dsLwHmudOdNRaYF02Z+RFnSdlaqU7+FtArElX4xuxzxoEyTW3mAFseLgSoA2SZfz6gUakAY2afJ/np3nkf1esEZ87Hce5NBWgDsPsYrZr9zkplC5L+nBDjAV8Qrkx9iMYteRbrBjMfyQ+RYYI4flbzx7nLznU17p5be+s9liUrTWCoeKdpDEF9iOp2hq8kMRTF2wB4EhXuPnobWrmqHWvCfSv97K4K07hj3hN+WXoi3DSfnHGqPTG3LSZ/G+z9hsatGpGcu3S8d5P2wLNg6gB3AHMtAIGsvAqgWwGwqPLeB+a+Q0rub5PS+5s17rSKiWkvDkoj2SAAuvH5Pmnw3q855tWPtknt010AUxQBuFz7eIc0MGUNAFsO4Ci5/SvOv0rlgy06m86+tEzSTvwoqcd+1HS0TAB0AUCbLeIyGqpcWS7ZFK6xHX5hoWSf+Ukd4zJPgJXjKAK4l3K96/pqKfXcAkDfhMewQ5Xx1Q/Nfdc+3CBZYKQE8PK7m6Xi/lYw32WSeGS22qgW3Vov+VdXaYRqKf6+/NubJct9nWS4rZac6+slCyD/ft+PEnVsqRV/OlcicIS6fA8Q/0681n4lb3fNBeiDwdNpDqCbeG6FRAKkI/bMltDtTFX7C87f6K55EkD8IzPNj8zXmFbuu8cdna9ngn3E3h8ldNcP8h4/R3V+Nlh6+vnlkn4Jj8d9jZQDhAtvrkdhdVjauQbotw9Avl+q7+PvZyfDY5PUAuQbvPeq8LDmAUAbz1EFCie2xKvx3DQ+3SmtL/ZJPc60361kUXUDwH91BcD6BwX0chQELKz4PGceny3Zp+dJ0qEf5BOFhSd+1nZ8+fVl2o7n7L0Q4F5wcb7+TMmVRap3aHmyGSx9u7R7b5X259vA1PeY/XSAel/wael/f14GwNaHP940R9wtAPg9GYnD+znWQ82NuL0xoC6Fd6Qp0E0aUGyyWB3Pfi3T3FlnsIu23SMtY5gYsPYoa6c82nint1oCNH5N4ZuCcKIe03Sg4+0qIsD4A83v0+sizYyegSyMUi3D9/n7K628cwK8lX2uB75W5bsGu3yyAlZSPqvsW37j8a5rapkW+GeYx6cK+MLPLfjOUqvYyDMJcmTmXFurSf8shCNDBzjbqYZv4Fw+xxjMWMDvcIK6Ku2LUFAUfy5gWi32rit1RWZ+ro/LCrbhZc1Mr5kxmLHTZIa76T1k7dV2R0/NmKO3rsfR31zuGOqItWte+gjz0n//JbjlC5j/B0vR/j9kevxHmeg/ah+0+U73Nqfbu2qb7bbKoem2kinmnU81mFaTzo+a8rU6neAMnVGpZR9lvCRaxqy1NDJymsdQADdi5aCriYwycwrUwLxTua5GAAdwM20t9a31dYD0A8gpmhtkzCrn7jjTGpbAPsjLeaE6Nx/KfivD2UE4Bxvhm/qoP9ed846oe+ok1xVzT61fjR2sj6remU9OgdwQ19bUghVfp1H9/sKknwHgB5zOcEleqmgfjL+rZi6m9f5ADV7YiidgU+FOO9bO95cVuNuCLgCwwcrBmptfHTesOuCUtASdlxaAeSOub3pzSlr96bN+BIC9S8ofb5Oyh1ulAuBYz1AVnwNS84zq6a1ScnejVD0GYPi6SlvAaWl/ewZM/LQaxVBx3fRir9Q93aGrVapUJxMnG7yzXkoA0iVcwwJgFwBEGXySdnaJJGnG9w+a7R1/4HvJYBjKhSWS575SCq+BYeOcD6Avcl8ihThnc13t5I+6jlV6eyMKh91SDqCufbJbGl+a7kPLq2MAur0AlY1S5jZfi4QKAHo5wK0W4FcAlkqTmhTcF1vvBPzSO9uk+M4WZdCZl1fpfD3DbY0kX1wjsSdRfFxcKR9cvpPw/XMkcOf3EnbgZ/FZ/7X4bZqlyWsJZ5bLp1PLFdDJsj/smqU2sWTp78HQo2kXiyNi3xz5BPBmihqd6eKP/aS78MmnloL9/yivN/5F/Dd8JVF7vtdd+UyAOSNmy++iYHmySwVvNY+odN+p4jgG39Q+3YPnfK+0+R2Qpud7pN3/lI456lFw1T7aLq1eu6TtuYuCf+cbvHZ07vPZLw14neqfsPjahSJqjbbZdX3wIoqPw3PAxE2x9XH/d5J4GM/5qflS7Ma5+iLJdP0exyztlhScmy95zGI/Px9A/4s0PtoirU/B0L0A5t7bxOazS7r89hpb2PfnZDDsggxHuctQzA0Z4DbGuws4UIhScBl6RXrCrspA7F0ZQ0GrOQM4T+W81sQyFcgVv9NIU80656qY09RF19VSZhza7M5IU22pJ3/OL3d6sJNVt2RbRi/G5Y0zbztb7A1mtc2sqyXrfjqZ/3RZlEayMvJUY09RQNidlxniUuWMVU0xBx4D5/DiBEsL2MVSuc8At4J6gdV+LzUs2bnaxhZ+c7bpRlIzxHW1yiRdXaPCXb3bueLWZmboCvRk4jwI6B0EdDMnN/vneZaq3VlEFJs9+Xar6GizRgIUx804xtWbr+kiR1DvrnGCepejr6nUMdz5QSaGzsn0xEJrnv531uf6F1D/dwbovxXBfcPdRvtQ15PpvtZEe09Drb2zemC6vWJqmo5wXFEDkE+x3QRQJ0vnG5yz88lyw8wJ5twz53mURxEBPkZGimNNulruBxnMeac2rxqZSqaeHgwmTu/2YFW7M2WNl/tzAOBMYSM7Z1gLbWE5Q7eU7IM4D2S+VYX7EFXu6a+NYQwZOENb4h5Jl7WP3g/w1nl7MoCcMacUx6nP+msTnGIJ4dTaFey8n8EqjFDV5DXauD4BSzdHf+IjMHUaxzyQPoB6H9fWPt6Xntg7Gtlq+3BFWoMpaDujYN0MsG0BcLcA3FuCzkkzwLjp1VEzA/c/jducABCyne6K649oC73mGdef9kgD2KC22QGSDb4HNWClwe+4HvW+pv3OvWjGpXagWGgCUFSTDdIcBueKOxuk9NZaKbm+SkoBrCU3ANTuy/XIu/SLZJxZpLPipGPzJGYvmClZIH3MAercG089AVA7v1SZaTlYeJH7Csmj3/mFRVJ0bQXAbTeA65A0AaQ6UGDY8Ld1BgLQXh2UztcHACybta1Mhl5OoxYPzp53aZcgE0w8/yZA/w6d17Zq0ZIBVpx2cYVksS0Ptp51c6sknFspyeeWSwIZ9vGFEgNGHnfiFwndO0/e7pir8/WUCyt0Rs4WfRzYeCSAm210AjiT1T6Clb93mS0RzFw/uVgZPIE8/dQ8zUSPO4afOTBP99MDaSe7c7bEHpyHImOrjgZKb6+TChQjVSi06K7Hff4G7104UMh47dbEutYXe6QZgN4EAG96thusfY3UP9qqYN4OUG1+tkNa8Bp2opiz4b3RiGKtDs9F7ePtmnzHNcEKzw2Sy1jYIz9L/ME5knhglqQc+V6yT/woWcfmSD7B++x8gPgCKTy/QHPocy8sVkFdxXW8Hp5r1RSo/t46aX60QVqfbLLEcQfEhtejO/CY9ODofuuKr09KV+Bp6Q45q14Gw/EPZTT1uUyoqcwbkyVeFi7TjDIlS6YNa2WUYchkywRQCuCUeX+yLsepx7u23C23NhWmWW5udmc624whTbqq0c2RgSNTZ+wqjiPY01RGTWfSDaBT/c7ENgA5Q1uccaoaucrOQPUn4yan+eOpJgCl2WLkbZaDnNN4hoDaaZnPOPfVtQ1e+m/m2zoeoDitJVdFcVxdm6iiViDRCmhJkulqy/e9MdMI46hu76wQO2fnbJXrHLzUKNed+gE+BlrkOg/nGluLtQ/PbkF/rdj7ja87z0KW3luPc72Zp/fVjzj6G9tlAE/0cOczGR9yEZn6Bp/p/49zle0LqP+7E8HJf8Ob4I/Tk8PrjAiuI9re11pp76nrmdas8wq7vb1MpluKTOZ5o5mhT2i7PdkEsQDQJ8piZaKUYSxk64xKjVEwHyv+CECPB0uPVtauCncF6lAFdN0r13S1IID5a1WyD+htPhgwV1tYAH/GW7OiBhCngt2AeYAeOh+n25vlHkcgJrMeTH2J275V8OfPamY5c8oB6Pxa2+1q22rc4sjcBzLeyFBOCEA/SEZzAfpZr8Dcn+veOYG8T6NKPaSLc3L6qUfcUtW6LfyGCuCYhGZT1nNeuoPP4nwRzP2q+q3Twa31DQD+1SFpBXi3vjZz8caX+Pot2DY/6F8ek3oAd73PIanxAYhT5f76lF7fwLk4vm4OAMsPOCftQRdwnNOZeRONY14cBHvcrd7tLc8BOiwMnuyUmvubpdR9mRQAjAsuLdVWefG1lVIAYOeKFVl75tmFErt/luaU04416/wvknZyIcBlHpjqOsm/vlFZeemtdVoYVHmuk+p7m7XFzNl9J8C8EUDGeXKb3z5pA8DZUIgYcFsnlXf5syv1vsrubpesq+sl/dIaKfIAa78Jpn5jvWReWaOubdxDz7+5QRLB2GkqQzEcA1xiALycfSef/QVsfQEuLwG4L1Gv9/gTAPwTSyXx9C8qhPuE21IBH30YfwMKgPcucyUcrP3TCQP0qYxJPf4z7g8/c2aZfDy6SFfYEo8vBugv0az2Avy9FMJlofjhyKAShVIdGHCT1048r9tQQO3T57sRIE/XPebM07Cn8vZqPXh9B56Ldp8dANm16tbXi/dDD94HZPFk6jYUdJ2B56T07hbJRjHDrknKsR+1E0IBHdl32sFvJPvYbClgix2vYeHFX7Sbko6Cq9BtuVSxeLiH+3+KogGFQ/vzndLhtV1307tw/zZfF7G93Cfd/oeVqfcHHZf+ULJ1N22zjyU/k1EcZOUTGQB1WsJm+slkzitjCcuwlEoGo8QaMOe5xrJkbbSc3WrjjLq9IvIzc7dMZtR0hky90XJ0I3NWoLUAlocz7pSiOQXlxM8mNVbYihYKBHxGpjJXnPaprZ+DWUwHwHKTo6uc87HR013b/3lg57mWc5xxjBNbwefHYDFyBXUK0qg056HrZUUzSWkqCqb9a1WCxqnqAUDXdbYGK4iFwE4A76pUlbow65zCNrJ0mtnwzN/d85uDbL3DmrMT3DlLH/gM6MrSCew8002OoN7fOCCDrfWOYVu0fbyXq2yrRCb/CZ/r//ULqP/7AnPOWf5vvPiWop3WrrZQAHqpo6+ly9FdN+boqrHbbZWoOi0TGb6Rycw1+zxd5+cTtEOsYts9QV3hJspx0EimBGCuVq8MY4kxbXMydAvQjXd7kKrducI2QKEcQHyogDnpEdpaN+w8GN8LUVZOoDXX4zK+VpYOAB5gyplzbY3q9xRfYyrDgJRUP/VfH8kKkFGuruWGKMiTtQ9l+usKGxXv/H30meeaG/fRRzNfynDyUxUDDYOlG0Ec09aeqnuccX5jKhvYecw9FcQxRKU/1kP6o69rgIp6uMd46K56Lxh8D66jyUxnBNfc7hhb2pjH0hbmKS0h18DgL0tL4CVpen0aoA4m/uq0NPgD5CmaCzgLwD8P5g+W/wbsHwDKtLUOFAItYMj1T3dpm7eOZ3yoN3Ce+3ibSVN7sFnb3bVggVUAHnqSVz/cKZX3OWPfJGUeG5RFl3huBoCtkZwLyyUeQB7uMkvCaIZy4Acw9yX43jopvA0m+XifNL88KQ0U7XnvV0FeR8BJFDBnpMP/mHSAEbY82iQNj/A7Kaa7slSKwSCL3RbqvJez+7RTiyTj3GIF88Lrq9RcJg0An3hyieaj5+C+8q6vlcRjC+TjsYUSdXi+qtiTTy1Stbr/1u8lcv98FBurJANAmAzw/wRwjwOD/7B7Nlj7WhQI69UsJhm3j8bPJ6AQUNHcwZ90JS16/xy9vzjXeWDozGSfJxm4Df/W7IsrVfyWDfbLvfkS7TL8iiJmg1TcWSs1YN8tLw6pKK7Ze5dmyjMUhyBdd3+jtDxcL82PN+qOeA1uz9Z755uj0oXXi/G2fJ7oD9D+BsCOYo0rcIU3fpXsC7j/U2DiF5eoQ18+GDjHHUVuS1QJT2e55EOzVJBYjEKDGwqaykYv/gcbpAn31/nyIMD7iHGLCzgsfQGHZCDktAx8uCBD4ZdkJOqqjON9Oob39liaj4zjPT2e8kwm07z0mM7yFUeev0wX4KBTnEap0mc90qSvUXVOUOd1tdbsmvvn9WyXWylrvL7ZSjlj1jlZt1OQ1piprXdl9FogxOjv0jk7Z+BsydcmqNe7quoZ4sIuAHfMnX7ozta1+sVbv5dfzwB6qnGOo/FNi5XNzrk5z+05hpFT/MY88p5SA6YE806rFd5doSzdTkGbfl1hwJl75W1FKn4jeE/Tx53papyf04xGZ+mZakjzede92EpUq7Ha5tau+czvJqBz57zCCPRUxJdvqd65xlZvDv3ZatOO1+tr7LhuAiDf4xiyFTtGu9/KxMBpgPoyfK7/b3y+/73l9f6l/f7vZW4+PTG02D7Sc9o+1OnvGOrMBaDbHH1NI46eeruju1amOsplqtk4wunKRoMJLVCRCF3hqk0Iy0RFvIyX0xHuo4K5HhTJlXyUscJIDWLhDrrO0bX1HmrOAPDBolgAeTRY/EcZZk56QbiydLbZ+zMCZTDvvfl53jafwrpQYyKT8VrBnKCtDnEpfhruwuCV7kQvdYTjrvkA2Dhn6wRyrrfxtoOZXGUDaydzZ7GQ+Ub6kgjWD8HGH6lXe0/0HemmcYzasz5Q0ObMvI+pZ59wG6azMY2Nvy/ZVwY0GhWFBCNXY+4DrB9IZyxDY3ylh90HrufFv9TVvPbIBwDye9L87qY0BLhJtd9pqfA6JCVPcTw+KGU4V3gflWrf01L96pzU4PvlXq5S6XNc6l6ektoXR6XO5yiY+VH1Fm8H02ulYh7gTvbfBIbe+MxFnc2cR72XiwIRTVAq723UtnnmuQU4FgPIlkrKKfqrA2gBjlkXAZTn6eS2yHiy7/hGUk4ulpJ7u6XyGX7/mwvGzS4IhQY7Dtpy3q6z5K63J8HQ90rtvfVS+2gHgHAzWPp6KXJfKoXsFNCNDUy7+OZqyXNbJpkXlkrm+cUA4LW6wkb3OOabp14A0F9ZrTP1tMtrVPGeDEb96egCCQHjjjkCQAc7z7y8Go91pSSAlYftmi0Ru3+Q2ONLJcP9V1XLJ4G1fzq+ROIB3hH7jX972pnFEntgrkTupk/8DxJzYJ4koBhIObFQkvH9DDyO/Bvr8Bh+kSy3VWDQFPax+DGGM+w6NPse0T3/jteuAOcjYntzAs+FqwJ8EwqaJhQ0lVS8e6yQTh8X6Q06JV2BZ9Tkp/0FmDtv63sYr+ExqXm822wDnFsqaScWSMapeRqKU3R1pVR6/KpdlhoWZLj/ukfb9aimRgK/v9ZzjdTeWSM1d8HUH6yXpsdbpA1FHYVxbWDrVLt34zUZirwhQ9E3NE517NNdy1zmiYI489En056pFew0GLo984UawDgKA01oS3EIwDVU7HSRo8FMxQd1fKNwzSjQw81aGa1Y2XanWr3Rmo03WTauTEUj4Kpr3CdtlZPN2zWqNdKI4urijcqd1q/ats8xgS/aek8zM3Kni5yTvTvn9JqFnm7tp1vtehXF5RpnOGfrXVl5rjXHLvnMkLtLrBa4xczJ0plRzq/VDAZAis9De1uJBep5xljGUr/TMtZYxxoveL2uyVpjazP76Sp6o/qeYE4Fu4IzFezOTPQq81g6rTk+77e7xgC5FhVlulqnGwQMc+munAK4jzj6m5odQx3pup8+MXBSpieWAtR/j8/5f3DGrH4B9b/pFbXRv5ep0T/KeO9Ozs0dI13JjuGuRgD6kL23ccpBP+HOKhV5TOneeaZReCozT9FjqorxqHEqiGObfbw0Fkc0mHm0AfbS+M92r/nhM6YyXF0byA0DiEfJcFmijOAYLaaLnAH0wbxww+JpPoNjuDAMtw9VcxmurZl5uY+Vluajs3GGtdA2tousNwFgziCVdD/9Xn/aG1XDD+UEm3k67V8TnyvID1NMh8KA9q4DyV4ymOotw2lUvXubdTYmrKXRMc5b5+vq485CgSt41kiA5/6Ul2o3y/l7XxwAHcy9SxXuN6WbdrDcUQ91k47gC9LC9bKA09aMHQzN/xRY9ykw8mNS5+sqTf5nDUt/CZYONt4UcE4aX52UOoB4PZgxWXxb0EVpA2tvVb92AAPYYoP3PrBzgvgeafDaKc0+YNLeLsYhzme3JqzVg7WrUxzAiap0ztjzwEIzuBN+dK4k7v9ekg6C4R6bD9D7RdlvynGw6lNLpPCOi9T7X5ZG/4tS74fH/Pqs2MA2u4LOANhOqBiOc+S2l67aiq4Ao2184Sqtr09JHfPYn+6SsntbpfTeDin22KR54/RKp5o+Dcw4022N5N/eIJnua3SGnoKiIv3KGskFsCahsIgDKCcC0OPJ2o8v04CV9LNLJOX0EkkC2KeeXiwxB+dLrOt8CTsM0L68HsevYP6rlaEzSz38wI+SAtDkDD3C5Xt5u/EbCdz8rUTt+QnHXP0d8Ufna9BKxoXlCub57qukGgBaheet1GM9HvdGPHebwNA5XjiI53OzND7ZIu0oZmxvXKVDWTsKnKc7wZpxO36PAjUwZ5v/cenA7Tpf7ge4nxBbwCktyMjSKbArvrlBCq+tVvEg5+PUO1D/UOi+UmfsNffZ9t8qTc92SbXnOqnQFbm1Und/vc7O6++u1dCWWs9VytppDmR7fVS6UUj0hZzDAaYeek6GI91lPOGuTCTckYnE+2oqox7vWT4yncd89ECAebDYCwHmhW+Nsp3nvFcyybjVwrcK8A7O1dl+VyC3WDYY+zSumyqP0mO6+pO20fXMyFW28EvDwdA/mRhUArvl8c6zySmPtwA/WdPVdAbPywTzqji1gp3JRGc73tnSZxBMs7We5hTc8dxuBcFwTa6F16V93k13svKuIhGeAaiiR6UFsFXaducc3G4DoNKnvb1EVe5q5zrj5Z5n2u0tBtxVHNdirbJRIMc2unP/3gqSUSDvr9NDC4iZFnyF1fZ3ivScCvxi085XO1tVzNsdHSVTjq7KAUdfQ71jqC2VqZgyMXTStN+n/mjGql/sYf+W2+3/SYVw4+OzZazvtGOkNwRgXuoYaO9x9DZM2Htq7fauarG3lxovY7Jzq80+TSDnzKgqXiZL6QIVi3/aTwroE9pmj1JAHyPAK5hHyWg+2DWAfCjPAvU801ofAeATzIeKP4F9x4B5h39uyZPBk5nr7jrn7QFm/1xX0bzBwr00TY1nBfG4p5p9bkRwZOp+Ct5spet95nMmH6wiOqa7DWWHqBUtE9+GMgM003wsx1+jTceycc7FkR2gxxhYPs1mhnQ2763zeSa79SWQpTNN7Y5pr0fc0HM/w1R4gAExwIUe7N1cVQPwtYFJN/iAvT7dIXVkzgC/ZhrF+B1Vo5hmiucI0mB7DHxpD7ksbW/N2RZ6VWwhbtIZekXb75yrN/sdV4bXREB/vk+DWJoA7M3Pycp3gaXv0IhUKq65SkWWV/MQ4ETx3OOdUg6mXqyiuTXa3s05PV+SDnwHYJ8tiUfmgS0vlqwr66Tg1hYpf3xQmoLcUajcFdt7PJZ37tIb5YHHd07aAy9KL/5GG5hgVxAuvzyie+8l93dJC3UALDZQTHAnvuHFEal67KIt7EIUE4VgoaW0TAXIF3pslpwb63WNrfTBTjWY4cw85uBc+bDjW0kEO9f1sxPLJcZ1iSScWCLJR38Gu0bRcRZgfHqZpFxYqXnn8WfXScK5Nfi9W7UYiDmyQOLw84mnFupeezRYefA2CufmyAcw+3hXU8SQvaeexNcA9zQUECw4yu6s1/XAMgB6zYOtUvdku5rJVOJvoJ6AEbWdYNwdAPh2FE82gHbzs+0mue7BBp2nt3iBMfsCyN8ckq6Aw8aaF68nvfs7gq9IzZN9Uoi/PefSL5J7cYkKEAvcVkgxAL4Kz0/tI4D43U1q+lN7b5PUP2TAzhapv4/fD1be/HSbND5CcaHhO9tRWByRHrwW7Jh00dc96LgM0mQGYD4W5wlAvy+TSfcVyKeZlQ6WrnasBPEixqeCkQPUHQDz6fw3+N4bcRQFqLGMsX/9aFrvAHAVyGl++XuZznktE3n+mtTGg7auDlq6lkfg94bi9weran665INMlUbKtAauJBpfdoI219NQLDB33cECAAA+XZNosXwctQD52iTTuue8mYdzRY4qdoJ5s9Ve19CYzM+zfL2O8aupZi++zYpcdc7QLcMZA+rOdniNAfUuqzXP9jnZurbgyw2wa5hLnn5W2kl+6rMMuNNxjgY1NiOUM5auxl5WOwXW3F7IvgHq9oFabb3roXN1y5zGVvyZtXdYqnjn/jpBvb1gAvfRh/uod/TVZ9oHOl/LSM9pmehfJhPD//glle1vvd0+Mfg/ZLxvvoz2ujtGumPBzOvtfc1Djt56O1cj7J2VxiWJb1QF9AyrzW7CCaap8Kz4pO32ySrLVKbMUrsrsAPMi6NV7U7L15GiGBkt+aTnkUJcLgOYlyfJcDnYeUmcjHB2TqDnoatqYer6xjl5vwrfXikb76KHerKvzsc7Pz5UMHemqvXp3PyFttX7swJxhBgzGoI4xXFg9yp4K4rUx6hzdyvjfCTT34pJBfvO8DPndB8TypL40EpBe6QRp4MJDxSsaSxDAO+JuiF9BPTIq9ITcRXAfl26P1wB8F4ya0EfLpvQFrrG4bo2sNq2gJMA5bMqaqOzG6/jeluj7yFVwDPNi6DZG+khfbF3ZeDjPU1U64vGZfye7neXpDv4onSH4D7A+rsADIz2ZGxqs89+bdHS8a381hopvbla2TIPZeb3NuteNQNFqu9vlYrbvwI0VkjehUWSe3aeZJ0COwUjTj2xEMx4gaRfXiuFntsUnCt9TkhX1AMdKXQEXtD77v94FyB+WlpRRLRTBAZQa6PQ78V+FA7bpN77gCq8yWT5uGiVyplz1f1fpQYgWQpWTl93rojlXUPxAFDLvkJf9w2aiZ5GRn1qqXwC4CYcnafzd/9NX0vonp8lav98ZdXJxxeo7zsBnnP1D/vnie+WOeKz5UdJOEP1/GoVyjGchbvn6SgSPuoO+yKJObxAInajgEFRkHHqZ8k6t1Dd6jIurpI83H+5x6/aYq/RVvdWBctasPUOihqf429BcdYZcEJ6Ak+r7artxW5pe45CBoVUE1Pt7q1Vo5kaCte8dkrPm8NgymelV735PcTG0J5AN2l6dUbK726XMk/zGjHhrebhDrD9Q1L9YJeU3togBe6rpAhsXY1n3BZLOV63KryuNfc26tGM+2zFc8ujzYevB4oH/+PSF3xW+t9f1Iz0QbxHh9l6j70lQzE3ZTQeTD3jBdh3gEznvpGpbMaovpBJXDeJwnYq95XYycrpv17wWj3elaGzHU/XOLbcAe6ceU+zfc6D8296ubMNr5awcTMzc4I+E92mcl7KVJafTGbjXBAo0wR7gPx08XsT2YpCwF4WhWKAKvoEnZELPpOk2SmCS7Xc59LN/BzMV1fUKIJTZp5pdtBtRRYQ5lvt+cTPoM7oVXWdyzbf7yz+vE6mavdysxfeX2ta5D3W3Lu3WlXn0tdgQlQ43ybA08OdzNlyjKMrnpBRq5WsSWBzONfjfuNQR6W9dgfY4neuqvVWzljEantdfeItNbyT8bONr9a1hXaxFU/gdkMoQFod/fijhru9ZXxgj9p4G5HcFxe5vzEw/z9mHOFYtU30L7WPD3iAnSc6Bm3NjoG2EUdvs50zGzsqT+5Smtl5lqk62XKvNQyddq9TVUm/8XFPshLVDJhrVKoVykIv91HnmS5ybMUDzMfwM6MAdIK8OslZ++tk5gO63mZEbhqXSrMZ5qNrkhptYp9rGhvBm37vncxE5/eofM8O1iJgQJ3lzI76gIrqgmSkONrai/8gYwWhMl4QIuN5gWDmr2UUAD6S+kyGU57KcBqOFOaTP1ZxHK8jkKuPOwC7h6BNVbt+KF9XFXtHyHkw6Atg45cVyDsCz+iKUhvbqm9OAaQBwGH4OYC0zufB6Dvf4+cjbpvrIm9LbwyAG4VKf4IX7tMXRQTb/ThQwAwyFAZA2svb4+e6wJBtFMpxte3FQU1Wq39+AExypxq8lAPQi+nYBgbMkBE1QMHBsBE6lnH/ueDSEsnhHP3MAsm+sFSycOQzCvTqOgDtZim7txtMeb+UPjmE8z6pen5c6l+i+HjDMcBpaQ+5ojqDQWoLABg1YKQ0p6GRSjXAvAD3XX4fzJQ76s93A9Q3KRiqYI+pb2CUVTRn8dwqVU92q9q7BCy9AMCec/1Xybm6VmfZWVfWAtxXS9IxtsMXalDL2y2zwKznSMyBn5Vdh+8Fyz6+GLdbIe8PLJI7v3wt7gu+krBDS8Hyl6sSnuCdcX6FxNPm1RVMXVfdFkjMvh8kwfUnXWXjc5F/bY3kXqNgz+zz1zwAIwZwd7w+pFavrQBLtr0ZZtP2Yp+K3RhRS4bcSiYOUG9FYdXIrgRYdKMXwJWt76AzMhzriaLshgyyUKPJEY62IAPoDV4Hpf7ZXql7dgDPCzsAW6TyLp6bh2DnOEpurpeiq6vUOrbo4gIpvLRQSq6t1LY8TWcYtkPnuHL3hVJ58xdpuLvWtPyfu0iH336xvTok3W+Pa/t9OJrGMp4z6Ws6S8/wUTC34/9hGiA+ne2rh/q5570UR3EggNbycy+3/NwZ0uKcfev821pVU/91MG4wZjtFcJqMlqDtd01I0/S0aAB8GFh7CAA9WFPapmkYw/3yskiza07R3MyOeaqZpTdZrJuCO7bfeVSaooH3q+37JiveVQVxWebcYNryJiWOO+o0mEk3gE7G/FuRXE+ZCAGWwNprGb1wdcw5YyfAU6ymu+HVBtC7rIAWAK1Y83RpyTdfE4TZOu8qVe9252GA3VlIlIpdf3e1grppxVebFLYOo5A3vzfXRMWyS9FkIlilo8jusJVP4PH0OQbby0HUQrX1PjU+R0esXwxn/uZa7SYWdWzsH2Ry4A8yObhexnofyVBnugza2h39rWOO3gY720l2nRHlGHZONSfFcGTpmjSUCqaeYlziqpM1jIXgPEaVO86TDGipTpNxHGMVyQBzJq4ZANcENgX6OIA7mDkV8HkGzOkqp2DMSNWMIHNOeyM9Ka8s9zhGqNL3/bn0JPkaJzmw7x6K4WgDm/FWeukQlxFodtYZz5rDnfcA6UNxMFrKFbpwGS14J+OF72U8H0Ce/QpA/twANufjSWDjyQBxXDeWxe+9kNEULxlKeCQDBK1YsPKoawrovfhAHNDM8sfadu+KILhfBTt307U1Ano7w1EA5O1k0BSRgZF1RoLRRt8zc/aouyq6U0AHwJtsc09NVSNDbw8Go8dhY8s96ILY3uL3vj2nbJzratxnZjSqGpV475Oap7vVCIVt9EKqy29wBrxCP/DJ+OgcV+GxHpfxfe6Vuy2XvMvLJfMsgJACs4srJevSapPvfWujVD4+KJVPDkvZ4/1S8fSgVAPQWwIuiu0dTXTw+IIuakAMg2GYzz4QeRWFxQGpuLNeV+ISDs/WkJUagFSjF5X3WzSpjPN0Zq1zX7vy/lap8zogtd77pfbZHikDgLEQyDi7SPIBqAXXVkkSZ9oXl0vamSXyEeAbp6r3eRK+Z66E7fwOl39WcVvoztnaon+3b6HcXzNXbq+YDUBfLAmnl6k4jkcM1e2u81AcLJJ47rWjGIg7OFeSXH+WlOM/K6BnnVskuSgMiq6v1QKFHYyGpzvFFnAMf4eLptU1P3NRYG8HUFLg1vBkh7a+Cer1KFzoi196dQWKnHXShJ/peXdJ+sKugiFfl/7IW+p/wNje4fTXeK1vSNPLE9JEu146Bt7bimMHiqpNWowxk70Yz0WxtXJYeIkq+KVSBKZeiteaVr7lN/B46Q8PkC9zXyyV1xdLnccKab6/Ttq9d0rHi70K6l3+R6U3+JwMRd2Q4Ri8bnhPD1Mol/hAJvB/oFawyU8A7N4ylf5MxlOfyCTO9lzOzv1xBIij5J0Bc7BxmbFhTbKA0uyf6046RW/1ySADiTJd88nMxOuMkt3ubKFTIFdhTGPsbM2T0VfhXBYu9iI60oWrAG+6wqjdObNXcV2zMbFxOIV2vL483MzoOdtX8Vy8CB/LTNxrpjkonNMWfIalgjcxsIalFymw29l2B5AzMEWB3eneRpDlZbbh2c10qt8BuNPaYi80gN5Ghp5nviZz13hVK4Wts3QG3M3uu/Mow+8r0UOZuZOxs5CwmfU5NcZpzhZBkcRDQZ0xsbzfzjK7vbtqxNHf0giiFitj/W4yPTJfZOwfvszR//Za7f9JK7WJ3n+U8ZEfZXxgn324l+r2Qhlo73L0taC6q7M7OitNIIEzF5ig3miEcQbQMxTcdRe9Jl3GqXavSjURqjx4HQFdgd4cDG4Zq0ycAXWusw0Xx6jfuwa4gNnTYW4G0DODreCV1yYulep1gLnmouNrXqe+7gDu7rS30kNwT7eus3zfB6w0tpF8MPGKTzJe/F4mCoJkCsckz3n+Mp7lJ+P4sBohG099qgx9JNVLAX4o4SHA+qEMpz43rllg8EOpJhu9/5MV1sI5ecLDmR31Plymz3tvNAA6lqD9ULo5GgCz7gR428JugtWbiFQmr2m4SuBZsLNjauvKPG2CWuOLw1L/AmDtc1CaLB/3lpeuynR5NIGNN3jt1j3wOi9avu6WSgrO7mySygdkv8zvBjt8ukdb3PVgxWzJcl+ajDPfbZkayGTRGe4qWPy1tVIE9qczXLc12rZWQH+0R6qfHZFaAHnjq3NS53NCWt6iyAi8qB7znQCpLoBDV/BZ6X5/Sfo/nJe+IJqXHJXOAFcpdlsgUdt+L4lH5kopiokGzvO5RvdolzSpfe1ebf3XPHJRZsoZO2f7Ffc2S/aZeZLsOldyL6/EY12mYJ5zZZWy6AiC+LGlZu3s0ByJPfCjfATIRxyYLx9PLJcPh36RV9sXyaudS+TT6RWScmGNztCj982RKLD7eBQAsfsMsKecXChptIA99JPEUtG/8ysA/Cw83vVS77VfNwJKb6zU2FQKDWvvbZC6BxvxHG+SuvsbdLRQ83iHlDM3na5+YPefdn8tMTv+Bax5mTTc/1Vsfnt0ba0v9DxY8W28316gYAyQIY6H4r3UYpXt93a23ulB8NhFim9ulNxLKyTn0nK8Pqu1wMg5b/z1c8/Ol2yGtNBnH2BegwKDrzG93KtRKNV4rpbGh+txGa+551q8D3ah6DiqXYNO/5O6C98fdkX6UVwMRN9SC+MxvK8nMtgCfy3jma9kkh7thaEyxVa49f/C1rjOxQvN/9FUYTAANMREpALY7WTqZOgEdVvh54zvdjPv1ehSxp5qez7agHuzySq3t5A8pBoGX/0R34/Q3+vg2loVI1WjDNDrTN2au3OWrsr3eLMbz7Y+7WRZDMysw8WZ/XcVxVm+7yw8NL89xQJzo4gna1dQV4Zeaq2TOcVxlQZYBxrNwdk61epk0Jypc0zpZNK2opncc+6ei80StHWYaFW93OlUz1ugzvuaAXaAejeKg24nYzemMhrWohay1pqejhqsvXXuyneW00VuwtHX2OoYsSXbx/s8ZHp0hTqBfvF5/1vbOx/8O52dj/V9I5N96+3j/dccIz2xAPRaGWwfAKBPcVVN35jM92234gBV9GEEH1NWjOBkvYlPnaBz0kweeqph5mDoTFwbYyuet8GhIM70tTKAesknk41ezlZ8nIyXcVc9wiSkqd2rEcINcO88O0gBuofxqSmW/7uVwMaWfF8y/d9f64ycKnZNXMsNkZHCMBkreG+EexWxMlEcqq31sVx/sKI3qmRXACdwcy5OFg4wH0p+CrCmA5yn2rwOAqSHEh/pKttQmpeMZLxQ5j4CBs+ZOln7AG6jP8O89AT8PFv/FO7FctZ8V4G78z3FT+74mrvpd83aG27PGNauCIA8GFvnh6vSFXpFut5T+OamzNe09G9KNwuB99ekI+iytPmfVTEc27K1TwGIzwCCT8nOWQzsM61arjg93K6Wq2SKOktX8dsq9WKvuLNRqh7g+3c2gxFvUdV58a0NYPRrwfxWScntjVJ2b5uUeHLvfL80vT6r2exUtzfweHlaWgMu4LHdUnOdPmoEgs9Iy3MXaXq2DYx0u7S82AMQ3C6FVxZL2NbfSdTeWVJwA4+FnQKwcD5euttxns7ioxqPlwY5DJKhlW3N3bWSBeDSzsG5JZJ6coGknSZzXiYf989SZh61d7bE7PtOYsDOI3fNkniw7sQzyyX+wkZ5fxjAfnCxRLkuVlEc98wjdn0rUbhd1J458vbXP8jHPbMk++xCST+zED//nbzb/CdtvdMAh8r2Oi2aXHRW3uJj3ODqH23ReThNZloB8Hzc7HxwJbAQhREz1VNcZ0stQLbTb590vTko3QFHpPetqwy8PytjeL+NpfuiGHwsPRG38bpfx3vAU9pCrkqr/3n87cdQ5OyViocuKLA2oNDCa0hff7xOZR4bUThsRNGwWk2CKCosu8aQnVU6Qqm5u1HqmY2Ox6ZJeh5rwdxXSR0eC1v/bfgbOOsfCL8qIyg8R1CADqHAIEOfSPeWiUxfdYsbZ/cgxdi/juP9Tg/3ydwAmaRwNMNHA1smst/MAP4U/rcmC/H/VmQiUhmZOs3Alsp4mapJBAFINvNutYZNMwDbaDzX1YiGe+Zg2tJgraDxaEz/NzauGpaiAS5JInWJVh56kirlVVBH1by23z+Z38cgl6poEQC63t4J2E4Ab3LuqnOOnmGu47kDRMbp5OacpbPlrgEuVabNrlasvwF0PZwGMk7xm0lRM4Bu2DU/U7XNriK3cjMb7yr5PFd3RquigGBXQJyFhDNDvdcKa+FnMzuorTm/Ubzz/krsju5qAnqXY7Aj2z7W80wmRzZbe+l/90UY97fEzkd7/l5GB35vlI+9x+2jvb5m97y93dHfMmLa7dXGspAzdIK6zm2svF/L8tU4xWUab2N1jDOAPm6BugJ6Jc7VZO5pZo5eHK2z9TErG32UX5cR2GMNmBeGfRbDEdjzPshA3ns1kekBU+/SXe6XOhM362zBxv0NLHy44L2mqxljmHcyxnZ6CT5UquJlrDhSxvKCzJFLQA+QsexXMoYPpWGCeNJTBXGq1weTvTRdbYjra8lmZk72PQgwH3QGtiQ/VQY/RDtY2sDGA8QTKcjz0qOfKvv4J9IT5YEPagrjLupc3QYmS6V6Bz68ez6iEEj2VRvaPu7Mx96Xbt11f4jiwKy9MYu9O+qOdEV5arY6Z+2doVel4+0FaX0JtgwWV/eUzHan+oFXcW6u++Wbpeou96XXSunt1QDv5ZrylXNhoWSdmW+U0wT0u5txW4D1fTDL+1S7b5EigEI+ACL3zM+6MpVzBYzQHYDw+IDUg503B+MxRNyTjrDb+Dtuiu39dTwmd1Vocz1vCCxvMPqGdIWAsQccBXjs0mQ3qsRpLxvh8oO83/OTJJ5dISV3NqFQ2KsxsQR1dh8afQ6iINmvHukE+RYfgPrj7Zo/nufOvfhf1Iwm5dQCBd1Ph36UcIBzqCarfSfxR+fJxyPzJPrgz5J0fo18PLlSog4vUvFbwrGF8ungXID2X+TN2j/I8+X/LC+W/X8Sse0riXH5WhIOk7nPUoFdBZ4L3mfhteXS4GXAvJkt61eH8Xed1JW0zjfHpOPlIeMOR//8xzu1uxGHx5ToOgfP42Kpvr1S6sHOW30B6gHHcfsD0hV4SnrwvuhB0dYT7i49KOQoMOyJfQxQvwOGflkanh8GoO/WVb8avMb08K+gwv3JPrxmO6TwOp4PMPf0kz9LuusPGtla6PaLztIpkmOCHt3j6mgB7LkOIE8x3h5pRWFiw2PpwWujpjOBJ6U/9IIMRbjLCEB9LPGettw5R59EwUrB2hSK3zFcN5r8EGcUIiiCx1Iey3gSbpuE61Dkjme+0PMk/q8obJsqCZMppzq9Hp8NapX6SaaqEzRGdZrAbGWXk4lTOKfqdjLsOmu/3BmryssEY2utTVk1Z+DO/XNNaUs3c3XO6fk9TX2LM+zcaQdb7zwsB7lmqwXvXGFro4COgJ5l3OTI0meCW4qsnfRKkf5aSwxXaxi6pqBZYN5jmcYoY3eCutMfvuLzdc7Zede/FcY5AZ1Z6FyZm2n3qxFNufGVV5MaS6hHtTvX8FQn4GTpxRwBTDn6GvpoNoPPeFRiQ3usnfQvwri/EUDHizjwf8n44H+X8YE5Mt63T8Z6HjmGu+IczNbtaxqQ3oYpe3e1qtsV0HXXEm+wFryZnf7t9dlg5hmauKaAXocDZ7beeRDQJ8nSCegE9moLzLm6poD+UWfnY9xRtxTxI0UAcz0idZVtMC9MAZuRqQrkCS+k69NzNYxRC1jOxfPeySBAfLQwQr3jRwrDAeYA8aIwmSg0bfXxcuMnP5L5Rp3fxnDdRN5bsOuXCuZjmX6arkZQ1xY709bSmKoGQAa4U+k+ku6nuehk5cxJH2QamzL55wrEvZ+emlZ6NFi2ttg5D/eQLnxgE8A7wa6Zm06vd+amd4KNdSlwP5HeeDD4T8+kky15MPnuaDNH7wIbN5nqF3Q+zTl8B13h3p6WTnUYY8vdFQz9oBrJtL44bFrXT3fhoNe4C8B9l6afVT/cqoIz+oRX4kOds9ciFccxKW0NmN9aKaHX+631UsmddIroAOolN/A9918AaCvUPa6YxjBPD0l72B2xRfLvfWCKDxQyI+kvpS/qtpn/M6mLTnnhV6Q3+JTGdlKEVYwCInLX1+K3+g9yb+k/y91lf5bgA4uk6P4uqeWeOuNeXx7FcUJaXp2UJr8juldf7w2w9D2qYMnHXObxKx7POhQIv2jLPOXEfIndP1vebvhKAjb8q3q20wgn3OV7bb+/3z1XArfPUiMazs2jdn8rQRv+RV6u+J28Wv1HCdsxSyJdwNh3f6dWtywaquipfm+T2uOW3VqjXYb6Jzs0Pa7T31U6AcodAMVO/6PqEkcv91o8z3TYe8/gGBrwHJutDnn1DzdLK16n7uBz0oTbVXuskqZn27UY4CpZz7uL0o/3TS8BPeohCqTbKHCOAbxRILDjApZehaKHYF75AEXbw92absc0PBZeWad/loQ9KEb2fiVZJ37QZLx8zVD/SYrOLzAK+NtrtAXf+GS7zvv5+HtRVAx9uChD4Zdl8MMla43Nw6yxMQ893UsmUp/IBEGa3u4A9wlcP5HySMYZs8o5O743keEtU9k+Mp372hpfURX/SgVuqlDnGpu2ta12dnu+Avl0DQW1AHiCfHmMTJZHy5RzFU1tX5PNjjnn5eWRxk2OYO9k7mT6M8w0R9fUZlbVaCvrbK2rJW2isnPRuX3SZ0vZJgvU29LN0ZoOIKcJzeec9ZmDgO6caffhM5Jitb5a46lOUNdZeKWyc5OIVmNYtNMNDkBupy5JvzZRqjMJbOwEdBXPMHRxqt67nAY3FZ8d5bgHr13TPHOoN3yB1cWwvOvxfXx+Tzl6Gwdk2FYpo72hMjF4VESV7l+EcX87e+dj/00mRymE22gf7fGQke5ox3BHuaO/ucfR3zgmvXVGDKfiDiPw0P1JKt2bcj/nnxPE68xZ84CtTODx37Ta6R5H5j5akWLAm2K00lizm16epCx+rDJBRsDSh3WW/hEgHaa+7sw/7wUT706kWYyf9FrubxS4sRXPGFYWAUxxU4OanFAUDBGa9DZK5TpY+HgJwTxWRnKCZTQnQEZy/QHqDGHxscDcWklLpqL9mbbc6dXODHSNUgVzHs54qZf7uEfOlnrCEzDvR9Lz6ZGCcBfYc3fUTV1H6468BkC+BWC+I71g1zS8GdA9dS9cf0fb6QxuIcCTpbdSmR50SZoDzqipTBvXzUIuiS3IiN0I5vR9V4Fd2BX1gudlBqAwzYu36QLodwadFxuDWQDy7a+OAxBdpQkA3/j8kDL1khurlJFnnPxJMk+RdS+SAgB5IYC8AOw7/+pqKWGr3WOjlN7bBqYOtv5gJ0Bkt66aUTFPUCkHK6x4ehigfliKH+yVBn/cd9R9/dtsIefx2E1iV0+Yu/R94DrdSel7d1p6QliAnFCGykIhYs+38mjR/5Lrc/9Rri74o/jtXiopt/dL1avz0hJyRZpf4+8LcpP2gHMaOtPw/KA1Rtgj1fcoMlurgJ7vvkwSDs2RxKM/SdzB2eK74p/EZ+UfNFiFtq/BO/4iIdsB3lu+lYBNf5Ho/XMlZPNX8mHbv0ropq8kYudfJMrlB4l3XSCpZ5eAnc9VJzsdBdzbgOJmk3Y5CNYNz1x0p5/z5443YNkoUGyvj4mNr9ubM1LxwEWijiySZ2v+JL6rfqeFS97lBSoM7ASb73i5T1q8t4Mhgx377ZceagtQDPQEn5FuPHe9LPRCr+N9cFFqn7tKnfchXeFjrGweXiPqGqrwGlDLQJ0Bd+DLmZ7nvkRKry03K2xuy8DOV+j1FTdW4nsUyq3Q9LYagHn9w43S8myLdPjtla7Xh6X7jav0BJ2W/g9uMoj32HDENRmOuSHj8Z5g3vfVaGYi8a5MAsAJ7FOZYOsogKfxf6ShLTkvxc5zUbBMFXKmHgBAf2P0KNk4APST2b4A+xe4/pXYCe6cidckgrGnWC3yRGMqUw9w1s2ZZP3MoEZnquKTTJZG4BwxYzGrgA6gFxYH1oqacZKz9rGdqWm/TS1ryf68i67Ke2NAY29KMetqTclmfa3dMHN1j9P9cOdR8BlwFXQtVq0razWGpbPtbrP2xLuMSM7RReZuzdXV7rVO3d5UPKdAX2WKgA6r/d7p3Dcv1Va/xqp2WnvnMyzfKgDUUz7XsHK108XXZOo6irDS7tqK8FleMwKi1ugYtsXZJ/rdZXp8vsj4f7esYL/M0f+62fnQf9E1tenBhTLWd05Ge4Icw52FjsF2mwy0jklfk9k9t6GS7HCuRxSp05F6FjdmG+CeAfRMi6VnaPoQ2+1GEGdm6E62TtX7eNkn9XdXW1heBujrulrJRwvM4zTb3Pi5h+iqWW+KyUXX/XN6tSuYh2liG9n8EKNY8yO0PT9aCFZeEglmDjCn+K3EsH7awg7Tj51t8jRvsOunMgTwHgGgU9w2SFbO76m6/RHAmy30J9paZ6raAFfUwFr6Y02ueS/n3fRvBzNlOAuBnJnnA/iZIe6yZ76RITzWfvrHJ3vp9TSYYYBLb8wdM0dX5n7R2jk/qqYyTF6jIK7pzUkF+jaq2XWn/IK0AfDbcV07wL+DavKgCxrkwVQzBru0+h6SFh4MZQH4MTqVUZ7KMpm0RnU2ALz89gYw9W1geDvA8AD0AHD1b7+3Fex7iwIIQ1KKPQHqAKg6b1ep9T4IVrhTSj0Y27pHiu9sl0LcpuzxAVW8170+L53ckUcx0xfJ5+m+0RPg+eoJxfcCXWUgioIrTzXcYdeh4eUxzRf3B9A+Xvm13Fj+rXi7LJNPtw5KySs3aQy5Ka0f7kh7GEDuww014VFrVJ8jprX9dKfGwOZdXiJJR+ZIwpEfJR6A/m7jn+TF8t9LwPqv5N3WbyUUTDkY4B6M+wnd+heNh32/+U8SsuGPesTu/UGi9/0gKaeWSLbbSk2dYwHELkWd1y5ppdkPntNWGsXgMfS8vyy9LKqCUUAFsYBxk3q/05J9e7cEuMyTB8sA5htnqalNEZ5PJuW10FjGi0Ep26X3/VkZivOUYbyH+sOvyVAsvo67r74CNoB50+tz0vIWv/PlCan2OqjsvBrMvIR759dWA8x3KzuvvLsdhxE3MhaXeffsXtThda28s1Ff6xJ2XfQ1X68GNHSRY+pb45Nt6hPQiaKkG38DFff9KMAojBsId5eByOsyhPfzSPw9GUsikD+WqQwvs7ZG9ziurhUFGgFcYZDuok8DxKcLAoxRDKNVy8NkuiTEgHzRO5kqwUG7WK6i6TraB1WgT1O5zl3zsnBxgKHbmaVO5ziAuF1d4OgqlyCTlXEyVRYt02DwZj4eZyJVKZqrsnbTqfJWP3cLjJXpWiErNrBVGsaoz7uxoJ1h741JIvXxIk04t4PVdxb8BriLLHDP/k3MaYnZE1eAL7L206s+Hyp6K1cQJ3DbVSRXDoAu01AWrrUZhl5lfa/SAmhjBWt37qU75+idVlCLMyXOmT7XajzihetwzVY8LVXuVNC35n4227GVjTl66todA22Z9rG+JzI5vN4KbfkvX9ruf9Wz877/bFrtw7NkfMBFxnq8uaYGMG8GOx/SGL4eI4SzO1cr2gqMwp22hjimnSp3Jq0xEx1nOiGx3W6qaq60ZVoAn6GgPkpVOwB8jC5yZO7VZOWGwXMXfbgoBke0DBVG6ryc3u5k20xe09Z61jvj5c4dctrF6mpbhK65qa97npmZT5aEy0RRqIwVhMgEjWyYv55tnN1Gs17q2hkBnMdouq+20dky54x8CAx9MPEhzo91VW0g/oE5yMg/epqgFYrddEYOtk4Wn/BQbzOY/Nx4wecEyiAAnWy/X6NU7+B8V/o+3tU5umHn17UNb5LYjLEMXeNoKtNGgAgG+6b7G85cUev8YNnE6vfA5v3PqFuciuQA6BrBCVBvA1NsVkA/rC1qsvMmX7A8r70K7Kp+f7Jb59INPofBuA8qAKgYjqtrt7mn/qsUA/ArH5KZ7wNL36U72PnX16mArYJz+ccuYIl7pIK38T4iDa/O6A462+EsTFh0cK++H4A1wq4HOxsA8+5QFCBggu1gpBwRMEGu3u+EFNzfJ9EnV8mzjXPEY9X38mDrYgk8uVVS7p+SioBb0hD2SNqin0lHBA1XWABdxO85p/v2NY93GbvaK8sl68IvknZ6gcQdmC0hG/8sQRt4/EnFch92zpKgzQB1MPIggHjopj+L/+rfSdi2v4CR/6gmMiknFkkSzsU315nn7NkuzTS30ZqXXQ/6Bnxg9+UuHssd6Qi7JfWBbpL7+LhEnNsi3lvny/NNc+T94V8kyxPPndcR/T3NPi7S+sJF2phwFnJK+sCAe6Nuas74IAq8oXgAO94bHVax1hX9RLpinkhL0BWp9XFFIbVDmXrtswMA9t3mtcPlcoB5vtsKyT2/RPIu0EVuueSpk9wqXa1jB6MWLL76PvUU26Xq7kaA/lbdcmD6HjsNrX5H8N45J10hUNaalwAAgABJREFUuF+8n7TLw0IxxF29DbrDbkh3hBn99EXdkn4Uo8Pxj9SPYRT/M2Nsv+e+Mkr3YgB5+QdtsU9REU/3tzKAenWsrqjpapolZtODM14ySisbXVfP1PrV8menl3uVFc/KmToY6HR9qrL6Kbbp2YrH2e5MVau1glw4P3feR5sVvGLNp+0zzLbgM3t32sK2ZYtwZg7wFlueiuGcVrDSwTWwHFzvnKMX/htA17Uypz1rT9WMqYxdLVorjf862/A2YyZjV2Zebe2rW6DOWTgelxYdHYWfOwC4H1Ewz5mxiRXdo7fMc/AcSkuugrqCN7scTKBrtYJgjHPeFO63z9HbUO4YsgUBAw7J1Pis30SrfgH0v75We+d/lFF6tg/+Ecx8vYz3XnOMdMXKYEctmHkfwHzCtIiqjBkC3wythcbhiIEDTcaf2N6CN10LGTsqyeYCFcdNE9id6WsE9/pMnatPVKcbJl5B85gENZwZYzu+Jh3nVMPOSxMA5NGGZRcYW1YCuu6Pp79Vpt6n8/J3VtQqzrnvtd1O8dtQ3jsZyQsxLXadnYfr/dEwhjnn4xS/Zftb829fA+zMPsflwVSunnmrYl1X03jwMoVuyc+09U6Q53mIXu9svzNpzQpsIXCP5Aar8G4Iv7OfQB9H8L6pAqeZlTWazVjGM53h13SvnKtqnKPza/q78/bt+FBtCyYzvwiWRqZ2QdpD3ZXRd1DVzoPCM3wA87a24MsA+Uvq4d4AFsk99AbvAyqgqn26W0FbvwYAE4Rrnu3D5YPSACCt9zmq4M5kNc6k2aYtY973LQL6doD3NgV4ztBLPTeqEp2WrGX3tksthVreh6XsEZjj/d1S/YwrdgdVtNX4EqAVRxHhE1U/j6OY4gf/UAIKn093URjd1JU2ruCVgPUXPNgj2Xd3S/TpNfJi2zzxXPOjuK+YK1dX/SQ+BzZIuLurpD+/LvVRz6T9o5ey9o73YO94buoBeHX4GwsZ9oK/Ie/qSoDyzxLt8q2CesSOvxg2vvErebXqD/J+y9fis+x38vbXP0sgDqrb4w//JPGu8yTx2EJJO7nIuNk9P6DFEcNV1HkPQN4Zc1daIh5KXdhDqQz0kJxnFyT41FZ5vGWR3Fv7o3hvnicfjq6WTA+A+YuzAOND0v7mCFj9UWXl/ZFXFAgHURSyyBlBETjAkB96DhA88br2Ejyj7ukGQbXOzF30NeLmgrbZn+E19j0pTS/P4DEexuuyTdJPLpDUYz/pOCX77ALJOPGTAnzZjZVSrYlwW6WOiXoea6TKY6WG5DRS4f7cRWyWsK8PxeVA1A1Vu/ej4OD6GlfZelF49uL9qufQy3iMpjsxxGKVjogK8rfxWj+U0TQaMT3X80ROgLJwusZNl72XqfJIzSyfrvook2DZtIqmCczMfJzMWneoM3Q3XdfO6izB2oxwzTKEAbPWdj0V7XXp1udSjjGOaTTBLw5nsht/zhnT2u5kuFkGrDudM+uSGdGbOrSpFWu25RaXZ9LYnKI4LQQ4U/9N+13XyipN61330S2lu83ZIi83rByfrSqUU3CvMkd3lYK7AnyXYfZadBDc1UXOsHOT0Z5vjGSc8bJOa9s2s7ZGPYIWMfz7VfWfoNny2sJvzbODmA3h/hod/a2J/Oy3olW/qN3/qlvtk33/WyYGVshY7yXHaFeIY5Bz89YeB8G8t85u52xH19TKtc3OMBa7BgrkG3BnqhBV7m0E+5IZtfsk19fqzfrahMXKuZ7G3fNxAjkT2Lifzu/VZRhAB0MfdVq9kmkXRmrbnGDdnxGkYE5g78sy0anK3JmuBuAeLTbubkMAclrCMnFtODfEqNoVzKNkWNveAO6MNwByerMHyIjlwz6c8QpngHOKFbrCc8ozsHaK3wj6r/QYzvTT36N+7ym+pnWOD2QGswxlB5rVuNQXMgjWQlMZdY6LvqkMjCBt+3BVbMw+5xkf2O1g2m3vLksrGSbYUBvAopV52ADndn4NFtiC7zW9Pi5Nr47j+266p04jmpa3Z8FQL+Dnr+D2OPA1BWQaygLWzkCPBu/9ul5VzfYr2Fjt4+2qdi+8sVZKnatotzdKsedWKbrxq+SC1WWdXyipR76XlMPfa5RpgftasO9dUo6j7O42KfHg+toaVVU3vTqr7eXKJwDje3uk6M4uAPp+aQy4DGZ5X4WBFAgOJAHAU54DtFAYsfBJeKyHcSF7IiPxZKfXUBQ9kPaIu1IfdE3SPfdIqOsKebplnrgvnSXHZv+LuH77L3Ji7jdyd8sKibhxUvL8H0hl2HOpef9YGt/fkabga1L/5qyU07YWBUU5wDjtzELJOLtQPoKpR+/9TsK2fyXvwcgD1vyzvMP5xYp/Fn+AeejWb+TjQeNPn352sSa1pZ9dit+xXTPom/xP4/VAwRTuKa3huN/Qx5L88LL4n9ghnhuWyNkF38j5n/9VPFf+oIVI+JEVkuK+RXLvuUiV1wG1+h2Mvg5GfhkM/Kr691PUyGKm6eURNaXRXf24R2ILvGRy5N9xnHJJnQTp4d/48riOO7iO2OjH3f9TUud7Smp8jkvVU77WFOmhWLuzWYNbGLFacnOdihtZpDV47dPfxZAertbV3FmnwS1198DeqbhnTj0fR8hZY3IT4ynDH+/qGGAAj7kn5LyZ7QPoB6IB3Bwrxd6Wvsgb+NtumTEKbtcXxctcd7sno0lPZJTAnuGnhfREYahMMJSFgSwMaQHQTHEmXgSgp0+8WrtyvzzSOMVxRl5r7ZFzdxysX+1jKarjLjoZf1WkGsuopSxNagBcVNBPV8VbrfhEc3CWDIATLR6s65TFJ6mJjDgtXsHi7WTiNgOYOrdWb/U8bbdLhwF6/Z4y6PzPQS5sjVtubqp617WycgPy1nqasWmt0N1x4QzdaT7TZcWwziSomZ8VBfRyS2DnVMI7C5BSk7LGnXRrlKDMnYUPuxVOMaHTDx+M3RQQFRMoLnocPXXFMmx7KVPDB2Rq7Nsv4ri/TiHcfwQr/wcZ758lo71H7KPdvo5hW6ZjsK1d41EpglOxhpmdq4MRwbsNgN2aD2DPN+DNLHQw9OlmExHIszGYMbP0iTqnyj3dzNArk3VVTefoNJghmOMYq0o1Nq/q8R6jh7F6DZd+svCcd7p7PqTX0c/9PQA9VL3dR4ojrTl7kJrFqMc7gHUQYE4rV+6vE4SHwZjJ0Anio1n+Cuhk5UOWgn3Y2XbHZQL5aKafgv1Ipp/mnw+l+6m3+0CKD4AHgA3GOZDmp5axo3m4P1zfH//YmrU/1pW1foAXzWR45sxc41V1j52ucpyfM3Htms7OO8F22nFu5gwd4NHCrPPXJ/GBfUTqqOoGwyMwVIGdVeGDuQ6XG14clgZmj/se1a+bXuLs6wq2dkgZJY1Z6BRX92SXVN7ZAMZNlfpKTetiOzbffTVY7FrJu7ZWCq6vVWc4mpQU0S4UIMA2LlehCORUx5fe2SLlOCiGq3/uqvNd5rK3+J9TcGnwBci8Pi8twVdRrFyXzvA7unLXG4vnIcpDvebpZ087XLrJNeLvYPu6N8xNxXLcsW995y51gVelzPesZHjulw8n18ujTT/Jxfn/Koe/+Z3s/pf/V/Z/8wdxW/6zeB/cLuG3z0nq85tSGPhAakLvSy3YbC0eS/3rU3ie9kv+jdWSfmaBrsaFbvsGgP6Nttjfrvm9hO34WsJ3mJ11RqVSCJd5cYVaytLBLh/PSSWe83qm2jEgJfimVAbflcS7Z8X/5C7x3LhUzi/8Vlxn/UFOzv2T3F41V/xclkjEiTWSfn2TlD3erYVaOxhtX5K3Al8blfABrtLH2TT90uM9ZSjhnu6fk80O4/1D1tsfCfAPc1fnP45U2IVoDrikKncKE+kpUA1gr/Y6LJWP9+I12iEltzfpyKTu8Q4VyNGvn657PBjAU4/3QcMTF7XXdRrNND/aKK1PN0mb9w5dnWPqG93iurm2hgJjMPyKDEZek5E4ADQKkkHVPnjI4Ee22x+gSHsqY+wwcNwU56mOgIOql/CQgZib6gc/knBXZ+/jac9kIvuVjGe9lvHctzKe99baS4/RvXR7WYSq1tU1joySrLvGuTvOMwC9IhJHhAFvdaOLsPLY4/R2zmhWbcnTz53t5sZMS2SXbFnDZv0mujXVKNwbkkU4R1fWnm32zlstMZwTtAHYdksAR8W5AfpCi91b4jQny1ejmRrLOa7GHLqaVmqt/JZpYuWM8t35PSew6w57zWdVvJrw/HaNzSnEK7FA3ToT1Dk24N+q2gKznmfMdRI1f56KdxC1KXtP3RA+5+vxuR9uH+u/JNMjC7+I4/76AP0/6JraxND/xLFMxntuaQDLUGetfbB9yNHfPCXcOdeI1Gp94zkzfqlq15QgDRcwEYBsv6uZDNXtNIqpSlK7V7bXJ5xra9XcP0+0AD3VMHLLRW68OkNGAOZ0htO2uMXOhwsjlHnzPFIcpeehQmduOg1m3lve7h80PpWmMYO5YMhW0IoyfO6f5wbhCJTR/GAZ4zw9DwCsKWkBAPbXZnWNTD3zlRG9JXkpKx9JY/udASzeCuIEb+6j95F9p/qqw1w/M9TBPDkT7426rQfnigTqHjDzHs7aCeT8vmanA8DxYdgN9tITdUuV8LrGBjbOfXQGsjT5nwAjJEAflaY3nEcfk/oXR9QetfzBDjURKQPz5Oy65jnAHiBa73dMs89bcPuWN6elmZGbFNP5HtaUNTqv0dyE+9P5Vwnky1XFXnRrI8B8PUB9g+5J09c998oKDUHJtlzIss4t0dmsermfW6ThJIU0lmEYy5P9KCyOS/Xzo1LrdxLgdQXAg78x9gn+5kfSG8c42ZfSnwiWTt0AgKoPQNUfewfPk6dqAFoCz6mgkNsEfRFXpPsDWCnYrAI7ACz73j75cGqtPFj/k5z58c8A9P8lLjgOfP0HOT3ve/HctFJ8XXdK0PkDEudxRvK8L0mBF8AczLUMjy/zyhrJurhMM90/HZkn7zZ/LcEb/izvNvxRFe2xe76X2H0/SsS+nyXlzDLJufarZLivl4wra6X4wW4pfHZSin3xO30uS/z98xJ04YA82LpS3JbOkROz/iiuf/m9nAGYuy3+Vp5sXSgRZzdJzsPDUo1Cp+2Du3QCxLv4Wn+8B2BG0RJyBqDnaTYoAH5DnzwA5gz2eSwjAL1hgHtH8DnpDDor7W+Og1Efx2WTqtfoe0y3FOrB0uue7lNBIkcblXgtylBoFd9ci2JslYoDycppHETffJOXvlVz77lzXsdkPc81UnN7hTQ9WC8tTzaKzW+v9OI92PcODJwM/R2/vii9uNyvwrhrCs6DMWyrexgNSeRN6ScTR9HKGfooATvdWyYzfWU8nVsjL2QyBwCeDoae8tRkH8Qbh8XRVG9Vvk8VhMgkd9OLaDzzDiw9RKbo5MY5uwJRnFGzO+NX6xM0wU1BnLeptcRwloe7mctbBjVcYdMZes4MGVH2qnvsluqb7Xfeluy9yRm5mjYT4KJmM9rezzardWTm3SVWhKrl3uZcW+PMnH7rXcZ/XZzucQxooXscd9St+blh3OVG3d6D2/Q1GHDvNB4fhnVXGbOYXuPZblegr7BCYJzBLCwunMp3tuMtTQAfr+7dJ1rFUIJIbbIB9EZqBAqZyzGGz/t2AHqyfaTzjkwOrxOZ+JK+9tcnhmO7feSfZHJoq4z0eDtGu3PxgtrsQ7YJx0CLXaw317TN7JurdzvY+DTn5UxY4wxdRXBZZve8JtUcCuTJ+DpFWfmkMvM0BXLau44D7MerUmS02oD6KJl5RQoA+6MB7IIwZeUqcGNICkB5pChc99B5Wb9XZIG4RqjinBmgAE5w7U9/o5dHlenHykieBeYK6m+VpY9o292sng2mvtBWME1jdIecpjE4D9JQhpfxvaE0sHIc/fjeMH6WK3Bs7/cB+Pkh3QvA7gczoY97Dz682Vq1UfD1wU1zzjvDrkgbPpw1QS2AavUz0oEPydbA05p33vTyGMAXYPzqCAD8uLbfO7hrHnpF1d9UtzcHg7kzBx2svYHZ5z5H9NBcdIB5jY8rmPoJfP+cXkdlfAPz0p8bL3cVuzGSFOytmB/8d3ZI/q1tknV1PQ6A+tV1knN5udq9cnWt+NZ63UVn+EjulZVguEsl4dBcSTmxEMz1F8lxW61hKHkoAorv7JRqgHpbKB3t7kt7yFXD0oPc1PymOwbMLdNfxYhMXqPpDjsedBgbTQTDA4CNJNyXEYDcQKQbmKsbip3r0oVigJG3tSgS8p6dkJBTG+T++p/l8rxv5Nh3/ywH/vWf5Picr+XsgtlyGWzdc/MqebR7E4D9sMR5npSM+8ek1OuoJFz4VVKZe35hueRe+kUiXb7H8YNEucyWmL1z1Owl6cQiDWjJv7lJUi6ulVzPPTh2S9ad/fLp9jFJfnRJQs7vl0fbVsnVlfPlAu7z1Nyv5fh3/yKnAeY3lv0gXtt+kfCLOyXz8XGpCrgsjUzEo+9+NEN1PHQEQzMiFWFmWPqNNBSLsRRYeupqXycAlZc5mumOvKUeBbbQa9LympsLJ8VGts7OjS81D0dQ1O2Rsnu78HptlmK6xgHMCy6vkEKutF1ZJvkXF0sJvQNQxBVcXirF15aDtW+Q2vtbpNJjDY6VUndvvTQ93aZGON14n/aEnMMBMMf7dhCFyED4denlEXZNPea5fsgd+d4Id+kOvShdQadwnZuy82G8nqMA68m052ZHPe+1TPJgQlsei2g/Bf4hZfKeakQzQaV8cShYd5QycHq2T+LyZGk4vo6xMs5jFZgY8DJjINOYLtMNlpucZqVbAN1kebg7QZhGNU1MXcsw3UUFy3KdP9vByO3q5W5ZvTanGP92p497m7Xu1paj8ap2VZJnm/m1ZcH6bwBdPd2rraxyK7xFneMsQB9sNADtdI9TYLeYOD9zeWhn1JjPKKDPOM39JuDF8okn6xca2nRbUa7O9Tm29i2RoaMhw7TdnXa4Dela4GjKm61ywtHTYFzjRrqfyXj/VplUtfuXOfpfF6AP/1fdO6eyfbTntYx1F8tIVw9e2ClHf5N5U3XVyHRnlSarafZ5GwNZKHwrVCU7GfmUta42VZtmgXqaWVWz1tbUt50+7jXGAnbC6e1e62yzJ8loWaIq2gnYysYLI9VoxrB0fI3vjVrucbpyBtDvY9oa5+kMXOFeN/PQM/w1CnWkAGyecas5wTJMr/bMV/oBSsEb98gH017ouS/+se6PK4CneGkYhuaZA8wJ8ATw/hTuo9Pd7YGq1Pmz/WDstGRVlslkrFh8yEXfwhmsO5JiNwAZbVzJzkIv6x42W+m295elhwEtYUxeuwjWhevfntGWc+ubY6oIb6bim2tnbNMC0DljbyagvzVgXs9sdP9TYLWXpSXgAgqCk4a9g6lXPt0vZUxRw0FhWK3Xfql+4iIVYPTFd7aC1btIKY6Sezuk5O42Kby5QdfRyu5sB8PbqSCef3WVztHzaBvqvgpsfKnEHfhePmz5SsK2fi2Jx+ZLNoC84Pp6bU1nXFwpxff3Se2bS1Lnf1GaAt3wmG9Ia7C7tog73l9VU5yBFGPCM4AiiJa23RHXzW79h2smI56zWIbZRF7Bc3RFc+K5MUBDnga2ugOvSeHrq5Lo4SpvDq+TGytny8k5f5LjP/xZjs36s5z66Vs5t3C2XFmxUG5vXCUvju+S0EsHJeHWQYm9uE3izhOoV6t2gIErHw//LJ8O/STxR+ZrAlvK2V8U9PNub5Nkt42SdGO3xLjtlA/nXSTwzF7xO7pTPDctl8uL58q5+d/J6Z++kbM43Jf+IB5rfxS/vatw+92S74PnIfS2dDKul1oLFIADiU/1b+H7a4jjl0h3GYzGEXtTRYHDDO+J9lCRZB+Av/vDdRVH2iIA7P8/e+/VXOeVZQm+TXR0dHRMdPRDRz90TExUdVTX1PT0lMmuyqrMyszKrFTKZcpREiWKFEWKpCjRiqTovQUJEjQwhHcEQYAE4QiS8N5777339sLdu2etfc4FmDPzA5QRfDhxDS4ugPt9+NZZe6+91rM7uI/FTHR8rtwktQUfxnH7Wupuf61ldo4S1mAjUnzuQ8n74U0pPvmOVF18X2rYP7/+iYa3NN/bocr25ptfSJPnp2r3ysz0ltubpBVMvYs56QHfaLTtEM7FcWwgJxOvKAOfz2LVwFcrKuM0QyKgJ17ScTYGt8xz6gOblkmyd7oBYi2AiRPEl2gmw3nzUsavRouzzqamkYHXJ+hY20pVjGahs5TOoBV6srts39upgS3Wkx3g7XSrufutTSvZtWXYBrQLrP2rNVPRsS23IM44zDkBcBSHkaysjoAFs4xNFTnBnWXqHhsgww0BS9dDtqTO0jrBvd9kpLP07nSDurvMDmCVydb1/rnGqtqy+1TnWniLMeii+K3VCOHIysfchjOtrwjlmteMY+gIp65w7hE5luDVOc76vK/lo9uRNqrZuQFhhaLDBtRwc8RqRo8xmcHGZsU50Tnpmh6qdM5PhCoeLC/8xI6vvQb0P52SOxk6Dtzy9DfimIhyAdBdcwD06cEV12T3mtmBAfQWU3Znz7zPbfGKf4huu7qMh/uqNZHRMTUK4rSPTgZPpXvZK/10c0swn6/PVkCf18jUTI1YVXZN8CbDBpCblapgr9GpVLSrr3u8SVLLj9Q1URClDF6jVsvjxFEWIwulD2W2MFxnwQnsysrp6sa+OZ3gCsyiy9tMfrBh6VgEdtq0aj9cLV59VLk7A5Y1nWF83HUGnYK3l2AxGXfApsDQX9405XaWWDVC9QbA/pbtm9PC1cuI4+Kv6hpNug6gv6zAz9thXDBHk24o0A1SEAWGTgEc58/7AIDdjwDqAHGajLQwfQwsjasj7Ihdh7V/3s5eO01ffC2AA9DrcfGv996lIrgqj8+l4iqA2WOzVDF85cpGqQHYVVz6SINZqvA1ltoLTv5eco+9I/knwcwB7sVguSWXPtNwljLev/y5lN0A67+PTUUUNhiPr4Kp35Du2CsynHLP2NPi76ECnWr8wQQAwvM7WrKdzjQz+/yMNdiGFRB+3hz7I/C98NDPlrn243lR0vUiSGqjruv4WuyJ7XJny7ty9q2fyYnf/oMc/tX/BKj/Qs6/9zu5uOEdubzxPbm7Y5NEHt2lyvP441sk58p2qfDcJjlnPlVP9/yzn0je2U/lxaH35OXRj+TZ0U/l5SkA/uVdEnt8uzw5+6347Nwkt7Z8JFc/xnt++KacBis//cY/yfl3fyU3Nr4j4fu3Sjxel3PnuFRHXpeWeG8ZSA+SsXT8zsq8b2pJfT7fX1X+o3FnwIKPayViIcdHlorD1KFQpyFe3NX4XA22ib0oPY8u4hhyNG2fdADE24NwXEOOYrN2ROrv4DhiQ8aeeTNn0P32YUP2lVRe/FjKz3+kAS2VFz/QjVnFeWv9ysoLWHsDQJ6g3nTzU+n2/1rT4fqDd0tf8LcyEL5fhqKOygjdB7HRHOM8Os5jit9m0u5i3dPxukk8nnruqeOHLMFTET/LvzX1ltUF3JMlWsSWPZCVsihl4TSTcVY8VJMZFb/Vg5VT+c7VkIj7T8HIaTLz0nitU9DVbWJMNfLUDUZk0tbJTbrp755r2Hu7tYHttv7uHa/4t9sxNxquuP3gyeh5/VKDLALhkBWTrSWvWZbeb0rtCpKqLq82ASh8vTs0Zc3TvVnL4eqxbg1m1vrnZOZTJryFLnKqTyJwj7gtX5vXSvFOq3oXG5nqdoVbs3kdqV+ziBW72XAOV62Z55h5+hJTqdBI2FxjcWsDakwfner8phXXeMeka2qg1jkHYrc8t09WFn7qtoF9jZZ/MoA+8x9lef6vxTGzDYAe6loYr3TNDY/iwC4JAX2cu8hWBfTVoSZl6KtUsfe9EsLSXaIMnaX31e5yM3/eXbrm504QX+6pxOuoei8HuAPU26wNrJba82WeynY6w7XmabQqXeMWGjKM2h0Az2jVeWXmKTqWRkBXL3cw9Im8SMPOCx6oWxyB3G3zyhI7y+Pz7lXyUMFdx9IA5iy1c8RMPdl1LC1EjWQYizrLXrkq2ANkNsc9puajBjN6P8tbU9Sm+BwNZlT0dg8M/Y6WVglSBG+OsbEcT+OYsZRbxtENoD2YcEXBnEr3EeakM2iFfXQKxZKMYxwDOeh/zucHweZ7cIHtenhcOrA6HxxTpt4ReUw6AO5dD05K78Mz0h11RjoiTmovu42Af38vmPcuaQI748iZOr3Rh/zG52oPqgvA3Xj7K2m6u11DPRoYn4rX1wIoKj2+0OCT3FMfSCHAu4wmK2Dk+QBB5o8XgaGXXPpCSm98LZX39klLxFnpe3IdC5uRBC8w9WsyEHNWBp9gQ4L7k5kBpoWR448NkbeKBiewuZnJDtRjs1jL4I5EcZRGKWudSARLBFjMUtyIc2AoO1K6k32kLdlfSkIuS+KFPRK4a4Nc//i3curNnylb/wFs/dx7b8r5D96Sa59/IF47vpCwIzsl6sg2ST67QzLOfykFV7dL5rnPJe/iF1J2c4dkX/xKEo98KnGHN8mTH7YqKw/Ys1mCDnwtPrs2yxWA+bl3/kUuvP1rOYdNg8f7v5J7m9/Fe34tufcvS0Wkl7Ql+stgRrCM5eO8KXssUzivxpIvY+MCwEu7ib/jukyneWlbgUC+WOCv5fZJainIelO8sDnEOZPqh+N+W6cZ+mMvS++jC5piRwEiXeeafPdJM/0AfPdKze0dCuSdnG+nyh3gT999Gs6Un3tfj2/9rc1Se+1jZeT0bO9gApzP19Lhu12T4JgK1w0gJysfiz2jCvaR2NMy+viMucUmcgzn50TiVZm0sa5k41S5T7DiFH9evfknk68YQMffOp16Q0F+BuC+kOcnKyXhJnmNzLzuqc6ma/oazWawVsHUNc+cQjd+jWp1LbEbVk5G7rQMnODk1DAW49UubnDvsyNp+J5Vt31rtwEyBXpGpyqY2XQ1RrfSu73LxLUq2HPUyzq0mdhU24cfsAYyr461kRVTEDdqXeCGX7F/HW81LN36rStDt/7rWjZnH11B3ZbX3YK4EZs8Z41nzPiaO6DFbfNKm9gG6xr3SiIbWfmgaQ3oUre4Qq1MqJe9ZejSaoSDwvtUuw9UrbjGmqddU72NrvkRHKSZw7Li+IXI/H9+rXT/kxPFzf13MPQvxDHp75ofK3XNDA+7pgaXZKLbqYA+SjtCgnozQL1e58xVzW5n0I2hDG55n7Pn3eUK5qtdBHcCeRVWpWXoJWDoJUYE12Jy0Dmm5mjJs2EtuRrGwgx0gvicAroF9TqjeKfwjclqFL8xInU8N1x75gxgma98BlYOIOfYWnG0KZUzEUpL7g8B1GDmeWFquTqTF2JK7/khBtwpeKMpDGfMWYrnJoHleDp3ZVgzGbJ0msxQ1JPrb/LRGb6S5aPWrzqixpVJJu4Dto4FgFcx3MvbymgmXtxQZbuW7xnaQsZO4Ry9znGhZHm6GwDY8fCEuoJRGNcegYt15A8K4O2RR8DQwNhU5b5fWsN+kLYwPB9+AsB+XtofnJeWsGPSHHgAF/rdOrLVTMVz8PdqPtIe8K20+e1U33ZGpLYC3BnewhCWOs/PpP7mF9IAJl/ntV2qAXRlVwHW55kx/qEUngObPbNBigDgZde2SNH5TyT35IcA940A/A3ah6/zw+8WdhK/7xnpj78lQ8leCk6MiGXJfaE6URYr42WpPAZgFqKboCk7vsbpgNl801OeTbst0/is6KHvwMaM3zdf+0wnF3j8+7MeSFNSgNTG+shLzyMSdWirXP3ot3L6rZ/L0X/5Rzn95q/kzLu/kYsfvisXNvxe7u76QgL2fS0RAPaHh7+UOIB2ypltkg4mXnj7oLw4v1OSTu+QlMsHJOLQdvHb86V4frFBrn36ofhs/1wu/P43APJfyvk3fyk3Pn1LfLa9LxEHt0r6rWNSF+ct7c/DZCDnoYxmheJ8jJSFmiRxYKkYszBULYVnsPljOM3UsysAeE9VtU9nBsrw02tq0zseb9sxOBfo6z+Zjg1N6n0ZA8APJd6SjvCjWmpv8f9eBYzFZz6Q0ksf4zh9hWPGCQQaBR1SF7lqL2ywPCl23KwVmKa7AHD/fWq6o2E9HGvD+cFMdQI+x9roN9DqvV2jeAeVnZ+UYR2pu2JA/ell3XyZdUOdEKlin003aw7n/gL+H5iNToHfQra3zGXekVnmqOf4ylIx2XqUltdXwcSZdKbldZbdGxJNCb7phRlPI0Db0BWWz50tzy3Au8fOCkwpnEYw6smea9TqfDxsDFfc4G/m0AvWx7a0fJ9pKwBZ6891M5Md4E4ntZE6WSWQsuRO9Tt/hjWk0fK8qs+bLGC7fdQbAO4Na2VwBWMCOL7unHQnsTXboJZW01PnWuuntxs7WJbiR5vX5tL5PuL2ardAvrZG3WNsVoynzN0mt3HjMWAjVPk5tJtZficjae1UgArkekqcruH6WZnqaZf5kWTn0uzZlZXFf7X56P/2tdL9TwbQBYC+9FcA9c+djgk/AHqxa9YAumuyz+masIpLnUM3JXfOnTvdKveecr3lqNoKVe495ZalVyiIrxDcFczLDVPvqtRb9s0dTWDlmoEOVt5irF7nCeT1bmaeLfP4uirfa56rG9xkQYxZRY+1dz6RH437jzRCVcVzHGcrjQVI0+ntAcA8UkfVyPzUd50gnhOoQjaW0wnk6sWeaZj0lII5LsgAfN4nmBPIp7JMnjnH0BifOgdWT1CfJhBl+hogJ+Bn+5uF1xLItd+uznJ8/zuGwacR4MnkjeXr2PObysZpFUoHuJ6Yc9JF0Rt75Q+OSxvAXEE88jCA+5AK31oC9uooVEPg99IaAUb+6LKWt7UMH7wH4L1fusMPSy8uzN0cW7O9dJrK0PK1xXub+p433vlKDWRoEGPY+w4dTau5tU2qPb+SwtMfSc7R30vR2Y+k/OomKQYzZ7Ia59WrPT6TUjDAiksbpeL6lyqKq7+3S6o8t0gzWKLmogPUu2OuyXhagEyk+wOg8LkVRuFz8JfZ3BBZYH8ZnyOFVRzfmqXbGOf9S2PUJne+5IEs1WADUJekyXgrTWmyVPdcpitw7MuTZaQsWfoLk6QxKUTSvU5K5MEtcnfL+3LpD7+RM2/+Qk797hdy/I1fgrn/Ws6+97Zc3/qZBOzfIcEHANi7PpPIA1vAsLdL4tk92BBsl/CD2yXs0Ddyb+cWufTRH+TyB+/I6d/9i1z98E3tk1/96Hdya9N7ysqfexyVfP+rUvfYV/qyo2W8PEWmql/KJEODcH6N0EQo/Z7MFD9QzcAAjnFfwmWdduAmcC7XVH4mUu/KGJgv2w+z7LHnBOjnw8oMF/MABp5ex3lxEYB+WhoB5lW3eIy260SCjhkC1CvouY/j1niPMa3bpeba51J99TMpO/eBVDLP/tx7GqPahGPe6otN3X2GuxyQ9sCD5nvYisFxZYWm3muzquG76IoXug+bjYs4RgTxm1pNmH7O2XMvsPQ7Mv0Sfw/OZY6ozeJcd+QylAXAXRwmi0UhsoRFseMcmPrMCyrksdLYkyfI35OlAn9Zoe87mXlbhs0q5yjac+vtnmVYJkvnyqozDRgTZPuss9xAhVGx2z67kJX3lVp3NY7ZlhthG2+7TR9dtJdu++sAa46q6c+hol0T2grN++rMeJWIquLz8bqCdYMaurNpLnq9jTNtsz3upvUY1YlXyu1rZXj72C2Uo9+7zp5bI5kR9xy6dY0bt8Y0Cuim1O4ctfav7g2EG9z1NXVW7V6nPXI6xrmsN76LdrishHCWvznV9NS78p14ncM10dErs0OZzuXpG7K69L4dXXudj/6nVXKf+x+yPLMFDD0QgF4Ohj5KQHdO9gPQbdmdHsPDzWqEoOYxvVWm90JRBVPWNAvdpq3xtrcGC4DOxyy391TLcm8tVp0ydmXp7cVg6maUTc1kaPdKUNeVZ8RyuD9TlWIsXplvTmc42r6qEO6RerlzBl3L7JxLBxCMZwfJRBaT0KLB7J7IQjmYO8vsZIMqdAu0JfdwXSy3z+UzTQ3PFZpNwIy6wZF5m1hUHS3KC3zFCtbau/K+XoANoE+x95tr3eSy/DRLfY7+7xQTEcy19G6yzUeSTVl9mKI5ArqW2K+pqp3l94HH56U/5rSK37ooeosCuIcdUUbeGnla2h5ekK7HVzWudAAMj2YnA4/pDncSIH5IOkP3S2cI7Vz3q9VoR+C30hnwjXRg0Vym2ZsCud06u9yio0/fagBLzY0vpAYgwT5s0Yl3pOT0+1J59XMFD/bd625/JVXXNknJhU+0l04hFjO5Wf6tu8txOrC/kMPSGszKwQnpwu/ZF3tNBhK8ZDIbDL3kkeoaluueKUCv1j+X5YpojeFczA/WMSZ6AyyAwc/TM4AmJLjgO8Du1PinDMezKl41FLPN+TJWnSFdmTFS8fCOvLhxXJ6eOyD3v/5Urn7wppx/69dy6jf/LEd/8VPZ/9O/kx/e+LVc+WyDeG3bJDe3fCo3Nn0o97Z9Krc2fyTXNn4gNzdvlMuffAh2/69y8Kc/kZO/+QUYOb7ngzfk+oY3xW/7JxJz4ltJv31Gqp8ESmv6I+nPfypjpYkA8scyQ5fC2hf4O/3VAljPtxyrCQCgzabfFIdaDIeZuF09v0yVRz0QsInhRm/y5V1sAgM0Erf/yWXpiT6nxj1NAd9r37zx3jc63dDobqXgcfX1rVJ6mXa8X+r9SrDyyssE9A1SdJyRuB9q+lrFpQ1SdflTafL6Us8BtmQ6AukauFd9+dsYuhN0QHqCD0g/veojvpehmDMyEk+Rp4d67hshKDcmQfgbAmUqDed3Ojau2KjOWVBfKgjWuFQK4lZKIzRtbbksAkAfAsC/D7YeDLAPwnEPkdWKB7JaFS2rNU8NSydbr4sTJ8vz9IVvTgbQ0/I1BQCUquNqTo1QLTR53zZ4xclFQHaPqhF0B437m7iFbAxqedVVTcvT5UYJvjbqVmhK+uyx8z2GOA5WZ17P1xD4e+2IG8v+fF+W5IfMHLpYD3e9Vbc4N6C3WAV8hynBT5peuhEgGzGcWH93dzqbMvbxV4Ry1mhGS+2jdWuAzrK8c3RdEGd66jXmd+4pNYJC6giaAebNL8xqMcJD6SwAoFcu4f05ulZMcierDvq6//VrX/c/HZX7v9EeiVW54yBGyfxYrcwMjwPQV1yTPepgpKINlt1pLMOSe58F9D5rKsMSPNPW+qqxamUFj1eogO+rkZU+AHhfPZ6rV0BfAkMnkFMwR1GchrO0FCiw0/p1AUzd3U8nW6ft62RJnDrCMRKVtq9cZORTxY/W881pIMORNTDziZxgM1ZW8UQclXHiqIhVYJi2ffN5zpzTVMbavC4UhWtMKmfR1XgGDF175gBk5qDrxTaH5fUQzUGfceeg51oVPBi/O2VtIvOebgT4eoL6XEGQMlAycrJ1CsB4O44LIsVSnE1WYGffnHPKvGU+OkB+MPaM9D8+oy5xvKB3R5+RrphL0hPvJT0J96Q3jj3q6zKEi/7wMy8ZSrgh/RRRPTimxjJMIuvFfVq/MmKUrmK0fO2kt3rUKbUR7Y05D8A/rOy9DYDecOsLqb7GcadPpfzsBzrepUEtAPG6W1s0mpRgX3p5o9Td+1bqAd713t9iU3BAau/tlXq/g5qJPvDkmvQ9viS9j85JTxRd5E7i76A+4Lb0x9+QiYxAtctljjs90Ge1LfJQPzOK4sz8f4g4igDyYLiz2fjMUjz0uDJKk+XshcZ0mQOgT1Q8l7GqVOnOjpXm51GS7XtFUjyOK9v2+OgtufjOb+XEL38mB3/yN7Lrr/5Svvu7v5Mjv/kXOf3u7+X0O2/LhT+8Kyff+Fc5/dZbcuqtN2TfT/5Odv+3v5ADf/M/5MyvfylX331Dbn/+ngTt3iyPT+2VbD+w8sRw6S1JlZGqTJmoSZcpajtqU2SGY2hl0fjdgzS0ZyKZfedLWmKnIctCnj82Jw9lwY6sMfWP4M7nuJGcyA5Ve9yxlz4ynHRLk+UGonGMAOatYNMEX1q8Mj6VjnA9Ebgf9L0Gs7T6H9TNVC1YetmlzySbtrWHficlZz6UsrMfKYizIsOWSinAnSJItmIasCmov7PDWPje3YbNwU5pwvs0YbPXjc3jYMw5GcGxo1Pd4CMA+9NLMvHcSzMIRpI9sTn10irCcNJNXTQLovUrZ+u17I5N7TJY+nJhoCwTvMsjFMAVsBnaUkGFe6ysVsdqoAtBXE1j6NfelKQgroBej9fXPQYApZied0++GV1jD7zDRp5aZq7gqh7nxWbhvuaXq0UsPc1zVOHOfrkKxji6pu5q1su9v0Tf39VtstG1t85sdoInGbYCZYVVwReC7efZkny5EcuNWpvW0fr1nHOAMWNUTXxqhx1lazMjbDO9IgB1/RrJE/3d3SEsI27F+/qImm4MbFSqAfMG01en2t0dDGPB3MkNDxPkOtyA/lKEny/d9bQKkgFAz3NKf/mKjDbj2t9TC2IXYxzjVugY97+9Npj58QO6iUtdXPwzHLg3ZGn2hMsxkeyaH211TQ9NuyZ7V1zjXQrm3CGuasJaw9rY2uoAGDjd4QbrFLhNmd30zFd7AOS9XPW6lrvBzDusGE5ZOVZ7kfVuL7JM3cyis68+15Apc9UvNGjFrESZrkgwISz5AOYiY/06RzOZEs6URxuHNjDyWTxeqE6QhcqnuLA+VuCeA1DMlz4yzI7GMQRuZeYAD1xsCBxz+VYgRxAna6KanT7tfA29qK0tLHvvGp9qPdsJ5JNZAQbQs+4rKydjnyNLJ/iTybO3zr5p2i2ZAEtjRCqNZDRKVa1gb8ooe5Jk7im8KF6TITD1IR11o+r9htqM9iXdk/5kb+lj+TXusvQn3gTrvalObH2WxXXjAt+riWxnFdjpi94GMFdHMevo1geQ7Xt0Vp3lOgIZt7lLWnx3SMPtrQrmnDuvvLpRajw24etGYKWg7rlZjWVqPLcqcOj4m/d3APF9UnPnG6m4uU0a/PZLcwD93I/h97ggA7HYmDy5KuNpHA0Mwd/vAyC4LQNPPfT3oLvcGABsoSIeGywwdxzLFTD2lcY0rFRZrsGxpBkJ55TB0Bn2MV8aJUuNL2SxKUsW2gtlsbNMZhtzAazZ0leQLB1ZCVL9NFRy/T0ldP828dm2Ua6+/xZA/R9l9//x32Tbn/+Z7Pmbv5VTb7wpZ//wvpx4+205+bvfyUXcP/JP/yjf/p9/KYcA5hd/+yu5/en74r/tM3lw8Gt5du2E5AbclLqkB9JTnCYDZRkyUZ8LMMfGoipeHBRiVjzVzcm0Oqf5iSOPdqf+Opc9nxcAxhqKjUs0NpoJej7O0HCHynFs7hgQNEcxXXaIjqZR4d73+Kr6s7cFHZJyz22qXai48bW0Bh7R6kodmHl78CE8Pggw3iFVHl/gGH0sZRc3SOUVTi18ppMLlVcY0LIBYL5FGX0H2HgbNgFUxtOUph5gTn/++ttbAPI7tMfeQf99OznBmfdRnGMcpRtP4tSGh4wmXMXykOG4i2Y64ylvPYxeIuWORr7OYOM6q5UJL3WJY3l9lVnoVcCLyocAcDBwjqmBLa62vNQeudq4NiVqIpuTrLzLnW9OFTvL7dZURvvoecrUdaSNC5uA1SbrGEenuH4bn+p2gnP3wW1ZXVk+S/wUyynTLjGe7AO2N+92i9NNAsBRV7kpZesMeLPZBJCtYwMgbhX8CINZLKgO2/tjNhaV+ehqLmOFctMgTrP9APU+Q6BUINdi++FNa9/nVDDvNDaxa183YjjD1uvN+NzaaF21ZefukbWc9QQ6lto5799iM+Spdu8rc7pGGugO2u2aGsjW+OxVx+c2fe0/v2bpP3p2zhn0+b+lGb9zedoLYJ7rmhnuxcGcB6A7ZbxTd4ROnUMnqFMU1yCrai7jXvUA8EqjaNektUpZZnndzcxZZudz7J13V8lyZ4UBdbV8tau10LJzM48+U5kisxV0geNIWqJMlTzRnvl4nhlLmymNM2V2PE8wV+BW+9d4NXphVOo8QR0XWQL7QsVjXECfaul9AWCgfuxFxsaVrJziOXq7K8AzVEXL6haQ6RiXb2anVShHFp5myubjNJChR7uq2m/boBYK7IxSfi1xLcsI7WjzOpFmDEbGXt5VZjpG17jUu8pUmVw1lHBVQ1f64q5K/9NrMpjoJYMpvgDvu9IDYOwCW2IvtTsGAB57RXrAgrv5GODY/YilbXq/X5J+PO6NouqdiyYzdI47J/0x/Np5dRpr88fF3PtrBeqySx9J0dk/SB0u7GSC7cHfa2BLPRhdFZO7zn+oq/j0e2B3n0qlxxYt7dbe3S1Vt7ZLORh7lScffyM1vnulNfyMtD+4IN2x17TkPvTsnoxnhuosNcFqiBd9gDz76mxzzBZgo5ZHj/wY/bxn8sKx6YrU0vwi2Phyw3MN8XBUYaNWGSuL9UniaMnEeVUmc/XpMl+fAVDPkamWEhksS5f2rCSpiY+U1DsXJOHCEQndt028Nv5Bzr/xKznwk7+W3X/z13LyrTflzB/ek5NvvyNnwNbPvfuufP/Tv5dD//Nv5fJbvxHvLzZI2J4d8uzKacny85Cyh4HS8DxW+sqzZLypTKZbSmWSYM4NKH5PR/kjWSzjWGSk6jBmsZGjAG6Bo5E59wF+FzW7fiaLGxiej1hlT9SwaCYDG0ScB1PpbOOEyDjODfoL9OCYUc3OXndH2FFpDjwsdXd2SZ3X12sxto0A5QbfPVJ1HWB+6WOp9fhcmu5sl0ow8BocW6bEkXk3YDXe2aaATjBnShuDXGgbqyl6vjs1gKYNq9X7K+Mqd3+n6i+41EY4+oxG1tLtj2V3ijg5mjkKQB+NO69KeEbHjgLYJ1mGp6g09Z7xaeBoW5oXQD3I5KUzMpWldYqz2gDk7Zm6CMj0aGeJXUfXOhhf6u5d23lzgK4M2nxzsu5uo3qnL7wTYOVsfK7e7Vo277OArGp3UyJ39jOZzO0il7duttJtlfJ9hWZMzoI6gZrMl+p3dZmjepyle809bzHqcnWTYzJbmY1orVHlu4rTRt3K9SYtn4uW3NvX++gK6oPimupeN5QZd4e6tKzbuepzHbbs/ory3T137racHaxaz3sHoHNETwDoojPo1kKXo3zspes4Xw41AU7XUM2Sa7Rl3DXRVe+aH34sK1PHTEb60l/aXvr/8hrUf5zs/N+Bnf/vsjL7K1mc3uN0jIEaDFfK9CAFcQ7XFHaMHFsb67CA3iIrw2Z0bQ3Q+xnSUg1ApxiuCgAO8GZpfaBBVgYasVhqr5FlsPUlAjuBvrMcYF6oy6HldmajF8tCc77M1mfKbBXH0p4DmFMUtNkzn8hn7nmUcX8reayAPoXbWVz8maK2oGV3LLAeVULzOYD6Ai/+6tn+UMVXWmpnaZ2lTvqzkxERqMGYCMLztrepzxeE2Dn0AGXeho3f1znhac1CD9T+KK1M53SOPUwdv1jaV2MaAjh7oZbFU+1O4B5P85bxDAKZr1q/juCCyLIlR7p6HxOoKYg7pwK33vhbMpB0V5l4L4CbZiJ9AHW+pjsaoPyIr78kHQ8J8hxpA/uOPY/3omHNNTO3TkexR7SSvQjWfkkXHeTY866/vV3FcFVXP5FqgECt11c6s950f780+u2Vas8tai7DuXM6w2UeelMyDr4hmYffktxjv5fCsxxh+0LKwASppC48x7nuP0jRlc1Sdfc7qfU7IE1BR6UjioDurWvkOT6TTHyuhdhAMcs+J0wBbLYwWsGckwg60pZtes9qx1v+RBZxTJfB2JcaX8oKgH0JDH6xMV0ctc9w+0KWW7NlqbNUFrqqZKqpUIYqs6W/PEdqkh5KYZi3vPA8LxEHd4n31k/l2gdvyw8//wfZ94//IPt/9jP57u//Xr7/+T/LkX/+mZz6l38Wzw3vif/XX8ijYwcl9dYlKYnw1c1Ba2ai9JURzEtlorFQFrqrzc/EhmKuIg4MPU6Wq7F5ZGxoQ4osYuOxQFEYzsMltgiwqZxTx8I4tQtmONAc2XppDM4hnIfZofibOWkRrCY8w4nY4D29Lh3hx7HBOiItYOlMsKv23Cp1rIZ475Z6rFqAe9U1fOYM1bnwkcamVntsBKhvw4ZtJ8B5p4I13eRYsmdJncDNMcVW/z3SG3lM+h8c10hdLga3tNsQH1Zw+h+ckEFuDCOOSDdex4z73ifXZDTFWBxzRJO+DBxjG4m7IOMAdTeLn6C9L8Vy+v8RoQLSOdq9FgbJIl3jqmgy80RL60bF/hIbtxcqflPHN1WgM5Ql1bBzN6CTafebfrezz5a6wUidLDFT3a6xzkW2B15g5rH7zCy20z5H4FaDmgEbk9pb/Irdq+2RD1r/doazECQZY0qjFrdZCzcA/NnsX6uRS4XdaFSaMTa3t/to47ovu9v1bcL6s1u1u3Nu0IJ6l4lU5dLSerPNSG+w+eq2/D5qR9XcNrCjxiFOfeWZvuaOgLVJa+KOoOWoWpsZ4Vt3jcszYsGBcid+73lsKPpd0735Mj/qI8uzO0VW/smy9NcjbD/icvt/BZi/KY6JHzh76JodrgdDH5fpoSXnVJ+YkrsFdID5yhAY+mCjrLLkTiDn6qtWEZyC+GCTrmVdjWDpBPEqFcQt9VarOM6MrbkZOoG9REF9nqYyNanq1c4gFcPOE2SKjK0oWpfaruaEyxTdxkqfiIMshwDO8jruk8kt1r+QRYD5HFXShREatEKgpcJ9viBCwXfGWrtS5U42OJ1nSujsdc/k+Gsoy7w7rEXB3VyMHKWPjNd7ERg+XeewUSCL5GMa1syow1yIgvxUlp/OntPhbJjMO/G6rmHtOd4C+74oA7ouq5BtgLGnCVdkMOmaOoMNAvz64q/LAC7qg+w7J9zE91xXBXwnWFJTyDFpDTsjvY8u2171BenH7ZB1Eht4zHL3Oe15DuH5AQA5bUIpgKv22irVN7+UejC1Ft9d0uz3rRrPUGBF1zfOmnPmPPfkB5KH2/yT70v6wd/J892/lLxj76gXOlXvVLwXXdwIEP+95OC1dF7LO/Mx3n+nVN/5Tso8ATr+h7AZuS7t4aelDay9M+aKtAMQ3H30mVwAeqa/jCYBDLgSrmnvn9ngao/K0UBWPcDiCe5qlVoeq330xep4jdxcBhtbAINfogAT5+FUfbaM1hXIWEul9FfmSUt6olTGRUq2/21JunxaIr7fLbc3bZDjv/mF7Py//y/Z/Od/LnvB2K9/8Hvx375FYk8dkpTrZyXr/m0pjw6SxpQYkJtnMlRTqMx8pqNaZlpLZLohRxZasDFtypZZbgrzw7S9M4dzw+QFJBkmjnNxpT4FQFIky804z23GAJP6JrK5+QtVhj76wleGn2PT95IbPz8F9P7H13Tj1hF+ShoDDkmTbrS2StE5jhB+pEy9wWubJuTRj7/4zAYpPPYugJ0CuI/wta0A710mqAVMnII3ugGyKtMMxt5872tp9d0tvWGHZTjmtIrfRrERZPRubyQAPPQgjsdJGcG5xKz5UYA1I2PZumkOPKrhO2Mcx6SVLza8sxm+Mg4g5zKhLDdlJt2EzlBYqroWbH40yZDAnuOrIrnl8ihZbaTFa4qsNiTLSh2FcaYU71KAt2YyOmqWvl5278x+RZhWYgVwlhET0FTBTkC3jnI6upZlgJ6s3u3b3mOFbQT9NTObPC2j64bBPQpHYV2fWzhXiu8vNK/jhoDl9YkmqyyvfCW7vHEddN0ArjPq1pudLJy3swNmzfTq69hHVyB3K9lVYFe/viEg0FtVu7g3CmM2rU3L7Ub9r5sPlt0ZTMORvD8a3cuxc/75RkvA1w5WLblGGiZdkx3NrpmheKdj8rysLrwPlv4XrxXvP26G/meyOPWvsjj+vXNh3LjEzY6MugDorsk+q2435XbXcKsBdWXpxgKWTJ3LAH2zAXTcV0Dvs4y8D+ycLJ3l9q6yNUA3Zfdiw9Ib7bhaXSougs/BYhJltixO58yZnDZTGquMjkA+nY+LJRjOYk2iyRpn5jmYORkQVdNk7OyXU3DFvre6w70SrsKyOS+8fN4AMkVutH0FI8wL1P74FB6Tmc/xNUxX48VHXebC17LS+V5UMY/TOIbKdWadcwQNF2MCOZk5L8wjFsB1pjjNW8uqfE6d4MBuCPij2kMHmKWCwaYFyNDL+7iw++Axbp/dVTOWvtgL0vXwjLQ+OAdGflV7q8MUxLEsH++h78kRpyGNT70Eln5BmVc7y6Whh6X1/rca0lF7faM03N4sjbiQN4G11d3ZLhVXN0n5xY8l58jbknX4bUk/8IbmgJdc+FgKTr0v+Sd+L3lHfieFJ94FkGyQ8itfSOmVTVJ2/UspARsvurRJii5vkULc5pzeIPnnN+H+Fqn23icNgUekKfiYdEScluaA76Ut1IDA+EsAWLKX9EWdkL6IowB0T5lO91N1NwVXc7mhWCH4vLwBkI91A0dPgOmcYJ1ccFTR4xssuCZBQ3YcOPbL7QUyi3NoouoFALdMZrtrZLqzTobriqWvMl8aUxOkLDpEiiL8JdnjgoQe/FZOvfVbOfabX8rdrZsk9uQRSfW6JgVhflL2KFSaUp9KW3qC9Bany1hDsUy2lMlcd53MdVbLfE+tzNSBmdc8w2bihSaFTervxxZNkI4zUq/BjSOPC10DOXO/WIZzOTNIxhOuqs2r+hxkBRq7V1rfpvuo8Q69Emaywwxw4nNr9NsnjRQeYrNEox9mz3O2nD4ANP0pwSaMJkAcJ+R4YdnFT1X8xkQ8gnmLzzfSdPcraWdvHKycvXSCeVvAt5rI1hm0B8fhB+mP/EGd4cZxPHgseFx0Ph6bT87ITyRS5HdNpnG+zmrryVvPbe2bP7up45sEdZbkuWYoBOW4GsB9IfOeLOTdF0dJpCzhf3epHpswHL+likfq98759NUaCt+SZLU2TlarHssyv1YRI6vVceZr7LmD0TsbEzRT3UnhXKcF3z5bItdSeq5h2H0F9rYIoF6m7FnFccryi80mYMCK5XSVrqvXlcWXmteosK5kLf/cudZfL9OlFQB3b90tWlNmb61ZLfAaT3bjFkcBHJ3ixB2PynK79tJ7TBmeS9Xt7gCXOl1qejPWtDaetp62ZpzkxL2pUFDH3+sGdW074O+mkUxnvhHJuVcnE+ZK3M53TtdIvQM/exAsvVi93ekkanrprxXvP9Ie+r8VcfwXWXH8XJbndzodU4GuhbFSAPqgc6ofB7PLSXbuVrivEtBZbuciqCtjN7dOBflmBXNdA2Dx/QB8Lbm7S+1lysrV7pU2sO2lAPNCM6rWkIULMm1eXxgHuIp4gHoCgPypTFPVXhAlk3nhMpkbrsxmERfRxToweWXn8dgEJMuSgnm8AXONOo0yMaf5JtfcDejKDApNljnL7NMA71l1hjNMnOYfxgLWuMapDSxFcGDuE3R8S7UhG4w8pVmM9tC9tI8+nkpgX7d2ZbIWnb/oGDf+guEkd9QFbggMZyTFS3vo7J2P4HYYADeSHiyj6YEy8hJMDRfSATClwbhLOpJGK9Xe2Mvq3T5Mtg8wH4y7YlTFYHXDAP1BsKj+hydMHjo2AD0PTqiRDFer/3fS5AM2dv8bXS00kvHZZhzEPD+T0jPvArjfBsNjitr7OtPMcJZSBrCwfw7AJyMvvbxJPdwrPL6UKq9dYOK7AepfSP7pjyXt8LuSBpZecnWr1PnQT96I5TofnNfktYE4DxlKviMjz311rJD9c447zeeEyDwz0rHRmqKRynN8ptzgxFPt76GpdTQ1oSc+KyeswCw3pGo6l4Pxm4zdbMmUBfoQcGPIBD9sIBf76mW2s0bGGktAhupwzc2WjvyX0pyRJCUxYRJ35bQEHvxO7u/dJbFnjkmGz02pinugwE8wHwQjH6wuAAZkyWRziYxUpss837e3RuY7ynQiY4HnH1jncnUsfhdOUeC8KWLsLjYeJWGyVG4ieqewmeMcNwNXZjKMHzrPlbEXd3SjN5sXio3fbT3WI/j7JzOxYcyNlP4ET+kMP6F99Dow68rrDM/5RKpuYMPkuU0NZahd4Aar5OJGVbhT4FZ14ws9dsVnPpTqa5u0p950Z6s03d6ipkKtd7ZoKEs7NnWdAPVuAPrAg2MyEgMWDnZOJj6W4KHHQeNucS5PYU3i/J3G7z5PvwD8XyyyYsIpDoJ/MrUkPpp1v1QcLg5sbOjlPg8WPss59Gw/jYZdpFAwL0ArLzQY4uZ8qSJWE9cc/NyKQjW8hWBOv/dVm4tOz3dVxtc/1fI8A1x0Lp0s3bJudx9bQd5tD2utW6XflundQLyWxJar4K5xqQroReuLj4ds3jkz0gdNSIvJQLc9fFW7lxuQpxgNLNqI1loMsA5ba9hXWbSGqVDp3mlsYd2ldII6++k6m95p++cN+HnWFU578ca0xrjONa7FqDrXDG2a18xljAWs7aX3lipLV4FcpxnJM1UPE6UqYOg62sfvG2sCqesYd830VjvnRqJI+hQrZOF1RvqPF9B5cBZ+KquObbI46+eaHy92zQwB0HscAHML6LbkPmh752DnbkBfB/bmP1qrA2DqAxTF1ZgeOgVxHaUA8lK9v9RRrkp3tXqlU1xDNgA9TQFdM8uZcV4SKxM54WaMB7fjWWFg6dEGvBte4iKeIgtVyfi+FGVnLL+y16oq9mKTosYyOMGd7HpGw1hCtISufXX1DDcldoL9mupdM8z919i8MnrL8LWX7s4yxxoFoyIrn8AFmuyMF+hxgg+V6skeahjDefPhpOu4NSyc4z1jYKLjNA5J9ZXRNLCzzAgZy4mU0YwgGU65DcC/IT0x56UXF/chLUXjexOYG86Ql2tg5h54HTYEYEfDyQDKJ2DknD/H9zA2tT/aRKf2RZ2U7rDDytA76OuO2071eD+k0ZtdHGXz/1YawNxZnmUsasWVjVJ9fZP20xvubZcazp57bgW4b5bqW3gMAK/03CnVt7+R0mtbpfgSveA/l8LTH0juiQ+k2AOMMOyUtAYdAfvfqYDeHHxcWkNPSEfkWemMvoS/C4w1DRukTPbIo8FaH+vImoMz50zBY0ytGvLcBxDgWOBzpYnJDECEFZjFqqf6ugW8bjY3DMf/BcD8mW4KTapfjix3l2ulaKo+T6aaimSupx7ELEtG6kuktzJP+isLJSfER2IvnZRnt65KsuclKY0JlYYXcdKZ9xJfzwG7r5eZ7gaZai6WmeYima7H5pPjlWwXtRaoDe0C586xyVgBcC9XxWquN8WXSwAh3mcFyMGxSJ6HFMpl35fFUv7Nj/QcnckNxWbvnkbMTuIz4Sat78kVnCc+MohNUHPocd0Y1d3dIw0+2JQB2GneU8aMdd8D0uS/T1k5U/LI2CuvfqF6BrX3vbtDHf4YrFN1BYzdE4z99lYdVWu5t00DWdp8t0lPyF4ZiDwsg1HHdA3HnNF5cyrayc7HsLEikM9l0aYWm+HcYFmg336Wr4K3A/9XC9mMQ2WFhZUpX21FLZU8wNeCZbEYQF2E1wDMGbXK/PRpugCmcXND9X+QClUXsSEnsC8RzDXQJRzM/YGu1cpYnUd3MdSlKdlYt1JE18VycY4BcJtl7u6P//G8eL5l3TZ0ZW323IjlVt32sqqmz7O9dhu5qklr1YZxq0FNuWG+BHYC/bAtbVMkN1C1pmxXcKX1q4rm3CXz5vXe91jrukDOzep1Lr1HZ9OdDHDR0TQbh/pqL360af39rL+7AX8rkHP/jCHTR1ehnvrTFxrDHOtj/0cld35dKwraGljCpmLcNTsIQB+NkqWJw7Iy+3Mlga8B/UdacheK4hy/kuVZFcUxacc1NTDqmuxbcqrta6eZP6fCnUBNL3d36d0N4Cy1D9lSu7vcvgbotdo/X+kEmLeXKJAvdYLhtIGds/fIefNmXCTrM2W+5oU4ak25fbIgWsazQ2QsI1CZ3DhFVAX0+H4uS+yRk41jLdW/1AjTRYJ6dYI4yuNkoTTWZpxHm7lm9rVzgrRMPlccqTGqDlxQ59mXZaJarvEVpyEMxT2T7AfSICbHX/vg+jzH0nIMwK/3x3213M7HFLlNZvrjwgwwJqtMvqZjaDqOlmzmzHl/PO0eXusLIPfRHqmCeE60DKbcl96469LJaEyAMvvlQ88ZWILXAeBH3UEdj86B5eJi/8IbLN5HBuI9tOQ+/PiyDD8hoJ/TrGwVwuGiTIOZnogjGrlJpXt35FFj5/nojD7fRjC/y/nyzaqGrgBoExya2U8HaFTf+hLPb5EmnTOnUO6A9scrbmyTCs+v9PU0mym9sEGKz30kNbd3SXvEGTDyc1LvCwDy2ytNgUekMeiYNGDV+h+R6vuHpQ+APplB858QbIwAAtnBqnLn/alMf2XhZOzTdE7DBX+ODJAJbPi8qRhniMsck+6Sr6rwkKKyJbLkxkxZas6UlY5Cbe842gHEdWDuOO8WOisBzCUy3lwmfeW50luWL/UpTyX4yF6JOHlIEq6fl5aMZOkpy5LekjQZrMyW+d4GWeipE0dXlczWvpQ5vL+DwUPd1H1kiaMxTScpOPLIOF61G+YkREYANm3+ukHjFAaBfKH8kcwXPMDG66y2YtgOWqiMU+Bj2X1ONR1hmhs/kREi3Y89pSn0lNQHHJF6fO4lHtsk7+zHUomNVIPfPmyodkrO6U9wLLZjbdW+ejmYe9Hp90207en3jPkPAD3rh7cl48BvJf/4O3huo/r4t/rtApjv0uQ1grth6EdlOPqkDD48IWNxF2WcCXjPrhs72qdG7DaJDeu8ejxgA02xKf6v6OOgZkDYLDvyAsHKA7TSMprqr5u01eonZkyt7KHmoTt0DDFIrZNn8f/H/0XO5S/SEhZsfQX/42ynMGaVRjRLpQ9kieV4zqjX0ngGTL0hSVz0gafJjAJ4yfrMuY6oFdqMcxuq0lu0LqgjsLOMbgNW9H6nDSyhn3tH9ppFrLMtS1bbsk2vvL9ifZTNbadKVfvweliLAf6atf65jNYb7/bpTtv/btIsc9P7bjG98ynr5W793GW6ywJ6l9kMcKadVYJha24z8or1qwK5fT8V0LXYr9kZdu35W8Efl25a8g2YE8jbDDtn8pyLbnLsv4+3O10kdTOD/a75sXynY9xPlid2mvS1uf/0GtB/nID+v8rS0n+XpdkPnfMTF10zIynOqcF2APq0a6pvRS1fydBHTRKQ2r4OG/ZtGLi5dfJ2sAEg3qhgvsRbKt3ZQ9cxtVIrgqMzXDkuslhgOcxBn2/MATvHRZIXS86Ul8UrC+esOUvs2jMvMLnmNI9ZxgV0qQEA3mhUzmTqBPZ5K4yjAInlTzXroBkJQYEK6nwzR87eO7O457WvHqYsfDrHKNgnVIF+T81hpgHSk/RYV/c3A9ZT2UEK3gT3yawgvSUzZ8mUJXWW1wnenCHnnDnBnf1ymm+MkU1rHx1sG1/T9LGscBl66S99AOV+gPGgsvGbMph0G+uWzp5T+d4H5t354JR0hh9V0RtjNAcSPFWtzuCOIbDzodizMsII0sdnVcBEIB8AaPdjDcSclt7I42oBS7EZy/H06daRNd9d6uNNu1fOqat4Cs/xPgNAWv0PmJGpoB+kAYBefuNLqby2Reo4LsX5ZbBDWo2WX/5Eqm9uVX/xWoB60cVPpQwgU+m5HUzya8k+u0lSj22U51hV949JZyw2Iim+ytI5njWREaCf7yyd/dhuyQ/Xca+5jHtgaZE6z81y7SJH2ACMc6yWaOLXXVzoH8kijv9CpZl2WG7KlOWWHFlqosjyOUA3QxZx/vGcm27IlYnmClx/81QB35KRKCGH90jA3p2SdOOstKbHy2hNngwWpchIebrM0wSpp0oFnY6GdK0ALOL9l9rzZaklUxZ5LtY/07IzXQAZDsSY1KmXN3VErffhKemiJ3rceZnAOcKNChlrf8wJ3XhNsVeu3gX+Wnan131X1DlpCToizQEH8Zniszv+vuSf+QCfO6sm29TEp+beHqnx2SMVNwHqJz6QgrMbNAWv8Phbkn/0Tck9+q7k4TGrLaUA+QKAfM4P70j2928A7N/RyFva+7bf/1ZV7B1B+6QVoN7htxNsfb/0Y+OnLJ0pgAmXAezXwdBvGj93WtQyaQ3/V/xfW+RGmptn/D85cgOVhZOxL7GqxapVJv73OH5YSLe4KBW/rZQ/VD+BlRpOBcTJEh6z3L6IY+0oCgOjBzOvTVLh4yo+35Xqp/geJrVFynLFQ41aXa18BLb+VJPaWIJ3NSaKi6NuFNGxDN9lR9TUyrXEsu6c9TJ6X/E6g++xAS9uf/fugj9i60Y8Z/rOxju+fD38ZMBGuA5U2uCWaiueq3nFra3KgOukFcC5w1VUvW5ZuYK5MZVRgJ/pWbeEJQMftpuEtZ/hFtw1KCMX21837JzmMvV/7GynG5oSy8rNZkVT1/RvLDQueRTRsVc/0bHimu6bVU+ShbFE59L0eVmd/dCK4v7D69G1H1+53R2b+vfimNoGdu7jmh8pdLJ/Pj0071QPd46skaFbQHf30QcNK19dW1S2mzE1Kt05f77Ei2BXmSmxa046++Y0laFLXKmW2+kO5wAzn6t6JrPlCTJd9lSFcDMAb5bb3bezFbhQ16YAwNPNxZq3WEtg5Utabk/RPvp8pRHKLYKBc76cIE5A1+xpMig1lnmiCmSCOTPO2Renup2ubWMEXvYz2d/M9LNM2vTE9YKbQQDyNj1zXNBG9fVeCtIsqysjf35bE9V4cVZxE0VD+t63FdRHnt+VsQz2yYNkkApmsuqnV9ThTZXpCR4K7JqwRaMYqtex+sHKBxOuyhAV73FXVRWvQP6ERh5XZYRfe3JB2beOHz0AoD+9qmNrfQDxrrDD0o9bAnrfgxPSDjbWRqvPoMNqKkL7zyZc0BtubcLtdoD6bo3mbA87Jo2Bh6X27reqoKboquHuTjU5YaIXs7hrNMAFDJF56t60H92sdrBFlz5TE5TCS3h8eQuAfSdA6HtpDjsjXY89sPG5LcOJN/HZ+yibnS58pOJG+gVwyoBgwPIu7XjJ6OZz/LXETlvR6fS7yu60P5uLr3MEjOZCJY9lqTpZHNXPAO5J6k3gaMqQpbZ8mat5KVOVL2S8JleGyzJlsCRdml48luiTB8R/91Z5dv2UtDyPkWEA+WjpcxkvfSaTlS/NWCXOY0d9qsyVPVV7YW4o50qxaWSLh+NqZNrcJHKkERvRBWweF3EOLgKo6FLIPAD2z6deeIKxmvORVRu2YWZzAo1jIVtMWcE4F25quhrnz3sensWm4Jza6ZZik8TWRv2dnVLvu0+asMlqwrEp8wAz99gM8Kav/gfW+Ie+Ap9KOQCd8bhllz6WAlr4nqH6/QOp9WAAz2atzDTc3gIg3yVdAPYu/13SE/yd2r2SpVPZTg93Cvgmkj1l8tlNO4p2Uy1eWS7n/xlFiktV8bJI/Qr9G/A/xXAdWtzSLIcq/wX8HzuKAdwA7OWScO2xLwHgF0sA8gRsCuEA8EuV0XifSC3RO/C/ulwNYMfG3dlAYH+im4CVWqzqWGM8o2X4J2Y1xGMlaPyqszHZepU/N+NuXSZ4Re93mN66aDxq4bpqnQY1LUZRr6p6gh2Zea8Vzg1YtXiffayjaVV27M2W8AfNohBNR8eGrckLwXK00VrAtq4B+rqda/taDrrTRqvqmnTPnL8idHMv9vEtcGMnqn19I8QzmwmWz9XLnil13fZvxQaFQC5tmbrWyu297k0JQ2faVmSqd9o1N94ojoloWZk7LCao5b+Yyu5rlfuP0FQGgL7i+Ce1fJ2fCHXNj1c6VeE+6KCHOxZOpG6cdO26DLjb8bXh5jU1+8paib1RwXy5i8YxBG+bfW77jYsE9I5KLbmTLTGIZa4qRWZKExTQ2TefIzsDi3avebB2B8EbjGu5NQ+Anq6zyBTEkZWpop0XVV4wyh/jAmqY+ZzGojJJLdiI3EoeqXiJY08zAIkJ67M9mQmm/PKW5pKPM2giw7BztXK18+a8P0nTD4atUM0OVkgQZ198xPqxMxJVwdv2fVkSNqzfsHf2utkrH8+PBngFyXAywJ12mS99ZAiMezjlDt7Hy6jhwYSG4q8poHMcTRXsKXdULEWAHoq7omV99syH6SL31LD0wSecNWfWuIe+l75HNBh69Dll60McSQLgd4OBtTJxKwQsPeigtAPYm723Y23V21Z/MPPAA9Iaegyg4Q4B+Qog/w2Y+XYD6AH7pRG39VxMZbuzy8xIe30l1Tc2Afy/kpq730hTADPajymTp/943d3d0hZ5QfoTb2uVgr8nNzDDz72x2YrHJitSy/BTaT4qslogs+OIYJ5hfgs5fjLP8BJsuBY5jkjg4DHmPDc93otwnLEpJFMnY1+uf6naDAfOl1km9JWCgRc/k+HiFBkoTJHaJ6Hy4NheCfx2iyRexMbl0X3pojd7Vgxey5FJbA5rX2pw0FJzNs6jJzJb+FA3mPNVT2WGhji0GcY5tVj3Ukv/8wRogByBiq6DfM0C+/6cyMBrCeAEqnmcl0ybY/qfWt8ylyA3AhvDu0YYmOaLjdxVBXY6/DX4fic1N74EqG+U4gsfS8X1rdLkf1BKPb6Sootg7zhOHGGrvPopAP0LacSxqPfcItUemzQ1r+4Ojs11gPuFDVLDsrvXZl11ntgkXN8orb47tezeE7xXBiK+l7HY0zKB84wbkVHcjrHKkHhNxhnrG++hTnCcKWcuOnUlLL8vqkAwzlTAcu9rWX2xyGzI1JsfGyJ+RsrQK6LVXIYVCzVxKqSJEN6DZfaqJ6pwZ998mUr3SgB5LUfaXihz11S22qdGCU/RHMDdRabenAQAT7KxrMkm7IWrxYI6AdwN7Bxl631FJOdeZNua3GYiWLWH3meU7GvCsj6bMa6uc+u+8E7NR7fWseytq91spQlJ4Yz8qC2DU7k+ZQVvE1b1/moIy6Qtw7P0ztfxsVtMp/30KsP8OW+uZf3a/xegV///mMsUrVUt1GBG41PTTQ+9k3nyxeJ0CwBHG1ZkonPaNTvUKIuTMRbQf/1K//w1oP/IQH2doS9Ofe2cH/d3zYyUuqaHhsHQHc6pQadzYgAnW6+ZRdfVo4BOZfvyoO2Vcw0368z5Ko1kqGjvLFc2TmBn9vkSQV1755xBr1Jgpxsce+YUMjHbfB636seuxhvxytQWa1/gIpql+eiLAHQHLqiLDelrpXb2zdmzpEscwXwJFwGdDefFhIp2sjte5HmRrXhqGJRmn7NvHmRsWhlxmrlu8crnuQmYwmumcoJkIsOI3JRhUfBGMKcZDANV3ICOxQuaRq6y14734wibuselAtSZjZ0ZIhN5D7X8OMbeIvur6YEyxF54ym2tDlAYpe+nYS0eKnwbSqSQ7p4MJd9Sv2yN1ATTH2X5E4sz20xoGwKoUxXPjcMgvq8/5qz0Rx3X3jl9uIewhgH6fNwacFA6gg9Jd9gh6Qw+oPaeHUH7NZyjI4TxrKekPfyU5qm3+u9X69eWe7ukgaYzakyyRxrv7dCxtzZ/3PferYDNzUGz7x5pBetv8N2rs+18nn7jnWF431AT8dr16DI2Mv4yTJOZZ/g8X/rqDH1T0HHpjvWQsTR/tT6dywszK9+Euagtqpr1AOiZa58fDnCIlcWaZDPGVmwAhRqLeWXP9CV4rqx6Bux/qiBGpiqeSX/2IxnIeSIDufFSEnZHHp3cJwnnv5csr1NS7H9ZmuP8pCMZm6/CJzLF0cnyRJyTSXivFP1ZOj2Bnz2H845BQDNZ/thk+Gl/nL/rNANL0rxNewBrOuM+zqcI/L231FxojAp2/A0MZSGQcTJjtjQO5wZ+JiNSk25Lg88eLYm34Th1hJ9UU5lmHItG753S7LNL2yWcJW+hQA7svejsBim5sFGqb30tDd7f6caq4c4WbLq2G6e/G9Q6fKFGMw23tkjtjc8B5Juk+fZmab6H4+rztSrfOwO/k66gvQrqo9gATiZclmmcm1MaFnNH2xyT3PhyBJPVq1QfHcGb44geNsBLzLIvi1FxqlZa8D9HRr5UHKFZ6BS7UQQ5X/xIWfhyGRh45SOw7cfaSnFQUEidiyYZ+ukomwJ7DRh8LfPSCepg69jYM8BF1e81pj/vrIk15Xd1nksyCvhWkyjmNqxRMO+zgrl+Wyrvt6r4gQqrCDegzjE0qr51NrvXvkbB0RrN6HhcsVWNW0tZPq8CNWPwogx6wJaymfg2WLVeKid4U/zmLsG7+99j1gluqsuy9M51lq4pbi1rqnZl5u5ENS232zx2LcnbUJY+O06Hv0NZekeuCCsPrEDwM2nPMPPo7mqEmUNfcY00zuJ3aHfNDCU7l6Yumjn018lrP2JAn/4PmrK2NL1RFiY8XHOjqa6Z4U7X1OA0g1kA6uKc6BPneK+sjvVgdcrqSJvOob+qaF9n6fWm1K4RqVW69HEPQbwSq8KU2pl9zjG1+lQwneeqEp5nibSavfBkvXWA7bAHShZPv26yI1NyxwLI0zzGUZ1kbV2f4EL+RBkAe5RUtc9ylIZldy7Osat5TJAZQWN/nPaaNjyFwjg6wk3Rmz3Tz3izg2WrgI1jaVS02yxzepATfNlvJ2tnaZ5sXMfbAD5T2nsH6GQHqTCKwreJjCAZzwqWEVysR1L9sQJ0LG1UbV/vAbCxQeAY2tNLdkTtsvQ/vQoWf0OGAPYMXyHAc3xrmOX1RDpwsfR+0ZTcmTWO9xtJ8VZg7I44ivWDdIcekr4Hx5Wd94Glt4czqY1z6Yf0a52Be6X9/i5dXQB2Fc6x1MsYVgXzvQDkPRqrSRbeyBQugjuYIpO+mgAsjODsCDwIRv+9tIYckw7GpUZwVO4HfO9+afLbL93YIHQ/OCl9sfhdycrBxsnOB5K8sGHxUjtTOtM1h+J1T25K5+PrKvibzQsHaEdoxCo/9+HEG/gsPBUcp2kupOEuBNcI9X9fpBiyDJu6slgjNKMLHbUYnJTAmil6LCNZD2QwO1r6M2OkJ+uJpHmdlfjzh+XFteOS53NRKkI8pOWJj7TG3pWRzAcyloP3r0yRyYJYmc5/aEv5AHhsFlhe54bRwXMOGz+ybp57TB+bxcZuOpXVGvq4h6gwbDKL552/5sEzhIWbAnXD42hlUYxuclgVqQFAVxCAr3+mgNwe9L30PcQGLfYKAP4HHIfv1JqXkws94cfUnpfHSG1ewcTpGsdNFoNVmrEBaPSmG+BXUnnlU2nALTUTLd48dt9I850vAejbNB+dlZuesO+lP+IIAH2f9Ibul+Ho4zp/zlI7N6t07uOkwSQ2lhy7Y9TtJKspNAjKCZU5fN0BEHfgGGiiHqts+NsXGT4Dpr5cEqXiNo7x0fZ2qSpBVrAR52gfe+qrdXhcFw+Qj9Fe+nyev5beydhX6pO03K7grsCeZqxLCeAsv2Nj4KyNNfPpGjqSbMJHmpL1OZbi9T5BvtOMsqnZDHvgDHJRz/divS9ut7c+03N2ap+ZLNYdmVpmytMsqbP0zZI209noDU/wH7bl7uHaV8rkAPShWqsiN/PimoFOUJ9ssap3q1xXBt+lX1PPd9zXEbdxm7rGTYD2zevXwNyAe/1aNcAo8ivNhkOrCSVmVI3snL1z3ewwACfVGulYtzitWpRplKpzrHnQNdVb6HSM+svyLOfQf/LaLe5HK4ob+XeyOPNfZXH8DVmYPOBcmIh0zY9WAtSHXWTpkwNO5yQAfRKADlDX0jvV7iOtfzSupiy9v2HNp32l28ak0rO9uxKrWsVwi62mzO5oIpinK9vmuBGV7by/2GQY+CKV6wriefqcgnnLOqAvNWaorSuZDX29HVUUwcXY2XNzUTUOb+HqFqdlUWaeq0I9QIFYM8w5W669cR/teZNRqwgu3fTQVQyX4WPK7NY8hilpfH5aS4QRdr49RM1OqIKfxkWa4i4FcrAXzs2PgZWPgnWOvPQD+wzA8lOV81iqt7K1kaQbKpgbeXZTXeSGtdduZtNHyNoJ5mBK7JOPPWNuOsfXDPiPPLsNILgvA3FXAYw/SDtnzi2gc2yNdq89D88DKI6DJR8DuB5Ts5levK6beekh+6QPF3Aq67sfnJbuh+fwfRcAIgBpP4CC9w6A8rcAkP0A7f0qlGOYB21hqzxZhv8WgPK9tAT9YH5GxCnpwfuYJLADyvjZAx586qF56GTfBHVWHnqfXMHm4bx0YqNBUG8JOCjdjy6psQ6T8yhgpBd494NTeP/DGkDSjvcfenbXAgg2bQUPTUQuvfxZnq9M1A3hRGaIuq5NZ+P4lDwGuIOVPw/ECpKRggTpy3osbclhkuF5SmKPfSuxJ/ZI2o1TUh58RWofeALQ70n/ixAZyY6SqRJOXTyW4ed+ytQdtak4ztEqaKNFK9X1i2SmzAmgn3uxKcPPMJyF5kM41nPaZ47V4CDOl/fGXNZwmtEXPjqiyKxzfiY92JDV3dut6WcNd820QXvwYenA6gTY9z08rzPpFB+2+R/QlLUujiPi+DTc2QHg3qHTCZw558aLrJ6GQkzZa8LXaz02gpV/Ia1g5O339xjnOH98HZs7AnpvODYPEYdl8AGOW+g+6Q8/JMOPTslEwhWZBkNnC4FOfbMAbrJ1msjMMNs9k5vaKGxqI3VKgfkHxk2R46MRpoLCUT18NtS4LHKcTUv0SVgJAPBYsPWHskxgBxNnQMtq80uA/WNZJpMHe1+hOK7hmfbZV6iYr34qq00v1d/f2fTSRK7Wx2kim0loM1GrDHkxpfdks9gjb7UA1g2w7itcjz8lc6dwrs/tFW8ZLtkt08oUtLmKbVyrFcINu8vbFSYMRr9mR9yG3eI4rgbj6+5m1WTcLKkzbY1APfrK+JmCPYCc4jg1miGgt4twpExjVevse9asl9jdj18BdDWLcTvA2bx4obK91TJ0Lh0BtDP7nBjQagRZev2ka7yj0TUzmOh0TIClz7/9qjDuNZL+2Pro84xOnfpbsPRPnIsTV13z4y9c8yOtAHXD0if7laW7JnoA5nZ8bcT00Y2i3SwF8A4CeI0B975aZeqLFBPR2rXV9tGbGb6Srdau7GsS0JcayLrB2uvTwNif4TXZsqBl9lyAeY6W3RepVAbQLzekGTAHM+cs8lLlYw3E0MxsBfQIDcWgpStFS7NqFWssXtUBjmEpnGvONUx9AuCuTPzFbVXuTrnvZxIMbJ89m9nn1lwGLEVnidUWNhzszyStKSPHayaxUeDoG0Vyk2DlozmRMsxAEoALBW0siY+wX69+7v66uRinxzvAYVzHtwL1/Qj2utFIvWdMadwBGAD/4adXVE0/DrY3mHJHugDcnQRoAHkXwLrrAcNYGLt6WbrA6tojz+jXesJ/UIMZ9epmyAZBP+qMiuw6I8Gqwcq7wPjawfiYic10NS6GfzAatR5Aw1567d2dUs1e7fWtOspWSzc4vwPSBnDpjTyppfVm/326CeiPuQhmjd8/NRCA6KvjagyboeiLbnFU7I8B4MeTb6kxDsF+svCRTAIYRpI81XOcJWS2BqjM74vB356GjVkuADUrTL93Npd2u+EymHQXzz8AmAfL0NMb+DoYYUOWTBfGSc/jW1J7H59Dgh8APV7ak8OlMvSmpF75QaIP7ZJ7WzbI06O7Jc/ruDQ8xGvDb0jHU4Bt5kMZzX0k41jUQAy/DMF5lYBNW4SMPsfPzo/EscZGMD0QG5B4EwqEjSRBfoGxvLhPkKdroaP0sUn8w0ZlJhu/bxxDa85Jexg+s7Dj0v/oohHD4Xh1MEve3wBxT9Q5HJeTulFihYSfL1crM+zBvjsD9kknQLvNdydAerfU39mmATv62QHEGanahQ1abzDAP2g/XrMDr8fC+3fi+e6wI/h894GdH5S+UKwwgjqA/OFRGY46pox9KPqkjGNTOYXzmqxcgVr99mn16q1ucGyHqN4BzHuef6taJUcZgSrH9sooeEvS+Xs65s2zv64boSeqh6HancC+VP1EHR+ZtudsyVSV+yo27dpXb0gCM8eqTzCjcPWJsgp2udKcIastGZoixnE2NaBpTbWz6dmqetdUNZaXW1ONnaxayWa/Mp9esG79ShbeXbDu065K8VKdS1fG645aHXIDqR0h0+fcanQD8tJvevNO7Xc3Wse3eqsoByhPWPDWEbW2dYtY9stZaqcNrHWOowmNlt7Xwljs5sA9Lmf76tqv17ZAlRm1o5Cvt8y0Dxgba/3cTUDLC5u4lm4+L/s5CN3ixhrmsdHod0310C0uGCz9a1lZ+Olrc5kfrdJ9/N/bgJafy+LsNzI/GeyaGS11zY4OAtSXXOylj4Olj3YoM3eOGKX7ylCjZeZmRG2Js+Zc/e7c8xpZUZU7rV3ztcy+6DaRYSkd4K1snEBNFt6YCcBO0zI7RXRLbTQH4WgQQJ1jQg0vTTCHNZRZqk0ygRelj9SkQ81I3OYxHFFjLGVRlDJnmsKY8bRAw6KxdOSMmeRYE1pmvy9TZOdpxrLVmMR4G+Dl+BozzHnhygfzKgjV92J5fhK3s3mRZj4dr5l4cctYeJKpFD3B9wbasTYa0dzX9yX7n9Syvhl7Yyl2Iouz7AB1Ajz77qwYMIXNAvkY/d0Tr6ldrLL2tPtgs2elLQQXeFyAuxmaAcDrBTB3PzgBBnhROh5eUMbXE2FYeU/kUel9cNSo3WMvaejHYLyn9EVfkN6os7iwHwWL+0oabR52LVXtAAQCKtXsLOXW0VjG6yup9OTXdqrKugFg387ee9gJbAzOSheAqTfWA+97XnvotXd3SNn1LVJ+E4wz/LR0x15VQxl1Qsvk8YrE33oP4HxbKw4UAnLWvj14vybPTdFaNMFDBh6d0wQ5Wo2OP8Pnw9E/bJKG8Tc0BeJvjL8t00zjS2OyXRCOU7SMZD3Cpsdfep54SXect/SnhEnvi0hpir4rxb6XJeHodxLw5Qa58NtfSOjOjZJ17YhUhdyQllg/aY/z19eO5DwBqMcZZp8SghUkE2DsU3j/0fRgDZcxOgf8PtkspzO1L8T0kbGpNBvMUGWk1HioIxqz04se6WhiW+APUuHxuTJyahI4tTDJ6s4LbxynKzpt0Bp0SJqDsSGLOo9jCGBnT/0+Nl5g8p0Be6QPm7VO/90aqNJ8d6vUeG6SWqw2v2+17E4dRCez04MOyGD0WRnAhm8g8gjA+yDYOLUWx3R8rSvwOwXzwYc/yNDD4zL6+IyMx19UQdzY00vaO2fC2pT6tvub6RFsdClUnE4Dg8+4Yx4XRZkR0hL6AzzW/1VWLvT/lM/THQ736fK3TGV7TbxmMtA+d7k2QX3cKYBztuaYWM/WTE1Po2f/StNzZe8EZRW+KTNPNI/5utZsgHuqAXV+rdUAN1PcyELpLLfa/Ew949fKzTSoUeV7tumXa2a6jVvtKVyLXGVfneV3Jrqtgu06+8vWRWdDbmU5QJrldnWI49hY9bqgbtj0uFXApl+vMQ5vnFPXvrm1fFUWbufK3Wp3Vby7rWDd+eiNazPqrldiW8WK5dY2GAR1AjrnzNk26MwxLB0bJo2u5Uy/Jt6lm41MvwbdOGWkYUXG2qbxc9td0wOpytKXFji+9levx9d+rG5xc4xQZS999hPnwuRN19xounNutJvja66JAacLgL462v7/LbMPGPDWVLV+o3BfsYlqSxqXWi6LnSbnnGBuGHqe6Ys359r+ONh4A8E8HcCdpeC/pPPqhfp6qosZZrHcnCnLTWlmTK0mSdXt7NMtlkVr/Kl6rqvPepiyIIqVyMxnsgNNSZwiuNxAc3HFmqRQiRchFcIFKhs3iWo+xpedpXYCOZ9j4ATH36yXu1HPE4jADAtMj1eNZl7eUTCeAsNkGtw4TXFUGEeB3D0z9qZgft+o5gHgE1lByu5ZKaBRDcfhOEKninkL6GOcbWepXc1kKJryAmCfV1vXngiCNMAs6gQA7ywYMQAcLK8TrK476jS+dkL62L9+cApgeFYGH18AAF5XdsgxuR6Cb8wlHXPTkBawO5ZgmX9Ow5iyi59oLCpH1uqw6EBW570bIH5QKjx3SClYOqNTm/0B6qEnpBVsk45wrQCfhru7wOjNSFv5tc1Sffc7aQo9Lf0Jd7RiMZh8R8vYFIENJ1N4GKTPjz03ZWi66M0CCKcyWd71U+vUGU4epOE1Kd5qMzqSeEvL/EPP8PllP5CxNNrJBstoapA0hl6SppAr0psIQE8MkM44P+lOCpWu5DCpCb0h1ZHeEn98j/hs+kBO/eqfJHjbJ5Jyap/k3zol1aG3AOr+0hLjJ62P/aU/NRorCu8VIL0J3jKcFi6T+bHYWIXg8/aQHmyKaJRD3/1BbJSmaWv7/C42fiEqEuN5OIFN3XQ6y9HBOmLH8jsNk7ixavZmXOl2gOpecxyZrIfNWG/0ORmKNZ78zDtndCo1CtQrtAYcwubra5026MVz3WE/SE8o3f/wOp/dUnPtU2m49aV0sF3i+410Y9Olr4kwgSv9APEBCifDv5dhbPKGmdKHxzqDTkYedwEgDjB/cl6NZSaf4e/CuUyfdo6rcU3zmOQEqef+HLMPcnxknoErdhbdoYJV+u4nmVAWRhZr/zxO/QZYyeAGZ7nmqRldq09RsyidQa8BC2dkbpN5vFyXpF9fWxTFkbETzLGY7e1kmR4bAZbhVxtSlMlrjx2gtcrV/NwK5V5Y9XvqmuPc2jib9pLt3LmmrxWadDYFdQB6r5lR15jW9hxZVTc5vKa31EalmrhUA+h2FpyMebhm3fDFitpcbpMYt+0rGTqBe6LNfD9ZOEvy09YOds3fvVXn19WwZqR+vcSugF69PpPODYQmrlXg7+HoGl3xsFlpz1WG7mxJN9UKfJYujvk1vzRjbGT0WkGodwLQHTLZPeyaHSgXBz3dZ3calv46H/1HOr428x9laeYvwM7/oAYzc6PJztmRVufU4Kxzot/pHOtSVv7qiBrNYzTrnOYxvD9olO7LvWDnPbVg5lYARzAn2+bqKDHgTmCn13Yr7jflaQmeXu6LLK/TtpMmNAB2gj575wTzJfbOG56bkqYVwjH5bN7OlLsjUenWRfXxlCrVA1Xsxkxzgvsk+345DFQJUOe4ObVzDTEe7VSvM1gFAKpucbhYURxHlzi3yxw3A1M0qsnnz4zQsr2K516aTPOp3HCdqZ/A7US6BWiAPIGZs+tT7MHz9ek+CuCTrBRkBpjNBZ3mOP+e4Z5dpyGNmW/nSNNkToSMURWv/u2X1TVuAKDOi/9Q3CWA2y0ZeHpDI1e7wcB6Hp4GIz8u3TYOkxawOu729AqY8xkFIPZxWfLtpAAugGX2Heoa1nhvm9Te2iqV1z6Tas8vAeRfScW1zxXgq27gsfceKbu2VcqufCk1d3dLvc8eFXM1+h/SdLXKm9vVIrYJzzf57TPletyvvrdXmsLPg6Wfk/aoC9IVc0V75h0R+H3ibihz5+8/nHxXhlJ8ZDQzVMvqNJ8ZTgboJ93R2XUC/gj+Xpbzx/hcopeOAjKadfg5PsecKBlIvi8tD25I1xNfGUp7KC0P70lt8A2w7mCA+U3Jv31WqiLvSfLZg+K7+SO59NZvJGDLBkk89p3keZ6QMr+L0hjtI214fTNuBzJilKmP5z8BO4+TyYJ4U4bHJmIg/pZmzI8l3ZRpHE81EEq6LhO4ZYuEXv4OMFaK/EbwHPPpx57xHPPH7xqm7QK2F7rAsjvCD+txGld9xV01pmkBy6ZVL4WNBHgKEOvxudbd+07Fb6ycUO3eDvbdE35UxXLUQNTf+gqg/hlut+E99kpnkBHRdeM1NJLpvP8NNgpH1/z+B3FecBKCNq8jmrhmgTzxqkwmXVPr15mXd1XBP82JD7aCeH7i+an/h733+q38zrMDX/ZhYRjGwlgs/LAwDGNhGMbCMBbGYh4MY2EYhmEYhg30jmdnpsczPd093RqpW1KrpVappVKoklQ5qTIrsFjMxWImiznnnHMOlzcnZvLys+ec7++y5N0/oPVQDz/cS/Im3nQ+5/M5n3NQnDKeWK10gnkXChnawVI7wNm5fCQaBe78PFJToM8tHf4A7gcynMnXsa/QHQDzWLm3c07GXq52PGfqR0NFKJLyZKvLeToz1bnGdjJV5Rg3QFupbfi+INsXqOM44pqbVtuq3RobWTzPoxCgQ5wY/HKrCyxZaT8VuZGx6lRiuF43Z2c8K4VwAnYw9kUGnXRoTm1qhU86AdzWuAfow1K4O5Gc81tPSRg3+T0b13Qa25xa8CkK38iyo/OnineLLjuvd7XnGe4y/9p05pSZj7rd94CXw841NHYHOPdfpiK/262qsZsh/UGN55PPdb9qt8q22ObW88juQ3M0GYufxDfmTnaDeLFiZ+xo/9+b7f2jN233H2TbPf73Bej7if/EmLyTnVA5QH0GgB4/Dq8dHXvt9v+fsh2s/IDz8nTCGu1fNyfVfpeJzCINZFxEKkHaOcb1neagK6hlDsdMpwf4PV4SW7dj6rNtUrRLCMdVpOEymcwI0DmXpDhHaWjPnVCH51H1E2yT3v45T8XOAcryayfTVuiK59PemiEFe7jmukW9VmJcLXendidz56w97jH7GBgX59wUysnWtfqKgDneU2SJwQqLqP16w7l+MTVMqz63cZt33ZocC4sG5/vuZvuZYnEqNNh2r/tO/u/ca+cKWxBsNNqeC+b5AGz0ovkJygT0Iufdznk6983Xiy8DHL+x9UIq378RELDFTkBnm5q3R4vYlexPbTnnrObXXEtL76LPZ/xK4S1zdIqTa9zbWjvj6tTYNYA441av/NimaOf64AObzfithFnjt9+yGZwfv/uuDdES9tpPbRjHNBg8GTttYGeffCxnM1qWjt15Tzaw008+lWGNcr6fndEMvv/KT22FRUb+eVvJ/UqnS9lnncgv53NbxuUotuOsmaBHFsz88Ljc5u6A8QPoG1BMtb+wcHeFhTpKLNheYqtV2Tabe9cmM2/YdN5dG39+3Uae4si6ZR23ztmjv/4xQP3/scy/+bHVfvWh9dw9Z2NZV22p4pktlWXZRkORBburLdxfZ5vNRRbprbFYf5Vt1mZapLvUYp0vZNUqBTteR1oPMx6VBjMs1IIAw0gdijXmnHd6M/7SS7J4jTKngBkFbTlSiW8UX7Tpe+8AkAHgeC7YPaHCff7phzLt4S46X4PR796xgas/l5f+0JWfqNAiU6chEFv3k7d+KYHc2OX/ZlP0CbhJtfxHis/laEZOgUxde/SOCr/Nom9s8elvBPbrBV9pHTKG92KcbodVVyyG03jdLZnJJFmYeu9rut/x88OtC4I6BW7aNKF4Dox9H59Brq0RgA9GK+1wvtN2h4ttp/2RDGj4eaS2YB+f6YOBAjvopx9+sXbOD6br1HongPP3soElqNNhjsDfk22HfTlafzsafmEppbThELDXuDn7eJkzpAEDZU49CwayeoH3YotsY11iW52bKaeV3lrhanfMnO11MnfOnwGMKe2reyEsm262fgygPFrqwuXaHOinPdf9E6dge8qg/S7a9ZiXSXuwB9LBLZ7KPeiFr6S93U9X2NxxzJ9pPkO2Hpn/3nWn3XUDr4V4p/e9gSKEzJuucHycc812PNPghIUcXUxUeG57Nc4Cl654/P8ABSeRxb2T+PoGAB1fxpEL34tS/XtvVth+iAYzB9v/nMI4241eAaDXgaEvpKJryVRw8cg5xS04xziurRG8PWMZCuLSHu6KTpUYrlexqIdMVFvqFZC7034BPNPVtLrmZaFTOHe46ObthwJ5D+AB6Eczzhlud9QFttC0gi1MrqRRgLM/UOh5tQPAB0ssQeMYZpwrtOOR1LYJgflTKdLp2x4TI3eiM869FbbS9J3Yccxre5Ndy1iGJjMEcPm035aNK21duYMeqr+rOSpDY4KNYNt4DEpha3DucFEGirQ4Jb1W4bijrtn9Xd0eRXRi6E1OHKcuAUEct08XunATbzMH57/TbroP7GnDS1HzEciLL9hGySWwWiaxfas2Lf/GGbmbmX+itDYGuqzm/l7WsQvPPgKjvCxFOd3eqIAmeFMIt/QEv3v4a/zuHVm/ztz/lWa7XImavocvf6675X2l1Sky+ombP1HS19jtv7Wh6z+3oat/LdcyJrBNPPhQISxLAOYxsvObvwTI/1pgNH77bYWNELCWAdRsJdNKdj4T4P6Uee2/wWP/0u3Ecz+e8a/cX3/2WxQlF7R/Hwf4cZd5h5G6eA5XCq+Y79Uj8zfh9egss2h/jQXaSs3XVGRTz27YbP59W331wpYrc2yp5CkA+zvrvX/RWm98Ydnv/o09fetn9vLjX1n7jXPWh9+Pg70vlGbZWl0xTp/Zej3NZl7ackUWfgYgt5cCzMvB2Ist2Fqo+2YymvNix3uuu0CJcusvL+O4oIJr7eUlrRZult+ymcxPUeh8pKQ8Bpls4u+BSoBn7X3zl12THmHm4W+k7p9BAaWxyIvz6nT00xWOYI7nuvPzP7aWM/9FEaqdZ/+LDVz4E+Wfj135b6cjk+ELP5ZQbvTaX+K14wbE77WiyGKPwkiy+vXCr/RYVvM+lcByLedTsG92l+5ols9EvO0WADAFonj/JvG52cPnjiY6zEDfpj6FO+ooYPboKcFgJP6+5Z4CWmigQ58Irpcy4pYdN9rGckymlD3ZMhdp9ZTiOOWhs3W+0CFh3OE42fpLgY5a7PRz5+y9H98BzFIHqB8P5NnxEAAb4M4WstrsY7SEBQufa5ZgTmx/xInr1GrmfjoAne14MVOC+opb3XJ2r94MfanNA/w2L33N2yffcjPq1CbY99qA2trHjCWlolzsfNLN1Le8FrgvbQn7PeFb2OWdi7FL8DbtCd68+XcazAnecc9sRuEta46tR71UNgrrlI8+6aWuTbxWvKeLD87QCeoU9+E5OaGYcKYO/3+NCh9643N0YdoCaPO83SdTJ+HFA4uvB0+Sga7UbuS2HW7/hdnhv3izk/5DnKEble67f5SSwUzoEV+0k/jWxnF4dS8VWk6lQqgI5Ri37Ani0qEsXuud7XYw8yOy9TUAumcow7U1BmQcyGjmdbt977Tl3qm2vEJbmI0+7wH5PNj5HJ25Gk8NZLhzvk+LTYaueMpZ+kcnurItwi8ZOoUxM50AzrZ4a4bYedIDdnm6M8yj6a6MYWgWE2fbWzNuHPThpvBN2dQP1WJPgk3xC5oq9JA3y6a6PFiLAqA9x8JUVjMZrRrXb3mi2+WuelSrbU5NL4bvATmFWmToWnHjbJjMXmt091yLXY+LvuYP1WLnfJWmM8w552rbZgkB+8tTQPeV0ffdOchtFp1zK2oFZ20t/6xc5gJKZ7sIcDwj61cCI9fEFqhCZ4uWa2CP38fxnq2wTQtAJ7jPgblx9WmS6vb7v5LP+1LWGcWf0rWM6nVlqeP3dI0bBwMksHef/1MbuPLXYONgkWDvK/lfKwN9kSY1zz4RG2cWOr3KuVO99JzsGwfX1sBAubpG4xQq9CN1DwAoN20954xAnZnpMTwvSWaEc6e894XbYujKkSHLVvUDC7UXgj2/smBXlZi0r7HIlosf29jDi7ZY9tzWG8ttAaczBQ9t6OkN677zjdV+c8ZennnPCj5816q//swGnn5n3be/saGMqzaNy80VP7cVFAKr1bnmay0DW39pazV5OC00f1uRhQHqIYC6rxrFRPV9CzECF0CoDQQUTuyYTN55G//nZ1oJpGiQe/4zTz+1rnM/RmH1oW0C6NcKzisW11d6ReMFmu/MZv7epjN+a6M337L+C3+l+fksiqlxsPP+iz91lq8XfyxTmY6z/7f1ALxHLzFN7Weewv1nMgDi77iHPvndzwTyk3dRtD116XtLT94DqLs2/SKKPRWFXHfM/dR8hefEvJmLHnnFZLS7YN50wXsmYN9hQE7THbn1MXFnnRz5AACAAElEQVSNKvc4V9jwWZMrY2+BVPDbKKDpmkfjGGpeNDtnB26uTSI4ieMY6iKr3CJ9zrV3DmDnrDy10G7H861g2TUylqHQ7VCRqvg7GDgjVukBf9THxLscz2Sm2M3IxTzZZn9lx7P1uI1Xspjl9VIS13mzdM7WuebGeTpny5yhi6m3enP1JqcOlzK82and06tpdIjb8ubjW2MA8wE7BmimNj02zthTtt8DrhWvufaW13pPJ6WdgvqUWcjtmGv2zUOJbQuvBXMxB+wprbOtn4K9EtvCM64wSCetaZ7vCgOTOG9QIK2ZPwNnuEVAvQFb73wOWNjM1gLQPUtYCum2JmQFi/uPWnJrKLUXfqI5+qF20v/nN+trPyxA/7tO5R77d7YX+93JbqT4JOGfSEV94ePI+tFxeC2VCnumMh6Yq8VOIJd3+5Ta7IcbAPLVUTviscY99CHnGEewXuoReO/NOyBnq50/7zBpjX7us5yzd6jVToX74Vybm5unw1e4b95XqF1zMnJaTIoBdGYLSAnmdItTS53t9E7nFLfjZaDLBrY9U8w4KNX4DbW2ZQ7Dg4pyzq8pjKPRR9trwCXYunCVa1Krxzg/Z2u9+bFtlV+0AECY4qZTpTwBXDvs92Q4k8AXHbsF3E1nmIXW51AkxFq9uT5X1dSad8K5CJhnrCMPRcRDl4deckH3Q5MZf+m3zuaVvyu7KlEZbWFp+8r4VCaxOfOWWyoEfEXfAAjPai1pEcA9/+QDW8j6VGC+nP2ZVtSW8KVOl7gZhrQomIX2rn8tIRvBfB7sefk5mH7pNSmsFzLeV0DIyLW/0krU9J2/tZnvfi470uEbf6P5+gxAarUIIMUjDwABJr5RfNVWCy+And6wjZKrErItZJ01f/lN52EPMKOAL1B2SUI4jiHoqsYsbjrj0bp3u8Pbce4utO2hShzVluih53+RxbpLLNYPMG8vs6Wyx7ZalWv+lnIB8XwRfq4rsqWqPJvMuatW+2ThIxt4csMaLn5qdZe+tLrLX1vzrcs2mHXfeu5etIH7l2zu5TNbKM+1xYo822wqs622SvN3VNpWZxWKhkoLtJdYkN2A7jJL9JWq7c5d+3DtXYWs7OF9Esf7hKMRmsNQiEgVP9vbq3guR8Cy+7/+c5sDUK/mfoHXFs9RwdcC/OW88zZ6D8/1vQ9s+NrPrQegTRZOkeHw1Z9pZXDo2k9RTKH4AnAPX/wzZdT3o6gap01vuvPCTguKrxmA+eSNv7LRy39hvd/8uQ3d+KU6I9N3uOv+lnMKfMyd9V/hsTB+9wtbe8Z1tbOyF6YgMV7LdvtdWdcmWTADrKluF6ATuJvvuzhVvO/lv08ffQA0xXLpRLa9nuduVY1APlHrtlhQsO/T073HhbPI7W+0AkDtYlTZij+cqLEjMGyuqdIylmEux4N5cphju/2QKW0DuTjNduEv/BsZPdexqOKeqtIa2zFOaVBzqPx1Fw6jGbvEcXUS1Wn1TUYyna/tXzlvJ5jzZ87TwV6VTrY24KWvDb5m3gRxitDWcfhGHSAqy3zKA9oZdx6/SwWmX6+8haddGls6z5wsf73XWckSlLWvvuaxcdduNzH1VbfLnraIlePctBPdeat1LsvdW2Hj+h3b7hTG4eD/pQ6GVtgaXMGi0JZ2zwpWrnZHFl2JnyS2JlJ7wXzbj78r23Czf/BGGPeDm58n/5kdxH6UoltcMtxyEttaOYpsJAHoqWPZvS56/u2zsn099qVB3Wu30yFu7TWg02CGojjHvHvdGhr93AnkbLctuBk5AV4ATlbOU7boBejtTgTHmFSp2fOdjaZiTwuVPU2XLc3FtR7z0lm80lnKE7oRSBVzKvX6IwnLOJOO1N2UOC1ce10tbhnJsCVOwZwEb2ljmNtOJFflEtQYd5roe6lZOdv1QUZKcq7Yne8CXFAYxMTEH3rq+cdudt/iFPRO8HZf7XgVEE1OPa8I1lqyc7C61mcWan4q4Rt3stku32AIS9lFOcRR/CYnOQa0gJkrxKXoa83GeR22bJlaxsx1P+1gC87ZBkCSzJzt7rnnn2puvprvFPBLWR8BaN5VO32W/u0ZvwJAgNFd+Ynza0cBsJjFOfhZm3n8O2Vwj+Nvg2CFFMvxMgsZ79rkzZ/a5G0mgL1rE/fes+XCS7aIg6BEhqpZPZlp4bdi5Ctk5WDpYVri1tyzQPk1KfAjAMJtADTnyrGWLK1/JWkROtWkIirRBXY3+sp2hqst0lGI5ypXBwE1NlBnwY4SC/dUWKgHwN7xyrZaK8zXXGHrDQD22pcA9FwB+2xpjs2W59tkSa71P71rHfduWvv9W9aO05G8pzacecdmAeaLVYW22VqD65TiNni8tHB/rQV7aiw62GSx4Ubztby0QFuxxfsqbWes3pIDlSjICrSORx/4vYlG2x+pljscgT7e9hzFSZGKUb52kzf/SoXTRv45GcZwH305+1MUQXyuvpBhz8Ttd5RFz0Q7ntILYAoFGN375h/RK/9jOfqRlQ9f+kuFsnBHfQ63O3v3LbnNcRWRK25M05u89RONR8bv/cbmZN37c9zH39j84/e1l067Xwos5zN+bctg8MxJ97885+xfa+gOd1ehOMw1j+FzRFW7gnMYgYrilecpjKOP+65W9JjGliN27o5cOwAIH4xXArjLXUYDGCFV7od9uRLU0d+e++nMQd/vpvvcE33+D+da7HCs3JnQDDoRHSNV2WZn+/2ALJ2OcQxxGfTS2DgXHgdL5zFTKWEcW++HozS0KZLQToAti9gagH4Z2HyDDrH1BS9ulKp2AqHU32MOxNcHXjPpdGyqNyN3O+DDbm2Ns/TgzOs2OwFZTHzWmcsEPVDX/NtbQyPDJ6C6FTK3rhZdwVc23TvnPSvYeU/57jLV7dT3fcax/HSrnbcBMDcWGmy5c3WNIj7GpuoUx7w3VuBB0dyyW1+TuC80mzqJLidPkr45kD48gRTG7f2bN0r3Hxygc2Vt51/aXuIn9HNPJf0Dx9HN4HFs0/Nz3wCgLwnI5eGebrf704lrru1+sDoBlj6uXfTD5SG12RXMstjjieJ6Bej7+tkJ5Q6XCOKctXcrke2IqWwKYGl04Sv44O5T0UpryNESgfq23NmytEJGRfv+WIXzgO7NFZiLDbc+cuthSkpza2BsZxPMI3U3BOZhnHJWznk62TutYSmmI0NnO95fCTZJJ7bKa3J7o9d2FMyRanbumfvLLrj98aYMAX5U++tudY1tdxULtIylw1z9TR0x/swkNj42Ajpn6Wznk6W3Z7ukLbLx0m8AcmDj5Rdw/5ecGE6JbC7ERAfdxQjaAPIgGHm4/oH2szkW4M46gZ8guZT5oU3ji33uyUe2XnQRBcK3tpr3OX7/kS2TueMLm/NzqqJn7r8DYP4lvvj/ViCxnPMZGPc7YvXcJx+98hfK2x6TavpttcK558ygFnq3jwF4FrLP2XzO1zab/ZWU9HR548601qwyP5HQbb34moVltvMQbP2KVtaCNXTRe2ThBjynLc9Q3ORYrKvQdkdrLdqRZ4E6FEhd3F7Iw2Ueo4h6aME6XL6t0MKd5eZvK7VwX50lpvss1N9kmy0V5u+us632SluuLrT11irbaK22jfZXtlBTYjMVhTZTVWRjxbnW/fSe9eDoenLXRvMzbSz/KQA/z2aKAerVL3CdWttoqQZbf25r9UUWHW7DfdVbdLTVIoONKBxeWqSn3GL9lZYcBdB3FVsYBUmo8bGMbnaHKhW8Em9hvkCeJfF/7fSX2HZ3IV6z21o73MBrsgUGz3EInfM28ToFy65IBEkRII1k2GVxrxsuw5Y5WD9ZNoWN9AGYuvO2OibTd96yMc93n25/kzcB4Bd+LNc5vm707p9DQcAijNeljmI+4x0J5+j8x/tZefYh7oM+/u/aKgpCtuD53qJPPcVyZOJ7XFNrcayca2o77Y+VrqYgFoK5CmwA8Yhj3DSUOaA4juI3HmNulU2mMkv4Pljp0545hW+7TNdjK54teM/z/Zjgzf10ACzb72TgYugKZ3npKeALAfS5CnWRUG6s2MtOL3OCObrGAeCPx5w//PF4BR6bi3Cl5eyR9tlfKWlNoC7m2qT1NKrf2Wo/WumxY6WSTTjw/r7Yjer2tCCOs3DuoxPQydR5eWWVT+rUTgNZZl8DcHrdbMOZwKQ2hk4NaJTGls5Mj/5/d9KnTgV0RuYennE57P50ceC6CPSVP151zncm17h2B+Z4/lOLnQ7IOWKQKNALpWGREpymMG7nJOFbOtkLVqcO4l84pbu9MZj5gQD6/6B2+97eP7SjhEtc2w1lp+L+iVRsK5xK+I+O41uWim3aUXjFjgLpUJbpU1W7jg2ur03aIQD9aA2Avuxa7c7LfdDLQe/2WHqPHXC2vjIoID/QzBwfkKVeXK9XwK41tck6O2Qbjh94fBmIpdNWk6DNtl1fvsthHqvW7zlTJyuXXSud3Zrve/vkHvvm7xrZ0r7uwBXAms485y55GsjTKWoBAOkmQDXEmS2+dKOtAHIAMYHcV3Je2dYUv5H9K6WNs2/ujL+6pr1xmsuk1b8yqan3BHeNt71d93vu8TXStOahct9lKIP74O1yXY1KdyrvQ1UA7EoaylwBgGUodpUtdQJ6gEAIcA+B+fmZ3AbAD5S6RDbO2VfwJTyGL/mhW29pTsvVqk0cBPJVgAL307Xf/OAdZZvTn53gTMe4jYKvBRIUwM0/+dC5kqEwoD84Z690nZN16NOPNQuffvAuioYzNvn49zaX9SWYPYqJ55/b3OOPwDI/1moaW/BLBd/aetlNrXoR5AnwAVrXlt/Qyhn30IMNzyzQ8BxAXuiiZvE/Bmmb25CB14Ie7QBCAGakjQK4Elt/lWW+phcWGWqx0FC7rTeXmb8LjL2/2Xwd1bZSU2TLdSW22lRp6+11ttZaa0v15QD0lzZR8cJ6nj+0vuzHNgggHy14ZlOluTZbWQBAz7IFFAOrLSgG2mpss6NWtxfsa7DISKsFBxosPt5h8THcb2+lhQHqiWGw9MFXFu0uUgeCyXH0gE8OlKsoDFPVjqIkhqIlyrU8/D/0pI9I+HhDYTVrLy6g+Loi0xmuvIVf4fUuvqB1w/X8L/Aa431YeB6FwGdS/tOKdxqFGKNw5zPcDvr0nV+KsU/fBUiDgdNDYO6ua8/L0tfzb1/MPCNxJMWQ83gfTIPNswVP5k53Pr1XuAqH4m2r8AtFqcbqbwHIHzolO5k5GXnHE83Qd8Dcd9szPEDHZ7U32wW2DBc7M5le532/y1P+rNZ3kT7vB/Pt7nuAJlIAZLbhWajvaVe9QC11ArQEXGCTx3KRKwU4lzrXODrJsYUOID8aBLAP5Im1M2ZVTJ0xq/R5Z7QqwR0AfqyjTMY3R15RoCS32frXIjgC+YxrxxPkCexHXFMjMPq+Z7Oqlvu43OBSsnCddcC+NWEpv2uxn4IvbVvT5jBeCz516ss+4dzpxJK7HMNPq+DDXhob0y9ja2DrGy7IRX/zHOci3jxdyWzjr1XuTH3jvJ/raLxd6gCo4uf4gO13nqpoaQfYdzlVvwB9hJ2DFIqHvZP4xsrJTqAmdZA4b8f7/xEY8g/fAPoPRt0e/Z9sf/9/s6Ptf2v7ifdPkqHCo8TWVCoRiKYSwaPjhN+Ooxt2RFFccMFj6Q7I0213rq0dA8jlDLcKEOdaGmfnKx6g8zwPAjl+1t76cr9rqzOScqHrdFWNH+gDZldPAdAnaTCBY6jYWWYy7IGOcGTjDGJhMAvn5l34Ymx7qva1vNlb7utg4hmBPJ2qFhGoeolotKzsoEHMM5eLTlMYZpbXXJOaXBnVvS8t2pUPMLkllrxV9q35mDdeck6MmYEgsm1lAUD3tooLAncBOQqGuLe/rrY/vd+VwuZMZbj3HuNjxW3EGJmpy9yTWlus3Zvth15d9VTv1yzYSDvYDOfzTv/2V0xmu63cdAa3MH2NO+bczZa5DBhf/9WfW++Vv7Zl2rsyijXvM61A0U1uHX+nwQhNZKY9YF4GK9/E9bm2REY4ee9X8hFnvOoiGPzSkw9chvqT3zjLUDDJdaqvcwHeOZ/bzONPbDHvG1vM5q70b9Uu5soaf17MPWezWZ+pfU+h3HTGRxKGrRdfta1XAPHGTJzeBZBdsJVCqvYBaNX3tI9O0AsDAGMAyUh7gUU68i3OyN3hOov2cZ4NdjzSbNGxTtvqbbKtngYLAMwDg20WBMAv17605fpSW2mqspXmaltueWUrbQ222PTKJsoLrB9A3pF5z0ZLcm2qrNAmy/Jssa4MYP7S1ppxncZyFQO+nkYLjXSArZdboK/RIuOdFh1pw323gLU321ZzvgVa8izcBfY9Uutm+2TkPYVykGNqW6g5y9ZK8Z5qfGoR/F+hBq5BPhOT36bDHNce6x+g0PlGa4jUSrid9Du2UXzJNnHQP0Auf3idfAXnwKQ/cqI3APhS1qdi7xyFkGkvPHwHgP4LnP5aYscFgDlZNw1smNjG15aKeoI6/QpoTMO/k93z79RYrGd/ouS+rYLPzf8CBcXLr9T9cqlojzVD5zx9t+0RgPwZjieKRFULvof2r3nOBnaoRLNwgjVjUnd68/U5ptaFRfoBW+ko6I+4FTNdb4ejpWL01M2Q4Su8haI3tslpQjPTjKPOraYxuEVxq4WWImtHAUDF+153pu33ZOG6LolNwD5ZCnDHZUconisSuLtZPB3rAO5sydOwZqZGtrISyM01yp3ukPN3sHh6YhxRSEZmC9BLbX7PpQ1M3CnNZzxQnRA7d/Nygv20Y84MUpGifUZsntGrznBmykWuLngze4W9eHN1Xl9tezJ8sHEq3RMbjrWHXfs+JZa+7Bi9bGY9a1jepsYEjqFrH52KfLbd2YFQF6LdtePXvFb/BiNhmeM+kcJ97p3EVtdoPGb7sQt2vPOfvV30N/nof/hWe+DvWpLrapH/Hez8P9h2+INUPJgPZj4BIA8fJfwHxxGw89AqjiXnFJe2ffW9BnSK4o7XCeoAdDFvLwOdsamaqQPAN0YB+CNykCOYy6OdO+YAc8fMAeqzzQJyZ/FaKy9nGkzsMuec6nZU0Jyh7XCOji8BtttpGsMWO+flmpt3sMX5UABN4BQbprVrw121uRlVydxqKqMpTuOsO+rFnLp88yti40ncPi1bObcOU2HOFnsJGDuYMqMjGcuqTHWArlbMqq/qfhLyir+voiHOGWMz7rflnvtZQrmHLmGrK9fiFHP1lziHuhYH8lqja7jj7cW7qFQlsam9/EDuaWTiTCrzl1+TYE4z9eJztlZwFowcLBhgvgLQZmLXwPW31PKm0p1pZ1LB48uZTI+KZn3pP/vYVgEQVK9vCMh/C2D/SEYkc2rF4zIZ78hpjEyeXuJcd+Lqk66T+5ltAoSX8s5pTr784qLNPftE4jgazSzmfmUTDwE4939js08/weXO2/xzFAB5X9t81llbK8HzXv/EVl9etRW249lJeHlBcbFhRc4WWKy3zOK9pWLr8d4S251sFRPexunOTLclJnstPtVn4ZFOMOcuC0/0WGSsx6LTgw7UBzttA8x8FYC+3tFgqzi/1Fxry231NlL03Fru37Tqy+dtuqbMpsDYp8oKbBEMfhXgv9ZWa5vdjSgUGm2zq958vc0WGuowfx8AvKfeYtN9uO9ui423W2K00RJDryzc/sJ8tQDqbmouivE6V2i2Hm3PR4Fyz9bwHEw9/FCdCprlbFXecVGyKGyUENdZYL7SawrTUbfkxTf6eUGF0Zey66VXPVk68+43XriWPGNVOTbhdfg6L3gz8IUHeO3u/S3Y+7tqr69Q3Y7XdY0Anv2xhJMsylayz6JA+AIHTlH8cRTA7YI15QDQeOZTgXkIhW0YRSRFnzRzinuucVxR22PbHb9jCAtNZnYJ7DSboYkMiu9dFOjcXmHBzqAVAjzNoXRbnVnaYuG47YhsHYfm3Cjij7mbTmEcWThn5jScAQs/mKzTFgyd5o7pFMfdcxrITFU6xj2Ya4d9WZq5E7Q5H1ca22SJwPx49IWCXqSYZ8IbCwsUDyouJvD4Jl+p5Z5eW2N0K7sNBxOVzoZWArpO58C24aneNS+fdvNxgXVa2T6pVTa13MXGpwT6An4eW15bnpenEQ2Fespi73EqdTLv8DwAPT17nz8Vx0kBn2bqAHy188MLrwsKzeWHTuNfKXZThwHgLYauo10FyvGK5/vOGf6Wp8jfAqAHpw9OossbJ8lAW2o/esOOd//4TZzqDwnQafmaBKDvRP5Dajf8fmo7lA1AHzmObwWPY74Dzs+Pgw7MKYxLyf6VSWvORIZiODJzBbNwfk72TZbOGTp/v+55uq8MuYPrbItOJHe03Ic3Tr8A/WDeqdr3+eEEoB9M1tse2+lstXtBLGToO7SQZNQqQJ5gvu05TlFRy/kdLVyjFKBJ5PbIrYMRIBtdez3Z5SIrJVKj01Xtbdlx0medGeXxHlq2FmkeTZAOVV9xgE3Xr1dk39dcq74737XAGZDy6oZWz7Y7nsqsxgngbluskW19GtTckQ98XJ7vz1yMK+epXXluvY4dBWayqyV/T4I5xrOGmLbGlbX6DDE2tdRr7lqQ7XVvthqoAKi/PK/d4VWwpzUAMr3b57PO2MwjRm6CAeMLmqpqAjuZ93ohv7g/EXCvUnwFxkdWvFVySTaydBCjEI7qdoqiZpiT/YjCuV8ptpMBLJzxLmuX+az82ql+nyNYA2zmn57RXHYx8xObzfjAJh++L6Hc9IMPwMjPgKWfldnMIljhKgDcX/cIYH5Zym5fxW0L1GYoNz7eVSjw5lyaArhADTPFUcSN1qHgqrP4CMBzsl3MONTfaOFhnJ/s0xEGmPOITPVbaLzPQhODAOI22+oHEI/02npPqy13NNpiS421Z9yyzPfetue/fddGSvJttrbM5usrAOgVYvP+gQ7bGkChMMXioB1HB26z1xILE2DruM/xLotNdOOUj6XBklMdtj3VZqGOF7ZRhderORts/LmFW/P0/4QbnoDxfqad/5WcL22Ta2oVjMi9gfNXta8easzUWMFfdlmAK/OdzN/bUs4XNvPkI7zOzod/nXv+eK0YT0t/d7bIF5hL/+i3XmreWZu99wt5vTPjnIE8sw9+rfb6yuP31EbnSuPqsw9tA5flaiET9zaobC/6yjZRrPkKvzQ/3lsbOR8D2Onx/omFaAmLI4LPCG2Pd7lx0prhWu5tj8TMXWv9mbN/7c5US36385kzdqKQlZ9pnnJkhoJdq6Vs33fhspzD93vKdm67UEfT+9yp3hnaMl7hvNun3PrZPkB3P61aZ+t9nJaxVc7vnap2RasWqmV/PPbStdsnvThVzuEpqGPaG2fwuP4evefpKU8x39BLZz/LFa9FJ447BDM/nHilx8fihLvyR0sARoKgj6EoaYHbjGPSMpgZP52xu9MZp4gPTjnmnlbB63TS7bYzGpZiPDJmAr3Eb8ue6G3+NaCrDb/g7aQveStwM68vI+Oa0dcBLj63j55inCqDZhY9lr6IwgT/h2bsFPsR0H3pFbup1Il/5gD34z+Jb/ak9iL37XDnJ9/3dH+Drn84QHfzcxnKJP6p7cX+Teow/lZqL/oQ7LwnFfP5UtHNHa6sHYWWNUNP8VA4y5xTu3NljcybLFz2r9xDH1PbnS34Y66zcaa+MoJjGOcB9KtDdrjSrx3149UBx865rjbbKh93Aroq7ok6mVPs4UO6N1IKAHdgvjtcoTZdMr2ORm91rqSlFe3c8Wauebtzhotr9/uhcsqpmiULUIAKGDDX10K1OK3hDjmAtQ9fts1PFV9KRh72AD1Uc1UzbKnaa69bsjtPincK1sjs2dqPp81pGm4pwIUgLqbefP/UHc55yKOY6ALjxKnm+4pqxfUo1qt1nu/hurtSQ3PXPdjwyEJNj8HO7wrMAwD1LandL5j/5bdqj6/hi1jrakVfC9CpHiewruOLeKPwrJTU6y84U+f8/BxAAICa+b6u5wOYU3BF5r6FL3DuH7OFToanti1X3R4ygvPXcipzM/UPNRvfoFIeBQHzz2cA3HSLYzvdMb3PAPy/k1HMfOYZgP3HEsYtMvWN7me4T/qdc81rq5IzYxQnALqt2icA83zHcltztVcebMkzX/V9F4IClr49WmuJcYD5WKuFB+twNFh4qNniswMWnx+22OywRaZ5fsxic+MWmh6x0NSIBccGLDgOUJ4css3BblvpbLb5xiorP/epXfuvP7LHb/3MXl36Wm33te4WW2mrA6C/ssBwj64bGOu18PQwzveZf7gToN6P2x+zyHCHRSfI0LvwWOot3Ftt8Yk2257Bz+0F0gcEUaTQWz6KgoSFCgtIX/4nMnfxl1/X7jr9+Tcrb8nBj8JFRuLu9L3U+0EubgBubipM3n3Ler/5U7yGnyhKdTHrU5vmeAOvARk9W+RaU8z82Bn3ZOL1evgWwPtdMPPfaFWRa4s8v8qEvmco7HCsPH3fC/YBoKMo3GQ2QM4nAHIUfTj1FxDkwd7zf29bBZ85f/eyb53qnW12ZtEzfIai1VOWnm37OCXQHqS9I9imB+DvAPCT3FPvzJZGhk5yTF/b5dopx2K0j6UTHCNTmeEAYD3oAdMeLnFJbONMXXMCNq6hHUwCXMeqcD+4vb4cL261wonbOPsecQz8eLjAC20pd1Gq9IOnrSwV9kMO0I/ZFRgrU/HAlVm62GleT1AHuB4p/KUF7NzZUh+RkADU6RZHENS8PL1vHnAAbac76GlL2DEH0hTR+b05e2DGzd7TSneulHFfnHN8Ar3W1ZZeG8kArBmn6pj4nAPw9J56WnAnz3fH0l1e+pgXqzro5uNrvfqf2H4nmMsadt212jW73xrTCAGFRyoVnD06CS2ET2JrYyCAubYf/5XZ4R+9WV37YQji/ketrO3t/SMZ7R9u/wVepGvHia2Gk+jWQiriix9HNo60uhZZs2MxdBefqhk6V9bWHSsneEsoRzbOQ7aw42LlEsCtAdTXvf10MPPDlQHNyWQeQ0X7dJOiVNk6YzDDPj6YZOV7nJ/Ltx0HAD7ZV+BU7qj8021vArVsWbnjLQacKc92CuMUxsKddDrJgUULbAmiZNk0fWl96tre3UUW4KycO89qdQPs1Uq/IuAnePvKv1WkKa07nd/7TUs037NE0z3Pc/2KA3gJ8u4p3EX3RcYuV7jHYl1KGKNSWCr4u5qV83oSxJGZs1sAZh7CF3qgjp2Cm7jt62q3a00NQE63OIaxcNWJoL6pNjtA9PknNgMmR/c1OcYVndfu8zoBs+Kq2uMKcwFrD9TcBzO8Yb4XYGAAfl/hFwKStbwvpHQmoDu3uLfVZqfxyzyAmbvjNElZzPoYhcMXsm0lc5+8977a7pzxztHhLecr3O9lXOYczn9py2CT/qrbik6lVztXu+IAuK2ya7ZVdc82Xj2yrfpMC4HJhpqy5by2WXnfVktugcUT6AvFzJNjTWLnwe4qAGcHAJUt9WZLzA5acnnC4gvjAPQhi86O4hgDCA9ZbGHS/ADiAJh6cGbUNgHS8w1V1puVYdnv/sKu/eg/2+0//a/26Bc/s7b7t2ypo8k2APobZPVk5BND5gNLD46T8eM2AO5+sPXw5IBFcD6Ex5CY6bfEJJh5b5X5O4otMUXjFDD5npduhQ3/b7iO74MsKd7pSEjPd4rgqNYngMtVrhgsvYiz8qsWac6y7b5SaSYomFOxBkCeuPU3snxdzPpcz+3cs89s9NYvpHInoAuo8V5YzPzINjjCYEhP5m9s+tZPwNJ/IyOfpWcfA6jPuPzzZx/g7+/h/fSpKw4LvrEA/Q1Q5AVefiMxHA8/QNwPQJfP+wsnkAtXX5YlLG2WmXmusBWAKaOM95l33vNcq2V0imPaHDtru13ZWmOjJoaFOg2CyOipbN/1QJ2FcrItA4XBM83Sj6irGXFrZlx1OwBDPgIoi40DkBnEIlCnd8VgWhSXL//2I7B0OsPRqEarbXSS4wobQZ0uct6e+sFwkVurowKfIr7+QjH13RHuzL+STSqFajS5UVAUlfZg6Ec0vQH4Hi20q/WeWkvvn3urZ2mFe9CJ5VJpli5Anz7dRz8+bb9PSczGdTky9BSKBbXrxfidzztBXVGqEadqPwkvOmBPs/aYl6+eFtKF0rc75WJcGevqKd8F4OmDj11rbl706tbk6+5BCIAeXoyfxFbnTnYClXYU/8yO9v/d9+bobwD9Dwzqf0dra7R93Y/+J0uEznCOfpwI9KUS/rVU3L8Dpg5Q3wBLX3Ut91O1+8yp4t3FqALAN8cV0ELl+/Gmp3gXe2e8qgP3gxWncpfifabFATojVMc9dk4wH61QS45AvoMP1u5wpW33F6tlzn1zl3rmBG3MJXdK9Sz5onOHXC33NlT63TlOFNfkglIkjqNRDG1f27LkvR5qyjSfVr+uA1jvaB+cgM3YTorN5MhW8o1U5REUALR7pQFMzANsucw1OGMa7pbrkLPcdc3AwwTu5kdg5dkCa83b67x1Nu6gM0sdBUi48YEc6Wj5Gqy7B0Z+W/ay8mlnEIuMYwDU+GJdx5cqW+1+fOlugonTm3vm6Uc2/QQMjTNyL3WNX85kwgRzMnW2VzfwJR0CwIRbs6WW5n5xALdFMOf+M/29OWdlGAgz0XlKFzlavbIwoAXr4pMPbO7xh7bMufnDd+XdTpZOR7gVqtgJSgAn2sQucXXtJX6uwP9W/1g2uVJ5tzvzHHYe6PK2WX5XbfXNYuoE7qoNvUZL29IbmqNHe1F4DdZYfKjW/M35APNOi092WWS0zeJTvRYDoMYA6tGZYbXHIzgN4dQ/CqYMEGernWw9DNa+Agbe9zzDij7+jT1/66d278/+2G796L/Y81/+3HLee9uGC5/bak+7+UbBxnEEcT3/SI+Kg8gEmP4YWDtuNzDcrrZ+dKpPbfed+UE8li48znrtw3O+vzvVbtvDrzQ2iA9U4L2A9ynOq6DpyMbr/tjZ+zY8dYYy7GLkn1eC20YR8+HvO9c5GgmV3RBAb768oPW2se/esYXnX3gJdx9L98D41UWK2bRT/oHsetl1Wcv6na0DtGfu/lTrhnMo0uYz3rfVp+85MM/6jcCd4SwczfhKrligDAUtflbBl3/Wgmq1f60oVUaqRiq+tQgAPabi9q5a7Xs9eYozPuh3vuyceafGSgXyAktvvXQPbHu/O9O2Afw7Q/i89+RLPMfW+k4Hfd6dec1O23217Cmkk6COhjNaMcMpneMI1Fxb40F7WIAu9ThOUJej+zskMx8vk5COzF2tec7NR16odU+lu4JJaDeL+6GtNBn7Ab+DUERoRs9iYbxKjmoUw1GJT20Pw2a4lUO2TuZOtn683Os5xXksl7N1CszY8vYEbY65k43POZBm99Pvtd69QJVT0RoZNADfvLm7mHjIm5GnWXt6Zh5ZOGXm/53Pu9rys058J8OZdNyqp4Df9NbjaEKj+08b4oynGbrbRY8s7ZxEVzdOdrY6UvuR23a8+ydmB/887Rj3BtT/4LN0Kt1j/9j2Iv/KdsI/SW3Tyz1SfrIdGUslguFU3HeQim2mUtENvKCvQ1rk4Y7jWGx8zLFwztQ33EFGTjA/8lrxh+sjnjBu2A7o6c40NbbZdbS4bHQBejXYepVLVQOgbw+W2vZQudzgKCYjqPNLYBsfOsfWs50LXKMDUoIkrVXjUr5neNarXgY5QNiB+TPtOPuqvxOLDXAWTmMXtuEr3I75Vin3vi8JUP04DdDuFew8zGAVgHeg+qoznOHOuebxtzRPp+Nb0AtX0f47HheLBnYAqFYPp7PRGx96CXCP5H9NNb0P9xOsuSOjmoDAHMy6/LIOX/F5gbqPs02ell6wtSIXoboIEJ/OBOtiTCpn6WDrSxQ7FZ3D/wCALL+qtjpBPvDqruJdtwDyNJ8JoFDZouNc0QV96bMVK093CqpwngrnZYJCAYA526VyUVzFuft6wXkFgjA6dYaOcjRHyf8WYHRRQrtlMHgy89ksZqRf1HxcynVGplYDtHFsgq2vkEWWXJNjXLDqlroTXFUjUw3UP5G4LMT1rv5Ki9K4ZQhMfaYPYN5icZwmF0YE6NFZAnm/hafAnAHiQTDo4ES/ReYmBOaBqWHzAdjHSnOs8quPLftvf2bFH75jT/7yT+zxf/szy/nlT+3hj//U6i99JYHcWm87vstwmygCImD8MbB/gjoBPTw9aOHxHhURbPUnF0ctMTtg27P96hwkJlosOdpgCR5jTRLGxajMx2m0Ld9CLXgvAdyjzZl4j+D9y5k5nhuG0nBezvEEXeMI4NzRp987Oyo0D9qquK5CbQkF1Nzj32klcJE582DrCw9RjAHQV5995IqvR7+Wx4A0FCjoVjhLz3hHLXbqJBYeOYbObPTNnI/Ayr+wgMJ/mHp3W6Duf/E5GPpnAHYmsJ23UMk5C1dctET9LbDzGxatuWrxeoB6w3eao3PV7KCvwIE6V9JGwLAZj0qmTtV6n9tFP2T0McB9m2ZRfUX6HNPVUetqVMd3Z+nv2m/HeecYVy1g5VxdcatTNWLqFLgdDObJQY5K9CP6vwP4yfAP+nKcQG6sWODO23emNHkOzCWgcyp4tuMPeBkWIEPFms3vjeLvjHTF99MxigWOAI5nG20P7J0OlWTwNME6JFsnqC/3AND77XjNmbKkGJ3qta8VuEIbV7bCAeaWNpgJuLa7E8Z5Hu5cK8P9SHHurcBJFZ8WxZGxe8YyqbAXyuLN7U9n6FK7z7u5enpnPTD+2nDGA3F3uK5BSlnsTn1vp/c5q4LBIksHFlsNnyR8I2q7HybfNjv6V94++pu2+w+CpVMcR7e4/fi/51wktR9DuR1pOkmG1o6T/p3jqE8snX7uYuj+WQD6pB0DuI+ViT7m2LksX4cdeG94c3Xawq6NgqEPu4NrbbMdtjfVBCBvtT3mogPM98ZrpG6lyp0fkJ0BAHnfS5yvtm1UwfSF3lVcap7ylKWMBStPtGe54BQCLtfDpF5/qJY318VoU8nWdkBt8Rti5ky74voXFeS0c6UATatfANFgxSUBOgGV83SCMNfHEr1FjmXX3nHtb14GgB6ocm157qG7qNQb3vz9mmbt9GT3V91yYSt02qq7I7vXCENaGl30apj3z5hNXJ4JXCwGtKrGx4bb85ddxBc7AFkWrzilaUzJN2DMYMB5n9tMFmfZn9ka2Dpn4/RtJ6jLiKb8Gr78LwGwv5UjG0VZPu6ws0jBsVl+3TbLrsk4hGtLDEBZff6J0rikbsbpOtk+7kcte4D+Epg8LWe50jYHZk7gYfDIStEVqbA3OBYA4NMpbibrc5sFi1wrumwbpYx4vSYb2S1FpN6zNTDyNQaTVHMc8sjinQVgr/kCMX/NQxRRhRZuBfDh9/GhaouP1Fpyutvi42DmE2C/y6OWXB4TqEZmBgC0APTZYYvOT1gUQBxfnLLY0jTY+rCt97fbbH2F9T79zgre/ZkVvf+WVXzynmX/zV9a7i9+YiXvv20Zf/YnVvLhu9b37L4NFWYB1FsthOIgkr4tiuHA/GPzAPdJFhFg7XP4eWFYgJ4AQ4+NteExdtn2FICdq3UEcTz+cCeFfmUWas7Wqp6/Bq91DTszeI+CsVMM56/CcwKGTs0DOyI0A9qqQBFY9wDP3WWNNCiU5KbDGp7jmYe/tYnbb2vtcAVFwMKTD1SALVJ0l/mhCjSuJtK3n8Y1nJcvP3YsfhksnrN3XpZMfSvnjMA7yI0OmRZdl9GP3o+lYOZlYOT4fITLvsZ75xuw82sWUwIbk9duWKLxFo47EriRbQvQuXImNzYP0GnlSjCVCO0lgDvHBbT0vUCRniedCxk6AV3763KOy9LvqJbnXvv+SJla7odDLxWrSnCVSn24QLavhwR2AD9d5dRG736Kx5ItRn44/EIFhZzmWCAI1EsksEtpV71EoL5PhzsC+uBL+dI7EG+yo4VOO+TpTIMU7mTvJB97nN9zQ4fdAe3TU0U+IGMY+rwrNtXv7ZlH5l2bPD33JjiLFY97s/UxJ4rjzvt0jZtnR+Y9gR1AVi3w6dcWsuk2PI1ktPbmRbB6TN7Swrnvdwc8Vs5C43Q8gPs+xnWPVTx4QruQN6Pnipza+8tHJ7G1uCXWF2wnUGN70S/seP8/eWr3N8lrP5h99N3d/1WOcQe7f5w6iH9Fe7+TRGjuOBGIH8W3jlKRLQD6Gl7sBbzoc6fWr87L3UWp0vKVincazbjDqdz3ua6mFLZ+5xoHECeYcw99D+x8d+yVZuh7DGHBKSNSycwJ7NuMSx0oBlsvdhnoAPPtLoJ5pmxaKTRjapmc3rpzPe/0p9rzlhVr4323+lVzW+pyZor7KznHvaY2u2xSKy+7/fNKD8wrL7kccv39mhh4cqBEqWe8fLj6pkxfgt6OuJg5HekAviwENsGsN8quqrUtUxReps5ry9e5WFUeQUWkXgOYAewbM/R/kKmH6+9ZsO6OChAfk9JefGnrAHIfAJrMfJPuYThWCs/bLGNF875UNvoqQHkJYL76/IwzIuFaEy7HOTr/Z7rRca+ZBQLZOcVyay+vKlOdX/RM3lrP/0wz+TUwcyqsA7SZ1ez+PC73pWxjOe+lv/vCo/cVxbpZftPWSm5oFY0rVb6XF3C/l225EI+99Katl30nb3df+S03M69A8dOS7WbFAHl/LQowPFfbeI4TOBgX6ycrbc2RSxz3tXfHmzRDT0y0SnQWG2202GSnbS+NWXJlzBJzwxafGwOI4wDoEsQJvpyfh8HON/ra5Aw3nPvEBrLuW9VnH1j1px9Y7fkzVvHxewDzt6zsg7et8G9/bqW/e9c67ly2xqtf2XhJtm30t9nWOFg/b0+gPokDt7+IQmIRQL8Ado7TBE6TC2Dskx14fGDlk60A9XaJ/KIsUhrxvqT4Ev8PRXBbYNsBCeYyAPI5Fqx/iqKH3vbXFdLCbgWz3jm+4EqbD79nS57XZTHA53E195xN0QGOrnAZ7+G1/9RWuLZGYSNV7E/es6XMD/C3Xyv3Xj4DeI+s4PfLT95XS3728UcSzW08/bX58z4FaF+2cPlFC+NzEapBYYwiOFrznUUqXXudAB5+dcUiKJIjVc57IdF423bYdler/IEyFTgzd6EstH8FiwUQpx3dDsncmbwG5k5rZ620oQDYVVuetq/5p65yVJ/zd1yBk2K+87HU54xVPhxz83XOtw+H8uXhzlb7LkCcbJ7z7UPc535Pph2xBU/PeEa0csZOsd6AOyXQM21MJjVyjAPLn6jUbH6HRlbcg5+hMK7dDulUt9gly1R2Aqj7OfC+vzRTn2vF/bJVTtEZ18RGXs/MZdIy5QHw7OsZ9ZYX7JJeXSPQTtXIzIbXTUXnXxvVqDgYPRXcuXb4nCsUPEGdm8XPeteZBYP3Wu7plTnehlbYhr6/miZhnoqAtCsdZ/Ns6SuDncdayhKbezh8J9v+HtsNMXntL80O/yWw5H95o3b/w6vdAejhv+cS17b/xfFB8kepvfgXJzvR0uNEcC6V8AvQwdIB5MtO4e5P76BPqs1Otq4VNp4nsLPtTvc4Avr6uPt5eUT2r6fe7Uxam27T7HzXC2ogmG9TyT7shCg7jGHkestIue0Ol2lmtdOTr9b7Nk+78wHs2ZbsL3JgwLU0iuQA9DSbCTdlKLmMzJp730Gya6aWlYL1lF92oP3qmgNwfFltlV8QEyZwEgDJqDnHpiqd62KcpQfA5J3P+tfu50p3OywENtkCL/wcAHdNrWJ/1U21u11U6wNvPn9DIjceFEWxsGCQR6z9uQXq7jsFPQqGDc7OC77STjlBWa3/CjcCkHIdLHg+50sxdN/L867Nzv3iZx/ZGveKwdTZgt+quKb2Ol3Kgg0PlcDGFv560TeaTxM4Ngs+lyjO/4KgfU6ATivSYMV1sXqFwTC1DbcZbOb44I6tPPudzT58DyB9HUz7vq3kM/3tujzAN3Cbq5yjA8j9NY9ss4zA9VBARKU+Z8J0hBMrb8vB61XgnNQYZtJLQC/A8/cUoJ+r89ujDZYca7Tt8WathXFdbRssPTHTB4Y+YdsrE5ZYGhW4xhYnLL40pfZ4aKLfAuO9tt7bbNM1L20o54GNFTyxwecPrP7rT6z16jnrJHBfOGu1X/zOKs/8xmo++9BaLn9u3fcvW1/GdevPvG3zjFBtrLCt0R6w9SEUDJOWWJlBITFj26s4XZ7C6ZQl54bUMdie67fkRIta7TuzPbbD8/Sf7yyyeB/e32MN+P/xfqr8Tmw93JSDQjMTr0+mbVbedl0Mqt3Bxv3l3zkB4ys+X2zJfyEPgSCeOx8KqfX8cxptsH1O8x8K4Rg7O5eBYuvph0pTo9J9Fe+FlWdnVMRt4nXcQLFGJft69u/w+49lTsM5ui/7I6nZQ/hMRKkBwXuWLn3x1iwANwqxKrLym46JM4CIWx4oeOMSiN5RBrpWz7SJkgVgB7vuzDo1mKFoToA+XCbTqIMRp1p3grknar0n2Xrn+lv3Mx0C+H4CfK6U7myja8eds3qCOnfamZ1OMB0rUdud9rO7nY9QGOS5FTO258nShwqUzsZZOdvwh4pTLdZ1aP3qMtTLLTUHBj5Vbce4Xa6v7fa/UIjMobwyavAd1qZ9bQrhyNipdqdl9aEH6GTpx1wBW+5RSItj3mkx3JgnUpt7rXonaGvlbcyBKljz8RjNbRodKKdb8yGv1e5Pq89dDKuU7BLEzXupbZOv3epO7WXnvmcxO+Xa7fKiH3YFhUR5DswtrabnfntszU7i6/KQP4ltANB9ByeJzWgquTWV2mVQS+IDz9f9Tdv9D690J5iz5Z74p3aU/L/sMPaL1G701sl2qIHCuOP41s5xdCN1FFqzI83PvyeE803JYEbxqd7vFae64YW1cI4OsD8gqC/22dHy9/zdZzvcqhqBfKJeB5k6AZ2K9l1U9Jyls+pNZ6Fvg6kn+1/qYBs+SVDvfQH2XiqAZwuec2kBecsjCwFEY525yiwPAJC31Ea/4nbIOZsWiIMlApg5v6bdK9vUUru/uqm/EdxjXXn6O93inBubm2O7PfTr+j1n8fRW3yzHbTdlStTmZuZg4w0P1ErnWCCQvn+COYCWu+axtufKPmcXwY/fU6S3UsD1s7NqX3PvXPN8PGaebgBgZ7PP2lzWGe2frzDrHF/Qy1lgXrlg1vlg7Vw3AmizqGBOdxT3wbECiwgWNEsvr0hotUnBHf6fLRQJZOAqBnJ+b6GKq2KIatezS8DCAeAdbXluvhdfy0+cgBNsfm7LBd9q1svW8CrbxACazWoA+KsMgNZtzcoDOGiOw/+VIw9Gwyb7S/HcMi2tBOfLBebx7mKAeKGFAHLhlhyx291psNyRerfjPdNrOwsDOIZsByC+uz5r2+vTUrjH5kfA0IcsON5jflrAdjfYGo6VtmqbLM22kbyHNlNZYOMA9R4A9uDzu2DsGdZ974q1XvvKmi5+CjD/yjpufWt9j27YMP+ec99mK/Ns7MUTW+9p0spagCtrKBqSa3MAddz3igP07eVxHGO2vTislju7CUkUH7vTnZYcrrEoDXL6q/E/1Viit1jrbM7u9rFsbFUE1nDN7aGcANlipzBQDJ3aAxZMFCZS3IjiK/TqrrLT11CEMT2PDn5cS1vL/dzmAe6zZOUUNdK+9fkZFH7f6j2xVXrZNvEeodDN562nrdKUCO8Zf/4ntpX3ewvgfR5mRkEtty5uq1uS6MD7qOa6jjhAPUlQbyGQP/CigjNcwiAY+g4jVunGyFRBmjq1P1V7nR02ZjJwzq7UNa81T0CXMRMtZdmB4157O/3hM1QkJLSjnuXAnetv3c8B9igcyOCn6rWPzrY4j8ORQtsGmG93OAtaWkNTcMsWv1LZhtwanW6L83SuuNGwZtgFtciFjiY1DGehQ9xUlQJhOE/f5/weBYLAnU51CyAmE/TMKJfCXl0D/n6uTSz+SN7vva71Dlad0qx89LUgjmtranl7QjjtqE+rAKAoj+Y6bha++BqUI56a/XRe7mWrpwNbQvOnc/RTe9n0cWodOyemnkrP0eUzP+8p55fkFZ+KMsltM2XxzSOLbxyd8Ehs4vAdWWIrCYa+crIdrEy5tvt/NNv/x29sYH8I5jIOzP+1HcT/PLUXO3+yEypKxf1DJ9GtIMD8gPvoxwEvcS3t4Z62gPUzfe21x/uB9tPHXeKa2PmU8tGPAORaYyOgk52z7T7lZuecoe9O8Hyt+3kcoD7mwHwbH5QkwDsBEKfpS2KgFF+ObMkXy2yGftAJMHbGkdIPPcR2Nb6E/K9uWQTMnPNXPxgwM6q3aI8KMOX811d8wYEVv9zAgAmyAUWk3pBQbB2Avcp1HVwnhALBX37Rmcx42eRk5W5d7ZoCVZTKxpZ881Pc/z0J9DhXD3qz+gCAlHPvdPHgmPM17cCzFe5n5ClugwXE+kuwZ7LlMvq131CLXytOLD7wWBdkowrGlfuZ1tV4ugogX8v/TI5xnK1vSKl8QSOGSIcrSHh9Pl4auayXXJXgiSYiVMrTFnaFSui8s5q78/lS61xhLl/I8IQ+8pxt0yVurfC85r5rlQ/UOmernUI4mqP4qFqvuivmTua5WY7bqgAbB3hHUVxxnpwYqrIkwDrWVSQQpxOcwL2vVI5q0RY6pqFwm2yxnalWucIlAYzb8wO2uzpuOwDw3dVp29+ctx2AenxxxCKTNJTpMl9Pna13Vtt6R62td9XZYkOpzZQ9t6mSZ7YEpj0Ptj5TnmdztcU2XZ5rw1nf2eCT64pT7c+4AYC/ZOP5GTZe9BjXeW5zVXk4fYLrltlaR41t9jdbaHoAgD5rieVJ21mbsZ2NWdvbmHMMfXkEj3PQkrPdEsftzvaqwxDH/yuv95EGWdcGax6KZW/hoEgu5vm/h+pokJSt8+xuUCC3AcZOYRy9Axg1S4tfmsuwFb+l5L3Lcv1jGA/9ASiIYxue8/F02MqKQJ1xvBw33ZYjnMCcxjIo4tbyztkW3gtBMHSK38IVZOnXLEodCVg6bWwJ3PwdV9WSTXfczjidDtOeC7RgBnNP0g4WQEyPhpg8F+5Lz0LR2wEBXYCa4/bSKXgbdLNtGs/scB2VpjNdz20ff6OCnl4N3CxhnoMU84xaxZEE4Cd789xMnettZMhcQevP0Xyf4TFk62z7U5kuA5mBfKd2J6D3Zp/aw3J/nT7wx0xiI3tny51+6gD1o+kaZ0c9VqFZ+cFUjW5PjnYA8P2hMpleHeI7jaBOlk7DGSabpQjoNJ2h2j0w+zoXnYDrd3Pz1GnQi8fkwdYPuZK3jOvKFW7OnQY9xbpCWtJOcd+LTPUA3HQZj5H/d+x8Wk5zqfR+unbgx2SGQ5GefODFyDfExk/IxpNbOwLwhC/pnd+zhB/nA7KBTe1HLtnx7o+8OfobG9g/3Ow8/velcN+N/5Htxv7Y9qK/T22Hso4T/o5UzLeUim7Gj6ObR6nwuotQpfUr41N50DFOK2wzp0B+AMZ+QHbOmbksX6c0Pxeg0z1usV9Ja5ydU92+N9kIIAc7n2nB0Wr7+PlgtEYucWTuZOk7APQd+rZL/V6j9vs2gHybzLwfYMBM9NYnEpmF2MrlFxVjRNuciphzxg21gS+L+a6BSa9wjxuAuQbgJNvdJCuvuqFZNgE8PaMmqHO2zXm3Us/o2V55RSYz+lnt9muKWg3X33cz89o7AntdTpflHvtl2bRueOloUiszVAVgG8WXJB8vhWp+ADwLDH45+yuu67ZCNXdUQLBNzjn2UsE3tpj/lXbJKU5bzf9CGeirBc5ghmIqH9l28dcA4AyZmbBYCFd/J03AGoBhGbcRRFFDtzle1q/c9E/E2vxlZOZ3NGsnaNCshK5j/EIPaCvgWxQO51A4PbX1KoA5Z+BVN9W6pz3pVg1/h+e87AYu80QZ6Ms5X+r30c4XihRNDgPYBqukXud+eRgsPwYQ3xltkFUqfQHI2nfGm2xnptN25/ttb2EQB8B8adj21idtd21CjHgH7DyxBGY+1WPBgSYL9jXZVne1+bprAOw8am0LALzRVW8rLZUAZIB8Z51OV3m0vbJlAPVceY5NFT+zsdz7NpZ9x2ZLMm266JHNVuTYYs0LFARZttLwEqBeYqstFbY10KzZOZX1PN1em7I9FBd7qwD4lTEUHONaY0tybQ3/ww7Anap36gC2xxpQoJbL/Y8zauoKaCIUphPeQDnec4+0ysbCJt6Rj/fDVa0IMpWOu/s+gDzBnAE6LAbYjme3xFd5R8I4egksZ58FY6c/v0tmW6I47tF7YO+fSRMRogMh1fIFn9uWrF4/dWE9edw5/9wC+IxEUbxG8V6Pck5OAWnjU0tQtMh1zapLlmi8JwBO0OMB4BmtvSngFoDX3wK7fqQQl7gnUE1o++SJTKGoWteOOq2c6enOlrpAPd+16zU+y5ED4x6uwxY/fR925DyX5Q6CcVemA3Wwd7XWx6hwb7YUwJghMfGGW1LJC7CHiqVUPyC4UxinouKZhHr7Pc9QXGS6VLexUs33+ZgOx18BmNtc4hpX1iaqPOCuVfudrfVDsHFu5+wOFOuUYwCZzkwzra3V203nnvcggHPc83T3WHXaEtY37vbVN7wYVhQCByOlYPbDnqp9zts1nzvdNZfYTfPttNHM3GkL3oG4c4pLpTPY5RjnzdBPc9nTq3LeOhxvM7FuZOEnSf8eQDsI0F452QnO4fyczif9GydJn+9k27d0shtsSu3SBnb7T80O/tkbYdwf2lhmP/FPAOT/2vYif57aCZ1nQAsAvQvHUiq+FacFrBg6AT3oebnL/nVR5yWKwxesAJ3t9bURqdlpOsMZOsGc6WvpXPRDJqwR0KccmO+k2flkmqHXAtjrBeA7I2UCcAK52vGDZbJdjbU/0044c7OlWgcrDtAelWzlFZgxwNxf/xis8gqA+xtbAQCtg5lseuyEYiSyX1/ldQG4T/NpzrS/UxucrW0nmruh+TkV65yx82AAS8A7r3UyOrdVcGb+SCCdXjfbAhOnan7LU6izVU6TGK6/USkfrHso5sxZ8pbm0GSxYPFUpYOV82fO0tkZYKuchccqv9iLLgK8v8QXPO1evwBb+1J2rmyzrxeCmRedAwv7Go+FX8CP5H5H5h8E6FIVPU+2hy9rgTkV8zjPtjstPjfB1pXIBtBfoxMcvuCXwMY5+6aGIIjnlsBNhzdfJUCk7JbYIVepqFzn8+/jChweZwhMPoC/8fbIQkOtzwFiZZYYqLQ4wExMHOBEcZwMVPD73fFGsK1ivOavbJfvi9lOMXMC+f7KuO2B/bLNvrMKMAcjT86CJS8OW2yGPu4tFhpkwlqNBXtf4XyD+XHq66q0wGCz+fsbLTDQYoHhNguMdOCUFq49Fp0ZsiDOb4B5r7WU2WJVti3X5NlCdZYt1+XZenOpjpWGF7begvOtPIpto63UIqMdFhnrlJ97cgkAvjaNxzZp2ygwKNbbXRhGMTIAQO+23cVBjQ62OToYqQGo11m09ZlFm8HIX92W4VC4ORPv75caRXBXn255fI5oecuo2c2y63jun+B6uVopY0ueugW26cnkN9l1qbqrOTtXChmBOw9QX3rykUJaaP2qsBWwcTn1cdsD74NNusDhfUQjGY5dqKNwgH7NYjU3xMZ5cCU02pEjYxy23SMA+ziK2SSAPVaL90HZBY2S6MXAThY7WIlmF9zCDAS6IsYZSqQW/T0ZyLDlfTBY7IRz/QUCdJrObMsJ8rmzdkZhQFBOMKq1nWr3xw7YPXe5ZOt9/O0uWH2WU7dP1wJIm8TkBfhMg+vMdIYxjHKlGp0KfID5fo9TwHO1TTP6XucydzheqRa91u4ma7WuRpX7IZk5zWvI0ser7HDWCeQOODIcdWBPLZBa72rB19txOpltfchSm+MeG097to97SWze2hqNaHgsdajAIcCfCtSUdb5w2lq3yIICWtzfliVaM+2hT58y81TIE8apxe+J4tJrcQTyoCe0U8dgzhnWxNdSYOIHJzv+8MleaOZkL9xxshepPNkNlZ/shOtOdkIdJ9uBoZPtrREAfF1qN3yDxmRmh//ijQ3sH3oHfS/6j+ww/n/aQeI/G/3ck6G7J4lwZSoZGAKo+zhDT0XWj5yfO41leCzK4/1Q++iTrq3uieAOlsHOV7i25tbVtHeu5LUBJ4qb45oa3vwA6eQwhW/48h6vF6jv4NidpGtcnT4cO54wjnP1RB+YW1e+nNoUN9r8WAEqocYMJ/aqe2CBhgdq6/rrMmyt5JJsNNcVbHFFX37c33V54ne1NrUJ4Nwo4ez8gmu5Vzo2TVDnmlkEt032T5CmAj7s2cBulnwttu5MZy44v3Xcv5vPX3ARq6Vf629k5Wzxcw+dfvFhWblSwf3cQi1ZAnHNstn+5mOh+pmFBcFcO/GuBc/QkyWCOUEbP/O2N4tcKMsqgJjWryt0+io8i/v6Tqw80pbtuYwxO/2CLYKZrzB3++U5HF/LpIZFwTrn/+xc4IteAS8ogMjkqGjnTDyCwoCgzbAUuppRpLVW7MAjWHVb9qUB/D4EVimhG8Gp4aEKAM6DqfCmiU9iqBqAXiHHPJec5lTs8e5CvM4UR9ba7nC1ew9Mt9nOVAsKvhbbAygerAEwlxyI78yxnd2nne8kDWUmAayDtRal8n2szcJDTRYZarRQfx3O1wN42wW+8el+izK4hVatYNbbqwTgaYvh9sLDrRborrJAZ4X528psC6Ad6K60MIqBAFi+r6sKR4UFUCQEcOrvApMeZlwr7msYbH26V7voFOkl54dsBwXHLo59fB5UkCwB0Of7JOzbnmi2Hfx/2wB2JrJR0BmTONBlvW8PVsnmlvGxkdY8mfGEGZ0L4KYWIdLy3IL1eF8y0KXKBbv4X93XezzIdbiKmwJ0bjkscZXt2RkFtSyCoXPtkH4D1E1w3z9CoSjAfOP579R+33pBPcU3OD1nQby/oyhmqWpPNt0VONPxkEmEFLwRxON13ykfPcy2PN7/LC65kcH33DoKBI6jkp5JTKz2moA9LqfGB5bE7WkuDjCnMxtXxag63/cS1vYGC12GQ3e2glsI6sm2h9pNF0PvyVY4TEJ5CCgWmr6z7T6AOF3kqD4fq5SBDQsAhcQArGVuM1wqtzmy88PeTHdw3U1xq3mar0usxwAWBr1MOGMZ2b9yRY7Mm3avk46lHy12O5Y+QdtqkA+u3+L8oXbXXTGQWuxSdsWxVsW8FTUCK86ntiY91u7EcJxpM+GNq3Vi9qFZz+Z13gtdmTtl6pZ2iiOgx7+Xke4ZzbCtnjpdY/PAO/g9W1rtsS94wrrZdNY6AH1z52Qn4DvZi/akDmK5qcPEFW4/pQ4il4w+7ruhQs7PcZkiAPoVYMhf2OHO/5E2mHmDsn8YhfvfkZ87I1QP1Xb/ke1H32cLBVVYeSoRnEgl/EEA+kEqtJRKBZe9sJZltdvTwrhDtdkZzDLuAF3ucFPuFEz9YGXQ9hd6bE/752DiY2AoAPLESLUlqVzGl/b2RBOORoB6k0B+Z6xKavc4rVm5Aw5Aj/W8wBfdS4ABnbZyJPRirGaw8TFAHMCBv/kangDML6udvl70rdvdBVgqb7uWDP6OrYPVbKhFfFVt+C0dFzS/JriLsQPcyaA4l6d/Old0xLgBhLqs1se+kXhJ6Wf48tuU+ctXuN8vdRsb/B2AV61zBr7U3jcfwJrFBL3LfQrluC6GvglQXyu9bOs4T4YeZDgLvyDxf7DNvlR4wdbIpEsvOOe30m8FxovZThi3DGBfBqD7Kq64pLKWTAvw/kou6ljI/xaA/rUTyuH/9cl57gsVAhwxcNd8nrnXZPqeeGoDrFurbuVXBegRFCFkkWSDnMEHKXYjQ3/1QIloNEeJteU5i1svEpSzcWaDJwbKHTvvofDthVgoWfrOMAu3KgB5le1Ptdr+bJftzXQK0Pl+2Z0lux0WO9+miQyO+GQnTnsA6ADR6R6tsMXHW/D7dv0tOtZuMf7MBDQAf3SsVW5yBNoE2TQBd23S9jYXbNc3L1bNnfbIAIqC4UYL91ZaqLPYIn3VFmEs6zgLglYL4e/hvlcW7scxUIPfNeFvbRYdYQFRbwk8piTb7CgQdpdGNUffw+n+8phAfY+jA/xfuzPttktdwFiDxg8qZsHYxcyZK4DnJ95bjALKGc5wpY2iyRCz4gHYIbzXw03PbAvFE9vw/D3b8HSS2yq5ptk7dRBMaWN63Qpe9/XcT23x4dsSyDEKlR2ZILst7BQxivfFF+bL+Z1t0doVQMxRTICucAomuubtl4MlU+CGopprpQnaLdffBYvnGts1bWCs5eM9mflbrT8yS4DBQSxMCeI7bZyvf4ci4rrFydaZ0NaWIXMoMWEw4n3Zxj6XW9tOz3PnOdFfiMs9lVqezJyzdLbiKY7bpQ00ioUkblu3iSKBgtmD6SbtoTOhkYr4fSrje10Ou4qGYW/XvDsTrPypHfY99xTwec6HnnN2snmmvAH8qXYXmDNxbbpGbX0CtVTvuB9GQB9ydMhxIb7jDibrPBZfbce4TAqAf+z5vac2R+047SCnnPJxx84J6AR6itQW22S8I0A/XU3zGDZV6t9j4c4KdslzhnMzdUunsEUWHFDr+jOvW/JSyY+69Tatp81/z2Fu+egkvr5j2/4V2w83pI6SNyy1+zZd4Y7pDHe48ws7iP4+tR++ktoNXgPA/84OYn9sB3KM+/tvHOP+4KAuT/d/KAvYo/1/a4eJn6b241dOkuGG47h/6Ti6mTwKrx0pqCWyZkdaX5vzhHGzjp2vesYyZOkbVLaPSRTHFjzn5vxy5u75LufmOE2CpTBkIzkJQCeIj9WDmbPVDrAfKbf4QJkD764iAXm0x+WTR7g+A7BiK5kza6Z1BRoeCTgiHQUA1ztqn6u1Xn5DLmh+hl8Q3MAYuR++Tn9zgJhAn3P0lxSrXRRT3vLYeRggrFQ1Mg/tm19x7W9GlpZ8KzYuJgy26lrXVKSfU4udpjObdJtTm/26ty53XXNy3X5DhoVQhGgmzVkoRXoEd/y8JRMaHJVUo1+yVe4eF6MAwWNmIhoLkPViZoYz6OSs1OcrYOhrRZyxXtf9bOF2AvVcJWNO+We2XHTJFlAQUBPgY4sV/68T1OH6FM8BvJdyztpCzueag6uFDqDm2IKs3IfChQYjXC/j+tkq7Vm5clVzXxntse6XYt4xATUFi+UKIdmmch0gRXCiCCwOQN8erVHBRsa+O0ZjDh7cckChx/fJPNP3emyfegswXLJzzs25/hUHcCenOi3BuTQZ+kw3AN2tsO1wVYyiuZkuHD0CfCrht+dwuTmeH3TKeLbBVydsf3PW9nyLts9jfdq2ebssLidQCHCWTyX6cI3Fx5p1JCbB8AHgMSW91aNgaMbRqoIigSJCRQWuy8dJH/eEgH3AtpeG3Mwf/9fuXC8+C/jfCOj4fxN9JbY9RJ3IK1e8sKBFccPnLInfx9qytYNP0aBAXDqG2xZpytScXR0TAjwL1Yobtpj3Nd6jtyxS/0gZ8tRD+PB7FmaKXGU0KmfoAFlmmweLzlukmq6Fjy1YflWzdKrcafUa4HYF3n8h7qOXX7Io3v9xzbHvaxaewGczwW5ZEwOPOEO/K83IGpj/9MN3bTbjV7aidLYztpH3iTID6NNAACfAJsnSGbuatozty5fgjSC6N1Qob3iCNVvsdIbkjjpzEnjdeNMdFAU39LcdAjXX5DoeKXaY4zCuiSZRcBxwHxygu9efC5B+CiDPlbUsWThFb2rPyw42B0Ceq+AWms/ocmTpWm0rkoUtHx/n55yjs51Ptp6aa5bBzD7jYBc77ZhMfbpBWekHGhtWibFz3n7ksfpj7q9zN31j1M3H6SLH1TW/5+wWdCw9Nd9iRyhuZBlLMPZa7G4Ozjk8gD809T1QX/zvglpSnnguFfHsYL3EN9nHeolrlrZ+JTsPu9a8E+Atpiy2snOS8K2d7AYbwNAv2fHenztHOLbVD/9IHu4HyT+xvdBf2kH4R7aX/Neeyv3NDP2HsYuuF+IfSNhwtP3vAOjvprbDuamYfywV3Qwfg6XjAKBvKH3tKJ26prY7W+7pnfNJx8o5S+fPK0POGQ4gTiEcwXwHX2iJ8SZLAMgJ5ttstbLNPl5r22BqMbHyEiWgxfHFQVV0tLtAqvVIS5ZakBKggeWSmcd6iqWQDtY/dHNsGsfwiwwskglWnKsT6LcYDsJUKwq+1JIHcyn+RqthPjByro0x2SzEWWFbpuJUacNKtTqBmgDNlrx82rmfi/tTPnnFRa250TyGh/zYFYF6Sz+z3a7ZPD3ja+5YrD0Hj+c7Ce9YSLC9TnCnOn6r8oZT0ePUV3XHNqoeSMgmMOZ+N1i6AJzCPhQQyzi/wlm6bvsu/r9rAOIMXO48APoTMPOvbLH4pq3gf1wucC12prItgbEt53+pg4r1iUcfAhC+csYzKCqoUufzzOeTYj22giNtuRK78XERUCjq48xXz39PkQCKu+TaKQeYbwMQk0PuZwI6hXBkopwf76CQ251wboF8f+hY6HPH4qBY7e4iAJl73GC2Kv7Gmr3VNQL4gMBzV0K5UTH4XYD3Dg62uvd4LOFY9k5Xxmwfxx4KTwLsvm/ODvxLAPY528V193hfFK9x3j3bhaNHMahJHNsoFHZYLOC+d1Ew7Ex3eGK3bhz9AnUWE/rdbK/Fp7tkLsOig4XGHhk6CxM81oPlYfyvnShsmwHe1Xq++J7fxf2oKwFQ30Vxy1Q5fRbacwH6ryQUjKKIJahHO3It3v4cP7OD9EyjDYo3l15clFFPuO6+OlhhFI40NmJxxq5KkB4ExecdcCt45Tx+d1FZA1yvZIs9UPQlji90Oa5LsrCkoUy48v9l771+48yzZMGXxWAwGFzch30YDBYXi8U+XVzsw8VgdhzG7Zienu7q6qoub1pVpSrZUkkqee8tJcrSSqJIGcqQEimJoih6771NMum99040ZyPi91Gq2f0Hpht6+JDJZDKZZGZ+ceKcOBG4X5LbQScQj2dGSPWuuTodEdPCnakSmH3bnb1Wdm6V1VxZYy03t1rHne3WSfb/+KhCj0YB5gRs2jJzrk4jGrrF8XI8M8wx57JHuo0tebJqRqxOFdyVaRRNaMZx31GOAThTp0UsgJ0RrbRdpg3zKAV0KBzn/bkAVLBmMm+6z8nfHQAOoKapjZLbqt/sny/SMa7+iTLXaVe7iIOX/Bmu1zl3ugSAepoAXW34JufjzrY7d9GVSaHUyJdi7Fqrw+0UyC220ha2TCx9qQdgLhOYRpdkSVc2gnpPtXtcPAexeIFz8xtfdtrH0hFOdq6+N/P0kdY3hjW0bCXos70+7FnB9lV7s3MCuhfMwrW1gerXfu8MiLFh/9LyWOvs8nhn7/L0QO7S3OhlW9SM/M+9IJb/5hTtAHd2dl+N/Zm0WOz2Oix5C+j/CUD9D9zKwdSfaBYyP/7p0vTY1eVxvKCjvd0A8+nFke4lZwHb8RrQuX+uVTUK45SLXusc46R0r1QIC1Xsc1Sxk5k05qjFTo9rriRN1aTadA1YOQB9EicwtmbJzsfB9MYpnCKgg+GN0M87554NgnkMpd/SChVb6LzfKO43qKCPUImyaOxC4CZoqi2Jkxpb7WSubHkT0Nnm1pwaLJs76nRmG1iJLcUJaiwXzCgvGsB9SSloWlejuCzBOcMxM32ITJtxp/RrTwnRvjkFb9wll6WswP2Sp3Q/J1Dn3H8QYMiuQB8fM9GBPV3hOMMnG+4TyKP4SLwmMFfCGlh5z9MAtd0J5hwldOEE3I6vWZSwW9DL1jjAvBN/W8udfdZ674i1xgVaa2yAtQLYWQxQ5d/xEIUAXd9oXMP89NsHrTxos7XTZpRe4S+vWV/ydSc2pAqb83OAh4SGAAYxRIILwIbMnEDPtvokmPkUAR1gzo6LVOp4XacAXON4XacqXzq9BFj1dEOOMxYikIOZcyQz1855c4la0zNk02S4AFGx3iqAXJ0D1xkA5UxzmVO/A7Dn8N6bRUE5Cyav9jxBuxNfd9RqxW22EwCOSwrr5jrJzvGe7W0EqDfqftMU3PG+YNN8TBYU8wD5+ZYyp64HGOt5tXiX/D1g27yvWD+ezySAXACP22ksQ5bO50qAn+ZBYG/HY/L3o2ghoM/qyPREgFkA9ByJAWf1P0tSN4MiwYnip+5+CneJEMhPsODNf6hCdhSfCdrm0nWO2gaK3eTulnUL78twheL0J4ZqFXEQbFut9PjTOgbiTtow3oME5CG+HylsiwPQx50AiJ+XkFOCNh0X3GXyRadcZ1ohPidjNE6ipTE+O3z/tgPQ6e1ffXWdVVz8xupC1lpDyDrzhWyw7pjDGiWNZrpW+3jWdbD0cIH3bH6E7GPH0q7aDHfWAey8dID+SI6RDGGaKmCGQ6QiVhlbTFc6OdOR1eeSwQfLuXEEhcoMo5nBoOeZc+7tnXM9bnbFgY6tfoD63EqWOhPcfM9wGS+TGjnRgZkv1rrIVrF0fs099SY3U2cqGg1mZChD5Ttb7SAvr1is4tymlTop3jOVm77QWiSzGe2mM26VgK7IVefuxrS2Bdq+1jwBoFe6lrnWzLzVNLXP6wXmRg/3YW8tjYYwKzP0QefZTlB/PUOXCI/mNRXOJa67xIE6Z/lDvtce8eZCX+ZtrHN4eaqv3GaHI+zV5HqAOT3b/xTHf/UOAPjM/2bT03+qLq+3sva23f6fC9j/i2bqc9M/X5odPbo8NZi4ONrVDECfBFNfWhzussUht5P+6icra84VjravOMG2FOF6lcRxVLfrpN2Uj4Nz9DybqAbbAhPRjnEtmFo9mFcN1b+JajWyHTtOYMD1Sc5dAQYjhY9sJD/WhnMfyuRiMC1C7J0/w+sDZOcCdAIhmCqAvIfismS22oPcDD3xipt3044VgDzAwAswHt6nH2A+QDBOdpcT7AikXRMjp8GMVse4w87kNTqoUYSX4PbM2UpXzClZNl3gwHa0AieB3TmcKAN12Rd/1kbpCEeVO9eA8Ls4n+7X455S5Cln2wJVnIQl7AMAk50T9HtxdHLF7NEpN+eOc+t1PZrXA/jZ1gcQNwPIm+8eBGM7a23xl7TmRntYMnQycgrf2nBbK5k6vq4M3gyGvttr+4daR0Io/qduBs8RgMYA+Lqbu+Uv8X8mc8drMFb+3IY90xqOR1iMTZGdV7zA65omQRu1ERNVyTrcaw0WyveB3g+5zpNA+ooC6TDIfqcbCmTIMlWTJRCfZgwpAH26PkffJ3uewWPMEWwBxPO9PpvrbvDW2QDO3WTg7ja21ufw/hToE+TJ1HE71974NQF3Br93pr1azH4aTJ2gzzHSfFeDClUVA5yFc5zUUSU3xDn+HhrbtJRL7MZCgpcE7ymuqNHLvcG1/yfI9PF36P6t+HywGFAhU6jPh9rt9Q7QqSGZqceB/91k5QvX8WCBJAaP/wmL3Ry33jZR4Pb6x/NiBN7jOXfxng9x2fFMEwSTl6kRvkfbWW4hDON9N0L7Yo6S+J4GcA89Pa02Ndczh2iBHH/ShsjcZYx0UR4LE/Jsv2IjSdxBvwBAv6Kd9ImC+0qNo7nMKL0X0kKVOdBEn/jrP1g9QLw88CsrC1hlpQG/tZqra6zz4WGFGE3i56eUknhDxjOcnXMnnHP2yYxg7afPllIUd1sJi9NF92wKLJlJixMA7omcG25mTkDPi5JZDTPXucY2hoKB4UgjeWDkzSgCwaznymOd0p2JarKkdaD+Sqtocc6Ahhaw9ZyZA7zrmLn+EuC+kr+eaEuNKTjSnIscv8frvlRZwnInXS5yNJ7hDJ8rbXUpTg2vRDZ6wefaYnO+bGEJ6ouMK5WXe63W19h6ZyY5ne+WahLE5B1Y+z1AX9krXwH1hjfraivxqq8d5VZU7TXe/nnDG8vXLvx+ZqEzE52qes8+1oa8HXfPs315ste3PDcUa/Nju9i5Baj/N6+b+4fe8Ufe8Ydvwfw/J6j/kaquhdm/tfmJHcszQ7ELYz31SyM9o8ujvQtLI16MqjdDnyegc2bOVnu3E8DNMzZV11HcaR5arFCWGZy8Z3x5AnKy9GmZhuBkV+Od9MFKeBKjTeYE2N5E2RMP4J9KFKdZLI7Rwlhn0lGfiQ/sPTDF+1rxGcBJawDsfQDg0wdw70sOB6sMx/UQgROV6FTFE4zJ1Gm9yXa8gCvhIljvWc3e2WKeLI6Vi1tvPNvip16vn1G5y4KAM23XGvcc3+j8xr1iMvzECwLzXtrEUvnOdv1jVwiM4CRLts6AF7p9DSScl0hN2eX0gI8PEHC2g1W3A2wZxKL2OoEcoN0pMD8tQHe77fg65oSyyLsTw6zl4SlrYgzq3aPWHBNgDbf2W+OtfdYCEG/WnPyANUTudsfN3VYdus1yA9bo/t3PrlrXc5yQX3BrIFyz/S5GrKJI6EwIwfeCrYeAnh5lYyXPUFzF2FBGpI2SKRbHo/CKVyEm8GbbuJbzZ1zi9eVrLlFkE9g4WXBziQO0xjx1brinTdZLJTzXuibKEtzPkaGDyU+U8+tMD9izcd8Sr91eIcatY4WJyxOh0TFx3g4AFoPv4FHtGLa/VMx6pCxR4EvlPMGXLJsteoF6bxOKVj+KgBr32D0sYBt1Ox93vguPS2Bne58tf8761YbP15x/cqU1j0v3dxS4EYJ3mytqcLShMPHlupY7RXP8X3kqeApDKRzkdXY2tNqH//MEtQl5dEeMlvc9Q21obzyScw9FV5jcAenKR2AfyYzSNkF/8g2w9xsCbgKqU6YHKHRFAI7PBkF+6MlZXcqr/YWzKB5NYppaMA4Uu6mXxdJp9jJOll7yBAB6Uxawo57qna33xhtbxMyrL39rtUHrwdjXW9XlNbi+1lqidsguWWY0uQToKLD0O2LPM1Sm5153Mapk3WTovJ0mMwX35CTHlbbpwmg509G+matwjGAlo5/KuylnuXEv1ngKoDrnQ5FU8hCPdU8zeoI6H5OAPl/F/fQXCpGZL3sgL/flhmcuhY3+7lyDq0/SsUCbWW+OvkShHC/9mbbUmmeLbQW4b4qEcM5JDoy8Mcd9TeU9Z+2MWaXincEtPeW4LH6zxraSdobHoYf7En7Xcm+tp3Jv8ubcvjdK9xGfB+yeUG6wzstc98B90M3bnbWr835fWvm6k+ExbP8XOnD3FO82SpavNbil5fHuaQB6+7JCWEaOaxPKzclfM/GfHm8R9D8toE//qS3M/JXNzXCOfn9ptLcWYD68NAZAH24XoDsb2EZvfl7zxrsdgC7VO9i6TlR+MBBczlEUxNkhQb2Bs8lMnajlAlbrVnkmcbLiCZsuYmq5lz5xbF1t+Kdq77IFPw7AJ/MbyY/RLjdZohzawNSpCh7GyY0rYTyGs6IAOhESog0kh1gfGDpb7mTs9E4nS+f8mmIzCeO4hgZgJvB2x54QC3a2ry5G1YnOgsS2NUenGp1ObmyxKzr10mt2rmIg/qREcmT5XFvrQzHBdTCK2AYSLij8RP7x+F29T85Zx5PL1kplMnPOHx4FqB+SuK2T/ur4nWy9d9K7/dExfP+Y7uNnEEfsWf2sL2qX1UfussboU2Ld1SHfmy9ipzXd2msNN7ZZFb4uvbQGlxut7tqPln16teWf3wAWf8LaHgda29Or1v/ymmbybUxY4wpUYri1xfGS3Y4w/L/v2UhhnPWnReH/fV+CxbEip3uYBJjzmAKQT1an4rV6icLN6Sb4+vN9QIZOUGe3hpoKqb35+lOERkU8ijeOX6bw3qDD2iQeawJfTzJprey5CkC6r802l4tZi30DyMl+ybbFyFFgznot9mkP+Mmm1f6mmE7xpul67uOlLwSwdHWbYEeAgjq2yMnOu32ucGAh0M0CwWP+7AhQXCfzpFoBup6DHj/PCfQ4f+d7mwBeR/vaZL3H+Xfxe2Tl/PtnKQBsLRXA85jx5brPC8cTVYkSi0o0ymKDs3f+L8qfSbOgWXp2lFYDV5z2+lKuay2SGQbsNI0D1An+3KyQiU8mPiepoTaqdMALSgccZJLay2Dn3U7nQ6aqMaQl8ZxGTAR1msfQu50ucFS9j4KpE8DHUTiwqOA8feTFeani6fvOwpiqd1/Y91YXvNYaw8HYwzZYbfAaqw/He+72Ln2uFHOcEym3R/m+k5Hn3rCp7HCtvI1l0MDmhnzZJwsA2EX3FeIyWxorAGfKIb0ahtNDNWOncQ1BfVwz+VA99mwjiqXSxwDxB5rFc8ebqnpGqjJ+db72mdbcVm7nTF2g2gRmXfvUFuhCV8P7JdgrsuemDJeGRkBvzQbjLpQv+mJLHtj1SxfzWpvkLGC5v17nhHFKavNn2QJBG/engxzFcbR/XeqtdqDOx+Lv9iU745dhv6dcb3YM2mPscoPTDN1j6kOOhZPJ0/KVAjgbqHud3mYrq2oEd7bb6ePeVSxAd/7ynrhurNXtok/0zi5ND3TTPMboBjfPLai5//Ot8O13k6H/jc1NbVueGIhdGu2pXRzvB6D3LCwOtS0tDbYC0P1gL42OmRO8u+veqNp7cSLkvLCN2edlTuQEBuZOWLlqN85IgMQ5I+eiOWJdE2J0qWLqBPUJsBO2bx2YP7VRnMDGcElmz/WnMbbfs+8DzKNsMB0nKfqE48RGMCaQD3PPGSeaEZzQhnESk5Mc2+xJjpVzH51rP71aYzujnXF6tA/jZDeEAqFXrm6BAt4hrq0lXlSLnrvdnK0P0iY2MVAxq1wlcxavF6VkJ6tXnCn3erlLTuMOnDDZFueaGI1f2A2gLzxDWGh605MQbB1xFzwGflKA3RHj7FTJzKnKb3vI3fCjKgj8TDwDG6+P2GHtTy6Bce+xmrAfrO7mPmuIOmw1wbgetsVqQn+w2tBNVnl5rZWc/9aKAr7G9TVWenmDpRz+0squ/mCtj8+bP+YcmLgTUbWzJX/vsPW8uGbNjwKtFYDenXQNgI7/Df7v/eyIABwI7qOFj3XIMIYFWdVL97qBbU9VewDG5DG8zizwKCybobCNBR2LuFKOVxLxmgJc8wFAAHSuNbIgIFOfrEiUwxpb9nztZ2oyxHK1BiYBXZU36y4XqJONzzSXuFk7GDHb3WrTs2Vf557LWClAEc9VYTCF8QpSkbqdxi+12QJkMvlZvIcJvuogtDnx3Szn9GDsNLlZaePrtrZKVwzU5zhRHQoEucJVpThBn/6OFypI+D9hghxBe5ZjB1kiF4qxi7m3lKpzwXn6XG2a2u2zTcW4Dd+vfil1PIseAjVBnbvpBPTxwlh8FigYvemsWnng8zDGzwRT7Bh6g/e2onsl+Lws8B0icOOS0b4UrvG2waenAexnxOTZieIlHeBk7aq99BCtitHvnZqTMRo9kaXTMS7VdQGG8FnhJgbb777wjbj83uoB6NVXVlvT9c3Wdnu3Nk5GUAyM0RGO62m5bhbObHUK5SbBwke4Cw9Q5/ycoE7VO/fXCepk92yvD+A5j2Vex2MFCeipgHeK+Mt4nbmfnizF/CStZcHyZ1eiXavj5OXONDj6tc+rNR8j//ZFAOuiL0mz9SUA+zxBne13+rz7MwTsy81ZAPVcx9A5S2e0qoxl6CSXpTb7ggRzqWLpi1THt+Qq3IWGM4xZVdIZAd0zlVluTMGR+SYKdbRV83GndP+JN7vEbADvkaY3IrkRbwUN4C1VO4oCB+7V7vHYDegpM+P8nGDuAbqsYL29dqP162Tf7PL0IAB9BIA+es4D9Lcxqb9jgP7HUjIyPWd2bM/yeF88GToAvX9prHt6caRrYWG4fWnBs30loM91e0yFbXacTNX27KgS6+CJaZaX/kLH0HmSwiVnprL1lDrYW2MD6x7nCV5t9+cC9vEyt8ZDxj4Gxj7tLxCwMyd7VDN1AHi+uz4qgI/2VtpuCMiHAOQE85GsSDmncdbeB2ZOK1Iybc6Nu8CMu2jqAoZOhTyTz/qTrlovPc0Bzgo0YeIY18FQEEgkpxCVM7qdCne1MFOCxc65n94Ze1RGL7zeRQMYAPEQTngUzVFRTDbeqUAXBpuAdT+5guOSWvk9j50hDo1B+JyoWOd+ONXsLcw7jz5o/qjd1gzW3RS1F4z+jExjakM5C99p9bePWuXV9VZx4VsrPvtbq7i02soDwcRPfGaZB39jRSc/s8IzX1nm6bWWefQLq7+xS8zcH4sC43mItd49gmLhkLWA9fsfXzTfvVMA9MvWAgZPtt6TEmltT66CCQI4AOwULFK4yHb5WHmSjVGoSKAEW5wAQx8noOF1pVKcbXWCMpm3ZuwAf+6nc8zCcQpz5ymi40GzGc2Qyfg5f+fsGUXgdBVdBtnCz1ermsUi30ezTaUqFCSq4yyac3wAqlrcfA54L7nOQYoMiBiSwlEBd+i1ilbBPfREG8X1cSalee1zAj/ZtQR5XIOTHW2pKx6kruf7vNxZ05Kdc+TAv80bK2mMUPFCqn+J3cjS+fdTEMoNj/pMN5ri85biP991tviZqc+w2XoAujocAHqa1HBTROudz22aXSyAOgGcr4W2DvDZIBtnwctW+1j+fbH4EQF6hA0kX3MRvXiPD5OVv7zqIoCTqA7H5wZfC9ATCOgA28RzEszxfS6VO0Ccdq8EWnqljyVxCwI/w04Bs+sJzmDwFKdNpAVLAMqwoNZbeM96FrSN4d9bQwhY+7X15r+5VZkEFMtx9j1Bz3eAN1vuBGSa0JClc84/kUPr2AjXdi+OtpnSBw7QZb8chOcfir/nkpT7s7KRjZTX/CiKEDpTMr+cIU6MWx7PicL12zZH5TpT2gjWCnd55NLduLZGP3UK4ADqzExfqEtQe56OccvNANzWHF0u8fBnCdC1DkfDGbXXc5XMRofMRbbgGSDT5JTx2kmnLSwZOffSaSpDxtySZcsNSWrlL7/2b/d7bnBtriUu+9dmb4bOOFZPHCdQb3gjnvPCXsjUmc5mmrP7PLc4bxeeTH0lAU4Mvd0D9F4BugHQnV/7JP3a3zL030VAX1iY+6el6dF9y2O9sYvjfcU4mpdHewHqfeMLI13zC4PNAPVGN0P3Wpxz3W59jc5wdMaScrmlSDN0nZw8cRwFTdNi6HlKpNJuL/29AeTjBHOycx5st5P1cZ7O1Z6mAs1nnfL9kZulE9wLCezRnvsaTmwZBHFmokcJxF8D+U+U7l0Ecpq40NSFc2vNz8/J4pRmKvRUHyA793zUCcBDaRHybGfwitg57S3BcgaTnJKdpjRsh8tbHWDNuFO5tD06JuU7DXEGXlxVO75HM/UArZm1xV+0NjBzzsk5N5f6XOtkR6z1zl5ridplLbd2AWhx/fYea7q5A8cu80fusuZo3O/ZVWsI32o1Id9b7c39VnH1eys69akVnvzUygK+1GX2wfct/+iHlnv4N1Z4/GPLO/W15QRusqLz35j/4VlrfRIMhn7W2vAc6sK3W+2NPbj9nNXePm4NKBDqbh6wJtyv63m41d89ofl870v8XzOjbTD3gWPpxc9sGOA4xKIKzH2IxVbJMxRiCa7dLO+BVKeTAJCPUQcBpjzOoBbeRlGdjFbSBOizALNpMfUUMGT3vplpyFTLmW5yat+zdU2HQc6kuYNek+ZU9HhsstgZgitb9SgyJgHeUxzX4OsJPC+u0QnQeR0AO1aWZKN4riOlSS76lDNvivPKaDuc6ICYITEsEsT6812RQUEfwR1fC8hXQJv+CvWZru3u2b2ySKH6n89jmnoA7uV7yn+C+JyK3RwVLhxNsAiebWDWQbba8ywY9FmiGY2KnhfKkGeXSiMQgDiNaagnofkMvQPI0mWRDLAdyLhlHU+vaASlApQizhcoRrliKXfEcM3ZGfOrVvzTkyhoz4rBD5LNs8XOoBUCLwFb4Syhzt+dhTQ+H1yvo/nLGECWQjrO2lnU0ryo7e4+a7qx2fw3uKsOxh6+Dkx9A27bZK23d1oXPivUodAilmtoE5khapuPZbD4uKi99/GscAH7OIV0DGkpvSfR3BB+31AaCu5UV6Tw+gStY70VufGCaJyT8uW5PsVZO5j+KIr9ybw7Et8xY32OrXGq0auf2BJd4uqfA4hTvOS1FAG7hHBqt6fZEsG3NU9GMGy/L5OlM4OdFrGNTtnO/XMK5hYB6lphI4NfEci15Uslv+x5vS+3F4j5L9Y9w/V8l2NOsZpnFGO0ZpVhjP9N6trKWtqK6p0zdc3WG7x5er2zfvV83DUvX1lh8wRyppx2nx7TOc+1Ly1PdAPQBwDow6lg56dtcea9n87Q3yLm7xRDn/zHpanhrYtjA+HL4wNPF8cHspcmh6oXJwa6F0d7AOo0mmn5D0p3td21tlbuwBwHA1nc+o8Dda7scJ7KGbr2fNnq5Am38o0ojid1sTTNTZ9Lyc5igO15tmAnvHbjVEUCTsbxAPN7arePserGh5OMZCw/Wvaw/Ulg4Zyb0ytd62tg3kwSS7giL3fOiqU0VzjLJRfGonb7WQE2gXqQQiEKjdjCz7yh9mAfV9OSg9z1BLeSxuhU3r6Smsa5Xm/8Sal+h5JDVChwXt4BoJaDG34H7VybY86BfR+3drp5AcAJ4mTh3Ofl0Qxm44/c4cCcsZgRP+I2AG7kTuWO+8DSKwNXWU3Yj1YZvAVg/rEVHHkPQP6xlZ79FED+gZWc/sxKznwOdv6p1MZ55zZY0YX1Vh38PZg3WPj9ALD8U9YQsd0qgjYC0HdZw92T5rt73CrDtlpV6I9qu/sB5JXX97yZqSffFFMfpvlJbqz1A+D7UgkutwD0D224mKMSMHaAJl9ngrvYuzYXHtt4qSvaJtmmr3TaCHoWTNMCloAOJqqd9SanwRDI43Wfo3CMoMcWPEBRu91sY/N2tvg5ay9+DMADO6bhTSEYeQHYP98/UuM/13uJXQSC+BjAdQzAPVL0FM8ZX1ckS8g2iYJTHYQSb+2OM3au49W6FDiumxGMxdApaOMYgZ2BemddO0Ww5ty7OkVdA/4cuwvT3DPXrjn+TgI9/24WCFSz8/rK41IFz64W/yf1bs1TQE//Bm4T4PH5GBTDtT2hZ/59ZcwPM+Y2CeBMP/gsN+OmdwN1J61Pgqw7MUTgO5R0RSOjYZkZORY+QtteGiIlsjsVAJZ+WtbH7EwJUNlyB4umR/ukjGYA6tk31PrX6mZKmI1nRwLUwapR+NJFbuTlJeUbcGuj9c4+vJd3o0jdoT311ptbrDVis7VFbbf2O3vkzEiWL2c6gPlo2lWJ58jSycS56sbvsZtA4J9iWloJhXJR+NsjFJ+sLhgTElFwM1+dCniCvkKgGrOUpT7DeTpX55jbXoiiAPeZpnVsnReDWvXUraz5kh2gi5FniY0v8rrfY+ZteWqTC9DVfi9QoAuT2sTamzLsFdvujFPl1yoI0t19BOjZAO8iZyJDxo/CYbn2CUC+6P8Dsm2vW+8/zUdXq1xiORwSxQG0h+oVyrL0WiRXr5x1B+Y1DsxlMFMppbvxaxnYeL+L9q/j3bNL0/3ty7PDSQD047Y4/Y63h/5HbwH9d00U92r6z2xKgS17AOyBS7MTEcuzk0kC9fH+/sWxntmFobalV/2NUvwS1MXSO6vAVoo9MC8WUxd78XssnXNzrqjVOBW0Ez2l6USlS7IxzgirPMV7eaJ2lqfBzsc5Myx7LrZONfUY7TFxIhtIvSGrU4mDsgEuWZFq/8lfncYoK7vouOwG6HbEnVaLvZMKca59Mf2M1qw4kVFIxJOSds5lDnNJu+ljTJmihzxOFnR+G9D++hVZv3bHHZfobVhfB8oaVvP4uFMCbxrXKNwk9boyzp3b2ynrjD9vLbEXrDFytxTBPJojt+PYpqMVbKZZc/I9AvqW2zgRAsibAez+qB0SubU+PKNVoOqg9ea7ddjKz39lxSfex+UXVh74pQC9+NQnVnH+S9z+kRUc+9CKzn1nJUHbrOzCarBxFAgPzouF++8csPKL3+H7q606Yo9VRx6wqus7reTyOqsI3apOQnXEAauLOqiOQmvcRWt9FGidnKvnPbL2pyickq4BLK4B5KOsN/W2DeQ+tsGcGOsn0AC8B8DcBzJ5+wMBugR1APtJGs4A4ASSFEzSDlbXM/SemfFWuyQUq2aAT4aOea570W2OlwRzAO6cQB4FX1GsnAcn8x8C0B/aRB7XnuLVKSFIj5U8l7hvFJej5S/x/BJRhDyyoYInKFDYhk9V6310xeWuwo0BBOZ4r/L3UnUuERvb5ARiPg92DaQTyNEePlvr7DrM8FK6AYAy/z4yfRQJBHfO0+eohifo430/LWGhe2wp3mucLTK7FVP8/9ATvvy50xpwXFHwCO8lFKZZ9+SpP8ikwZfXnMc+vd/T3BiKQN+VeN1a4q7aYEqoPBdYjHJlkp0obW4oyveCQokUAZzgRHIj+EyMetnnnKNPMDlNtqvXXOhK9k2tZbKdzxEXs805c2eg0YgXzsLPhhwKKfrEJdl6S8QWa4vcau23tllX9B5lDNCkZjT1Mn5fkLoALA4kkKNnOwoIqt8pgGN6G21gqYx/VR4jD3i20Wku00erZvpGpIU7dXshQL0szubbim2m8qlsZTkrJ4hPl8fZbFmsmDuV9LMN6TZT8UT77wR1qtsXGwHsLRm21J4nhTiBfAmATBHbUisuAdgC/FZn8bqI2/j9pZYcJ5ajqQzV8F5rnrfp+2zB4z5SmzejKPAl2XL9c9cKl/q8Wcx8xd6VgSyvPdyVuOatqXkRqksrNq8r18XQa7zLWo+dV752jNPv6aMNbJ3XDRCgM/980ib7m2xmKN7mx/fZwtTPpK96m3n+OwXofyDTgLm5/8MWJv7K5ibekfH+wszWxdmx4OXJodSl8YHmpdHuSbXdub5Ght5b78C8rcyFsLQW6VIMo7lQbUmK4Nzc1IE1WRnZl26rSVcrk65xmjfyRMW9dJ7Y/AViduNi565NOpzj5uX0ceeJakw+49cFyjSc6QEL76b163Mn8uKsnCthnRSfAUi7ZLkKhk6mDqAf0Dqb20fvijvhrF2Zdc4ZOh53LO+ua6+/uKgAlm4mqvFECODueHgQAH1cc/PWe/vMDwbdFLULtx+XJ3rv4xNSx3fx91Lchts6HgeAUV0BWB+0xvBNVh+63vw3AJq3dkoo1BZ9AOB/wNruHnBgHs2o1KPWjMf1XfsBIP6t+e8ds+b7xwDKm6353kmrAtsuOv6RlQLAq68AtHFZcOw3OopPfYDL96zo9OdWcnWbFZ7/zkrPfWVVN/Zb9c2jVgfgLr/0neWd/MyKzq+xWgB3ZdhOK7v6vZVe3Wj1UXg+cVes8tp+MPkz5r9/Cuz9hDXjej9AoiX+sjVFg309Om/NMeet6eE5a30KsMiOsa4XN2wAgN4LkO94FoTLmzaQA0BnQAsNaWgyRMGbRG8ZDgSrEmyeVrBNbq1N7WyKw+oJ5GSw6Yrf1fXqVF2f9dznmBUwQ7ZPcR0FlXjtGAAzkX/fJnLvasVrrNjN+dlZGCYrL8RR9Mx6M+9Zb8YDAGMMmHqiZusjhU8A/glq0bOjoJb5ykoZTWHoQc92OEGaIje8n9mZkpANhYrChvh3MYCm3q2lyfJVwO1YupulZ+lvnKpK9Mx48J7n7yGgS2j4XF+Py2THdQ4m5az4RG6K7c9CrDM5En9HnA3QspfZ9U8CFVbE93Y3PgddfL8nR1jd/fNa6xxMDpGQk6l77Uxao7WxXAevWB+KTq5YsktFgB2iIp7tbCrkk69ojj6uI1wgO5EFxpx/V2mIoxnhKoBHU6+IYQ+/DBRTH1McMUWXB/De3ycDpIZrm8TU26K2ylGuE9/rQZHMNj8ZvpvJhyialeMumsnIZQ6/j79LZjO5UY6BF98VqI9nXkchf977HF+yEXwtsM67o9HHbBP+pyWxAvE5gPl0+RObLo11PwtGP1n2BK8p3lf0hWfsas1zqeAX6pMAuhmOSXPeTRbdUSSBm0Rx/lQAf4ra6Estua6t3prvfb/QFgj0uL4ggC9woO9Pc0K4ThQGzF9H4cAMdrdH7vsPYrXXfu0rNq+jXh766+81/8RwZmWlzbXbXVCLt5tOgdyKwQzb/XKMq1FhYGOOnS9P9PUvTw6W2uxQBDBgo1aZaTzmds7fAvrvEKj/oefv/r/b/OT/0Arb4sx7S7PjBxYnhmKXxvtrAeijC0MtC4sD/qUFsfRaZ/faXm6vCOqKTC14vabEeaNOTFxR4sm2Ksm5xP0E0HVwRQnfn6h4ITCfbS3RvFUzdfwMV9lopsG2IkVvbGOPMc4x/4FEP0PpEW4HPQlg8jJM+9TySE+4CEZ+Bgf3w2kLy6jSyzrJcaZOsRtDUegWx8qeJzFll1MIlBctV6yhl5ccoD93Eatk4LReZUucanM/2LOPLXEAM9vj9LXuRXHAth9n5xK/ca887qy1xwPMCchR21EAbHWMHGxc4iFckp23g6mwXc/Mcz8erxGMvPHaZvOFoQAAqHPNrPb6djDmvVZ/c68VAsyLT3xs5We/sLJzX+ooP/9bqwhcZWU4yNiLL6yzrIDvLfvQb6wyeKuVhe2zipCdVhW00YrOfGE5Rz4AgG+2KoL55Y1WHLhG7XYCeNXNQ7jvDvPdPmK1N/fhOKD5e+fzMKuJ2AuWf8R8d47peg2+3wmm3vYsVEK6XgANRwt+FACdiWHWA1AfIqgXUWHOQi5dincxYBRzBOh5jmcoGONqV1OBWO6c2txg5pyhAygJmGLzjN6lEM4DUM6X6SlPUKeb2SRz2NkN0HsG758CgB4uB7Mf2EBujAoPsvPO5CgUIuHW8eKm9ec80jydjJ3jhNHCJ2Lr7BoR0CdL4hwo4308x2KkNB6g7trgMoypz3SWxrWeVz3n5dWuBc/nSVc9jhamtGf+XAI+Fba6LdEVrvkxUsWzg8Hx0ljJUxstS5QV7mjxUwlCuRVAP4DexBDzPTyPIiVeGwico7egcOVKYzf1IonB1hJzUqZF/keX9NoMpTM974rEn9Ru0NeAwE77WPojcF2SAT4uYvisM2tJv6btDs602QYfA1sfkdFMqNrbLJpoyzqWHWmjAFIy7HFFqF6Win6MXbSUIG1r+AHofG83o5BtxWeBR/vd3SiEj0pjIkDHfZmnzlY7WT8FbryNxQQfi79He+xUv9Mwhg5zJff0vPQ5jj8jpj4O4NfaW8UzFE94PXx4vwGsaTozW/VMjHymJEaxrFyNk3Urbp/FbQR95a3XvQCov3Tq9pY8D4iLtFOuNTSCOlfawMIJ6Ev0eGdrvaVAjFzgDlB/RTBvJ2MvcAUAZ/Etma6tz5Z7W65bWWOrnG11L4BFM/SRFm8vvdmbrbvd8deMnVawAHMbafBm6g1eKEvTm1Y9mXqvU7pbt2cB662uAdDFzpen+luXZ4eSl+ZGToOhf2yvpt7Go/6OAvpP/N29NDZWZzPjm5cmRm4tT/RX0t+dgS2LQ60eoNdJ5f6quxpMvcJe0ZOboE7jD6p/G2mskeVa7Wyp16W59mqD20N3rmIZbsWHs3O2IZsL3S4yWQx/hqI5rq4xbY1Cn/x7WtMZZQobBXKFj7UXzVhOrunQUGMw5Zpa8gT3bkamkqU8pqo9UDvWPV66GWNMOV/nDJ275ARtinM4M2fRoFkj2/BydwtUwhmTzhpvblfLvOXuQbDy3dYQAWC+d1Bg36/C4JzsZalO59yb7mzdCaHmj2aIxRaw8h+t+eY2a8GJjOK35lu7tJ/rLF6PAOh/tIbQDVrzqQ1ao53e+pDvVQw0RO4D2G4BwB62sgvfWumZz6ziHAD83CorOfulVV78xmrA1CsufWMVF7+2EgB86vHVlnb4MysJWGW1kYesLHyvlPFlgd+AxX9suUc/dIB8bZcVk8UHrrVqfL8GTD7r2CrLPfGVNd05AsDfrtu6kq5bRfhuyw/4zqrCdxwCtE8AAIAASURBVFnp5U1WGbIFj7HHmmLPax++LvKItTy6gPvj/3XvlFPLJ4AZpt8G+43XrjoPFnHjBOHqZNd299isHOYooiRAEuCp/JZimTG7LwToUwJ1AHn5M/mha1dbQrg4iZ5kk8r3Ct4bdBpkh6eP8/60O9aXftc6XkYCzG9ZC8C8/n6g+WLwPkm7Z4P5T2wg77Fa2QPZD20oL1bRplOVyc6/3lPhs53Odj6LCHUJyM7ZUahNdqBenYRC46UngkvVe5nFAC/VieJ1vs9psrTillj6zIay7jgVPv4/YwLwWAA2Co2SBHUOBjLx3kRxy/vRZ78q8rD1Zt6XroFWvT0obpnU1/rghLU/PquOFWfrnc+CzBd9xnoUvXpFAtCW23tlQNQec8K64s/JCIkK9VaOfBi7iuKVLXlqRzR/B6izyB0DGx/JCJNH+0T2NYAmPpc5EVKsMz2Oe+aTZNBMZ9MsPExAz/wEhgyxeG3AZ4CjJAo/2+7stLZ7KAgfHRWbJyvn7JwK9rGsazKLGU0L1dx+Mof58DclkOM8nGtpFLjNVTyWcQyZPC2WWTx0owiXiU3hffzvnyrRca4u0WZpC1sR59rwXptd8a2VT1w6JG6br4i3uepnMojRfnlDqreyliEh21J3mUCdbJdOb/Jt92cD2HNeq9/d4Ri72u9tHqtvwmP58TiNLzWXX/any/jFZabXq5UucRxBXSr3NhnA6OvX4rim1214l5Pe4CngPVX7kO9NrOpKBjoNZno9ls5LJrBxFj/aNg9AH7ZpPIG50Yc2N7HNucRJ4f5WEPc73n7/YzdTn/lzm5tcD0CPXBofKF8a7QWgdy0sDLYuvZ6fA9QXAOgLZOpsuzOIQjvCJTatKEzum2fopKzrnDECsCfq0j2zjUxvpv5SrdaZplzH5sXCXkgER79wRqpOltJF7iku42yi5BE+pA/wYb2r+TnXztjuo5K3X+5wEWDeYZqVd+Kk1hl3DtcB5vEAFp7kKIpjXCpXezJvypd98OUVnaD4WBTJ9XPfnA5wCRfUCucsu+nmTgA6Ds6174ChXt+qdTJmj5PRkBmI+YCpcz7O+7c8DJArW23wOrDtH6w1cod1RB/E4+3WibMDwM9Y07bovZ515lqrC/pOKz7c420I2WC1IT+gIDhlZRe/s/qog1Ybvt1KAeLlAb+1UrDz6itr9Nj1AP+qK99aJQC9CoCec/pre3l4lRWc/ESsu+H+GTB0PP+ofVZ06hMrPv2ZFZ771hrw2JXB26zg1CrLPvgbgXvemQ2Wtvd9qwzaYnXX91gJgJ6t9ZbHVyxt/4dWGLDaCs58BcD/3MourbfKsB3WdO80bvvWCgLWAeD34XF2ovg4ZI0oCNoeATA416UKu/S5N6d22w2T0lO8lEhySqrwNG+enqXW9Mpu9gwzAMC2psCMXQv7uYxVJKYsS1BK37jEcDEuqY9gSN+CtFvWmxJh3cmR1vH8unUkXrfGmEtgt+6ojDxu5TePmO9xiHWm3rfOlDvWCcDvAeD3ZUQDPLkr/1RiTG5YSAPArHdFwj5WEaK2OsEdBQfBnOI8svIZrr9VeBbH5c/F2CnOY24BxXqTnrESjXo43x/K4vYGnjtYN4+hzLs2iL9hmEUGhYfpblY+CEbe/jgAxdce8z8NtUEULL0vQqw7KQzF01UBOi2Bu1CMtuP93/HsikYq/gf4PMSc1BZHT+xxq8N7xof3cBtAvRufC/oocKWsNmS91QSts1a81/vw/h5MCdHnhEUvAZ7tb+pLRmgSk3sbxc0jGbxM5EerIObt3DPnzHtMc/cI+TawSGhniBA1Ifj8NEejSEQx28YCGIUt44IJ5iNpwfh9V2wErFt2tHSxSwVLZ5sfv2+SznFe7CpZ+qwiUmPFtkfwOWZAUh+LERQHfA6TpY8E7pMMbCl/KACX8p1COYI689K5l05Ar0sBuOPrmgTZuDIWlWx90edU7HKJ4065AlfA1NuKAdx5sngVA/c7cKc97FKb1573WvAE/+XGNDc39yVKVEeVu2uB1zvwfW396vbR3fpa62sgX15JVNN1v7fWRk92rxAY9btjxO+lsTW6eTlZOtfa6O/OtTlZxDYu4T4A9K7B5ZmByqX50Qh7Nf0dzv9/IRx4227/fQB1pui8+p8C9CkH6IvjfcOLI90LEsZ5++h0iFtQBnqlt4NeJlW73K+auG6TiyNPYE2AF6AL2D11sOccRzbPIAzt86oN6RK6Jis5M3yGEx6NZuK1nz5R8hgfyvs4adzSrJsHfdr7PUV7X1KQi05NvIoTGeNIz6kdT8c42ppSmT6UGmr9TJtKuuqdpIIVlMLQlRGwH95Otk2FevPtnQDm7Zpb14YCYK//qHZ7G056ZDh0duOKDufmtL9ku7yeDDtoLRj1foDZYQF16y0AOU5m3DHnPnoXQJ/378TPt/EEFwnGzp3diC0y4PCFrbfqy18JnJvuHFSLnYr2pnsnrT58q07E9XhOvojtODnuxgl4g5Wd/9qKAfL8mVJcTz+zznJOfoXrX1njgzNWD+Cuj9xrvhs7AOgfWsHpL63o0mZrAtBnHfkEYE6lPAqE63stac9HlnPscxQvhy3r0EdWHLjB+jMf4P6bLOvgB5ZzlOz+Y/y+ryzv+GdWDqaeiwIiefvPrSLoB6u7wee0BQUBnifYe0dsgPUm31DbfRisl6I6zqll6QsgH+NKGRXwnrGM1O70/Ff8arJb9aLOAgXdeOFDF9taTmB8JO9zAuQQHe1ywcwLYiUUG0i/Y/2pUdaTeMM6n18DGw81f1yI+R9dlY6gEkfNnTNWGLTL0k+vt4KQ/eaLvQKQvyjAb40PsfZnYdb9Au8xAKvm7yhIhvJitIs/rsLhoYRtGh0Vx2p2P8XCE+Cu9roA/JkAm6JOJdLhbx1mmhr+D5qb82s85hCAm575Q5zrv7wu1s22OhMG+1CQkGmz49TJONvkawD0c+bD61kattf6smNVMLXFnJVlbweK13oWlPeOmQ/vH/r116Owqow6Lq9/ijXpgcBitSp4rdWEb1LUcFv0Pr2nmyJ+lKcBRZMUZPI9y89QH7dDuM8OxkzB3JCCikJlyTxREK2db8Ufc2QFJk+dy1hOpPzbmWPOREJud7Te2ilQ90WgKL6zS/kFzXf3WBeTBMHih1Mua11tJPmyFPjqDjCHnWlvNJPJjJIdLPfH6dk+hcvpAgfsM0UPdB+lHiYFaUed8/MJADiNcPh8FqqfOnMZ3H+as/VKOscBvGvAyAHOc8w9rweQ1yV51q7PnZ1rQ7oTtnWW2GIHlerlOgTctHjlpad6V4gLZ+bcPef96RZHAV0jRXBPbLkpWYxfM3oyZgLu66S1Fo+VezNzgPqShHI4xnFMdDiQ92bqNtbsQJyOcj8FfOWeN3re77VuvW3QGc/IdnbQ9wbQpwfKwdDDbXFqFcD8fwIL/te3Wee/+6D+B3ohXzEqb/K7penR64sTg9xLHwSgzztAp2NczWtQl1scd9EB6Nwd5/xztpmGH/k6HFvPFbAL4Hmd4M4ZO1XC7WXyepf5SK0X3ELHLZrNiKG7JDb6u4/k3taHWXGqFLYRzJ/jRJPoZuicp/dQ3Z5wSXnoTCNbAfc2gGn/i6uuAFC4SqBa66zih5mixmQ0rrCBJXTFHAaT2IMTzo9gtDusNmyT+W7uwElnv06CzVHuhMSWYR/tXnG03zskgZwv/Hux4Ob7J7WW046TF09i3MvtFKCfUEZ554ND+P5usfT2u/scoN/4AYAO1hS6zuqugpGHbcaJO9BqvLUy/91Dbg55C4w+ciee1w846X4DYP3Cco99BDb+qVUD0IsubrS00+s0J6+P2G3+2IvWcAsn6tv7reLKOss/9rFlHv+tlYXgb4vYa3lHP7Scg++iEPnBCs5vtNR9H8plruzy95a0/ZdWF3nUusBYMw9+ZJn7fm25hz+w/OOfWNqeX1nazl9Y/okvLW33L/E4n6Bo2A9A32kl5762qqsbrAHFCB3x+gDo/SmRAvUBMNHBnPvaTWcW+SAd6Ah6Jc7+l4x2StGrqW4jQrGsLOgA6LQ3LXLtbxrcSOyWdUcgOAgQp+EKV+m6kiJ0tD8Ns5a4IID3Sau9c9oawcpLw/dZcfBOK7++31KOfmNxW99DAbTRSq4fxvf2WxUYe92dU9YUc9655gEkB8iW8dgU+/Wn0bjoJkA5RmMjFiIsNDiz5+aEooBpYUyvez5P2RY/cHa5KGD4vFUk5DxUa30w4y6e/w3rY0iOB+htMaet/dEZa485Zd1g2CxOOuMC9TVjgpmWVx+xzXLPrbXW5xGalbfcO2xtHC+9CMVrvQ/f34nXA+/j6JPW8vCs5V1CMXj3mLXcdUVpO96DTTe3oQhcbX68fynOpCiTLJqdn5Lz3+A1XIficZN1Pjor/4aO2BNqa0ssx6I6xW10MO54CCDPrtlEUYwTy3GEJQMa/K+yXFuemyTUirTdP2B+tt5R7KoofnJWoUUdNGhi+htn6WD68oHgBgrXRjNQdIPBsxvnZumRzkWuMk6raAR0Ct9myh6rW8AO3GBauFZcp8HAJ/Oi8LwibKronr2ivWttgsRvbMHPkZUD1BWL2pwLQHfZ5rRxVaJaLS7B4AXWbSsJahVKSFvuKAULdy5wBPDXqvYWJ5ZTS50ucXKFIzt/4WboLVn4mSInUNNR7yJVZfXqgfPoG5X7yvGatUsc1/yakcsC1otYXfYyz1+HsFAkp511F+TyOpVtpIVJa4M2PVBp86PXwdC/FqF7C+i/F4D+v0gIMT//P2x2/MulmZHLi5OD2Qvjfd0A9NmFIddyF5jjUqEsnYxOrXIucU2FNu935jJzHqiLjRPUmxxbV3vdx8AKgHlbuSIo5Sy2YsrBxC4yG9qD8kRZ8kyiJgqC6ARHD3e21YfkEBehtKlB5kTjBNv3Igwnu6tiNnRBY7RoJ5hHF+NVaaiR7gw26OBGIwq2BodwDIJxDKbfkBkN244dOKFx77uJ4jTOym9st8abu6Vm93tg3on7dMeCUcSddOp3sm2At49teZw0W3HCbOV8EPfjjJwGNEw+46XEb2BDnff2C9A7UDy0kqVHbnXuWje2Ati3WDMAmKyrOhIn3uhjAnLO7dl+LwOQF5741PKP/AYA+57lHH7fSs98rvl5Ycg+yzu7Wi14/wOA2L2zYGE/Wj3+juIzX1resU8t99TXKhTKAfAFRz+wvEPvW/31nZa87xNL3fELK7+0Fiz9M8s+8oW1gd3W3Tlmabt+boVHAeoA7+cb/86ScKSCleed+tIyAO4VF9daQ9QBKwJzLwn40qqDN1rTncP4/wdpfkurWQJWF14fslHuq48WPbEBvH5kvyMEaIIhgNsFtKQ5a1ncNgH2O+q107m+yLCYEbwv+gB+fOy2R+fxeuP34GsyUqruW5+EgXFfAJCfsJLQnVYchALm9klc323ZARstC0VP3OZ37c63/2QJez6zlJNrLRO3l4YB8IO2W8Od49b04KwEie3PglGUgAXHXbSuhCC3LYECYqw0Uep95pbT0IVrUxRt8u8YLohRfjz3xQcz7zgvfOYTMLmOTm5p11XM9CVH4n90VYVPf/ptzcqVbU/xZdQe84NR96XexHv5glrprQ9RLALw669vtZJLG6369ikVST68N5qjUYzif8Hv+wDmjQD26mtbrSXmjOWd32BF+Nt8kbut9fYugTl1HDX0Xsf7nWzcj/dhh7Y3tlpt6AYru/StFZz+zBoid6EYpTD0sNg0cw/4WaI3wzB32TMjvURDFMe5d20s747m6TyGCfRk65yrUyTn+TnQIrnl7m7N0LvY5aIbYzwDiY5rjMVigfNz7pmz3T/ClLcMrpwG67M/7PnCz3LmTVAufywnOKW2FT/E+4aRs/c0BpiqeCogn8y/ZRM5t2Q0w0LgFefqVc9suixOTH2OrJyqdP9KPGqKc3wjsOPrRX8avpct1v06Na2rEoBOn/Zqd7SXiq1T3b5IsRzd4TpK1K5Xu70p1ZZbs2VQo3Y7hWyce79m6M3ybreVlvqI5+0+6indR37iHqcI1SbPlKbx/9+WH3QAbivZ6sMuelXxrUN6jHkbZ3Rqf+XS9DAAfeJrELq3gP57BOh/rDW2uYl3FKk6MZywNN7Xyoz0V/1NS4pP7a2zhV6fLcgGtspeAZjnuI/ObGkK5JR5XSBGPuMxdLF0+brnyv51hgEVndXOMrPeKd+57yvDGSWwce7otStxUqQoaSjvgcJZyAaYMEW17xDjPVMBxmBRMpB5HqQVNv99gCpXyeICbABATcHOCI1ieHIhsKdfU2tuCCfgPjD2npehLsL0AU4yAO3Wuwe1ctYKVtx8h+B8ECezY7Jl7cEJp59paY/5+CcVzNIJZuEDENeAoTYDuOn81vHgoMw1ePJjsAqT0viz7WBC7QDzPhYPd3ZZx+2dYuhNN7fgRLpZ+7o82fL5N9w7Zb77Z6wxYofmmsU0jAHzLjz1qRUcBpgfeNfyjrxvJWc/k8q95NIPVhyyVxawTXjejfhZsvBSAHRN6Pf6+YIz30jV3vLghBUe/9Aydv4Lfv5rKwhYY0+3/Ltl7fuVVYdstZRdv7K802usM/E6gH+TFR77wNK3/8wS1v6lvdj415a+9R8te987Vn4ZQIHHbbixA9c3orj4wMoCv7Laa9sk0mKuejMKks4nV2VOQ5EcfcYplOtldOzTSyioItUy5+xbwseSeO2uc4WRbXS2twmCQ9lO0d2ffhfAdx9AHqANhub7p1C4nLRmgFkDCqq620etMeaCVdw4aCVXNlv++XWWefJbywvcZDnnNlrKgS8safeHdm/1P1jEF39tsd//whJ2fmQJuz+2wss/Wu7p76zyGoo5FDLNYLdU+HfEX9LjtwPUO+IvWGv8Zc24+1NZYLrYUib80fiIO/d0dGN4yhAKEDq7DdJDIeuWOhH827huNpBxx/qSblgX/gb6DLTHncdtdzUjb4zco5EPtyk64/E7H5+ztgfHrTYcxR7YeEPYD1YTstlKgn603rQ71nL/iNXhe234n/Po8oC97jreWw9PWV3EHsu7+CMKuX1WFbQWYE6R54+yY627tgW/Zwsec4OKyRbc7ru2yZoA5EVnv8R75kurxfubBWUTDZDoy473Mp3n6N3AblhPglsXZVeMLo4jXD1LdfPwoZeXwbKv2Fh6OJj1LbXsuR7X8/iYGDkPfo64etb7NEBqe7o5jniGTlwrpXPjKNXvFMuB8XOezjb/LFj6rMA8Tv7sc1VP1GafKnmoEd0EQH2Sc/7iGN2fVrL0eCfok6FTADdT5tbZODOfa+QqYr7NNzIxLcsWGjOcX7tyzjPkLrfUUgggBxj31dtiT429opEMQZwzdcakcj0MIL5IQVx7sfa/l+gGR5V7a6bY+hIFcQxOGfRS1hSY4incR36yf/76cCr35Z+C92jzm59dabN7TnNLEsU1eLN5D9Q5n+fPDK4EwbQR0NlyL12aHQ7V2vIbhfvbiNTfjzW2qT9ZmJ38e5ub2rw0Mxy9NN5buzjcOf6qv3GB9q+veuttgcBOpzhUpK9WrF+Zh74C5D4nhJvxAlrUgm90u+lk7LOdVTKRkW0m56N0+dL+baKAXEymlN7bsV5r9bGLTwWQ82CF3v8yXD7tXZwtxge6mFRc73hIAD2Oav+c/NrZHmQrlG2/EYF4mE5Cmpc/v6SoUrbr2W7vJmsAY2i9C9BlUQBwVsLZXc7LccIBOA88OWV98afkEMcwl95n5/Azh2TO0gomRNEdnbboPtenk9NRgT/z1en53nV/H37PIevG9c5oMP37B8DY94jht4MxtYE9tYGdtcYEWBNAyYcioSZkvZVf+Foq9tIAAPrxDwSwxSc+sZLTnzswP/e1FXM1LWiDREdN93Eyv3XYqoI34ed/wM9+a4VnVllR4Dqc5HdYS/QRMPN3xPJ5n+wjn1vKtp/h64+s4sr3YOLvmA8stet5GAqBVZa27Z/t2eo/AzMHmP/4j5a69R9kMVsXvlXCv9Lz36idnwcWX3phNcAC/8d7xyW8Ynxr2+PzcqrrfB6i+FdFx3obCPQjlylKOtvy9xWN24/rZO7DdENjVGjyDetJROH24hrYfpi1P70ix7u22LPWRPEh/k8sXipCt1ll2C6rvXXUCi5vtpxTX1v6sS8s9fDnlrT3I0s5+Lkl7nrfnm39hd384v/G8Zd255u/t5h1/2yx6//F0o+ssoJz31nplR+snut5tw9bPf4W3+0D5n9w0loeBSq6tuURWOaLMO3j94NBdydSnxHqFZ3RypMn6x7idQB3Z8JVdZQY+TuU/8j6APK9uE9PYoiAvAXMuxWPy8dsA3j77xwSoFJ82Y7f1SCjof2uW4TLOgJ68HrpFtoSmVtwXay9+d5R8989jP8LgP0RisGovShM8D7G612MgssXfdoqrm6wavxsU9Q2MPvN5kNBWeclpdXi8F3bCHBfb40oJhoA8NV4/9BRsOzSGrx3tuExd0r70XHvgBTs/PywsOFnkAmHBHiBPdg1w2HEtGnXmnRJ6W8TTFwDw6ZehS6L2oGnWyO94vHZ5GeIBx0d+fMqxFNCBOgUuI3gcgSFwWQhHd/u20zpIwfqDFyRoC1B4jaq1qcA5HST5LmERcB0Wbx21MdxPmDgi/bOAdbUaczXJDlQb8qWr/6rBhxNOfbKl+WiUJmF3kCWDkDuWElPq1VEKtXsC36q2otc+52ALnV7kdeSB7hT3a52O0CdTJ376NwRXzGDWVGwv7Z/BTCrxd5Ji9Y3jHzQ54RzQ659rv314Z+ks4nJN7tW+6AnuPPYvzOskZXsko11ztpEd+/ydH/+0tzwRZuf/NBs/r/Ln+Stwv33Ru3OOfqf29Lcd0uzY9fB0MsXhjqGF/ob5x2g++y1OI7CODJ0grm/0LXZfU6lzLY6DwK72u1i6nkypZnxFzr3OBpnVDjLV5lplD7FB48RnTEuNrL0iVtT4/55juffnnpN1q5k4z3Pr2qmyKzzXlzvwomRTJrtwd6nnid1prOqHMu9pet0zeI8feA51bA4GSXQBvaG81uPP2Ot98HGHxzWvLBZFq0HlIDGHV6qdbk3S/DnLJ4FQc9TsMI7R6w59pyc54bBQjSfJ6gz7AX3pQq+Bz/XF3vI+h4dxvVDUrjTdIOtx3YAO0G9495eawegt4KJNT26DLZ5AifYTTjWS/BWEfhbOcKVc/ecSnccVQDqqsvf4mT9g1XdPGzVV9daHU6+tVEHAQIHrQLfqwvbDMD9LU7km6zkwnfKTa/FbVl7f2EFxz4RIy88scqydv7Mys6tstLA76zw5OcAlgvaRef9Etf/pSWu+XNL2/x3lrrl7y1n379ZxYVv5EDHcJisfe9awfGPrej0p5rv1+PEXxsOIAjeAHDab80oilrBqNufXAbYBIiZk2HzdaP4i+OUbq1ahVnPixCNTgaUrndLwjCCXA+LADDjOu9vY5eB7eQGgG7hxQ3429Zbwfm1Vh6yBcC+A6z8G0vd/7GlHvjYUvZ9aI83/LMl7XrPXuB4tvnf7daqvwZD/wu7jcs4fO/xhn+yl7vft9JLGwDomwDkBwBkuwWaVWDDFTiawH6bAex+/O7G6KM4TlgH0/PA4DvBtIfzHmrOzrS6ttgzEqr1Z9x2K3zPrgL4mTV/zbpf3lBR0pMQJPbdDEBvxuvepo7DcbXLG7RdsUtiOMbi1oFB+yJ2CNC5QlkW+LVVXt2oLYOR4idWH7VLQsrGO/vwGu+VuQz/97Us8O6dsOrwbQr0IchXXgE4k4VTjBm1A78H7D1oNd4/3+LyOzB2ii+/RzG4AZdg8FH7VQiWBK7G++tHaUzoqdD+4KDbfUfBRa8HCujoCTGUEq7ZOD8nAmPOxNNwOzUruBzPjpJinkEsMnJ6ThAPkKENCwGmFHIDRatrZOYZNyTIY6t9LOemnCLJwKfZYi+JsRk6wHHHvBIHxWycfdclKeJ0rsatO47m3rFp7qaXxuHxrqtlP4NCYJ4tdn+29tHn65Jtlj/bkgegz7B5Hxh7bQpAPUPe7LRz1Z65BG8A7u5Kt8rW7gB8wWPlb4Cc14udsYzvpVt/80JexNAJ6HRyG6hywrWR5v8A6lpfG+tws/ORltd+7g7IPUe4lZm4WutNP2nH+wX+Duibf2Iny+81ezno/Z02M5Bu82MnbXH6Fz9ZWXvLzn9P2u7/VcKIV7OrliZHghXYMtI1PN/vn6f1K5PXeEgU11EBhl7qzGXomEUhnFKjsiR6o6p92mPr9GdnETDTUuaBebLb0aUACkyd+7kuD/2JBHFTAvh4GwUzZ2TjCGNS6Q6XyDn5ZSna+5JCFI3KiNReADud4dj263txWUIaN7u75bynCebJYc76NQknDZ548DODadetn4Euz5iqFghAPwwgP6DWedv9o1rzoWqWiniKesQecJKiJezQyxABig8nVDpxsYDg93sen3CM47mLYh1kjvpzfB1/Quy8k12A27u1f04/a7L1rnvcy91tfrbfYwKt5l6AZt91YEdst1ddwsn7/BcA9S+t+vJqra8RUBtCvwcj/k7K7YrgrYpObcDJlzvlVJmX4+fqwjZZ2cVvrTrsR6u99gPAwp3Qcw+8A+a+Dif4gygUVlnegV/ihL4Bv+MrFAurZPFaHbrZMnf+iyVtADPf/LcA/X+2gkO/tIpzn+E5MJ51ndr+WXt+LkAvO7/K6kI3apWuOmiN1v3qr20VKDSBJfoBLGzFN9+n+9wp6R76wegYoEM3PAI3VdydAEi25pnLTuBvAnB2ohhgXKz+zuAt1hYDEIw5LWaef+Yryzn2qWUe+dSKL621ogvr7CUYeTIAOmX3ry15168tds3fWcKWfxdox33/M7v91d9Y+Cd/Zo/W/C1u/xd7sf3fLePQBypoyoM2W831XVYVvt0KA7620otrrAz/25rreI2iaaqzw2pu7JDJDtvyzfibuPPdl+pm4t0AarJkP95DUp/je2T27QrouSj3wI74K27mHXsWR4A1glk3x54H+B6VHoNFEbPsuYqmEcy1zfi/bpKug4p1Zt2X4znV3dxjvRnR1oL/Uz3DfPDzdfRJeHQWP3dCj8MVwsqgTbgviqt7xwXUVSi2aI7U/uCotZD1hwK8cTuLx9qQdeaP3IrXkP4GX6FwWIu/+zB+H/43V9YqrpevsS/yR3Woup6HKG+AY4FeFMncGmFRTTc6ttFpo8yC2nXKInSdRTYd58bpNIdCmHbKw8xfp4o+6bJa9QT4MdyXs28Z1Ug9H2HjeVE2WQCALnogI5mp4ocA8zjN1GdrXgCc6QfwXKlrC5yHN2XZbPULMff5qudg9jH6vWy9az4OwJ2vTwWgA7xrk9RufwVwnvdl6Haxdaar1b1wanclqAG8ydTZYu8ss2UBd4HEbi4ytcQD/jKngK9PAJingaFTMJctMDcCeX8lLmucs9uKW9xPWu7MLV/ZLbeVXfOBemWis2VvCmhp9IJaml4XBf/BaU4M3QP0URUHS8uTvZPLUwOty9NDSWDn+2xh7p88D/e3gP57Bejz8/+XzU99vjQ9cnVxvL9wcbh7cLG/ed7N0J2f+6uuGjnFcX5Ols7W+0zzG+Gb4lPpHtfo1O7MUJ9pLXfZ0XIKe+miM2m+4QmgGK05wUqa7XYayxQ/QlXtnOIGyKIByH0AUQE5DoEzFe9cTwPjllc7V9I8FS5PGsM6idx0GekpdJQLVoDKYFKQfo5hFwOaoZ8GsNFulS3I7Tg5ndH8fYB+7s8vaoWGrUE+PgVQY2AYPWCT1XdPqdXYz/khW/E0mnl6VlGsw0yykk98oA08OWO9VPQypQ3MvPfxSXlfE9BpMMNdXD9+L1usDY9DwPppSAPwDd+sk2zNlW+0zlYLcK84/5VCWpoAztVX11hp8DYZjRTj9oaI3QIdmtE08ESOEztFT2RntaE/4IR7Auxrm8C28PhvzHfrAFj4QSs5ASA79TFO0lus5OSHALSNWpequrTasvf+m2Xt/lfL2/9zKzzyK6s4+5kVHPm1lZz9SvP3lC3/j+Xu/bkVnfxYowEfnjdX+Bgu00imHrxWz7Mxci8Y5CGw9cMSbbXL2cytY1HF3whQkcUtQKwFwEABGlvRTXePSGDXQttbAGxBAAqOi2vVom64fcAqUfTknvzcXu78hWJjC8/+1grOrQYb/5Wl7nvPknf+0tL2vGvPvv9He/YDWfi79mTTv9r9b/9WYJ667V/x/V9a+v53Le/4J5bLwgSFTvW1HVYRthmPt0qPWRL4jdbxKnFbDf6HVWH4/1/bZj48dyr8W5lVj+fKQoWK85aYs3h+AMqoA9YOQK/H390C4ObtrQB2/8MzYPjHVeS04LosfmMDrf7WYXVZ6vB6VQWttxoURGyj+67z/7kZYLtR/8OGyO1WjgLMh99RD5BujTuvToK2DXBf3609LtQncpc13NqP98YuPBaY9YPTCuepvLoOBdm3eOyDKD5OoQDkLH2z1QWttbKAz8XWW1Fk1oesVxHJ16ziynoA/HcuUyDcORlyBY2jD44dWgD6tHnltkl/JgoytdQD5NMwqM0SJ0jVCpoK7iibIKjTCIb74nlu11xtdbL6zOvaa2cYiwtluq3rE/l3VBBMFUbr/hS80at9puKpA2Aybl+aY90AaALzQnMOAP6FQF4tefq9l8erVU81O3fNFdbSkKaCgDPx+YZ0sfNXjdnKOmdxoGQ1snR/rlbWlimK4+yc7FyJasWuJS8xXL5m6QJ/L6J1mQVBR6G3slblIk4HPXOZIc/xbUXAtrK+phZ6w0/S1bxktUHP8nWo8bXAzq2vtUj4RpW7vX4cebevtO8B6H3jy9PDzcszQ09tYWqH2cLfeh7ub3fQf48A/b9I6T4/9enSzOjFhbH+/IXhTgH6AsNZ+nD01NmrTgriHDuXBaynbtccnfvobL83uWO2vcJmcNDaUnnXdRnOvpPOcbS7pG81wdwTxFEMx7n5WOEjieAGaPgCQO/jehqZOY7B1DCtpgynRwBkQ7SPLjCneIZJUXl3XYAEmT0YAa0vh9i2w+UwYyPJ9pNCbSgzyrrjcDK9u1dtRCrZuXvLdnq/15ZnqAXneX2Jl/V4XMfpT72h3V7tu3v2sL1PTgn4OSfk3JDe1kNJ9Ik/rdY6gX5YGesu3Y1BLxQXubjU3QJApp75Hl/RHL8J7Im77FWXv3Yn1ND1VnlxtSxe64LXyeu9GCy5FkVFZehWZaM33XetVT8AsOHaFnUb6q5vBzOnwGq7tQEEOfMmUFMU14KTO+expSd/o9tYRBQdeRfgehCM74yVnvnUio6+a+VnAPKnP7Sy0x/oeuGxd/G81lrBsY8tH0y/8PC7mu/XoFAggNeHbVAx4bu+xWrZxr2yRrGvnA03s1UdtU8gRSDnTr3bJgDghGyyKvwdBPYOgF4LgIp7/VUhW+RDXxy41nKOfCRTG//94/hbt1oZQCZ9P1j4tp9b2j6A8qkvrPTSGksHmKfv/bVlAKwz9r1jSQDupB//FcD/S3u25WeWuP3nuM+vLOcw7/eOZR16z/Ip/tv7Sys886VVBv+A/+sWFEpfW1EAdQpfaZUr//QXVhS4Wr+3Ivh7FFDbNW+vjz6pIqDuJt5L0dwDP6KCqTToB6uJdLG01QBqH14bgjm3ELhSSMBvxuvSiP9Nm0YKh/F37bCacLb6wZgB0lWhKCCCNqgNXheyQe14vra1BO7bDNLZh6LhKn7/dmkWqsO26n1A333+nxvwv22KPmQ1KLSk4AfwsnitC6VfwA4Bv//2XhUMfM/VBq/B++EbieX8FMmFrdemBzs2eSx4UNzU4H3UAJbeEL7R/Ld2W+ezK8pQaH94TJ+nodxoFLuXHEtn2uGT0wJ4fk7HANSjaSFSvVPkpj327Mg3iWg4lKiIYwLXJ/I5NgPgFz30vr7j9t8pciu8D7Yerdn4ZHGsGDqBWOyal2ToZNgA31c+it0yFW86p/3zRLXmqXLnqhpn5fy+nOL48/4cfD9V1x2IZ7u2u+cKp2Q1OsaRoXdWOMV7Z4nsYeWdzpU1z1hmseaZLdY+cwr3bi+bXMy81mude6x72FO+s73+Opyl2Zuf1zuzGB50fKNXO5n9oNs5d8Er3sxcu+jebvvIysqbB+gjAPSJnnGbGWpanhmJX1qY2QpA/xuc/9+ayvz+AfokAH3y46Wp0cDF0Z7cxaG2/oX+plkw86WFfp+EcWTczs+93KWutRRojj7vdwK5WX+BmPlcR4XNdlRK3S5RHC8ZP6mvM5QqxfY7M9IF5oy5LHQZ6FwBohq4P+W6AJSt2f7kUK3IDHnxp0OpHqAnBUnwNgLQ5omBbfrRvGjZxg5nsMUXqbY9gX0QP0/RDuffNOroYH7z/SNqt3c9Pi2XOM6+u7y0tn62+MnouaKTEq71nKrbOGk9OKW5Xx8FcopeveLAnKwiPVQe2Ay6oC0sIyqdbzzjWs95qzsArZgjspelS5cPLKo5PtjaH52V+piK9/rQdZppNvDyqnOCq6f7HFX1YFK0ZqXjW1UwAO7OQTDCQ2q7NqqFihPtXbA3MLNanLhbHxyRYK7yIhj+ha8klKOoizP5khO/dmEwOIkXH/81nkMAWCIYauAXVn3hU6s+97FVBnxkdVdRQFz8Atc/xu9fL4V9ycn3VRDUXGarFs81HOwNbE8FyrVNAKA1VnFhlVUB1Ll21QxGSIbIy3oUHfV4bmz31oF5Vl7+TiMCMlC2hlkAlAausZILYI1XNirXvfD05wCmzQDGQ2CMawG0qy15+79Z+k4A9N53LR+ATgFX9uGPLPPAu5Z79D0c71varn/Xznzq7l9ZwtZ/s+wjHwC4P7Pso78BQ38H93/Psva/I3AvYLgNQLsk8Fv87tVWdPZzyzvxsUCdwTbZxz6xnBNfWDEKi9LgzdI7FF/6Xml1JZc3WskVsPdw+u/vtlI874Lz30moyDY9/QEqw3dort0AcK+L3AdWflCAzlS76ht78TPfy1q3HD9Ltz8+Ri5+L41gaHTErQWm5nG1kq93w6191vnimjWynY4ih4ZEtOCl137t9R0KB2p+cAI/txEFxz619bmCSQBvu3dIK3Hc6GhCEVYfthGFwwYFCdWFcCSzXTvjftoW43NSjvcNNxkqLn6jTg/fN3qcx2c9QepZrWfKDyLtur6mMU3P46PWGXNIAUeKMPbm51TETwKYpzygZiuczHuK7XSCe+lj2bVOlzxQsMpUKVXrD3Q7V86m8bVuw/0nAPiTzEGvSJAF7xzZNo4ZttsbyLQzHONucKI3N2v3Doay+NLFuhdacO5qSBGgs/0+R8Ecle60cKWtK9k5bV9xvGpesXglMy/TXH25F0DbDebNffUel3S2UBNvi1Vxtsz4VdrIMkhl0M3DfwrqYuEE9ZU4VbXP/R6gN7gVNwI/mX1/LUCd4O4OGccMNLyZmw97/u+aw//kGGlbWB7vHLdZVA5zI49taWYzAP2v3gL67+Pq2vz8fweg/2Zhauj04khP+uJgS/dCrw+A7lPqGlk6DWbm2l2rfb6lUKDuZunF2kVnSMssmXt3PcA82yYY0FLvRHIzHqBL5a5ACrbck+VpLUU707ny3KpSHwCXjJyGMs5AJligOoQThebqZO/4Ptt3o2rNuWhHGtHQ8EMMPeOGZ3BxUwx+4BkAG6yc9pjdz68KyNsI6jgZ9T0JVHAFBXKcAdJhjnvsFOMNqyNww5rjLoFtBcg8w52UgrSXO0pXrJxIt67DVntiIMCbLcfTOM5I+c6YSt7eGQswpzsW41dxMG3N9+CM9aTdVSZ6c8RWx34AeE28DpAk8+WJs1Wz9m1WeeU7q7/rucCBPXEeS6e2pii3s+7T+tsJXO4Ce18NFnjMKs59AjBnmMuXAoImsLvSUx9YGQ7/LTCw8wDuc59bJ/4PbO+XgZWXHPu1lQDkCeKV+H7h4Xes6vxnaruWB66y6sDPrPbyb1V0NIHdNd/cotUmf+Q2ADVHBJ9aWcBnUlK3P+JoY4/EWlytqwN4sEVPMR/n7+UXVwOwNuk5N0XtU5hM9qH3rYRzbABs5WWAO9gymSLz4emSx538zN2/sOQf/9lSdv4K4LsKjHqVZR351PLAuCsvAHjPAoAP/soy9+J+O35pSdvfUUBNPkCaAP6CbH0/zXJ+Zplg87y9CCy94NSn7ncA4LMOvm85xz62nKOf4L7vWcaB3wDYP7PSsB0akeQHfCVL3cyjbpbP66XUJFzdaPlc/YrYIzFf2ZV1AOnN+rqR83iw9hqAfAUAvAnMnay6+PxqK764zsrB7iuu/iC2nXnoAxUX1SyAuL7G7kbkbq0INuB/xZZ/+/Mw3GeNNeA9wfEEBYPlV9dL0MaOgC9ypxPbcTRwew+Y91p5rHOPXV0SvDb1KMLKUTjWUGAJQK8NXe/a6rd3AIxPWv0NgD5eM76eVNo7Vr9JRQEBvzV6v7Y/ulHocmTG8VbvU6dal7L9GYvagNdWr4MvLsh+eQosfaY4xjF0MO7pIpddTvY9XUZQj1erXOAOACe4T4NZzwKIZ6qe2VTZE5uQg2CsnCVXBHJzAHEmqk3To5275QDtubpkdx23s41Op7hXtSgAlLSW7IRsnaVyfHsFsvJK8/WXyjenYQxBfQEsn4cAXo5xeS5OlcwcgL7UA/bdXe1iTLvLAehPbKHivi3SXIYpbsom9wJVAOS2EoE61OAyz9U6b3KXnjf7krfept1zMXyv/c7fAYC3lcJgYIXhe+12gPjSRI+BlbvLsU4C+qhND9ba3PBDezW50ezVX+D8/ydvd9B/v5Tufyyl49zEL5YmRw8vj/cmvhrqaH/V1zgJMF9Y7G8UQ+fKmpziuFPO+FTO0ltKwNornLkMWPl8v9+mm4okiOMx21gAMOf6WvpPmHq2mPt45Us5w40V0tv6kdTCA+lUOUcASHEJlt2XHGaD3HGlZ3TOPV0qH53gLS/pW2Lm44Wo1OnelXPXteXJ0Gn8kUXwD5KorpsJa2D2FBv5b+7Q3K8LYENxXB+Y9FBqiFtBe3lVc/gRtdpvWUdiqDVS0U4XqhymTEVI6ENmMQV2MMLQF9pk4oTFVbX+J6fEyJVgRZFP0kVZy/LEyJl8b9xp/O5dEkS1PA2z9mdX1PanaI7WrnSgawhb54W28OS7R3u6ZNps6TY9PC/wo7sYs85pVdsCNtYUsdklxD08rRMvmVfTrd0A30/Asr/BY26SSK0KrLr85HtWGfi5DHFqLnyu1jyV1iWnP7HiI7+04mO/spqLq6we7LwSBUH5mY/V9qUBj5/tWYB5zcUvAQ4bFEDDVK2WaIAEipDqS7+1Sv4sQIh2pJyx8vGbbu0HYycDXC8BVpUH1ARszo5rAOQUbRUBULP3/1rgytW8igtfW8GJD60abJ7705zb54FhU5j3/Pt/sIx9v7b8k59a+kHcdhJAjoKkFM+ZGwLUDKRs/5klbv1XS9v3K0tHEZCFI2Hj31vStn+z3IPv4nf9u6Xu+JnlHP7QCvE42Qd+jdvfs+IzXwjQM/B1zqHfWAaeUwp+NvfkKgDnHiu5tEEgnXUcwH/kI3wf4H/0cysI+EZxtRQlFgOMm6KPahzAmXwp2H0tWHRVyFYrvrzeCnHfqmv4n94/AdDcCWD+RgK0iuAfrB7FS3kQ/h/nKND71mrBwptuH9IohY9de22HkvL60m9bJdvzYPVleMxKPHZZ8Eanagczp5qe9q4C9PtHrZEZ5XytrgGcr3xr1RTKcQTCoiF4nbMjBng33ADrx9ERe9waUfgR1GV8w6AhmtJQzInn2A3gpkETLV05ihpgxgKKbs7PmUY4kh6uVVJau44olS1YaWlMaRvLCrPJvEibpcANhwP0+2De9/TZmi5nyl2CS0YjuHtBKzSA+X/Ze+/fuO8tS/C3waCxGCwGg8FiMVgsBo1BY7FYDAaLRaOnp/t1P7ff87Ofc7ZsSbYsW5IlWTlLVo5UzpHKgUk5UZk5S8w5pwqsYlUxiizePed8vqTV8yf46YcviixWIln1Pffce+45FLZRBDdYesv6aSQDUOeK2iAFbjVOrc65OGfoBHQCub6vSHeragR0MnK24MtuA7if2mgTDWJybUQxqDmanctoBs+l/XQ85ksFuDx2c/KmPE8sVwBWDrDuAqB30fcdjL39ub0sR7FQdNHiXF+jcxztY334WQBgHCh3bXQ5ulU5Y5lQrfe9N1f3V3gub15LnTN0Z+Pq2u4C+ArXlvfa7uOK+TiZfrTLxmI4+nzxsUj78Fhvu8/6gziB95yyl9FpAPT/Om4q8xoNfzuA/ldSOg71vWnD0aVj0cC10Z6WBjD02CgB3U+GXqXUtZcdlQJwKtyHmwoB6sVg7S/UYh/qrAZDf2EDdJGjOE6t+EKAerbsX/m9vN6VsvbAwsW3FNxBMA/mJAG4nRCOzlM92Zcs8OysdnzDuTQgueJAnw5dHoD35lwGqFMRfwHfX1ZSG00+QgBxBrj0eq135kV339lvHde2i9m3pm21Npx8OqmOB9D7KZh7QAX9AfPfO6gWPosGtuxpDtJ887B+xvUbGtNQvStQz0x0FrK4D3dppXK/k6BwieCd3WLmPfiac8TO5I1KvepI26RWOw1rmm8etNZbh6XcJmAzUpUhLg2J8xXWUn5gusxruP/eCIZOMKu9vB0n1mXO6UupbCuslgpoMrdjs6wlZbMAhPdvT14vgK0+9K1VH/7BGgGolQADtsufb/0IJ+/p1oDHKdjwPpj6Gimji8Fqi/Gzir3fAqzB+g4DkI7jhI+Tf8PpeTqJl+2ZaiXbP7eqQ9/jxL4Av88agTnZec2J2ZqlsyXLkz+T4yoAerSF5Vyf7fVqtpAPzgCLdjv2ZOoVACDO8wsI1r98oKNg+9dWiKMkYZLYPi15y/Zzhv+JZa/9yLJWvS9wfgbmnAkmmwlWTxMeRskWJ3wF4P/Unix/2+7O+Z1d//Hv5XL3jLN1MPJ7P/9eDniPAOSPwPLTF7xhORs+BVN/z+7PexPP/7HlbfpMFrnP8DyPlr5r6UvesTuL/mx5u2bZk3VfgT1/KjV8/q7vwean4PkB6qvpmz9ZHYOChKkA4ykCcG4b5GyZZJkoOAoB6sVg8GTVeWD41EJw/s2/z3MK8FDYUMhWDbAsPfKTfAY4uy9CkVBzeqUD9N3foyiYq/Q8tt1br+8Dq5+tn5Ud+tkKKOY7MEM6BNoJUy1PZTxb8M2KTd1gTWfAulFYleyeLAEjb0PmLaA+TfY+T7P25iS8N/H+rGPBeW6Vt5K4ylplpoTHur5LBkp8v9F4iUDeg0KYs/PxeFMluJGdp+93LXeAOtPSwoxoxSXT1BhvSmtXtt4HCi5LzT5Q7Fg3WTlX0caZOYVvIzWPNCsf8trnYvIsAPBzzr9p6zpS+wxfP3YzdADysC6fuZ/TRIaPUXFHoE7AH/Xc3vQzsG5FotY/lXMcgd3FpOa6Q4r2V/bOZTxTLuasQJSOIs3QR4ouaQedRjNStxOEJXAbB3SPWcvGdTxBbTwatdLiE235GsfOUTAI2D1mbr4Kb6XtlZb7+AydYB7zA9ADbmUt0tFig6HHYOi7bLj3U7Po37zeQf9NmssM/h8jg7F/ZpzeWDSYMhpqrxvprouM+uuZi24j3bU2bgM73FZiQwDuodYy7ZgPt5XbcFeNFO1MXxtsIIMvtsEmL8ClPkdGNAT5qJh5uoWZ/ZzvPLBpmRmgK9iTMwBkAniK+TOZPHVBIjnupRPQeyWaS7YIfs6cdB1ZjpET3GUT+pR2k2clrAk9O602feDhMesEO2dYCiNXKabjjNzHVj7AO8jbcTaPQxaWtLLkY2dfljWnnMEeufAJAj5VuwLyB4esCyBNVysfQJfCN7bWCeRkIUyMGmfqPu7nXt+hVntb0i+Ke227fcg6bu/H69oku9iWSyvV4qQdLLPRGcjCuMuO1C1iWFVnVlvNhU1gs3PEegnoYsbnV8pznvvFrTi51pwGG8ZjMFay5sj3OKY78L24QQrqsoTPrHL3F5rZl+0DGK3/0FpTEyRMK90D5r33G6tDQdBwaq414ja1J8HWUCxU4zGocqZQj183n2MU5grZ3RKky8D2yLyrj3FsMFf701ReF4OlchWvlKtPeO3Mfud8nZGuz3dO1kyW7dwSzqxXvWN5697H5Z/VVi8E4D/fOUktdOoDePvcNR/YsxXv2SO2zBfjWApgXvqegJcMm655uZu+sIcL/8UezP9nuz3z7+z6tL+1Bwv+gCIAgP3zP9qtWf8D379pt2f9o92Z/Y+WtfrPYvx35/E+b6pYoCufZvSL37bbP79p6XiOrC3TwPQ/xdfvgpF/iONjy9kGBr1zmgJsuC6Xvekr2eGSkedt/9ZKwJi5206Az976jeUA1LM2fgXQ/R63naT99/wEMPN9P1jZkXkAdxy07gVr5qoZ2XnJ/llKvCsDC2dIC+2ACf5cs2u6usc6750QGy8/thj/g/lWtGuq5t40GGJOPYWK/F9UANSp1+D4p/nScmvC/5BjnRco4EpQYJXun65iTLvqPJgUiCKg9dpOecc3XlwjYR5V9Bz5sDCV5TLea21XVgPgV6JoXQ9AP62OFzMMaLTkk/PbYbnAKaKV1q4PKZTjdfvVhqc9qwP1ZDDxNPm009ZVUadUqYOJU61OwO6XoC3dAXK1dxDc8XPGpw6ylQ6AHta8O9uG67N0Sd/2ER60ewUoj/A63I6FwiCAnRawbLnTHU5ATcMYgrdm51S6Z+I+LoxFbfgml7oW91bWxgDqAlwCe+dzG63CYxYnuQjV9gIJ2rSuxhb7OEgHHZjHxx3gdF2VGHjcu3QiuCo3S+92wjrXaq/0wJ2AXv/KylqTB+g+GxsImg0ER+LRzggAvQpfp9lwZKViUwcnVtZeA/pvC9DtPzEXPT4QnjMaCVx82dtZ9TLYEh4NNI7EA0024quXuczLDieOG2yvcAd30wH2Q83Pwb7zHTMHqDNadbi5TAEubi89C2D+xHqZi80ISVp8Ft20UOE1sO7LcgsL4ZLiuBAAPgiGLs9sRlgKwB2wR/JT5aNN4JVvc9Y52cJqBp/lAhroDsXZOQGdLXkK6Dgbp4pdjl53DwjUCe7Mmg6ytQ4AZ2xrX/E1i3EuV3RVSVs0Oglylk7W7qW9BdNdZCO9qKly16wcoB28t1P2lo6BHBZr5yob13cojOOOOluSnC123GWy12G1J1sF5qu0k07jDrakKYBjNCtnkAyC4dpZ5dl1VgUGRncw7TtfXAfgn2NNnGGeXwFwR0FwdbdYOR3qCLYNJ2eKaVN1Xn9+nVUenWG1h6da9cGp1nx2ORg5AHDnFK2Rlez61moB5M3nFlrb5ZUC7GoAdOVBivJw7Pta4ryqQz8A8Gcpz52t17J9ZNrfiNGWAEioeqd4jurw8kOzlNVeQZYJlk0WWH18vmbsLwDU5WCGZbhdJQoCFhY5q94GmL8NQH0HjznJSvcBxADm5fsBODvBbjd+bBnL37UHAN57AOInS/4gh7snS/4MoP49WPg7lrXhCwD8O/bg59/h+Ed7PP93dmfGf7fHKAAywdjTf/4Huz3nH3TfBwt+b0+WvWWZeE6C9/15b1jmirctEwCfuRLPs+CPAPzfa/0td9s0e7r+K3vIlbgVH9ij5R9YOhg7Y2WLdn4v8H76C5PrvgDwT5KFatb6z6wATLzqzCorwe+Zj+ImhwI7dhQ2fil1ft7OGbicAlCfqnW5YgA7jW3KDruOBMcSuZsnCdBzAfzUQdAOtshbs2vmOlzyDjnZcUZfCqZesHWSjIjKANDs2FAtT3U7uwU0++F7juOZ9uRf8H9epHl4FcVzR+fovddAExkWlsoYQMGYvEXmRFyLIzun8LIB4F4LwGdkayfFpEmrrTuNyYLrzHdrpz5DDEXy3dwmgSgNY8jGuXvO4pct+PDjQzp6nxxRJCttXQXqz9lqB5C/uAqWniqWrrUzsnOCO1XtYs0PwcSfArjZYn8okxiJ3Tj/xkH2Pkhgp+Mb5+KNORP2rKPjANzBnXGmrj0AkD/z3N7y5BLH2xDk457aPQ4wf1nzQMlsL6vTvRz0DBsDsEsMx5b6eFwpvh6tRdFRfNGZy+B5tKpGIH61rf6qQI7raT2unW7e95q1T4A3f1amxzcPzKlyj49bu3rsnHvn1tsOZu4HmPeYDYWGxwYCgbFId4H1s90e+xE/+P9c2uZrQdxvDdD/jfJwB6J/F+8P/RjvC54eCXeXjfa09YwFWoZHgi02GqifcIv7Fcwr7aW/0QZaSm0ATLxfrfUsBbeQwQ+CsQ/UZCtdjcw8WvbIIgD0qFK37liYgJ53Dew72ancmbBGQM9JcWwc34+zcrbdewvTxMI516YILsw1NX5P1s4d9tzLbu0l0wG6VO8Ae0aptqdutg6AKT24u+8c1PoaBXec09PIholRjOcMqUA45/KqAegSxj0C8Cu1bZ/Wb/x39uOEtVvMm+lrFMEFpWjfIYW7RHMPHAuhcxxX4LrY3geoU1HPQBHmWEszcP+w5uutBHTmpDNbHSfUposrcd+dUg6zjV15agUAfb0c2VqTN1szTrD1OLnWHv8J7HqLWudt13bj99xmTYnzrOPaNmu5uMxaz4FhH58p1zEys+YLS63u6DSrOvgdwHiplSR8qRM4iwy2WltpTUv3urMLAObfgYlPRQEwTUf5zs9x0v9Bo4DSXV9rNED2XrTtU82r6RBXtm+6FScAiKmo3zEFQDwd1+PAfV7gPpWHwQbBzl/s/MpK907Val45gI73p4FN5tI3LHf1n6x4y8e4z3di56W7URAcmCYhX/bKd+zp4rfsHhj2vZ/+3h7N/yd7tuxP9nTp23Zn1n+3u3N+b0/J3hf+QS54D+b+D8tc/C/2bPEbKBL+bE9x3UN60i/7I5j+O5b7y3sCbxYQT3Fd5gpc/8u7MuAh+yeY35n7e3u85nMUCgBzqebfExN/sPR9qeezNn6hOTf34nMB4mLmFNdt/NxyN3xsWes+EZNmaEoRwJ3JdTkbPrNnq9/H119a7o7vJbrL3/q1tADUDhTvmSH2/gIsm2I1Jutxxs/nqT69XIp3riwWg6W33NhndSjWGlN2Sj9RfoTF0cdWtPUre57wtdWeXqygngoUWnVnf1HuAd9D7FpRjd6ZukFMvfbUXKtCQce99EY6wp1fruhTajs4rmrFZ6glZaOKgXZpQrZYG65rTt2qbYp2ALmfYlCOmNI2gaWfUwpbz32OorZbz73dYuPhB/vUeg+DlffiiDw55hzkHnKufsL68y4C2JMA6tfBxq9PpKNprYyCN8681WpPF7sers1QK324lutqjwDM98XYX9Y81nUE/8Fx45g63LYuSwp1rbQR6DkHZ5oaQ1ea8gXuZNyMTI13lrmvCeYoGrS6hsccqbxrI1x50yobbk+/d87SlZtOe9gyAXi8FgVH8RUXzsJWu9LPaiZEcRMKd87BqWAXE6/wds0rdVs3L69Qq948MJe4Trd1Cvhx4dxEUltvq1mkw7XbB0JxMPLBsaFQx1ifD1VOOMFGB2j5+rrd/tsFdFRqL/v/m1LX+kOHAOgFAHTfaE/r4EiwMT5CYRyjVDurbAhgPtRe6Zh5W4XAnMlrsnllUAtb742FYud9XFOjSxwBvfyxQJ0sPczcaKar0fq18JpW11xAR6rU7hGxcc/XnSwdzDw67iJHW1cw7yjAnKw9ivuSXUfp3QzWzh1Xp3A/LUDuuLZVqU4+ZjtnXNBMnc5VnK+HM05bKIOt9gtqtfNnwWfnAOYpilcN4TaB+4ccgDNfHY8RADuXQxzZ+dVNLr+ZB12vCOZk5wyoSD8o/3i/mHmCior2G3vkUR6kbzkKBp1QpX7/RQpkgnkjTqSdUtxvlQqd7euG5J1Wd2Gtl8m+RatdTMti7jpjLlvA0n2eP3170i/Wjedsu7Tc2i86A5u2q2BlOPHSbrZ879dWd3w2WP1KK9/3LQqJNdIT1IGlNZ2Zb23nF6oQIJiTyZfv/soq9kyyyr2TrAaATBc7ttybEnmb6QDuLwC4P4qVU8BGcC4HoJcCTAgiFOSVAZQr93EF72t7vv1zK972hXbjX+D23FenC13Wijd1lGz5SOp6Fhsl2z8FoIOhg6kXrH/PMpa8aU/Bqh/N+2cdjwHomSv+JFZ9f+7v7OGCN8DE3wQz/ye17zPpcrfyj7KtzV//rmWvftueLX0ToP2OFW/6EMXDO7qOKv7CDe/iud8HuL9l2Wvec/P1Je+4tLq1n9iT5e9aOhj77Xl/tPSlHwLM37f0JQD+lR9IYc+99cwNnwKMp6l9nbWeyXj42ZbP1TJntCnd+B6j4MgD2GeteVdiu9ytUyx9/h9QRHyI6z4SeNPNj617CvP4N2XnI3/TFzLBKT2+yMpR2BXunGqFuF19SoLVX9mIomGxnOsqji2wwo0fAdQ/wN/5cwkkufvPLk0tTYVwNF1ao3Z5F4vNm7vUHaL2oVgdluli5wxz4RiII6JOBhmhcOxU8NBaa2KrHd9zxZMuf3VagVsh8ySfMg+4e75Xo6vAvT0oghMA7Ph8pO+xEACdYE7wjjxlglqixbLPKke9FwezzwcKrthQUYpru5dclc2rFOwUx7H1XnbHWysjaD8TMGt/nCANNk2VOtvpI/XZErNRDDcMBi5bVxrHcL7O2/Fr7/5yemPe+XjICgB6rPMFwLncsXa23HnI393lp4/WPLI4GbwiVF12OtfVyNaNjBwMPf4iBYD+zAHwK5nlLt60ZiJJjf7scX/Vr+5xAPSJtrxYfLlzmSNbp3XsBKjXuPjVnlfc5gToYOjRbrbcRwDosbHBcJMMZYZjq2106E847//n1w5xv93Vtf/Vra4NfBwf6N0+Eu7KGOlp6xgNNPWPBpu0usY5+hAZOufo+H6gjWtsZQDvIieOa36uHXQx9IZ8Ja0xHpVgTsU799KjFc+st/SesqN59AKII0xZ8+JTGUNJAI+IneOy0AE9rWGj/FpiuEs6ImDtbMH3v7gjsI8wtYszdYI5Z3iP6QV9QnnO8peWyO6CDGo4W6eLnHbV6TEt9Xyi+Zn1zK4BIzupXicbx0kvKBDfixPTbgVO+G9uMx/tXm/jRJW+zwnhAPI0z2BrMXifVrEHcF9XCLAl2XUtwbruHZfSPpR9xfyPTil1innszFynvzbb6zxpcsWO/vJsaTNUheYjTRdWCeibGKkJltWOIkDt++tMrNrjnPOubtT6EGeWHVdWAtCXad+eQqi2pPXWjJN0NYC0Dc/TcnmtY/jJm5wYD4DOAqDj4hJrPDkLIDpZTL5i3xSr2j9F8/h63IYqZ6bGtV1YbrVHnBqfIR90F6vc/z1A5DMr2vQxwPgrsPwfrQxsvBKAXA6GXiRBHhj9ji+tmrvPYN4UZhVt/sRyVvzBCta+bSWb35dQT4XCni/wmJNRHHxpeWDUWUv/YI/n/c7uz/57e7aIwP6Plrn8Lcta/kddPl78Jtj3W/YAt8la+baYfvEWABuAunDDe7KwzV37ZysCeBdtfNfy8XzFm1BAoHAoT/jESrZ+YDl4HoIhRXL5WyZZ9rpPJNLL+uVDKebvLnjLMsCo2Xa/O+8tu7/wTwD9zyyfbnW4PUGxOGGy1ucYdZuz6VPpB+iNzp9ReJeN6wvxvFlg3UU7p6u9/2zxW/Z06VsK4eH4oxBMvQiAXozHfYHvueKXoxb+DAnoineyE4CiKXGVNaVstyKw+rpLm7UBUbL9M/xO9BH4wsrwN2YaGzUI1YnLtfIoQL+4ylrArNnhaUFBUH9qoTYZKFKkJoJqeG5jUItBNk9GTlFnG9h5M0C9JXmjdd7aY513D6rtziLTGcpsV4s9iM9GiBbOHFXhe3o0hB8exOfjgIUfH7ZY1hmLMHyFLnC0dc05I/c3Xs95Oi1aXQgLGfpNHFSzU/F+F8B+y7XdGagCtjzENTQP3IcbcsS+hzkfb2R7PdcxeDB63k476TSbqc/SjJ3CObJ5hrIwQU1ubzSLaWWueb6zcSWDB8Bz/j6KYmEURcJojUtji3tZ6Jy9j7a6pLUxz2QmXv/QxsquKgvdGcrUeHvoNc5QRvPzetcm90JYxiNQXXu9eqLt7lh6qWPoPo+pv2oy0+PtsMtIphVgDkCPddpYf2DEBsORsaFwTXyg57KN9NFQ5nev989/6+YyQ0N/zcot3h9eP9rT9fBlsK1ltKelfyTYGh/1NwjQhzvB1HuaAezVNthCURwz0stsuLXCXjaXOVEcV9XA1uXrrtCWjAlA7yt7LPAO5QPIi27JKS724oGu6y0EsBfecODt+bsziS1WckugzdxssvbePAJ5sgC/r+QGPtwoECiaYyuezlM5552ZTPpRiddoEEPWHc5J0Zzez7AW7bmfUvs+yH12GdCAOePnnLPTgpKrNlxHo3kMmTfngXS68ntzwdADp9Zl+zAIFsLwh16coDg75+xbFrIoCAJqzye4EJJ0Z1QTzrpi3Tf3qC3edGaRy6VO+mXCYavx0gpnQJOy3lpuHZbiufnias3tW5PBwlM2i4l3omDouLYTYL5f4rzuG1vwex+yrqvrrSMV7D1lndqrfOz2yzjxg3m1XcbjpG4GA1sGgJ6t1b2GMwvx8xXyl285M88q9k4GkH6reXnN4R+s4diPVn8MbPD4TGtBYdGOE3ojXjNbusWbPwOAgE0DyJ9v+1TAWbL1I9234eRsq+BaHBg9QbN40we43cdg7dOs7jAKAbJ/MEeuyRWtfwdg/q493/SuHqeC4ryDXwP0Aei4b8E6MNolb9hTsPJHc/7e8lb9AaAOJg7Gzevz171n+Rs/lFXtM7DyjKX/Ys9xv6q9X+H4Es+PYoL795s/xOt4H4/5kZWjYCjfMwm3+xjP+RFAFo8BoC0B2y7Y/o1lrHoPhcG7VoCCI3/zx3hcmtS8q5n2nflv2e05b9q9eX+wzFUfWN6mz60ogSt731nBli9wX9yOKXnab0dxw6CTbZNxfKX9+EK+DoAy590FGz+2PLb/V/xJf0t+X7jlUxVGtOWlUyADefI3f2F5W1Bo4bEoLCzG37/syHxrStvlZu5g7zQYyl3vPATK93wtkWMrRzEo4CiWZMueu+MCZwYT4X1FHUYbij4KLOsSF0vrwIAgdodaL69SB6eD7fakNQJs+isw07yFGxo39ylBruMq3ocAeDotMs+AXaoedr9QdIfo8vjgkHzaw0+OyE0xyBn6I9dmj2adlt0rPdvDGfwcnZLla5+ncmf7fag41YY4Qy+7J5U7jWMGXriVNe2pl1yzwbLbLmhFrfjHTgCneXmBGLtrxT8S+HOmTvDWbB2MnWYxdH2T+xuvB7jT0nWMLXmmrHGu3pChHfQ4DzJzALrm503ZuN7N2mn5KqbOeTqT1srSbKzukZkCWTzLVr+XiOYJ4MxTtjtXOK8VT8/2cSW8v0ozcynk1XYHS/eNK909YRxFcQT0SDOONjMCOvfP+3wjYOZhHFXxweBZt38uh7j/+Hpd7be8i85c9JG+P9pgZPVob/e9eG93U7y3KzYa6oiPUOnuB0sPtRgDW4Zaym2Q7XaxdB6lUrf3eQI4ttsJ6gPVmYpN7a985sxkSu6ChYMB56c569eyhxYhoD+/J5MZ7qXHSm7I9alPYH/bYvg66nm9k7lz1h3F11HcLlaC2/Nnmn0nykaSoji6yo1nVZOZc3+d9wvnJuP7c1p/C9GM5tkZx+jJzp+cdQI9MnOmRHF+zvb8IxQGdIRL3y9Qp4pXgh6GTdDO8vExJUtFsrjGdkStdr/8q09YF+NWeQKkjezDs5rbh7Urf1qMp+HcYgnami+txMlyrWu1A7TbUzdY93Uwp7TtVndlm06wEh6BuXM1jaI1ZrLTy55Wm+oc3EmQOY6PCXFg5z6wdc7UO6gfSFptLeeWoHhYgBPzBq0XcW7acmGFGD4fqyt5tbWBnTefnitGTqV7IwC56cQMMHV8f2Q6AH0Gfv+tcryrITvfM8UFyCRMsnIaz+z8HED5iS4bUSQ0Js4Fi59u1Qe+tVIA5gsc5bu/tObEn62e6nt2AQDupQDUctyvIoFM+VPcfip+Ps2q939tNWz77wCgrgZ7XfkHy178hmUs/r0VrHkbrP5fLGPJP4O5/4tlr3pLrJddgCIw8/y171jZ7i+s+tBkPMZkq947SeBegddWjuer3PWZVeJ7vh6y+JKtnzhGuwu/z46vUBh8aFmr3pZgrhCPV5LwFdj6x3Zv/pv2ePn7dnf+H+3mT2+Apb9pGZyHy9d+iph04VbeFux8/UcCdO7Rlx6aDbCfrnU67vvnb/jQheLgsTlOKNr0IYqdL+xFwjeWt/odXPe+ugz00C/gHj7/1rsmS/lfeWyh5W/5TBoEmsMQ0GkQU3ZkrjUlb9fjs7Ap3oYCBmydM3Z2aupPzlV+AYOIaE3clbLWOpLXKAWw8exyjW6ar2xQF0bahr3TZAnbcmWt1i+705hjvlnvsyAKSLoldtPq9e5R899jAew0Jv77h5wn+7OTFivG5x2FNovizhs78P7c7XIS8Hi85Igqgs9uVJ9dekgc1WcnknnGonlXZCijvfTcixLIseVOcZx21J9TLHdLiWraRQewqxWvXfN0racN0pO9uWACpEfGPdnJxjuKnetbXaYzjsHX8fbnziSGDFuMu9BG2XqngI7zdaao8aDK3bODZXteIC+2nuXa9Wy5g5nHXyTJKc4klqv4n+borwjjxi1c9bOKXwV0gcpf19R85b/unet2XgpbwGvde2ltBPRxhh7v7wagB8Lxfl/FK4D+d68B/bcP6GDo/X+KD0bWjkYC6aOxYEs84usf7WkHoIOhB5tsuLsGrLxMrfchztMJ6Fxh49y8rkBMXF7u2kXPkyiOTJ1+7tHSh2DitwXo3D+PvriP68DYX6R7LXfHxgnm/aUuXpWATpYeLQZwg7HHdOlAnwxebXmydhnNnHehD9nnNEfveXZajDyY4QCUSnZmVYfYliega73tgmbyZPChrEvOjIarbIxFxUHWHX5yTGlQZOTdN7aqnd7rtQp5wmIiFMU/DJtQstST41pzI7A2X1kHVr1d2dWKB727T10BP1g6gZYz8VbcpuHsErDujWA+u6SaZ546Z+7NV/cpIIPzTtrWUt3enrxRkawMeeHjsgNB8OcJlxGxdObqBIBzNt95NUFK5k6q1s8ssuazi7UvzMKh5cJyMTTOUTsZ8YoioO38Yms8Ndfqj35vrRcWWfv5hdZ08ierPYqTOnfOzy7C825HgTEbYDkJLH6KTGZqwLarD36LYwrAeDJAfBqKilV4zvl4vDkAZgDqnq+s5sDX1nRqhrWd+9lqD03RfWoOA9jxs8rdn1vtAbDyw99a4/EfcDkVt0chgccsAWvPWfmmlaz/M0D9LcsFeNOWlkw7B8BeoBn4B7Kj1Z79ji/lP1+a8Bme4xv8DjOslmp9AHjd4W/wer7U6h5fV80hzvs/lcFO+e6vrWLPN3LRKwTbL8BjZq/5s5XiZy92faMs+XvzqIz/sz1Y9LbdnP17XL4FQH9PLLzswHSx9GKw++y1ZO2fWsG2SQD0z2SSQ2Od3HXvyy+fK3iMri3e4nwB2NWo2MfX8pWV4PcowvNnLvujtAAEf6n9905xjn/HF1jGL++LsTMFrTlpszVeXG/lh3+yppQE2ezmrX9PRQoPOstxC6L66I8uvIf++meXWWfyWhV7XSj+2M1hNGrnjV1qp1O/QSOh2sSFEr8JjG+4drq7TNB7jkUmY4196hLtA/t2cai+27vx+TlmUdqzFqZagE6K9Gu4u1dFK99HfmYdoEjmiic/R5HMUx6gH7coQ1vo2Q5Qp3NcLO+Sok8J6Nwd5xyd7H0I32tXXUz9llbcOC8fqrzn3OEI2M0emIOBSxDX4NbWKGDT+ppm5rkuMpXADFAfn6fLm50CN9q5jqeuka2zxe4p4mksIzDnY+o2uTYGpj7G/fMXV2Qq4+bfZZ66ve5/CmWp9/bQvcxzv2cPG6yaaLfHXwF5Zx2L2/prJ1r0CmRhqlqk3bHz2LipTNfIWH8gPBbrrooPBM7by8g4Q//fXgP6b3uG/jc2PPBhfCC0HYCeMRLxdYyGO/tH/I1xB+a1MpehtavEcTKZAbg3lLjdcwrjwMyHm54rnIWOcrSDJUPX/nk52+33nBgOTF3svJQiuQcWBqDHSu+BxadbX+ldVNpg5WDfDsxvKiu9jxW42PtNsXaq4CP5SbhMkUqdRwygHZWD3BnNy0NZSXKe893lyto4kJ92OeYPj1gE7JxWsYEM5zpHIV3oMdPcGMe6X85Wvjs7AMS7xCa4csMQFrUHySpw0uFBMKeLHNOgeh4dVT66RERkMnieznvHFQgTxH25794NNsMWJ61gtT4ExsyWeStOqs08yaZt1lxUYrjTizUrZ6wrxW1dqevMl7beKegfnZVxh+/6Zq3M9T5NlMK4I8nNyDvA0DvBwLpw0uZOOdvubZfcLL753FK1USny8wHQOT9vBaC3nV+EAgAn+5RVYPRzAcizNXtvPj0fYDwXr3utVRyZZaW7JgHoZ1jDsRlqydPApuHYdM3fW88txAkbr+PicrD6H61m/yQA82Sw/G9RGMy2xhM/yMGuat8UgDfufxT3430B5PxZw/FpVgfAb0RhQCb9YivY5iYw7m0fWOHaty1/zTtWsfdrAD2u3/ieFax7x3IB7AR1XmYtf9Oylv3BCtf9Gc+NIuIkgAzAXbMPr/ng19aS+CNe63fu9Sb+pEKkAky9Co9JgH9B69ptn2mMIBMdFC5Mp8td95FMbTK5C7/yA7s9+w3tqXMHni360v2Muf1Ge910oeO8vGj3VCve8x3Y+zQx6wI+zpp3wbinaWOA8+7SnSguULzU4HnY3ajcM8mKUZjk//Ku5eG2BWvfx22+luEPNQdUnudu/FizfcbZcqWs8fImqzg806Wf4etSMHo+LscXNPapP7faKg5Od/vlFzcA2Bdrf7zx/BJtWSg5MHW9cgqo++CuelvyRs3Quzgrx/us46oLI/LdSnCq9fR9TtjJThEBn+12Gi3h88XVNepN2D7vB2vm50I56Y+PSSRK+1ketEl24yx+Hk+6Iln5DKeUg85AFrLxPnq5FybjMlkrbVpZA3APlnGN7Z6YOUGeYC4jGarcqYRnKx3APMzWOgCYs/ORcUDveG6jbc4gZoSe7TXPJJRTAEtT7kQc6kibB+pi4tlONEdA10w9e2LmzhhVtdwJ6Axkqb7jAL0l17XLx01ldFSr1S6FerjBJazxkHCuzttJr/UAvdKxc4H6uPLdAb+7rYtQlTtcxLXa430+G+sPxsHOh8f6fT3xWFdFfMBHQJ9jNvgPHqC/nqH/NvfQ+/93eznwt/ayf9porOfYSK+vaCTc4QM7Hx4JtQDQG22469coVarcB5uf20A9k9ZyHRuvL7BBgDl30IcI6vWFYOeeM5xW155J5c6D8/RIxWMLE9QrnBKebXmJ6ADsUQC2a7c7lt4PkO9/cUuZ6WzFUywXyU8DiKfJy1mCObJtbz+dEauBJ2fkDc8QF/+dfb8a0VCkk+7MLDhz93GV7b6bt4cfn8TJZZ9CVbhbzpOcnytpVLGDmVPME3l2XLGPTml/SSlvvSwEnjDV7ZiAliBJ0V0PioPg4zM42e3F9Qnyoe++e8i67xwRQ2eb3c95I052EsGdW6F2ZlsK2PmNw1Z/aaNYvtro3uqbL22tBW9uU3pc8MkF6+ae7+3tFrq3R6+/nQAO9t6WhhMtPeq5Gwz2zZU0Rrm24JLXt15YoZNuD4qXzqQVAN+FAP6V1pW8yrpRNGjmDhBvBjOvO/6TteDr9guLZUjD9mz1we8B3nMB9PPAsr8Tk29OBPijAGi/sATsa4sU83VHpgKsOTOfAub/ndXhqD/ynTUD+BvFnMmSp+B+fI451np6ljWdmA6wnSZG/Xzbx1aLy+rdbMl/bM+3vK8WffX+b6wSzLoMP39B//mNH1gpwCtn+RuWufSfLGPJ7y0bbL5qz5d4rO/x3FP1/LVg7C2JM631DNgsiocWvP5mvPbKPXgOFh1Hv1fXoPLA91YBgC4DMy/dBda84wsw7o/VTi/Y8iWA/WP5yTOK9enyd7WLz715hdLsmQp2/5llrn5frXfa2RK8mRVfsf9HsHLXLq/Y/x2eZ6pV7pssTUEtfid2Mip2oaBgh2AdipW174mtl+74XCE5VQd/kB0rnf4KwPQJ6NwzJ0uvOzlbToT1Z1cpDY3zcxYjFQd+kG9BJbcODn4nz3y6vtHtjcI3rqexBc8Vtq40Avlqa7uM9wstXXFQWMrCNIjPjJ/pgbJ1PahxVDD9gKcX2SNxaOAOiueHx9WtkpgUn6UIGHp/yVV8Ho5OdLV4ny4UCWTuDDxiKiEV8FFmn7Mgp2Xso2MqsvsVypKmPHSmsDFTvY9RqGTgBPBKJ4rjetoAW+4UxwG4h7SmluFU7wRzADFn5gJwmsvgUkp2usKRwXtFgPbRaTIzflvO0Tufu1W05hy3p96Y5bXfc3VfCuHGRXEE9glAL79qY10lE3vmv3q517q593iOudrlTa+Aeu2vgrjx9bbx6NRAnRfY8gqgh+vdfSNi5wRyzs4HAeoRXHaM9fkL4jH/MXvZ+6ONDPydWZ8A/TUK/uZW1sDOh4b+C9vttH4difpTXoY7a0Z6OsKjvV0jo+F25xLngfkw19YI3GDkNI2hnavEcARxmsk0Prf++nzrA5j3gZ33VWXgAIDTWAYAHiVo4/twuQNz/qzfS2Lr5/flTGMjS78rMGeG+iCuk5qdrXauupGdF3ozdYnlksXKe5m2BhbefecAQD3Rgk/PSVXO1DYp6NleBxDqZIETSzAz2fwPEx34yglun+aCAR5gIVw76wFzILOgL3uUazV5F7UeF+XeO04szGF3mc94PJykpIonE8EJjWtz/oenJa4jK+H3DJvpvLlP3tdkOrTFpB0tk6/aUjYpYpWrQO13j4Nt/aK1Is7h6Tnfw9vf2qx5uUJoHp9yu/A3NqvgoHkOjT20K38XJ8y0jdaVstq6rqxwJ+orq9Vm1Rpd0jqdhHnCbTm3ACx9pfmvbwBr/0WP0Ymfk2E30UAGgEexXOfl5QDwBWB0axzYn56r+9aBhbed47rbPADlPAnsgje3WPv5nwHUYJQA1FqydAA3AbU1cYa1gf0T2Gv3f2WNR9lmnw6A/dHaz84BQ/9erfeyHZ9ZOVhmw2GA/r4vrHbf12LcfJwWgj4uybrrDk61arD9ih0A9rV/AjN/G+z9A3nWVxCocb9qADvvy9l88+mfrPPCfBQPP+GYax1nf8Zz/iAwbzo5U+I/jQIOThMosuXOo2jrJwDzz1y7fNsky1r9nuxluX5WlDBFu/VFCV8D9CfpyAWoU9FO17n8jR8B6Lk1MN1eJHwJEP/WKvC7VezmKALMG6y8CQVH49FpeL2TtVaXv/ZdXZYlfGHlCZ/rd6SgsCVpvRzdihO+sfJDs1FITJeCvTZxgQCY7fV6Gr8cn41i6TuJH1tTd8hfv+ogLYUXWPPl9WLmrZyfn1lkLWDL3Vfd6IY6C5oT0fCo/coaCeCo06BpkiyO7+7VZ6hXjnBH8BnbL+Mkij9ZJFIzwk6XEhLTD2uMNVB2G4VwosCc95G/OwoC6k/CKgwO4TO217XfWSAzApndsGeJXm7CFevPv2x9FMsVJImp9xdd8/LOaThzy62m0VBm3CmuPlPJa9xVJ6hTrObm6DnOxhXM27XMCxXOQiAXoNc8ckp2MvDWAjdvp9JdDnAuSU2z8yYnpBuRU1yB210noHP+3pIjy9fR6tsA9GKnUJ+wca2bSEczL/9c7PqVQy30YJ1a7c5kxgnl3Pzca7V7CvkJq9dwKwC9k7nnbLP3jw30+ADmTbh8MTbYcys+ENxqw5HP7WXfaw/332ir/a+s35nK2GB0WnwgtA/s/OlIT3vHSKijfzTSPcL5uZg5jWUYo9pa6sJYyMjrC9yaGs1lKIxrLbcBAHt/XY6nbvdAHV/3KmHtIcDcGc2ImZO943uFt1Q8UlZ6X1m6Y+bP2ZrnPP0+qu5HAHZed9OBemGa9s7FzgtSLCL2fV6CMxrDBLh+lnFB7NiXflTt9jBd6Z6edvnouKSi3ffknGIeZRhzby/A0QWrcJbtx0mKJyWeuAjQ3JmNsb1OhT1X5sjMyTTI5imao2882D1V8RT58GTk44z7ziG1wRnOwuQ2FhhdN/corpUnSTIesnD+nM9NoO9IP2VtN/eCZW9R+75bRcIRCzOeVTu9+wHo591OPNn6rW06OfJk2smoyruHxI7o3NWVssY6wLp5PRXunH+63fjteq2cY3aCmfuu4bZp6wT8ZPLtOJlLSJcIUAZzbgL7Y2FAoVwjGB13lGlA03J2oVr1nVTJX1goVu6n/SeKjK5LC9XurgdgE6BbTs0C4M+x9nM/W+c5MuOZ1nB0ijUBwBtxtONnXefnWT2AWup0AjEBHEVAwxG29H8Q8LZwDo+ioAWP3eSBP4G6fNtHVskwmj1fWNHm92SGwzk6Z/RlO8Dwd30uY53mUygcUFC0nwWY4zV34vV0sPhInKUuQ+OJWVbLefMxHEenK6SG8+vyPZPF1LkXz2CToq1fWoYX5ELFOq/nfJxiOBrL5G36Qkr3nLUfgG1/YKU7JwFQf9RePgsVFiM1+77BMVlFSTP/DihyKsHEKdQrXP+B2HkV1eoA9Mq9k/VamsHCWy6sluEO5+W05K0+scjqwLpbFAm8WT4FFD3WHP5e5kKtFFieZlTqDKs8OlPbD22XVuA9Qbe45dZwepE82f03tgnY+b6QdTGKP21t3N4jh7cAQ4duJ8hEKUotSeZpbZUQkAOydT2kSGGmEYaenvISDw+DUd+QuE23R2EQfHBQK54SldJY5rHTq5Chs93uxKqnVGiHxOxPgKGfs35Zw17XPD2GzyIT15yT3DVnPkPGTlAnuNeRpWfacA0ZO9fYXPiKhHATIOxFoLaVOBavqNUH3opalkBaoE9A73quY6yzzMWqkqGzGGDaGmfuuM2Yd8TZpqdNbO0D3B6Azvt56WguSKXu1+xzzr4nYlMb/xWw63Z+16IfDXhKeM3YvcCWifu0OFV7pHNkLOaLAci7xoZCZQDyjLGBUBrP7TYUmWkjfW8ojOu15etvkp3/e7Dyv7Hh3o/j/T1rR6OBtJFwZ8XLYGsYl8Mve9psxEdAr9EhMVxzCUC82LXXm16IrfcDzPubiq2/scQGGnDUgr3X5lgU7DwGQI9VPbFIuWu191VnKV6VIM/0tT7uqQPcB8DQ+8rug5U7QRxNZ3gM4LqBigfWV3pHgjmCegTVuYBcLD1ZIMud9N5cer0ny4AmpPQ2l9QmT/j8q9o5D3tiuR6wc+5vO8OYfe7kRbEOAe7qNp2UnMDtuFqAtKbkSYbFA+f1bLmPW8Aql53xrt7JiWp7f/px8z1I1GyR5hxkNfKVp4976lbNycm8uziDvOa6AXzu9msA5Udn5crlZ/LbQ+cdL0vZuwma68sYJ+O8ugbh+2BOd3ZamHNLsHg+XgAnULY/2famOI1teLrOdYJtkUWxWCHgMwaWpjiB6xs1a/eBVZPxt15Y6nm5zxHINSX+KFBvB6C3nHdgTl/6dtyOLeuOS1TVbwCoL7EACogAvg5cJ6AvciB+ejYAcz7AE6wYDLwdX3eem29tZ+fj5zNxORsgP8eCKSt0WXcAQE5FOkGdrPrwFLH8usNgmwDkNjDrdhxtp2dY47FvwewBhGC3lWDodQcm4/ZTwX4/EyMv2/4xwPxTPM43VgvQbEJB0EbgBsNvPjkDTH2JiouuiyxO5uo1tZ7+WSt3TafmqIAhw60FCPKgDW0Z2TUv90y1nA3MTOf6GSNlv7XCTZ9axsp3LRPMnK35QgA85+b5696X7oDgy4x5KvfrD03Fa/1Ov18zXhcZOkG9Bq/1xbZPrGTLx3g8APreKW6+f+BbAXQr438vLMNr/FngXkk7XgBy45XNYOlL1cquOznPtdTPLZZVb2vKNhVidfhdmLTWcnkD3htr8H+nD/sa/M+XqYND9TlX2jrZLUJByVY431vsUnH0pMwCttYB6uFHBxWBylFWLz5bfF9yLZQKd7cFclwAzs9FJPey7Fu5okYgD+C9S1Dv0Wcm0YE43us0maGinffj505BSAB0xq1SiCq1O4NYSm95xfxlXfbRfKb0No47XqLaQ9d6r8mw4eqnMpUZbSl2c/SGcSFcnjdLLwVwFzt2zbY899PrMxyQt3k76QBldzx3lrFch6OZTGOe211nwhpz0dtKHKh3EtTzJaQb6yxyzF6ra+UeS/cY9rgynXat48A+DvKRFneEG38VzwXd5bh3u8tP5+3bLB7tio9FuwbH+vyBsf5gxdhQ7634UPhYfLBnvQ2FZmqLaXj4/35t+frbZOeo0Abo4f73NhD6aTQaPDES8eWMhjo6Rnu7B1+GOuLD8nFvEDsf6qx0CncB+XMboH+7ktbAypsB6PWFNsC5eUMRGHqBmHm0wjnEEcw5M3cAD0Afj1clqNeQwXOt7b5Am5c8eouuShDXX/EQYP9YYjmq4KMAcTJ0rqtR8R4pStOuK9vwVLITrEM5ntscbWFzkrW+xl11AipBPpiVrHAWCnoCTIMCwHG3lgyXqm+ydoI0mYVafgBvzsh54oqxiMi9JND2kZUA9JXwRvZOx6ssp5TvepSoXXiqzgmmBGV2CzpvHdDuN2NUuYrGNTDujrNdT6FcF9h5Oxn89R16DeGnx7QjzxNoL60zqbjPpJ/9JevFiVGpbtyFx2Nw1h58hBMjxwR3d0qY1gawZeehG8yLJ+yumzukwme7nUKkEJhW99V1ODboObpSwNgIaMdnWCuYa+u5uQLkZjBa+n634vHI3ukK1olCpQ0A70tGwYLnklgPTJ8MnQDfdYVrcLMF5J0Xwd7BwFsB4C0A1PYzP2tm3nFpmXVeWmLdlxZbT+pqXA8gPTLVarQ/DkYLBttweKqYePOx6WLqBO9GALzv0jwUBN/jmK6jQfP678X8KW4jgBM0aRpDhX097kt23qGOww/4eiYKjQUqPHxJSwHuC3As0mtqPb/QWqjSTwQw4neku149W9hguOX7vfm3PObpmf6D2t8EbIrnste+L2Magnnxjm/kjEf3tvK93ypoh8VA+a7PrQG/R/uZmfrd+HvxdbNr0HDiBynwy3Z+CVb/pdUc+QGFzA8aS/D36ryyTt2WxjNL8D/dCNb/vUyI2m7stbrzq/ReaD6zEP+r1Rr3tF5cJg0G3Qipe2jCbSna5PphF0cw11H4JdOrgH7sG13BgMdpvfSL3j/UXLAAZDaBA/S9OPag2DygPXJ2qvpzz8sQRjkKT46pEOVnhgAdzTyjzZNYYar15VxQq14+D2DxXPPsvrXbATf9H9hmpxgui0YzF1Qk8PbselFgF8s6q6hVusf1l1zXfJ3rqxTSDlU+FJiz5e6c4Z7ZUK1j6UPVT2wILF2BK8o9z3Otd9m8FrrWukxl8mU2w7Y7hXXj4jkxbs8FTulqLS4PPd7o1O6MTVWEKoGbK2tdAH0CeUch2HmJ0tfGuoq8+NRfAf3XVbMWubvFI61mvc063PWtHqg7Bm8TjHycybc4MxlZvXYNA8zDY/2BurGBwMP4y8geG4rNIWGzwfDvAOT/lzc7/188DHgN6L8RQB+fnf+1DfX9MT4YXjka9aeM9PrL4n3BntFe3/DLYHt8ONg6wdAF6Gqpl2pWTmOZgbYKAHqZ2uwE84G6fDDzXDBwsnA3P+8dZ+a12QDybOurycGR5bzfGd5C05kK3IYzc4J2+UMA+gO129l+70d13Y/CgLN0tu2iAO4+Gs4U39ClZupaX3O+7yEAHT3eOU/XnnnmOeWrM5FN5jG5qRZ4dFKAxlmyDwy6h0B4e7e3F3vUnZQ4w+OOLE4gUZyomL/OQkItdzKHDBf+Esm7pPUaztSDAHLOrjvvHHCFA05abKuzvc7XQXV7x+2DMvLgSXIc0AnAbN133thtwcwkvS4pgp8cceIi7tSn77NegDlX6rhipxCahwcdg6J6/v5+FSwR/J4hOtXd2Ko5OU1gKPDjyZvzUt4u9OykXleEa3b396CoQVFBH+6rKABodnMaIH5+ntbLOBfvuLQUAAGQTwSTvrJa+8ics3cz/x1A4EMRoLb/za0WJKDf2Gz+65vMn7IKLH6RdQEofQDsjvNss/8o4KKqvRXA6ktZbR0XFwFIF5oPBQABrRmARlU8V80oEKOwjS147qSTqdYfmoyi4Ac87s/Wjsu2M2Ta89SG5+OzK9CC36FRLX0w4EPfAMynuNn96VnqCuhI/AmFxmIA+mILJC8HqC+zrstL9ft0XF6hYqWDbntnF2tLoP7kHO1yVx/5UZG0VPkzE77qyEyZvBRs/lSud2yzM/o1n6Y73Evf8oX87SsPztD+fu0Rqu6/07y+FQVGPX7X5qPTrOPsPLwWFEGJc9TqrwUbZ9FQjdtyxY9bAmTvXDcki27l2iOKQIb0NJ7G3/fWQWsBE++4mWDVKABq2Y0AYLN9Tg0GbVvrT+J3JhNH4UpToqazC1XIdeJ/ydFQN94DHXivNJ5d4dLWwNzp3U5BpsY993ZLma7x1J3drr2Oo/fxIW+VM1GeEGToLCzEzjMdqHOvXOtn+VdcxLGO04ok9qPA5n1pBauNkcxTuP0lJ3TNcNcT1Ano9HvvL7hi/cVXrY+AjsK+j+BOgxm238vugpU/cS13ieOy1HLnpdruYOojzD5vcrNxt8qW5UJbOGOn21yds3MVoFPFTvV6e6FLUZMoLtdlonMWT0BnoaBwljIcz3XEvUu22sXuBe7Fbn1tfO+cbXOBd4tbOdPaGZ3eOtwu+TigT4B6gzvGVfG9bQ7Mxc67yc67bCBYgOO8DYXn23D0fRuI/K0NRf/LK2D+b16D+W9O2R79DzaMim0o+s5ILLCWYrh4rAeA3hMYobq9B4AeaAM7r1M8KkVxbLkPgKUPCsgdMx9Um71owliGavYYjv4Jh7hMAH0BWHu+U73XvgLm+Fotdwnh7omN91M0V/ZQ31P1PsAZOwBeAM4ZetF1td05Y4+V3HaucmDrnKkTNOkApxn5Mzcv53yc6nI6zAVzU3D9WVmj+sDM2Z5myArzywNi6Ak6ORHQybJ5YqGxBRW13KWlqp7MWCcsnqAA4rGiNLXg+Zxdt/drhYd+7X6q0O8fcKyf+7YZ5xUMw53dlqQNAnMenI/TMYuvKfDkrHLhuTLHkxev70FhEODMHICuEQB+P8W8sivw9LiERGQ2dOLijjtblT338LvRCQwncFrL8gTccnEVgHiD9T45qt+LTl29UiLjBH1tk37WQkvXS8s1K28DQDYAGNsvL9H3XGtrA3PtTt1gPWBpXQAFAUXqOrDzDZrvh26Byd3YIEEcCwQCeisYN0Han7LSupOWixG3nf5Zre/Wsz/juhUOVAGkZPGdAPc2ABvV73UAsdIdn0qBXklVO41mDkwB8M0FmM+zzvOz8VgO2LsuzAegz3SrbycJ3HMl0CNot4CNt5z4HvebYx18PWfwM7bWz8yx7ivLxdD9ySssmAqgS0bBkrzKfGm/6HduP78YTB3H2SUATcfYaYHLNjZZMFPn2IIv2v6l3OSKtn5q2QxH2f4Njq+sfN807aVXMlUO4FxJBzyu+x3/Eaz8e2s6Ns0aUHA0ocDpRMHTfWWp1v5qj82UmQ/FefTUrzk4DUXAt5q1Swsh/4AtEijytdWfmq+sgDYKLlEQVhz8DkUBBXEzXLEKhs3xT8flZShY1mh7owuFJ//n2iun2I16kFs7VOS2JW2UUp6z+LaU9dod52fFj8Kt5y5V6Qn6vLB1zlZ576ODyjjnxgaL0FjOeRWlQbwvCcj8nmmGVKv35V3AcV7X8T0YGjdnwvuS2ehcA6XJDOflA+zAZSR6bfxT6pb1o8CO5ZzDY1yyvsIUixUk6zMRzb3kugB4nuFKiuEybbD6MVh6hg75uDcAvJsogiuUoI1BKmy3E8C50qbAFoI719OU0JbtAX2ejbW5+Tjn54xY1d452+40rmlyuehKXet6YfFxv3XP/c0Cngc7AZ0sfXwnPTQO6B6o95Kpt3p75D43F4/SKOZXpu6sYhvduhsBPcp9c83OI2DmNTYYuGNDPdudAI5gHvlri6nN/hrMf9uAHv0b6wu+EY/2zB+N9pwYHYxkjUQDbSPhzv7RcGccoG4vfU0umIVt944qJa3J0x2ATjAf9PbQB6hsBzhzRS0m9fpTMXMy9r7afHyd7bXXMwToA7W5DuDBwGPl6QDvh5qlx9ieL+XX6U79jschM48UsQJ3a2s6OFMnq6cXPICVgjO5vKUfA5geF7hxbYxtaHpK9xbdsUBOsgCeJyetl1EcRlEZVbpMU7u737EEmVqAAZTQdvKW3K7YBSDL7/VW1SLjfvJi5ifk2MYAGF/6YfM/SnSZ62BFFNh1gM2wkOgAA2+/sVc76QR6MnG2HHseHHFmNtkpCojRiQ5gTdU6BX7sHLDl6SdTf3ZaHYIQvqZQSCrhzLMqXqJMpXt4CCfnbc4TXuYym7Uy1wHgDeJErBMoFfkC9JPWBUbGPfU2gCpZOMG7AyyRArd2XHZxfYnmI8lrtP5G5TzT5ThzD9BqFif10N2d1gOW33MTrPzqOlyiSMLP2s9xbg7WeQUMOHUNgJLrcYsB8GC73AFnwXBhsWbqXXrO+QJ2gj6Bi8rvih2fWCUFZIemymxGzB4g3XVxvvmvLABAz8IxV2I6H4CZs/DWRLauZ1vHuXlaUSOQs5XfhYKBLLjllMfML+N1cQsgaYl1X16Er5frdQYI6Mm/4PWucYXMOYDaBVxeXO457i3Ea5+v7xtOzrPnu76xkh2T5DBH5zwGqbzYOdUq9k6VEI7rYhX7vrPyXV9a9b6pANm56hxQ+d98fJo1H/tORUfXpQV4HWDaXA88+iN+52m4nKmj7sgPThR4ZJpGJ3w/dF3dLrbedHqR1Z0AoF9NsK77R1E07lPwDhXutWD13eygpFNXccD8eB/4ufp4a5s+L2T6FMLRvpijG4rZaNvK9y3DfxoB6HwvtZG9306Q8ZHvxmaBejh9r6yQNQYCoEefHVcLnpsfMZo9PT0hnUaY7feHBy3GzPPn+BwXAJCz6dl+Xsp1AvkEsOOgGj42HtLy/KoNFl52/u5KYbtmQyVpYukynJH3xBV9JqM8qKfhFgo+r4M4hwxWPXKhLLXPbEizdGaeA4DbSmyUBjLdlQ7UydLpKlf90KWoTTDvYrFvtdnJwnlJhs6gFtq+0nxGbfhCD9DxuGyxSzz3fMLdzYng6py1q9/zYSfIv9p273UzdJtg7G2/GsTEyMJbHGPnz0NuxY3JalxTi8fAzgcCXWMDPTnxwfAJgPhPNhL7B4E5z/UOzP/tayHcb1cQ9+9sYOA/KWVtOPapjfSvHhvqTQJDf/Ey3NkzGu4aHgl1xF/6m2yku35C5c60NbXZOUMnoDc6A5mY2DjYdFUGWLpbTeuvAZCDmccYo6p5eYZYOW8/4CW0UeFOFXt/NcNbPCU8GHo/CgMnmnsk0OYuOgVyXF9zgH5PbXjO1ENi1Ce0f959/7DYMpm0WuyPjimGNVxwUy10CuC4KxugaxXX0bjCpiCXY2pF86QTo1kNQDyieX2Ksp1Z+YezXSQkGS5b8mwlEoi5U8s5IJPZuh+eUs657xaFdnvUquRueYA74gxouX0QbMmlsfH1qFuAwoIrdoGMC55A6AzYPX5GtTrX7PCaqfTteXpeTEWJcmIsJ5xtJgNreDLLS1JrnuExXde3urU4CpnAusi86HZHUSBfM52+2OpvF5gvtXqq108BGK+sss6kVQL21nOL1HJuO7fEXX95pflSN7rHvLPdfNc3yg0slL4HrBwn+TtbLXAdDB5fk7UT0H1gnIHUFRYA0HdyXo7rugCmZKhaIQM4d+N6XsciohuAzvk6DWdqwcar9wHUd32h29ZKFDdd9yE4E9Q7wLIJzr6kxWLq3RfnaZe9i8I7ivAA6GTv/iT33GTsXI9jJ8CfssIVGlfAWi8vtJ6rK3EA/K6tc8B3bT0KF7bf+buvkgNfO/4OtNZlQA3BveY4s94nWcHmz61sz7faX+fs/MUumsR8I0Cv2DvFKvZMlmiujuBMhn7kOzc64Koelf8oStjyD6SsNH/ySu3l0x6Xbfc6HDTwoRdA65kFcnbje9h3Ayw7eQMKgBXWSEe3FBSOeO/7H56Ump7hOVTsU9zHgKIQtRNp/N3WaPshcJ/uhXslhGSBxy5P7zN2e/ZbVyqKwaQNSmLrYDALRZX0NWCrnd4Ht7aJ0avdTkaecVQsPfrokMY61J/QzlVAjfcZPx/cGukjKOdfBECDYeNyoCgZQMwNlUQ9VvDufhW4YvUSyF1Q6tpQSar1F6WAlV8GsKfoPmrBk5Wj+OZ7P5J1QfoWfi7Yzh9g1gPNZiofuGS1Oi+VrS7DGcYArEc7SwXutHZlOhvNauj3LotYKuBlAevAWl9zhY1iOa7BUcXe7Lzexcz5cwrrGKGqWbonhOv2MtJpJqNVNaajUdxGhzccMpahQK7xlVa6B+pR+rJ3OJbOOXvUa78L/BudkC7SPjLWR3YerBkbCF2zwfBatdpJ2ByY/9VrZv7bF8X9W6ncbfD/lDDuZf+38aHIrrFYz8OXvV0tIxFfbCTcNTIcaNYcfcTnQH2wjcycKvdimctwRS1G0RoAua+GYP7EraRVZ+H7PDczl9L9mW4jdu65yg3UseX+zAbG09jKPDCveIzK+plEcxTEMYBloNSBeT+BXAYzt12kqnLPcTLAhziIEwZ3valyZxwqWSutXnuL71qIqnCeMDjze8SQlCMoAI4KPMNMXAOjYMuO7nOKY6V3fGGa50LHtl4qHuOUs3dFEUCWG2G4C5hPQCs7hzWb70p3c3SmrVEF7+O6DwCfjnVsyfsZ0HLvgFqRBPUurghxrzeb6vyLmo2HpGw/KaYvX2ymVHGuT1/6x0cE6LKcFaCfxuvDa+ZrxQmQoM3WKJlUD1PgaIpzmwYye3RiZcue60Wcm/L5qVpna53raa1nFwF0VwjAWs4s1Ay58/Jq7SKzLd+Zul6Pyxk9FfZ83MiT49ZLD3vmwXMWf80Beg8u2c5mK7vnGtguCwS2uhNnCVS5ftZAi9nTswFky/FzFA1JK8Cs54mBNwLoGo5PV+udc/PmEzPkItfInXc8ThsYdwdYOFfYfJeXWTAVz3VlEVj6Aq2h+TgqAGPXbvv5nyV4o9KeTL2FBjh4HWLlaWsE7N24b+j6GgvfWGehWyxInMDPRwAEgHZ7jnvsVASvbQS7X4UC6Ge1xhlSk7/pE4E4Vez0XC/Z/jXAfKqLjt37jXbLmRpXha/ZOq8/MlVCOM77JcxDURJIQzGR5gqK1rML8fu7tnv1/ikSxXVc4Ix/Jf7OnGUfsO6r22T+wu2FZsbpJq3De/CEHBFrj86SIl6++QB1Or4xZTCEQoy/n//qenWAwtwXJ1v3XBCjFKQ9OyG1e+uFldZ2ZZ3m7x1J66XJ6OBKYyrn8hsB7Fv13uZj9GWesOiTwxZ7egSMnDawO8W2Ofsmg+dnRO6MbJODmQ8WXrEBgDsZepQdNHad8JnSZ5S+Dnhv83b0fZCynWCef8XtoIPl85LzdLXy+TWK8Bg/p5zT4/EI9BTNDTy/YYOlt51YruqRhHBaTQOwvyTTBqDTEval3N/A3MnSPfatVrvEb848ZpTJa177PS5jmeyJ27EdLzU8VfHMRdcMvdz5t6vVPj5PL/91bu4JnXtu5AAAgABJREFU26y3yQP1Bk/o1vhKG37cm/2Vtvv4XL3XAbtF2ofHYr4AAL0oPhw+ZS+5nhb9e60km/+1AO4vC9Qj/17GMhTHDfUuBEO/ONLrK4tHAj0ve7uHR4It8WGw9GEAOoNZhpmwJkc4sPOmQrXRYwDg8Zk51exStFdmeKCebdEa5wwnBs/wlvp8G2wocMy+6tf1tVg5HgdsfYBrbAD0ATz2ABg611E4K1d4y4vbar9T8U5P9968y5qfMd+cJyzNvimOw4ea5iu9BTcslJeieFSKdPxUlHtCHorIdHvclutoOgCObh5/1u2bay0mVZec4YlxsHhg+5t77bh/6OlJt7Lz9IJ1p7tWudvf3SfWziKDCveO67u0h87ryZY4B9U+OLPX81Kdej7jpNszf3pG5jh+FAq8reJf8TuoLanI1zNqVdK/XuJAmus8ZmvzgNqn48BOfUDowUFdJ+bEvwM7A9e26nVSFMUQleazzhWORjJtzFA/T1ZORftKMbjAre3OxAaPyXl5mIzu3m4VDSwsyM56bqOIuLEJLH29gIOWspyb91zfIFOalsQ5AlXNycHCHdguUGQrb+cHYHKuTsEaAZ/ObmwxEwCpjndudD/hNvPAYAmEcwXuZNk9V1dZjwfq3Cmnap377o3HflDADFlwC4oHPv74c3dots+CY61m18Hra6331gYL395iPbc2CWDZniZbp38+NwC6wdh7AGQ+XNfkrbcxF54K9qpDAODjcxU4w1x4Hi+2fyZhX/Vet4rGfXLNwqlqp2iNhQk7E/hb8+/Ug9cQurlJ33PHvwlFQ9X+qbj9NBQoKDxQSPSgAAwzVQ8gzZVBObrRF4Ce/ygaowXX1W1hbj3n/M3UEoDFBx+cwn13WW86CgL+jnedujx0D+D7wKUKcowTzTqlQrD1ymol+7Gj1MkcdBR8bVfwd7i+2bqvb9boRd0mrbbtt/7MkzhOWH/WSYD7Ua2lUaEexfuU4O4APUlzb9cyd3P0WPYFtc/V+eLmBcWeKLYp2iRD7yM4A8wHC5PlOKf1NO6iA+R5vXQuRWk4rmo3faAwVbP3QYC5XOYU5HRDjJ3td1rDMpFtxEtYozCOUavxthcTbXUBN/fMW71AF+92I7quwHm2y789e8LPfYLFd1Xg8MJYaM86Hnkqtv7cOcURvCOeml0raw0O1ENulc1e3UXvbX4FyFsdsPOQIK41PhbtHBzr93eMDfY8jQ+FE341j8G5/TUz/0sE9dh/tJcv/6sN932JN8Su0b6ep6PRQNvLsC82PA7o3XXOv7251IZpJlOfZ4P1OTZIkZsMYugG91jWrr3lXFHL0i56P27DNjvNZGIKb8mVsxytYjVDV0JbphzjCPgxMHwy80GCOX9GoRw+wGy7c0e9F0yUyWuap5c6G1jOtQmsBE4FsWScc2lqAHO2sjljJqvVepjnJ80WPQFfpjRcd8u8KIV4zJvBcSbXJ1vZVD1nBKyHz6H1Gip4Hxxz5jJgCQGcqNpvHwA7P2GdVA9T7EZnOKas3d6t+Xrr1e0O0Gkz+8DbcSdwg932Ft9RAlxYu7wnZU0beHBcIS6u+3DGOcM9dOBOJq+OglyzUlTc9EpEd9Adjw9LLOcD+w9z5/z+AQmjpEp+ytsdkoEMAb353BLNdJl9zrY741xbpe5ebh1XVrsktqubLAQgCALU/TiRcx+e81OCdvDWFuvl+tKTI/jZRguC+dHNjqIpPwCRojfOybuTVwNkV5mPM/rz89wqHNfGLi2zNvyc7JzslGBPM5o2ADf3ydvApqkIrzvyvdzqGLTSfg6MFgUC2/ndYOE9tzZa6BqY9pWF+NlczaEJ5gRxtrZr903RDnvt4WnWhKKi7dw8a8Pzq/0PJh8ECw9eXSsQD9/disvN6jIEr21AsUAQXynlu19reWCmKFzIcBkpW3ec3Y15Vn14Bv5+88SGqw58ZxUHplvpnslWyfjYvV/rsmTLB1a+i3qAb6XYbzw0xdpQVLCYCbCrcXODhW6sxf8MxVPSSo0o/KkbrPbIDzLHYfeCYw+9f+7vw23WoBhYjkJjnUCd0bv+uwcBmqnWcnG5fPUZkEN//o7Lq/GeOqn3T+ThHgD6VnVUQhw33d4hQI9kujFSP4Vpjw/pf9+askXjKb4HOrxxA9XwFNHJ2pX6E3YMUOD1ZSVaX8YxsPVjAHUXXkQRG4VuclgEuDNLgSMiPkdfzjkVyHSG0zYJVz/J6Onr4HXCqI7nLJ2mNARu+rXzGGSsKhk4AR7XE+ApXmWrPZZ9XkcfinDmqtOIZlAJjtd0O4E609XqcyR6G2nJUyIbmbpzeSuQsn2EDJ4MXU5xJbKJlQ1sszdPr89QFrpMZrz1NddyJ3h77JyZ5jSG6S5zxziwc44O8H51dj7m5aJz1u6U7E3O0tUzofnX4O5m7MZ2e6wrNtYfbKIbnA2HV9po5E+vzWP+smfq/w5vgP9sI0Nv2HDv0rH+UNpIxF81Eu4OA9BHhgMNYudUtw8xeKWhwPm3E8yrnaI9ykS1F/csVpruucBlSBAnNl6fNzE7H9T3BWq7sxU/Aeie0Uy/mHmGDRHQ+XXZAwB6ultpe+6YOtXu3DuN4QiDfYeUa35S++ZsN7JdHc5LE+tValr2eQEZRXICcoJa1iUndMt3RjS0hZWda26yxG9RCWuSZVxDxk8WH3h41HuMk5p1y3Ma17WnMXHqsExjum/skAFH980E7bkzqYrhFh3Xd4ptq4vAeT2V6dy5zbtiEQL6IzcbJ/OWSO7xaRUnvZnnrSfjou6jlTMyFzAW7upKFUwHLjCe3id0s2PAxQmp47UnTAU8igAKnPiaeqiap9YAX3P/mIEv9QCjqoPfKjmNvuxMVGs4OQcgvEz56F3cMQcjdYDugCxI73h838M5KgA9QkBHIUF1ewhA0XMH1+NrP0CwK2mZUtt8yWsAVpuldpdYDiBDxs7ZPNvIHReXghGv0vpaG1g0d9cJ/J1KfJttDSe4F79A6ngCFR+PbWoy7tD19WqV+y/9LIAPpoK1gvlzLaxKdrFTrPbAVIXINCeC1XP//ezPatV3Sfi31MLUA+B1995PEKAT7HrwuwXYXk5ZbX78HYK4Ddfx+Pt3g7nXHZ8pL/amU/PFzmuPzRWjLtvzjZWBsVcfmaHo2HoUJAx/ITtnXGvD0R8UxkKnOxrk8G8Uur/TsfPrv1j0wR4UPyimAMa+5FXWeGKmle/4VEUQCyO6qrGQ8jH+9CJ+16RfPG3DHo2AenOuKL2PHZfWc0vlrc9xAUdBIW58sC0OVs6VRRaRQY5f8Puy3R4TIz4PwD2jMUrn9QRthPjZobm+RV0Xai5oltR9bYeeL0zXNxQEsWfHLPb0MC6P2GB2ovVTXJp9VscA2DVb5HRUZLeLn50+raSdEpiTofflXNTXcogToz8qUKdD4wCV8XxtAOihFzccoDPfocS138nWB+j3TsafcwHMPcn6UYgP4LOhTHUvkc3Frt5QBjrX1tRKp2tc+wup3ekkN1Kf5QWuFLl9cwI8Z+Q0j6ErHGfumqdzdS1bgD7W7Cne2XLnvrqyyz3vdQ/U496ls4EdV7k3/mtQ76mbMI/Rz4LOTIbK9vgEc/+VsTtA746M9QVqbCicZCPR+TYS+508Rl6bx/zFAvpfKaCFpv0vYzPjfaGL8aj/xUi4s+dloHlEKndGpdL2VUlqYNgNAOSqJ9ZX+dABMmfnL+5Lpd7nzcT75PWeqyQ2HQDzIQJ6Xb5j6BLG5agw0EEQr/UOz999XP0e9URwnJ2zfcb5dqTomhi6nOE4hwO4B5mBnn0FgH5VrWztsOLDTZc4Rqr2Zl/WnjoBnXP2kPbVzzr1es4lGdNE81OdtSyzmLk2Awavdrfa64k62EqkcQbFPh03AJgPTwPMd6sF6ZTt2+XNziANRpwG04+oTc/Zulyvss4IXHsLb1go87LGAbS+5MkrLEbuuW8xJS7zopTD7Awo9z3vigCdLUr9PXAyJEPi2hCdu8JUKlNIR4tNPC6jKl3AjPN4p0CuE2DbmrzR6gDe3HGm+IqgSuEVncwaTs6VOI6MvOfODusFyFDJzpkyGZ0OfE8wYOs9zHAYFhD3d8kTnmDIdnU7gJusnEy3h3PXtNVint0AcrrMdYFl8nm4RuZPBtsEoBPo29SaX6DZN1vtZNht5xxIU+neeZE76wB+MPHQNTw2GHoADD2YxvWzZVKM04WNa26aWYOdM4SlDSyfbXoyeIrPyIS7vLFA+C4AHeyVRQnX7vh7+1LXOECX+91GGeaEqPa+ulF+9hWciR/+AX+z6VZ7FI9/fqlVHpwGUJ8MgP9J2oR6FBI0yKGwjxnwstI9NUdrc51s+6f9YuF0/H/SVqrlH8NrCKatx++3QN2I9nOLZDTDdLgAnjfMdTAWRwxToT8/wNV/bYszSbp/UIZKzClvPbMIYL5c1rwcn3TfdD/vzTgpRk5jIhaqbJ1TL8D3EGfaEqPlnFMxyDY5w374f+66ulkjB670ccuhPW2L1tZ6GXTEtbUnRyz6mIB+VK33PjL+jBN6v3PVjO9NFaT0dCCbz3Vra+FnziKWDN19rk5qv72XbnPP3JirL8etq7EQUPudbnFMYCy+bv3F1xygU0FfnOr5vKeKuffjs6JLJrYR4Jmn/uK2nORe1md5bnBFsm8daX/uTGa86wToikp1u+jjPu5UvTt7V4J+nkJaRptdTvqoZujPX2Hk9GIHqPsqBezG9nu3t7ZGK1fP030c1OOhcQ/3WgfsgTpnFTvO2Klq58G5uvbW20bGop3hsQF/VXwwdFF55yPRv9P5/HW7/S9Z9a62+/9rQ7Hp8b7g2XjEX/Iy1BF46asbGe6oig+3lgHUPUBvACDXuXa4AJ0AzPl5+WMxc66kDdRlA/TzXawq987J6Nlq5+y8scj6m1+47+tydFsC/5DAn218prQ9cUp3zxo2Wnrfos/vKgdde+eyfr2meXpITDvVAW8GThLP71vwGRgGxWs4QbBFH6Z7XC7YPMHy6Wlv/essbo8TF25L0ZuYeb4Xx+r5xMfyknTSk2DHA/TwUwfmbDcq4OQJd9C5c75bwB24vc86rm5XiAaNP4KPEhWkEqAYL92dUF3cKl5r4S0LPDgmURLn3lzX4Wslk6EincUJXyfblZEs51intRymTpHZMBceLIcn4xhn6mzR39vrTtgUI93daz4wKznCcV2PBcfN7daRTPvQldYAwKli9OnJWQpVYURq+b4pVn1slpzm6Dgne1ncn0ydbXUq3MPe9wJzgHiIqnkcYTBNP1fbCDgAdDLNIEAxiK8JmkG60nEVDqycKnq2kAnoFNB1XpwvoKXCm2y8m8Y0YOnju+VceWuhYx2FcGC17AAEweoDqWy/LwKIoyhIAdNPWmjtibMA5lNdihmAvfnELAnqGo7PUguaJjbBq6s99r0KzHijhe5uV+ESurdNwE0jFTJSuuD5Kfa7ThU//ia4niMLrou92PmVnNyqj84UI29KnGvVKI4q8DesPz5Xc3Bmydcenu5EfkymOzVbmgIWJ+wycN0vfG+H5vmRu1ss+nCv/oZdl5Zaa+JsHHgcihbPoHi5sxev8ZCFbuB/SZFi0loVRUFtMiTIS72XMcF4n3ZcWu6EjdwiQFGlNck79GA/JVOi0IO9KGDPaAQTwP8rgPcN2W2MvulZp7UhQjEm09CCTB8EoHelbFCXgiMC7rUzPIi+7jSWiTGJ8Mlhtd0HM09aDGDez07SEye2GyCo511S+hrfpwN5Fx2gZ7hulzOU+RXQFVWsrpWbw/fnX7I+Mm98/gfLbgnIuX0iL3eCuWcuQ/bOuTmjlPvzLjuWrpZ8Glj6LdeyL70t9fswg1iUeV6qVjkBna32sdbnzqed++iygc13lq9MXJMIrsitpVHRPjFPz1Hgi4BcIF6h+Tn9281f6TH1Sref7nMWsPHxCNXQuMp9vPVe/6vn+7hnO5k55+aanXdylS0OYB8GQw+P9fsqAOgu7/w1oL8GdAfo/f/NBqPfxqPBU4pQ7Wn3AdCHhwDoQ+1g6B2lyjkfGm+3Vz10Tm5cR6t66gnfnnnCt1ynhif4C+BxH3w/ACAfd5rrb3yu9jv32FkkDNUT1LPd/JyPo/Q1z2iGUavFty1ScN2J1HjQIQ4VOi1i6eUeyrkipTxtYHsznWqdbJye8GH6twMguVLGdTa2HgmMvWqzX3ZWsWqxp7n7EMiZrZ5zUS19F+riGDJXyIJUeVNoxsfLvCIwp80m59JdqVus5fI6CYrIitg2ZzcgON5C52MRmFFo9BbcFMhSOR4Be5E4KDdZbD6I4oOvRat0XNPxLGiVA08nLV7H29NRjitDZEM8UafvBls/Kv/3DgAq2Rfbq0ySUyDLzR0AzMVyPWuWmnoGwGO5rE6ZxlW+f7p2kKmMJ3j1cD2JX+Mx6CbHlaXIg91qv/dynx2Az7U17qP3MkAGJ/8A7V8Z+gIW7E9aIbV7IGWVvu+6zFU4p6jvBNBITQ5gFTNXaMoCgVAYz815N0G9UyEq8/WY/uRlFgQr7727VcDM9bWeND7uQmcxe3aOlPL1R9zKV83Bb7UGV6+W+zzX3keRwaKAZjKc3bt1O4rhUKwA2LmCFwRDZ4ciQPZLZk7NAMCMBVLbxRUAcgatTMblTHU0OOuuPzZT6neayPB7jgeaBMhzpFSvO+oc8gjUZNzMnld7//Y2zfNDtzZa/9ODeA/9Ip0ABYMEfnYz2i4sk8CRxkHhe/hf4nXw70wBHb3zg/g/SSPy9Kzebz78f+jUx3VAPhbHQF0oBKJ4r4TwPuBlL7tEHP/ccwZHfE/Rb52rX654RSF6c6cKN7bgaQ1LgWQPuzxXt+A9vsEF/uD7mDc/78s4agPZJ/F+Pamwlb7sU9av1vtprZ71l6Ewz/AEb2DeEXyuqHSPSOh5RtsaykPnBoW3yaHZPsCbwC37VzzO4IvrUrwT4DlLH5Si/Y5rq7+4JWbONbdB7q6X3UYRcFvpbIOlN/X9MIqCl1XpbqecrLyrQkyavux0hRuVPWyW5+ueL0YuNbs3Z5einXaxbLfXP/OU77nOhEaA7Zh2nCI4grsYea0TxQncXfypKc+83otPbfpVFNfTOGH3OiGS09y8w0Wk9vlHxmKd/Th88b7usjjd4Zh3PsK889ct979kUP83zmim7/+xwcik0Ujw0MuwL2sk1NHxMtA4ONxZHVcwC0B9oLHQA94czbwFvFxZA6OWqUyla7W7fHSazhTLSW6AjnK0i6UhDTPTW3AA2IdwPWfyA/XZimIdeAXMY5qdP5AVbFQ56NcF3AI0+rQD1BnYEhEDBwiX4DYlt8W02dajaK0HYEz2LtX4w+NStkuhTqU4QRusXvfN93LVc5MsDNAloHNWTcc5zuc5wyagK31NUY/73E774zOKX6UVJoNPmB1NVt54AUB6e69TrCvX2bXYaRnL/XeK2iLP71s4NwW3OQBGsl/z7yhtMblDT5Ocpy77WWIhioa40kZHLe3cnpGfvUw5wIrCjw6IJZGpU8nMEzANZTg7DYihu2zq4L0DiseUy1nifHl1UzhFYKEojmKuuuPz8fts08yUJ+/AHZzQ0/dbmNnX1107Ovpov2bo0Yf7xGzZfo/Qa54qas5nb25US5urY1KwkwVf/QXsfImEcxR0USlOICfrbb+4DAx0vgCQgSkEKea++8CEOQOmUp3qd9q0ErS5L95zfZ0U7RLGgalz7t52zoE5WTBn5nVgxgT0phMztZPtct2XWA+LiKSlWpnrweshgEulf3OLTHF67++SeYr/Bs1yNkk/QBClwr07daNm0xV7J8v8ha5xFMaRhRPQ2XanYK7m4Hd4LXO0rkdTGO7QtySy3T9PvvYEdO6Dh+5sAzhvUAcicG3t/8/em4bYfednvm9CCEMIQwhDGIZwGS4hDCEMwxAuwzAMeRFCGEIIlyE0mU6n0+12u+32JtuybMuSJUu2ZEnWvu+7VKWSSrXvm5bSLpW2Um2q9dSps+9bHf3u9/P8/iV75t47c1/dSaZl+HNKpapTp46Oz/N7vt9nEaCHL36hx4ldbgJx2+GfywefaPfPe5LJSNNmrQLCCAo1UdhqAHxEh1lWS9gKlXx37lM9z6xhcD4kO7brY8bjAk0As3uHdBDydjP6RiNirzciiecvfm0HAPt57b7wh4MbGgr/OnpfJS+hS+s9eNthIN2z2+UM1NnDZw3EGb3D+AFv9ty5h636c04q9+O+xdAes+KUAXBltp/QTp3b9ID/OEtYjIF1xtg+TB+ghmmrfQ3B3IPLAuwlq5qU8MbiC4EYrvjQQPxRq9222m2bK9rHAHqFy0CdhDgJ4QB0rGekwrFDnwgEb1OBaG6pVQ12TpUqI/mJgKWPD4ixK899/uHLvflSYxpxr9UlQI8E+3L25C8ta98H9edB+cr3O9OV2x5UpC5kXuQjYft47EV69lo1Gz7qiol3gka1f/lKFPcrrXZP+F70Yvovqpn4l5XUQmMlMTdcjo6lyqHhSnHuiSviQWcPDosevS4mLhFbYFmTqp1xuTzmN/W1sPLcxH2Xex7UqzJqB+gnHgjMJZLTqN3uU+lxA97CRtwrO/OHnRLbMTanMY2QGHaEgLHa1vCi07LGOP5Bp0sM1vjec2PBgHfYrrgB9kK3D57x6nZjHsbmlfwWgHra3gAz9jPwraMilw2MvTsCO8b2FErwveyn23bJ4qN0t77TympXbWnzt4pyHaPY4sI6edPVD92y3X8/hwFS2uiSvm4/+26LW+g6KMBUdCbjSR6/HSIinYeU2S5fLe1TsJa+o9qjM6EgP17lNPbml+7drxE7LB1WzmOD8VODyticeFfS8ORLb9nmZs6vEliM2Zsx3vJp+xhQHz38tiJEYeeM5+dq16ielbAaVgJYmcIC+a8M0HcKiFKM2y8bOzf2xhs5k4Bk+1YXN2BawDp2/G2lscXYvWs8bsDeZIyu9gsBOiwf37ua2468IzZLNOk8Ii6U5cYoZ43JKyHtyC8EwLOn3rf7gfmvUDJcpGa59s+UvqCCHz9o7Pzgm7odgzEfNFA1hjuGH5vDi7H/mAEmBw7WAawC+F1i8tGv04ElAQtu+ealbiCqNcMmsXTibydPfqiM9VEOCkffkQKfZDamHdPYzezzGvWTf09i3eFfKMNeBws7aGDfY4/OTjppB4kIKXonl+mxFPr3KEZ35sSHCrTR/dn3hpkmoE63x5Oy5zjVsc2A/EsXPvexDkkcuDKA4DWvv0h07haga+TOJKDF/l3sUskPqvbuvSpBAUzTfXvtz7sUDYwCPY0a3S5ig8PkuBuw8/M45MTt4rWAfW5aO/rldtCzQ0bXXoFt2u4n3bPT7ocx+0lXGDxlHxsoXz3mFecGqBwc2KnD3PO8lnWQPeEPqEQa2/9byn8PGtfYp6cDlk7BCwDPKF1M24CZ+yVVzqvgW3QVAlZeMLYu4B9qcCUDfA/mbQqRKT1qts81+oQ4sttHr0gYpzhXKdxvfieMm7r9HagTA2ssvKps96Bi9fn1YJ8+KLubQB+1e+SxB/GlHnPtxqlC9TWoVaXFjb9k6OzLXXzsu3rV71ekKup1FmV7TrnthdiTF/nolReZcF01M7/VFeNvukrxTw3Qf9+LnV91nv8KC+OW2tdSal8rJ0ODpehUqBweLZRCxtIRxY151bqukUDQRkAMLB0xnIF8Zvi6AmU0Sjcgz4/fV7Xqd4z9lkbxHApe3hefG/UtbfjRswqRaVOee9pYeAJAB8BvEPZC6MtlA/lLEsIl7jS47JMB+1yDLDuUsngLm70ZGFDzfTFsbEFxhNg5wI3XHIEZoM6bmjEAH0pzQntrDgSRDp9Njbo9opapbXoj482RONeFziNutuZLVa8C9qHLm9z46VXarceM/ah4wgCdQwGWNJi6dt8G5vFrtW6hdZfS1nizy10/49L2e6WunNT9AvrZ27V6U5PXG/ZCLOatGu0HsdJl+g/JYpRgH4oHvW2HREhkbi+wAzcmB7tmzC7W3rDJHu8XEkoxbif5DEDCqqYs93MG9gbkU2pUW2ffs02COn4/Eue4P/bMSWNrcQGcV7Rz3+meXWJ/cexQF7GRfShltsJS6rxXPNFiX9uw3sAU0P5MavUZ+7nzNMExgqcU5dQHYqYRLGJqbftM/vM5ATl565+8BPQIu3A7JCx1r1PIgtL8uR1MUIcjKEOAN3X0Azd64BfysJNaF7HDQuTiatnVEo3rjfFu8qr2hg2KrmXVAGjS/R25/KUOLIjkfAreOjdz9lON8GHlUxLavSPl+vi+n2ucPnHgdY35mQiwXgCUEeSxBkCgJy8+6n97bAn+rey5QPnPc1MYsANf22b7muV6TsLYB4/6NUSs/ksdjFIGqukuO2jRcnfuY2kBOMSl2RnfPKtROq+b6MVVWqfwHGBdjLd860WOgLnKTjgkHrBDof251xi7sXblqXOI5eDZwX59o/3OG6Sl4GfGWzfq/wWsc+zuva1xq0A+hbATFb29HvGjFwdPuMJ1A+2rhxVYQ8pb8VGLDg3+OqERPw1qaU2hjivrnWhjLHaw89SNc1oFSC2PUJX/T+z/UanZ7f7Ug/643ZXYpT9oFEsv3q93pQfBvvxOvcbx+NcB79JjY+aPPZjr64bsc0/aPJgvVatywbiXPOkqaLmpqFcx96kA5EmcY7++BPyB1Y1xvACdXPcAvL3qffi7GtRoAPDsyZfYuZTtS0r374G6duckxs0ZO5/N2RUxQH/yophqr5ZSR6vl1CaXjyxz2egPXTFpDL30B/ae/juvxu6/0mN3909dyV4IpcxfVQvpLxfTkcbFxMxYaWEsUzKWrpS453c8qLPz1n78yktVO17zLKp1bGkaud/XeB1A5wLMvWXNwN6AX0A+ftsDPRWsI4NeHY8Yjv25ilraDdAbxMQBb6nRb9ZJDJegLOVmvcs9G3RJA3Wp12kbw7qGMvzK6WBPXuPH5r1eaBbvO6GedK+Mr1GDW1Kxkee0e+Rj9oeMvWOdB3yyXOt2XyEphr5TgB2/ct7ns9esVcQrYTLEZE4bwC9gG4PFd+zSGN4XvhwRWLP7zwz1eH+5/Qx5ZhEj2cEifbNGXxfpPqJxO15egJr9eJqdJOpgtAPXzyu7OtV7QNGrsHNEempeMzCaPfeJxtWM3wFitWNdXieQpilNMayEvRjQsE+fO/+5mz67ysB+TTCGX6avw/rGfhQRGJGfUjQbmAPoSwCOKI5xO2N42b4a1hrrXK/xOqEp7KljBpzxS18Ym18jtTs73UidB9a5QIWNRY60utlTH4mlU6uqTPXaz7+zjuEX54BwcaUCYcJ1KNBXqX5V3evH3nfPDfy4he3D/NnVTx1bFlTCvm+guEYivYQBOGN7glxSBlI0xbEbZgXAYSLBCN4uWfEoJQHQG9cpaEZxuQeMhe/9iZToTA0Q4I3te12pdmgBWBPoZx7HgvehQH1Sq4CfBd/zoT1HH0soSMIehxkmAvkrB+xnbzQg/ti+xg47dniYPrFMkwzAO26/c9qe32zHFpfAL2/PL5oAhIpEoCofvWev2Hqi4UsfbVu7WmuiRPvW4N9xl/93Y4fef1zCuHTfPq1v0lKnH5EdLU3mQvO3SgjUnlyAvkl1w7TqsVdXBCyv9xa/YkLlnkIcZ/dTvnXWAP2oD5vps9f64GkD1zrvQ4e92+GDAwQs3UfFHlUyHJ+TZ77/uPbraf0/QircOS9yo2uBlLlrPkWuFIzTAWdG6cW7xtbvX/Tg/rBVjB3xHABfpl4Vhm6HAM/wW8TQF5/1+lQ4POVjAz7eFcYtgA/YurFzhxjuZWrcDR8Hu5QqB0tnt76U507ADCI5AfoTgfoiY/clexqgbpf25HFvSau+LGCZCD5HmhxCuHkD83DO950vUJHaXS0k9rtKejlJn66U+CtXjP2Zy8f+XQDo/yyIfX01dv8VZ+l/4vLp9xYzsdOVeOhROTKZKM0/q2iPTgc6O+9AmZ4PxuwkwgHG8p2PB8AtNn7HZ74jhjMWjpJde3LG7BP39HmN4Udvi51zOFiyrUkMJ+/5Ze24BbbEozJ2v2WATmHL8DWN5zVCv3pat4S0AOIAtcDagFq57jSxscsmxAWrG4cDetft0i6dPV7v0UDRflDsHJERBRPYfVSQAhOxC2V6pO+kmzPmgq2Ha94udo56g7M3Txg7ZTBhGLrdHxY0wJwVQupeq7et9XkfLqNEjdCNsSx08CZ7Qowcf2/K3iC1m+w/qCS5jB1e+L00WiWYpnOPLEaIkxBMwTLnxMgMXFkD1H2pUTmVoIzh+TpUz5Nkmxt75OM5e8Mn2nMO9n5qhRLjqNJUE50xL5g8qwEOEAlj6ISTZPv3itmlOre7VNdOl+3dpVAU7F/p9k0GmGtd5Dxg8qnAE0CPkswm1v2pgdOnUqr7EBWvyMZ7zecQzwGSc6cJV1lt4L9a/nBEY+zPFy5+LmEct+yQQ2ppe19lMtwXLWmh057d8rNmjfX7IJvlGrdz/1EDc2JWeWxJrGqMtBGXIYRjhN28QQK5OMAuQCcJb430APwMJgCwdB4je39G6SO7f+Im7BZ/O7v8kb1/r/Y4Rt7k4k8deUerBfz186c/ktiP6FcOEHjecQfk7XnlMenQpca3DzTNCF1Yo+CcWM3HLm1AnkWVj2f+wqeBSn+zLxW6cUZjdVi2sgI49Nj3xjt3S4WOxTDJisYOKCkD8hQWzp59yjFI9+93+WvHxKaZ7GCFRNsBG19ANGiHMVYq7OAp54Gha5XT8I1/rdnrjPtOdm6T6r1ogF28dcYVrhmoXw187jStKWL2sKYEOXsdq+PcwF5j9qt+pJ7q91kL6at+z57l8zfOB4B+1uWIkdVK6owAvPSQ3PY2z9jvX3alu3UCcGW5P+mUMj5v5KBiH8PSi0OM2rtcZbhH/eeL9nk60BdHDcwRypEQN3ZFzLs6GdjYiHdlPx5EvQrUp2+9DKPR+J1x+5zvQK8uqeFfMvPRl2P3quxpxt4DcdyLl4AetK5phz5Z5XqRnCr5MXuEiNcRl4teqeZjp10ptdItZv9Ge/Ny/o99N0f8j3wpyytAf6V2l9o9/8eLueRPjKHvryZCt8uR5xED9JLa1ibv+d24bGnXg/rUW0p9IwkOsId1K7MdNbz26IzefSANCvmigb1G8ZMP/I4dTzpf/7TPK9wZ38PODfjSdxu9PY3AFwNh1Ohi5gbojPmxySXVhX5ef4cADrBOymt+wqWCjxnDE5+6xOK1q8bqhhCOWzsISM3e5TPhaVADzKOt27xozUAdwMazy9gdvzoJcCiH5+uNAV8OPt9Bu9RO3WIDmqtnPLlVCmKp6DmE2MGFn50QmJ9UtCUpV1jQeAyhtoNBfepuKdgZScLM02ql2u8ydsAhvx1hHGPRlApSdiosBvEWO975ujVeHEfIjbHryOVvtDefq/1S04UZAwsiQacN+AgvmSYBjNUBpRzGBGdhxvUbvJdd1reN+lm80aeMlQPimb49AUu3N+/uHbqS7ZsF6nipCXuhGIWRe+LyOp+3XvOhAeYaY90rxUB9SpsBlYE5lrmQARgCr0jNSgngADtEb2E7CMTtoCAQr/3MAGqlWDq753nCYQzQscihCp889o4U+4zxw0pT+1gRswTWLFxYJbZPgh3+b8RosGEeXxy2TtqdAN2Ai0Q8GDosmMdvbJdcevb4TBhmTizTAUSrAgPr8X0/c8OBRQ7mPWkM/em2v3GTh94UKPNcTx+lnMaAmnz5k+8GVa5vuxl73BwUKE/J8jwaOPsphXcfIMZj9YD3PlqzwgB9nUtzcGr7RusMHnfCHm/mJgz9tEbjaWKEcSnYoUWxssaeUz2kCe5Qul/SDn+asGDh5N+1/4CEa4Vb5wW4SdWi7lXMb4r0QbsvDltMApKduyTQk6VRTojNGrkvXPYhRCTR4YqgiKVkgF66Zcx88IQa07J2YGCvTgJcFqAWWz9lwH9eIE2DWoZqYlg7e3ZuEYcOHNVrfkm9zucLdKLfqvOjfMDbQFmsHObNOP1RswF4l0C9YICfB+gB/cetwai+1cC821W4te8r298tGsAvjtC4dkW3Lyauq3yFcBkP7sF+fEnxrsa1OxrFV5cKXebu+tS4aX8AqDJuB9AZo8c8qGsMzxUd+86apqCZINY1MW1APlt6kZrLvUjNJuw2/CIXGXH5xBVCZKrF+NeukPixK2T+xJUyf+iFcIX/zRXsysf+he/qeAXor8Rx9uJYzMf/upKObKrE5/pLCxOzxdDTXGFyqJoPYlu18ybTnbE6bPzpVR8egzVt1AD+2U2BtcbsMPGphwJxMXUEcRNDAn/S5CSkCxTzlLLQj67ylTuNXtlO6xlj9puBCA5R2MNOifDYracpJrnl601hwQqMwYcuHy0d40fVTx6BeQPsvcdcHEZO3SgHgZteZEcoDcI5MfN2n7YG41YGPIphY7YwZlTwkSvn3czFDT7+smW7mqTixl7VPkYWtYEg7J3kOBi+AjXsEMHUIWuHENYBpNGpvxm/O33vBvahjiN2mDjma1G7d9kb2GFVTcJQ/Buavfnda9E4Nd13SF7zpJLhNssXzpurushlY9qoMXGkYZ1iW1G8o9DmMdNtPmksHI/0nDFk6lVnzxtzPr/ahclsx9OMiIqDTO0XYvuMcVPdO6Vszxqby/btNRDfqVF7xth5BqZu4C6w79qqoBjS3gh+gUVKvFa7QmNzr3D/XMyV/HeCYrBzzZ9doRF06NSHakiL2H3MnXrXgGSFlOmAccS+L3ZhlVTqEQN6da2fw+L1gUpdnh8i5/0j+7vVYrkTB99UmIsPr/lc427AHnCKoTOoX6exO4wdTzgaAJTuKUbsqOnt5wLmUu7b45g7QwDPUtXsCoW7oAOYoEzFQB0fffjsJwbsb3hAP0wH+3tekMde/OzH0gNQ+UqWuw+PWSbfechAPdO5QywYUSAHhcnjH2qHL1Zvh5eYPZfpxjUu024Hp45NGsHHL62VQJGcdECS0TjgzAqGyQNMngz+dMe3+veBQafw3Dfba0Q6EWPDvXs0xmavnLNDJKCOpYyDJTbINFoNgmQkqvOWRmyKsWZf/hNp8tqSOIcENBZkI7Afv37CFW+fdaU758WKc4Mkv50UoOeJdL3OPtxe46yTDKSzdvAlKhYmnlGa3BEP7Fg08a/b/6+6KGtBxX6/STXHCN3IaPcs3a6HrRqrw8hh6KUn7fY1zfqcdu4UtmhU32ZMvcMr3u0Wtq6CFnrRn/VpBP+dVc0HywiwxcKDgBn26nyOEXvogbHyO56hA+oqZXni2TlWNMA7+swtBulxeNE90AdXYspVk7OVF0lj5Kn5WDUTnjRm/uRFJnz7RWa+0xWSdkrKfm1s/PUKzBwwz+eXAPy3/e6cHPfYb73aof/KA7r7TVcs/u+LxdSfV3PxFZVE6HIpMjlSnBtO5Z8PVeQjN2aNj1zX+L1gZ37Ls3UDb/zl+YnAby4m7r8Wmxp7dVTuRTHzQQ/oxL8+7nF57c79mB1/OaI3sXO7GLur+xzh2uAFpc2l77Zor67iFgNL2DUWMsJklIuOSt0APtJ7RB3pqMsj8ncfEaASwMH9sZOPGyOgES1M7nnHXu0PI9iCGCcyOm/yDVf4wHlc4Q6fDU8MJ2AeU6lEUI5CjnrDN0qKY6+NoA5moTH54wEF5JAB71vSLijUhia5+NUzbrZ1v4/DZPyJ8thA3Cd3HdO4G9ZC3GuaZK3uvbKVKYoVwRvRpAEzB8BhT9jIpCpvgLlTB7pa7W7cAhQItrBOzRuozV5Yr4xudZwbM5dFyn7/0PnPpGyWCtqAIN2zQ8w8xVi1Z7d8x5menRrDAxKM4lOt38jnDZtFtBap/dglGHFr3/uZik+0RzcAIxVtzgBtYv9PVZ/q288+1I48xri4ZrlEb+oqt98RIEU5z95c+3nKXwwoEcSRxkasKz+Dkf4YqvIDPxfAzyn/fYVveDO2G6PXm325HQ4QxsH+KWiJa7RPjO1Xqn6Ns1uvX6NxO2K8qAHtrD1e3R/iPnb/Jz6SAG/i4FtSsvN7hO3xjdvvhHodYZrEaWeWyxs+x9+fXiYXAGye33+OQ4z9joAu4TJ439VHX2eHDTukqafdHn+87hOXaljjcp1bDNQ3uYSBOYcNsgHyMNarR3XQyvA6GjihQ1Cy8UtF9CYMwFP2uki1+5/BHp3K0hSrLAPt/N06V7htTJmcA1Y8rFR67NDYuVviy5QdItmbJ9q+sUOdj3lNde3Q6D7eyXjet7WleljB7NfeHB860a1FAP1hoytQn2qvabzosqBd9Qp4du65a0GDGoK5IBQGkVxW4/Uz0pr4cftpiUgpX+F3Vs77gyZXpvscADfA1vXEA3VZY/Ve+/nN+roSCneAXzv2Zu3fNW5/1uvKS53oS6EyADvjd4BdwrjbYuew9MVZX5NaXbrm/M68GozcfcMa/vZA5S7QHg9Y+rD+Tta2qGfvVfu7anzag3k6HLJryMC8+0U+XlfNx+3JCe+t5iMG5plfusXiX6iDQ55zI2KejX//+o1XTWuvxu6/8TIGtph5vZxaOFqKTt0uz4+FC7NPC+pDn37o8nbl8JVPBqybj41558YA9Pv6GEZexKo25YE8O3bbZQ34FTAjpfttCeHYv6sqlTa2h+0G1A12GWgZO8cbDpCjes+gdr9xQZ3rVLUyvk7dgL1fMuZ9woWbd/qaRmPDalTrPazdOWC+0HnQj9N7fKVqXGUop7yqnXY2gL9tr1sQm96jHbiS1agK7djp1cGM4O1AwIifchbt2Sl8gc2Ts64RpX2vgfh8/Sa3gEgNpTA+XyJZrxtDf9gn7zmADptS7ePtSyqbCXUfcXP2O2AdQuSG4ljlFkRe9u3XfadphEPoh+rdmJBsaY0btD9VcYgxX5iTQl5oRJMnfauAnz05QjfKWihuYc8un7oB2/zF9XYIIfN9qw4yAHnKWB4CMXbQvPHDykiCSzMS7tour3a6d7fLXzlogL5LYI46G7CIiEF/IuBeYtKMtAmYYWSOXYwRM7trWtamjdVO7P+J4l7jajpbqSAaxskwdfzsvurUX/xdCNU742bEfgaQACl7coJsGDNPn3w/ULr7sThjfRju3Mn3/L4a5XqD350nKGZpWi/xHtWvNK4l8KZzqLgYlLdgxTv3sXzr4WDvD+jiqVf17OkVbvr4e/KNz6kSdZksa5EgjW7W/m5eq4EVPmCHTPtj7xqb/1Q7+KUqWQ5Dmc5vdVgAyKOozC9wuLHf235uzAA9aQcPAD3buVk59DxG/P+kpKVh0/z7YIW011l0CfDxnbdukqAxgwhOk5Y9Wg+lDdABTPrJs+y6Bw6pbAVQz/TbgZSYWPs6bJJi9Q1rXRbQtn/3tBj/dpUC6fWOgh4vuh0sGK0XAhZOZSrgCaBjZwPsOaQyeYKd83ME6Iz7ew4IvJXJfuOssuCVMgfjF5gD7LSw1bjCHQ4hFzR+R+VeMvAuPenyrBwmLkDvdpVnPV40d++SsfYOD/YC/jZdFQNz9ul8XiP3ANCrAVvHp67wGMbqqN2Jgw326iTISdGu66EHd2JiYevhQN0e+V7qG/tyPmb0Lo86HemA+VS1mpwrVFPz4RfZhaEXufilaj6x3ZVyK+09eZkrpt4xUH/D5eM/UGZ7Mf373+s8/7X/h+sVmP+KA/qvaWxTKv3hYinzV5V0bGM5NttZis5MFMPjGWPq1cLMYwG6v4Z0FWYfe6CfCFTtz+95MZwY+T2XwZIGeI/cEJAzis/Zx1n61ClpYdRO2xoRr4A5e2KYuSpTPZinjbWT7c6oPUmeO4I3duQGyAjeyCn3Xee7Bcyw9YXAix7p9OydfPeEwmTOS82uEA5G9f3HjYVvl5qdESPe7VDdV9ofE20pjzdxlMp9Py/hHD50LGkRieZ2KkMd6xCMHrsaiXDsydn/EfiRuF6noJxk0NImds7I3X4/4mxnmnbZ7+CFSOzOYS2MFYnQlJCpe58YlyJjjSkxQvUJXhvFzskXRyUNIxdYEcWqnPXtvsMbTzJ2Lax0iPdIc6v1rHfOvhevurflbZVWgAQ4xGF0gMPO8WazG+UgwR4dAIEJeoa+S1e6e7uYL4yZ0ThqcpLdGF1HVJH6sTHcT8V6KVVRbzp74gOvq988bMw8ohE63ukPBejak5+z+7P7gPXC1Plz+MR7OhxgQ0MRrxY21aAagNnv6/3fb/pdtzHoKYnTPhKoak9PXjsqbXnR17ikATi76CT76MvrBOqM4vm7SJDpDovmd4rUetsdYjamHCTQEWeLGI/ROoU0PCYOCPzOHCRmGPnze9Ss0KFjmmS8I29JHAeQTx19U783CXi5rm91IIpzuML7Ly//Kh0+Ykw7Ln7m0vZ1efs6pgscbBDA5e3wy2QGsEXbQIARqvSkMeoMCvYu9t9b/LTF/g31b4bwzV5TsHMsbwAxrzkBa59n6YAtLWislFLoJAzQ0x1bdPCI87yxj7f/b4gK5vVIrn+2/5ArIkwjXx0f+s1zrvCozV7TZ13x5hkD9lP2M1DU+6z2rJLlDupnMxHAB4++BJZOfjv96Zlglw5rL5I6Z0DPTr2AB/1hk3bn5afdrvys35XsdslvLtb91EAeBbwBemmo2Y/ZUbgbqLM3ZzSvcfvT4NYOANXRAf93o1clliNVrjp5Pdihez+6BHHsyoMMdwG6rgf682L4gXbo1e+XrsTGAiX7mMDce88nqtXETMXAPLGYDo+8yMXaq8XUJkbrbrH0l65S/DNj5X/uiom/cNnYn7py6o+1L/fs/GXMa/A+/grIX/3336jdC+l/7/LZdxYzsbOlROh+KTodK86PlYpzT6p5mLqux66EWG4mAHT25AC6AHvQp8SxUx8JOtBHfTELOe8o1Nknq1oVMKdL/a7vO+dCECcgVxd6nQ+aGR5wcYDewJ0dOHGuBMFEew4bm97tBW12hVt3K1891LLHhZoNYIl7RfwzeM4OCRd9EYtanUhvOy6POP3kCNiIdA1d/NqFL3/j+8SJN2U3rurScy6OWn5JAc+onczp7j0KX4k0E96yU81sxFWm2GdSnoJi936HYmoR/NDslmH3T9qdHWIW7D7nWveodCWtJrUjGjvSTU1KF5dsaozuDeh5o6XClEMEY3YYH+BLPjfBL5HLa7UPZqwaQxh3YY124ZOnDFBadyrlTk1njHEvrnNhlPlMNbA2GRODzZPURqQo+9wsvx/iMLvPZMe3EmCRVgYbRwyXM6aeFajb725giAiMA4OsYIC5gTQJb3jTaRSLGyAksI9d+lJjZMRzifqVYvMAG2puQA6mjqgOa9qCgdbs6ff9vtzAnIx3Rtc0kPkd9Ie+bQ0Wf365RvLkxhNM81zq8jc13oYtR9U9/qU854zwmR6kDCABxzi+c3vciQZj6XaAiava9EvP2LGY1azUQUQecAPx8f1vKiN+SV2POp+Mdh4n9zvPYz6zTJoCL+L7UKE2sHOa30J28Fiw32Pq8C80qk/aQSLfs1Viveil9fp9eA7iOqj4gJ7U5dUG6OvF0NNtPpiG7HzEYQgS88a803YL08V6CKuWor3zW61K/Jh8p/277dOonVREgBVBHIyaETmCNsWxkn+AIJI1kTFqViuJhjX2fG1wOTvAMd1AYJeRgn6Tst7D9tyk7P8LQLh0r96VH1x2haEWA9kOVzAwzw2e9KCuFrUTnsEjmjNATyP8tP/f0j3+ZzJ6B9DVqnbnkvbrGfv/AMsb+34AukgtqgFzHmGcAXLZGHbZQLlMCQsMXSDdKSGcWPzjYL+OGG5pb85l4I/tDVav5LiRHp8kB3sfG7Drqo+FDd31IjhG7oEYbik9Tnt1pc099LtzAmiIlF0Y9hdWtaXWtNhSxOuEF8GlQqVqJoz47Wa1ED9qYP6GXEeu9Ie+EhU7WumPlOopdp793aVEuFcg/uq//87YPf07rpz914uF9I+qmcT+ciI0WIrMhgrhsVJh9olYOqp3rGwAu4CcfTkWNHbp4/eUBAeYa78uVn5TnvHcyC19jQAd7/pSfCye8zuXfT47rBzmyvhd4N4k8I/d9P5z9uoxA3JEbgA1Y/VI+175umHioeadbpY609a9ym/Hdw6z9pGxtfKZMy6PdPledPbm9JczOg/V25s81ZAKz9imWFUAkPuJXT3v601h5ES59pHtvldfF0GQxnibvTmiNqmHjyqClmlC2ti59ABKfjvtM+mNmWfvXnZTxs6ZMpB3rcpJYyzyAzPGZNzNuP1Gjcpb2D1q9EknOXY1A2qxTOxVsGh7846oPexrhcAwbp8/v0o+5ukzn7mY/R6R1l3ao+NVRwBH53WEGs3mLRq5Y5GSVcs+hukB3NSHEiSji/hRO2TgO093fisRVlo79V1Kf0M4JoZ+4TNvVTMwJncdyxVKcUbAsOEYI2WB1RfqNGccPnn0F26C0TmHFJLlEKrZzyS+dM4YNsCNx5vRNiwZWxs+77nTHtBhxdrf22Pg7xhd41GfOfq29urxSz5dDaU8ITH0tPtilK910NDPg7G3sCu2g0vzV1Lmq4VNCvkVmhYo192e09F9P3dPd7/ms+m1J/9QXe2M3AW05z6wz70vHUCY3Tk6gfNMIT6RnW7m+C8N0O0gcMyP6hlnp7u2ujSecVYLup8V0gtwCEpeNjBtWuuyHYzmv7HbTbIHouDnEChBnP075Hp2aPxNuiCHPA6mTFBwITB2Z4WSMabOJChtB10EdPkAXLN2kMxf993oCqmxw2+GVU/PPiXBpex54flgxZIRqH+lbPiUvSajlPgQD2zMH+BmJ19+YMCL0pwc9VvnvCAOOxvjdwRyfJ19XATgmQ4wiqck5qoPm2FfrqwGduiyrZ22rz+r8Bj5z0mAe9ym8JgCY/aRfgPxLr8rZ6fObvxZjwC7JDV7q1e4PzWwHmb83uYWn7FD7/I+ddTusHLG7Xx+pNvv1Yl5DVTsHrjviaWr4AVx3Gwghgvd8wI5Mt0lfvOpcN/t0cc8iMcDQFfxCmUroUI1szBr7LzfmPh2t5j/Ae/DQdlKIHhzv6s/ZwXmr4Rvr/77H4L6r/uxO2r31A8M0LdXEqH+SnRmthieKBTnRqql0Igrh4ZdaYmZBzt0xHD5YNQukZwx8xxBMtxK0U4q3F3P0tmFGyv3rWo9LjPUphCZjAG4/Of4rRGAsUN/2O0Sd5td9No5AXrseo0iXRG+RRUCc8gnwRHK0nnQgHyfwJyAFtrVFLUa9J8z8vbj8h3qHIflU3vKyFnjenqlEcB17FZEZqx9h3bL0d4T8rDzMWw2FVSoxjoJmzEgRGne5GtKlRdPkUo/TW51ym1P3W7wawLiORm10w71sM0lrtW4qYbtYuWoggXa8uke8Clw9vMZs7Nvx4/OPp2gDcbpqr688IXiVwknIewj2b5Fo3csZHSUU9JB0Mw8Heg11GTuscPJXu9Vx6cMg7/0lZu/+KUCZLDncQiA1VHaAUNnvI6FK6GI1PVi6LCxVLsf52p3jmCuc6cdElZLye0LWVb4ZrMLHtwTdau032ZPHmOK0LTB26eaNij5bfb428a8X5OYDJbLiD168XOx0ygecLsfQlsebf9bN3X8fSnB5w3I2EED6CFlxX/uEpe8XzzC72OgO3f8HQnPiELFB8/oHGDFA8/zB3BiAeNgkWj8UiwZQE3Zc5lu3yItANY1tAGMz0mZUxgMdrUDbxig/8w+/kQ2OVYIYQ4eBsRhdv+1ftXA7zJ/8l2N3RUQQ568/bvw+yyc/8g+v0zrACYC2oEzGbCDEAw/cu5DfQ3TjjT78KZ1Lte5yWXaNhpL3+KnIAakjLPJgs+x3+7eKkU7B0hG4Srt4d/Ifh8dxhjJ27+XAlrs/49E9z6/xya1cOCQpi74x2HuBLzkUJyzh7f/JxAO8twwus8aw0+2fiN9RarT6zYYuXPfsP+s3Qfj9TwCNPbd7NXvXlIYTPFOjYC8QACNPY6CATXiuLQdHPCxA9x5dun46zkI2/9z/I6sBpgmMHYvckgA2EmGMwZefNylvvNisEMXWx+75kqj/WLhZYnhGjyILzH3J60vx+z8edFuEcjJp24gXx3t8QI5Bc1c94x8qW3tpSjunhfIzd0LdulDvoBFQO4z26uqQx39b1Tt1KZOomw3QJ8vVLMe0KsAein/12Lj3zHxfxLcLl2vhG+v/vvvsvNg5G4vIE6GhewPFzPJ3ZVE+EopNhcqhidLxfB4tTw/boA+4opL+3SU7AbohUAMx96chrXcyFWNybOEzzy96j3nQcQrqnZ61DMSw3W67IPWl7vyzN1G7dL5s5rWhrpcfLBWdjNa1VCEA9L0mRPBSj0pwTDswsNtB1y446D25fxZgS5UNjKmv4EA7piKVqJBaQpJWbKdde2TZY1SFQnD2vz4nb06fvPYwDmxaCWyMa4HzBHgAeAoy1HEt+8MLGxH9PdEVLI6SNxt8SwdoR9vTpRHDNllbz5TzXb4aNnpd4f2hopASAIjhHH4fREjadx+QsxF+83rpwxwNyswhlE4o2JCU6i1RO0sS1JLUN5R6ys2ucVfjRWNNDrVbtp9ULJBoMwcam0DqLABOm/I8SC7nPuCdcVb8Buvlx8ce5oPkNnsVeHGVgEJlNRhNZmtkHANlh1mZ13zqbdOwfIlNFvtR9jsXylEYTdsLHT68Ovu2fa/kUAOcI+cX65SF8APAR2e+dF9P1XxCp7z0LnPdWAJGWDOEixDcIwU6Ws1zo9d/kqgy2OYOfqOgD9SwwHgAzHpGXnTfWgNI2Qx9Kb1mm5IEY63u2ubrzg1xk66HeybQwljexTrY/vecKMHfummT6DG/9Qn3516zx7Puy508j3F4EYv2OHm7AfynTN14HnBrsc0AKaO4p0+d5g2B7JUx2axcb43Zt8bRVtw9kPt3tmxZ+zwkev+Vjts9u0kxqEwJ6Ala3/O9253+Z5t9tjt7w0s8ZIDuMmWjQr9SZEyZwcpxum+l/yosg8Q1Cl/nWKV7h0uP7Df95BzoAzy1zPYJanVtdcHmf5ZshIQxtlzhbUtiyoehwWrIvsZWQNmDghkLTDGL96uccWhBo27NYoHnBmf37ngd/hXDut7MnZwRUOC4C1/47x9zTnZ2Ch14XEU8KEPnnEl+76iEYHyQ5/hLjsajHy4Wwy9YoDOqLw8OuD/jAiOUBl+vh0AFo2hLxr7hsGXAjaOKK4ixXtHAPD2uTEA/ar3pxuw043uwfuBxG/+9p6KXXyF6mMP5kvsHEDX2H3kvwJ0R5BMYsqXrqTmSy8yC+EXuejNailx2JWTr/k6VNnSfjMgW6+Eb6/++/8E5r/+EsxLpX/litk/dfnsssVM/HQlsXC3GJ+LlBamKqWFyWo5POFK88/8yJ1xu2xqwWUMvPDMl64gYCMOlvE6hS3s0tOkwJHXDjMHzI2lZx80u+x9duYNYunsldMG8Gka1x73uzjFKVcNUK+ccbGrvlSFgBj6zGHYlLHEqCZVjvuh/zpE5qZPYUsOntV4XiDfc0itZ9jbeLNKYMcx8Ay37nKz9d9of66qSmJeaZxqtDen6xfssLDbvm6/xu3yuQcHAUpRCKEhFxtVO2K4zMAxserU/XaXwlNPU9xtKh8vezAfatYhZbxui0RuKH5Rsnub0A7FdCr4A2C3N2ufv33IZVC/04GuTvINYtkknuGrhpUr5MXYVdgYJH5v2cLIBK8J9uJBhzt7TvzllLXQmEVMqkDefl9EeTA4BHYasaJgZyJgwM2beMLe0IlBJTKVfTJCON68MzS+sfOGlSJuI8DlvB8XJ1Hjw3JrfUc6oBtXWIv9zNqPBd5TBw2s9/zIwPctJa3BTskjj8DqDfypPh0jfY0iFvv72TOMmklZ+8IYMQC/wu+7m3xrGqw6BoBqT79MXxNWz/oyPbYZA1wU8ij2k62kwhk7b6WT3E8N0rBaxss8zsavFIJDupsqYWt9j7sKVw7hdX9PsbWzJwKPOY8fbcCllfKOz59614D7fSn+GaGzekjBwu130179LPqC1facbtBePMkUAxU/+oGajzXpwPaWsoNNiglCqw+WwYuebt8oYEZzkbHHWzAwL/TZ66DLADXIdldmfTMNeZt8kp+9vhivKxzGXr9LO3IAu2AgXmD03rfL+8SNNaNkZ4wuO1vXDvn1Uc2L9XPAg6Hb61UfS02/xX8OkDd2nUal3r1LgFy8V+dH38aul9g5bJ1L6vq+vQL2AiBvrL5ElOudOt+ehkiOXHceowR25/R3gLSy27VH7xEgszPXqJ19OH82Vl7Gi/4AYdxlY/UNQYVqn0+M42uNkcPGGbED5uzYAfQq9jVZ2K74fvRZP3aXkp0SlvCQZ+byoz8IBHIG7POPXTX81C0G10uW/pKp+5jXanzKVROzEsVV0/NPXmRjja6QWOlK6b/0O3SN23/9e8TrFZC/+u//xsZ/7Tsgd/9UJ0GYeSX7Z66ceX0xl9heSYc7F+OhsVJ0OlWKTFZKkeeuFB53xblhP24fD8JjnnuGLiGc4mEHvRiOPToCuREvhMto1N5jQN6lEJncUJsYq9h4sDvPqwe9S5WstJKRzEbwS9Ru42pKO6eY1/jAaQE6LBzA106dbGo85rSyqTe9TiUtMTWdHZAAjl07Y3F1jONPbyeidZtbaNtlbHmH95hTrmKgP395i3bt0YEzEruxN0/CwO37pHzHCmf3Lf/4gI+OJYc9Y6yCcBx+DyJms3ZQoQs6d9+DevZ+iwt1HnXz7fs11mScCZNCLewrKg1I2J/b40gv/T1g2uYPAAjYUFmr2lMxpV9LCCVbmb1Zz9NWZowSBoiXHHaOTYudOUJAmswo3ghdWKuyEcWxXlijIpcEITEEnNCe1rFVoE64CUDOGzRed6JD063fSEQGe1WndusW5bUvGEDPnftYqm3YKGIuqcYN+FX3CVPn+5rWSSRH6Ezo5Dtu6tBrbvLQ6/bx++75kTfEhj2YrvMVowbEUoYbEFNBSgIcv1+M6FSS1mo+cYnLa8REWTsoqIZQG6xjqnH1HwvIDYy1azdwFRsnDIVDSptnsUwEGCWjfsfSFg9sbYTBMHafOuEFeoTXjB9+2z23a+7UxwqAmeGxGRufsyte95lLXl5tQP+OC59534B7mYue/8gljYGTyc5zo453rRY+t8e/2p7XjVKSA+YJO/gk7LlSqp4dhJI8b4zd7bFm2/CV03G+zWUN3BiZ89hz3dtcsW+7sfUtnlXb6xFvPYCOLU66B8bqyo1fr9yCpB1MPTM+JEZNqQrgm795Rjt1Yn45sGX79wtsOfDFmrxwkMMP0wD26hwuuU3I746uYp9Khogt1qGAsb4BvLePEdN6QUI8sXRU8fy8gYOB1e28y107rRS5gt0HIUyycfZjq/OJc4zdAWaVrCjSNQB0GPmjVgPoPgE6O3WEcouM1h822GVfjyoey5rCZ7CudQu8yyPdL3fqqN6rIz2qRyXPnQIWGtkUMgOozz/ywreAoStUZj7wo4u5PzQgf2KXZ+eLYUJlhu16JnAnKa7KBagnZqp40Kvp8OyLbGRQWe3l5OuuUviPSoF7JYB79d//AMR/KxBb/HMpKPGflzL/uZpPvLeYiW4vJUPNpdjso3Jk2tj5eKEUHq2WFyZcOTwmUZx86MTBYl2bDjzqU0MutySOI89dhSy+gS2viNcBWdSoRgXM80MddrW5rN2yK8887vblLAbmabuNX6/VWD0KUBOZCpgrEc7Y+jU/dk8Q+0rT2jWfACd2zudoabteo/S4WM9hA/GDAbAfVKMaSvdI+3aJ2cJNW30lKolyhMXY1yy0GqA3bfcHip6jvsqR3bkxcNg45SuAOr53FOqAOmlWmdtewQ47Tz9oc5m79dqZp++QHV/nMsY0EPrNd1IXeVhZ7InOXeo0FzNmfw2gU4RCExxvoCiXe/fqa0jOIsULBo1aOdmxJbh8UhufVz0pO99zK16COfnboYtfCdBR8KN8p0J1pma19s0LXPVfS1zHHlMgbfdJiA2+dpTMAB97cu1RYeiIxRrWSd2uDHQDiND55QqOYUTO6F0gC/jb94SV0LbeK8kJPCGfvW6lBG0hAz06zrGvAZwxlah48RXWLPbk06S0nV7mZo//UsEsJMQp8Q07GSK6S6v1s1DkKxL27AdBVSqTgVUCcWJXaTebV/XoKp9RLpHfZoW1pNu/0e8mPzojeLuFMfvvfU/e9uE9r0n8R4Qtme4Th95SkQqhM4zcOZRMH/65wDppzH/25Nti6ZGz7xuwv6v7A9B5bgTqWPrOvW+M/lOXaubA84Xic9EesK4gDQ4PPACvw4Z9LgOTt69NYx+k1ISVjexkW1yhe4vL93yrAxiqcEb8YuhdW+VGyFKYYgeBJJG6vDYaNwuAsY+hNs9Tf2qvVQXB4BPH9gYDx7/e78fovNaUd2+PhWmBvPwIMtFH0J1Oa12PHQCMQWOzRJNCwiEHBED8JRjfr5NYrnDzvCsbSxeYa09eox26omKXQmeuHFfADZ51Ru7lgGUvAbNCYth/G6Ar/c1Yt0Rxsq/5Pbm+9lGjt60tWdoA9Kd+vP7Sj864HUCXha3Pt6mR106Bi4G7m7nrR+xSsj+x66EH8zCA/sAz9LkhqdwF4C8B/ZkH+MCbXl0C9Tij91DFAD1RzSyMvchFGquF+Hq3mP9r58r/xgviXnrOX4H6rziI/0ZwwvvtILj/9+z6fXuh/GvnKv/BLeb+0hVzr1fzyfXlVOR4OT7XXY7NPilHp8PF8HiOxrWSAXl5YdyV5o2hzz7V/lylLXP+Ksw8dLmpIHBGbP2Oy4152xpFLipmQdUuIVyvyz/u8SN3wJ0/83dPevxI/ukVl7zTJJAm8U1gbYAe7z+lxjQBtxTvF5XHDhP3ue41PtaVABdYOh9TxsJ43gCd/Tb7aCw5xLZK9IYYrmOvB3MVs+xVCly0DbA+oIhZVbLSad61X5a1RGBZA9D5fJJoVjskyJJ2x8fUpoe6dWiBrScRFRnDoFEta2+UiVv1bqHzkKxFym7v3ScGzuhaDB2xGGrfwXOBN93AvtszdAV+UHOJH7xrh4HqRq+G53tbN9mbswEnwi0DAPa+sDP2wMSUzp7+TH56Hj9/Dp1fpR26vOscBMgxR/jEQcc+R+QrYB0PKkWjl79UYppYq93nAmAUiMQAenbRjLXVw23sWazS2GYKdXz9EtP8wiu2G+3zjQZSl1apChUv+uyJtwR84wd+ItFagojRlk0a4c8aoNM9TmAM9rapY+9oRx5V37ox2vr1AheKVNjR+x3++2LuqOlJiJux75878a4sbcqTZ/zPwaHhK8Wu8viXxtnch9+pG1Mn+tXAGOCly/zJ9r8zRr5cFrqnu34k5f08rXFnP7JDxIdi6VOH39ConDE6B4vQqXfE0OfPvKcJhcbnzfZvY4eN+eNvGti/56K1jNW/FNCnGte+VLbH1Fq3xue2N3wl9T1q92TLerWkSa3O42/zkbCZzk2u2L/LmLMfp8cChp7r2+PyBubaj/fu1uGFA2SkYbPG6Ck85PZa1Fgb4ebVI9qpFwzANYlpsIOEveby9vn8taOa4KCbgJlrotGyQVON6CWvY0jaYQKhJ5oP7Jc6tHbuVAlMgR05I3W6yu949Xrx1lkx8tId2Pp5edSpWeXKkN9Awpy9/hHv5a8e9Wz/bp285eUg9hUfetmYuexnw93ewvbER75qL87FDv2Jt6zxOR0CAmGcImTlP++XQM6Hy/T7xLgJY+gBsCvHXeP1IA2OEBn25+Ehf8uFJ33+oVh5xUAcQK/MP3Xl0BP9uRoJxu9kuoupP68uJmcLL1LzVKTerRYoYUkvlxfdj97/uZ+mvhLE/SqB+BIL/z6I80L4l/Ixusq/c5XKn9qL5P9cXCz8uFrJv1ctpNdX09HDpfhcazk2fbcUHp8szY8liqGRQn7mcRVGbn82dj7qyvMjBuBPFSiTN2aOKI7kuKwBOYCemzJgD8JjULcjiKM2NafyFS6f3Z5bql6FsT/tU8AM9i7CZpI0kl2/oGQ1mtHiKNsNnAXoV8/KzpYMomE9iFN/etbfLhW1wNSvejX8fNtuic8i8o/vU946ka6Rth0apTOCpwN9ARW4Ut6Mobftse89qYMCSnj6xBHF4duOKj1ut1ezE3hx/ZTqHElzy1DEgo/eDiqZ2wbuqmc9q11+1t6o0ArEb1y0A8FBCZNQGCfYm8sqZffbSlrbJl8baferLuoeFMabldmd6d+vpLkUwAtDat3iQ2TafNAHI2rewFWS0bBWV9iY3rQB0MzpT9U3zYSCJjbS42bp5W7fJjU0MbEpvenu0kECgdz8hdV64xYbNwYMe0y2fq2dLyNsH87ylReiNcHUP5cXHeEasaPJhi/0PYyVxTIljvvcbj83lmoAxf2c/1BgHjbAmzM2q9E7HnHYI2pvxtsqXzEA3f1jASZqepTrgDNVrBorY98jHU1xrl+IpRNq49PrPg+qSz+QgI7yF1g3DB0lfYrdr7HxVMt6gXBKbWvr9VwyTWDPzyFh6ug7bnjX38v/Pm+HjJG9P7VDxi90QODwQIrdnJLg3jIA/8hljfUrKY8q00D5njQWq8NDi/071dnnTxqgn6F85SMdHvT3jcFzU/uxxu8Ey8iPzvOHd75hlex2mX4a+exgKDfCepfrwbq23RUM0LMDB9RSBjtmFJ6m8xyvd+dW+/v99nr6Rla2WOs2TQEA9UT7ZinOxZqvG3DafXCbxXUB07eDHwmB+QH7ud3b9O+NDx7le1IHom/0nFJ0g0UzwY6+Y6ePpLWLlRATIER8AuM7F1zprl3s0W+T8X5Ke3FAHSDnsKIUuStH7fc5psNGjuz3JWC3g0FR/eeNAu3KSL9Yt9j60x6BO1704qMmFbaUHrd4UH/qd+RKi4PFG4ATE1t+2q5DAYI6jd6NnVfHB3y4DOycqtTJoFlt9pZXuwdjdpi5W7in2yVgr4YfGZA/9vWpCwD6E1eefuBKU/ddJWSf00UM7DPt1xdjzyuL8ZlcNTk3+SIXveJyscMe1PN/ZQTs/3Cu+PsBW1+yrb0qYPlfGMj/30F8cfHP8TZWy5k37QWywtj414uZ+N7FVOQsQF6KTA4agJPdHi7MPM4Y0y7lnj+oAtYC9Dm77GQpMJfCfUgedFnWaE9j7A7IA+jBzhymzS3lLXkD94Ly268IvHPD/f5jLsB9qENj9szjPgPzWhe7ViMgxy4WDypP41fOGJDXSbWeNHYu1TsjdYng/McSzfH1A140R93pzMVv3CztZ6TItRiraNjoFrB9te3UOB7f+BKgw8DjinbdI1tZvP+0QmcAdPzpBMgkOnf7UBliXGHeBtio0bHFaax+v03FMQA59awAe/Z+k8vcqtG4PTZwRm+i2okT9KHyiy0elIluZVR6+4J26qjHFcHZvV356cnuXb7vmvF8S5DbTlZ327cqEokiOGOPCfur91nkpKgRwrJgIB5p2q7HyR49TJGLsS7G9dGWTepTV2wo4327RUUO+8a7rPuuXyOQSTaRoobP+xPZyRjrR5Rm9okvZmF8bmAqQGd83BgEo1z8wo9k64x9X16lnXH80koXPY86/G2NqGcMCGXnMhCmOhXwnT71oTrDZ04vdyP7sba9JrAmCpaWtgX73djxwxLVLhZcfK/3p69RhCrCsllj6IjbsI9Faj7WmJ54V8BczNhYbrJ5nZg6h4RIvf9cSHv4z7TLB8Anj74tex1FLGMHXlOoDIx86sgbPjTm+Nti5amWr3Tf8Ytf+PE/yn0DQTLZOeykLq8U+4+e/0AWNYSFCN848MQvfKx0OM/SfcgMawhKY1L2vJLYhgecMXiqxY+9Ub/n+wiO2WHAfEzBLNgdE/bc8FpS6Iy9bvIEAqG5ICwI7UbDWoUBcUBkh14w0Ma6VjRGXzAALbD6YR1kzwljeeUPcFix1xmvkZR29Bvt/jdLjY+FDadHvNk7IMgpyNrPzNAHYK9vhG3F+5elcC/Z4aFyr9aVbp9XQ1uRprbbtTpY+PH6KV/Bagw9z/Rg4LD2+YziUceXgoCZpdF6+bHPaxeYs0PHvgZLB9AfNgcK9i4BunLdYeV8rQRy3RrZw9A5CCy+ZOhX/Nhd9jWy3Qe/q1QlbEZM3YCbdLiXUbAG6POPgz36Ew/adluewdpr74kTt1zJwL0y88BY+yOx9kr4WbUSGa3YlXiRmBl7kV7or+ajx10ps1Ld54vF/2TA/sf+vd39zqsx/P+6QP5bwTgdAcUfeiZOZGDpB0odKmU+rWYTW6up8NHFxOylcmyysxyeGCyFRoaKM0/HCtOPQ7nn91L5yXuF/NidSvrptWp25Kbfkc88+i5IZiqwqiGEmxoKUuOCa/qhy47fdZnhoEmNvbm6069L+V4IClkyYuX9qmLlVmpwAmQM/BO3GwXmUZLZBOKn/UWWuZTiTVLDsyOPGSvXLn3wgiJd4wGQU9IS7TviFoyNho1pz13apGKSGGy8ZbtvSmvbJasaO+X0lZParcPUo50e1GHzycE6Y+IHjL1ut8tYetO3apVS5jqqXxS8Bo6I4RL2MzO8ebICuNviAf2Gj5kF8PmzymNu1euQQXSrwJvReSB608i9bauyqwF/QJX0rFQwckdhTItavNtHcQrQUcTTVW7fC+ACvAnZzoxdwqbtDVchLHUG7MbIaYGj1Yoxu/LcGY9iH7M3a1T1CTVmbZeSfgHWxucNLJSwBrDUfRLYsVYKoAhpUc46e24JxthzE8263IDwa3uT/8rv2w00KTdRi9kFSka+kGCM0bvqVc9+IBU4gM54PUTm+dnlAuWp48u8qr3uCzd55C03aixdoSu1nytbHaU7gC6BINMJMtgJllEf+jKf085qoPZTqd1VBBMw5vjFlTpsJFXIskJglGSc3bTeB8sAnlSVKt1ulZ8UHH1XTWqw8WkD9omDr/v4Vvvz1OHXVRQzTzqePQ8At/bl6oRf6dk2wB2U1rB2oHQlVrNc9jbU7fxsDj1h+36mF3wPj18CQ4XfrBPwsyaQPYwQFgNm4nJ5zDD0XO9OA0bazU749jTEjvYcpTXp2azUN4Jh0r17/CjcDjAxLHAG7rBywmnyxv5L9Jn37TNGf0A/j4NBfuCg3A+sJTJLqnd77mHoKYkJN/jKXRwZrHNaNgnUAfRc32619WnsfvOMt7LdChrZBOhnfe0qQI0gDvEbnvQrPp+BHbzf9R/Q2J9Jgg4G1KY+CkbrQauaAH30qrexoaxn386+XGN4HwurkbtEcz0azyOkU347gM4onsQ4Y/0I414A4gD6mLH2CQD+ujH1Wz5Qhl16ULoCwL+Ys8/N3n8ZB1uRQO6pfWzAPX3XFUevS0Bcnh1yi9P3XWnyrsC9ZO+zlfnhqgF7aTE6EfOgPj/4IrdQW81Fd7pCcoVbLPzQ3t//o73P/6uArf/m9yNgX/33jx/IfzfYif9bZf4uFv7GFTO/rBZSa6q55O5qZuH0YnKuuRJ9fq0y/2yoNPdorDB1f7Y4eSdSHL+dyI0MZrLDV0u5Z9cquWfXq0Syph516wVXZFdu7LvIaH3srveTo24XoD/0Y3d253ZlKWIZuSkxXA61+8Tt76pU+fMzL4rjvvGj54zBp4baXZLY14c9LvWgy4C7ThY1lO0AOqNzgmRSty+rwCVzv9Elb18yEPdj+MSNi9pz83GMXnPEawPHXRTRmwF4uHm7VOxSpGs3vlvMPK68ddLcTupjJaa1bVcMLMEzqlq1Q8J8wxYfBduyVQK6GGyGKlVG0hLCHRM7xx+OaG6h67BAXb3lMOm+Q17IhkXOficOCdGOnQJPwDtNNSl7chqtZEs74rK37IAi+9hWsXK6rJPd26R8jwJYfJ/97ChvpFjbuvYI0FEd4xFnjApzAohoDqNEZL7mcyXGRRq/UY80trXpE+9rXEpJC78Tl0+J2yiApA4z1vKNRFUI3OIA44WPJVwLnfNRquy6SVwjKGX84JtueNePtadO1K8y8PD7XK6oMWEsWwmsanYfsNPEJURfX4jZk1HOrjjMKN1YN2r0eaWufWDg+Ut1uofRAZxYpuhXP77+1KvXaZqjCpW9bbMfu+uxnV2hC0ar0b0B5tIVPrNMFjMBq4Gn0uLsMSNi4+M04Ne+RWN3WK3Yet0qBdOMH/y5e37oDUW3zp38wI0dfEuAPmeHmQl7bCN7/k7gvCAwXmmA/pVvbDNAR73P52P2+6awkzV+6dINq+33/8QlAXYOFUxC7HkKBylzPO8cCOQOaPDefw5aBOAggswF3nEOS1jUeLw5QJNI1auHXe7mOXUCsMJQZgCsHNtZywaVtWCXzHRsEOvWjtpAt9C3y/vaDcyL14yhDxioDxxQVW6eyNgOr2xP4gpQiuBGWdU4FDDRUYa7sWjSC7ERJtu2SVinJDu7T/6uYPe7BNoe3A3UB0+60uBx+5nHXZmcdvucmDhWOjuYUO+aD3boHAp0CBhq9OBMGlzQda59OrvwkQE1sSGCA8zLJMI99VGwGrcD7IqL7Ra4L5I0RzkLbH3Us/byqAf4xfF+A/UbAvPq84Cl2/Viym4BdVnYSIgb8qp3+xytbIuz94yFky435MpTNE4OiszkDdRLz2+5ytQdVxy74YrP7zlKsNixVw3Uq5HR0ovYROpF/Hmokpx9YkTsyovU/CV7P9/uyvl3nCv9lWfrqOBTv/2Krf/j9o0vAfkfaLeyuPifXLnwYzHxXHx7NTV/ejE+3boYnbpWWRgfKoefjZVCj0OlyduJwuhgJjfcXzCALdltJT3UUU3ZJZvVAwPYe20Gtr2uOGGnxikP6NSlZp7d8MUqZLTbi0+qdsDcgJzq1CyAT7Qr3nRddw3479ntHTH1zNM+l3xoPwPrmjH19FCnxG+Ex6Qe9rr4zQYXHfCxrvjM1YiGwO1GnaxeeNYTN+vkR2eXHoPFI4a7dcnv2fGpw5iJhO2yNxMsZkHQC/5w7GjRoDmNWEyU6/wZvzm1p8p0b9qutDhG+NHuY26ObHf253i423fJNqaLjHbEOoMeuCliIfZ1vvu4hHjswGm8ws6W6D8i5TzhMuprx/rFmJzmq74DYucx3mgRMRkjh6H78I5t8pWLxWMVImK24Su9eeox2Pcnxaq3+uQ2oj0B9KAxjDfdKElydV71jugtfHGtMuZJtkNUxm5WlauwPVLv2H/KerRFAjnVbCJoQ0VO4cp5gJUduS8hAczZH88K6F53z3YhGHsv2Ed/baCwSYpsKbkBdECT/bl2xCsN2H2IShob28WVQRTqWwaObysHHYsaLJjiE5rNUJlPMtI+/b63ndlhg5E7BSrRi16cxaEHrzhhMmG1lK3WgWT22Jt2X7/Q45dA7dQ7GnUnaDFTStz64HadDkOUkTDpgNUi9PJK9vcNtH/uGTnPwekPpXIf3fea7Hew87E9f6/fw4PzFy5D5jmArjjY5dIfyH5G2Aug2mI/zw426cur9T0IBXl+YsHkggx3hczg6Qc8mzaoBRBBYhwLoYEw43dEa0wYONBlAE0B3xHlqsd43dSv00GNQ6KmO0w0eN31Goh32yHAADZr30emQb53lysoeW6XVO/Y3DLG5hnv09TGGkKhNm0e0CUe5PXDisLuW18XFPtweJQjgwQ+e03leI3bYybDvUiSHJ5yA+/S3UsS4RWvHHSl6wB6nStTHHPtmAdxfOywdfu7/LUTL3f95UdNGpUzTlfELLWoAPWSv/xp53dqeKpSAe8lVTzFLAbYS7t2jeMVLtMTCOV6BfDlMTsYUNAyZqA+PvAS0DWKVxPbDZ/vvmRdC1j6i+mbal+rTN50lec3XHnCSNLYdU9uhplSDrjSBDbfK+q2UL/F034D/RvG6p9UFxdGKsbsC8bYE5Xw6Gx5YexJJT7dXU0vHDXCttre838ka1sp/QdBqtxvvWLr/7jA/DeCHTmj9X/jXNGAPPcTAXkmuvtFcq5uMTbZay+A+4uhRxOV2fuh0tTdmAF5pjh+vVAcGajkh/squcdd1dyjDrWcqRjlbrMBud0acKaNNXOCLNiLqvDcTpSTxsSf3XRpY9Xp4asuTVDMpN+d5wy0JYIbuyeGng+U7mS6L3Wgq/98+IpG7bBz/OjsylP3W42dN7v0o16XuNOsABf85ao4VYhMrRg4nm4pxu83+fhXrGTsodmb02k+GFjarhPvelogTl1qKug+x3+Oh3yhfbf85jSzJexNDJEbQL3Q/K1vSevYrRjYhdZdym6fb9ntwvUb3Xz9N/paqdkpSSGiFY8vI/br5/wO3QCdlLr57qMv0904RKgEBpsZgG7PM4cFxuYAKKwcYI+oIc3e3Ht2Ki2O+4Zl5emcFks25mMAD/DGWvweM4lvmLxtYjYF6JuVr07ghypBm9f5DHIA7+IajavDKmpZpWKZmB1OsJZxwfLiEuVtVRa8etbbfLynF6atkn+acTulKbDMqWPvap/M9zMax5s9fugX9vm3ZQkDsGC7WWPnWLFITJOgTswcQF9njJLO8VWyYmUMhBbOvufmjrzuxvf8SOCL4n3KAHj66FsC9bGDv1A8LL3nc8SpUsNKcQyj/5rPJX7DfoYuQDWnpz7UWJ7qUQRrhL2M7/2xff7dgKG/4xaMBSNG46CBv9uL0bzVTv50QJ5xtD2HRLsC6JPGzuU3J0SGPx99R/nyjOAnDrzuhnf+nexrTCJYLcDQ2dUzaufnYtWDSaeav5YwDkBP23OUQlfAfv3yWv/80DhX+7EdJD7Uvj9a96n88mTNL1ze6Kbt+ZeAEkshj5dRt8B1o+8bt9cSDWrkp8ti1uTFktm+PQJfDgYCWfziA8aYb5zU7j1Nt7392xeNledRxl89ZOB5XB5xPkYlj8YAPUVK05yNekzs2HWYRGiIit9ej3Swk5fAyD/D1Klzh7INOMhKRW/gLGX7/XpZ1ch0L10/5so3jrvS7bMG8rW+MOb6SVna2LMXyIA31l4k091Av/Kk1QM2ATOM3zVe7/oeoHule/mR/7olsZsH8G4P6IzmR/zenEAawNsXt3SInVcYtY9fNUC/KpGchHIT1zV+rxAPO3HVZ73P3BKAc/tihg71mwL+in1t2Zh5yW7zBt75YS8KRhBctPvMPO5y89cvuvmrtS5O4yQ5HSPXXHn6vjH8B9XSzP1SafZRrjA9FCvOPp0oL0xcW0yHaqvZ2BZXzrzhFtPgwL8NPOuv2Po/AjBfGrH/jh+vV/69Wyz9tSslV1RzBuTp+brF+FR/JfLsSSX0aLo8fSey+HwwUxq9Uig+66sUn3ZVCo/bqxQYkCMOOPqENnbSzQLN1L1GgWz6UZd23oyBCuO3faHKUwNyGtJQro/eUVVqLmhWox41h0AOLzqCuSm/Y2fcnn3mfeio1327Wp/Eb6kHxs7xagPsDzrEtBlxx5Y85CjYb14SoJMeh70tdafhZZY7t4THMG6XhY2s9hsXFDwDCybilUhY2bTYqRsrD6F0b/MsG7YOMwfYvFXtgFe9G+BK4X6t1oUatqgbnbE7Qrn01RMvm9TSWMcChTtje2pSZ1sPKkMeZk6kZhw7XMdu1Z8qlMZ+F5gxo3YsYQjcvEp9izrIYeOkfvFmjHhoaWcOkOsiU53sbAPtrB0ucsZQpBpmxGpfn+2mq3yjGrFigCh2q7pVUqqHpfSm1WyVOs/1+8ty9oWB+BdKVqM/XbY5HTC+UTLcQv16X2d64SMxaoRXsF/2yPjNCaUhepbOcUB35vi78mgTMgOgp1sAoK+UCheXqG6VEtSSCpX5SJ/XZIEu9LP2vcd+7sZ2/dCFYOin37X7e0tRsHi7x/a/5kZ2/Z3fTxuYz9nPR8Uu4Lvwmd3fpzrUcOBhFA+gs0/nFtEaUwbS6OYMjBcMWOdOMAn4pbLUBU4cQhrW6rEQ++pDdb7yIThN/pAAoCPK41DB9EDCuEO/tIPH2ypYmTri2fqsATqj9Wjdxy4jkZs9z+c+8Hty9vZSqn/pAd2eJ0A90/ylhIJSutNud9kffmili9ihSYcinsOWLW6WGNszn7hEx04d6uSX53nE82/gSvgKLB2fes4AUwc9xvUcHO3fNWOHFRwRmvLYazE3eMxYszHw7m+9YM5YdGFgr9+l220RVow9rmu72Hu23QcJkefP8y07XYOvnU1y4GzxEw6mRBq7k77Xu1fFK0yb2KPzes/YbfGG36Xn7GeUEMTZ4aF084TfowPgsHia1+z/Danh7fMS1anR7ZKAusIIfajeFYN2N43ZAefhnpdRrt6+1uyBGq86grlnfnfuQbzfAzl/x8fKde/yue4Sxg28jH9dfI7i/VoA6va5Udh7n9+r41e32+rzqwboN8TeK8bCy+MG6s8HXdEODz5ro0PZGyVj7EU7VERvXnZhe9/BBRO5dsFFrtfZe2Sbsftbrjx1h3F9tTh+q2QkKlWcezJdjkzcX4zPtVYzMfvHSi53pewPfBCNlPD/7FUYzT9sMP8n/h+p9Ee+GzfzZjUb2fQiMXNpMTo+WF0YHlmcvRcqT1xLlUZ6C6Wn7ZXiw+Zq8WFjtWAn19yDBh87+oggFwPwe5eNlV9WdnruQYsBfHAZeKJALxqrLoz6lLcMu27A2Fh29pn9eeSWAfuggJp4V+3JZ4YCK9uQ8tyzdhjg7xUBa4CfeTKg+0kOdfp88/vktBMmM2Dg3aAQGanWYdsG5MlbVKfSvmaPmYrVoXY/bodxXzur0Jh4UNjClaT8hIAZY+gAOsEx3nd+SiNwid5Ie8M33s9+fU9Qmeqb1iJ2GzLWw+gdxTvjfHbp9Ksr6tXYNuxcbNsu+qaxqqmn2QA91n/MzbQf8eUsHA7s/lVfyUWJC554+70AZpivf3PzTMmP17cL5Lk/dukAPL5y2DUWoAipcK2bJWJK0cBmX6MyF3aSvUR9+rF71IBSTK55g+9CJ03N3mCxbSGCCxtTJzYWLz5iOBhfxL4nZCBNCpz29AZejN7n7Wuna1bafXwkEMbSBQiE6PQ++Z5vDDOwZL+NMA6A9XawICGOqlRFqm7QDl1Z6MZOsWWJcbK/Jlyl/nMXPW+gev49Fzn1lps69FOBLOwZUIfZhk5+4Eb3/swNb/8vSpyDjTMloFNcBSUXPNunepSLdDgmB6jd5xCvHXnDfofVGpXLUgZDt0MDIrwF+/1Q28dR3XPgsAMR1i6tLOq9sBB9AkI7pcEdfcuN7/upbvHQo8qfPPRzsXP0A/wMDiCRs7SlfSjQThiIRw3QyWaP11HDulKjfSYWsHHKVjLtG7WCYOyfYsJyaaXU7hxWCMbh4ML0BQZNhv3z48tcsvegVjhkDXgf+EbtyQlxyfXu0V6bCFiy2r1YcpNeG1ojILCjAMhe2+zhaWTDisY+nrE6e3Sehyygbq9Vdt7s5rOM47FPYkPDd06+QN1qCfXi+OUVCexjeFU2QxlM+za97lO0wHXu8s4NomPtcEFCnDzoxrwriOPY2V89aIB+Up8vqJHtpBfQ2VW6fUGj+NKtWoF76UG9QmZUp6oWtjZXGvata7Kgwb4DQZzG7CjZAdcg552Y1zJBMqN+fF42kNZ4fGwg8KP3+n36WG8A3AE7B9jpRJ+65X3qQcLc4jMS5nyxSxVlvLH0xelbAnRG7awzcwbkKSNS8Vv2PmzvibB0ruxQm4sZMVm4ViNAjxlbL4xc0aieLI/c8EA1O3ylUpi4nStMPYiVQqMT5cjkoAF7XTWX2O4q2fdcMf0X0lP5vJFXI/h/gGP2JTD/Q7eY+wv7B1tWzUT2vkjNNlcjI48W5x/M2gsmURkfyJWfdVXKjw3Ih+qr+bsXXI70pdu1LkN84n0fQQo7R1yWJnZ1qN0XpCixrU2WMoE5zBtW/ajXpR76Mbln4zd0ZUZvGWjf1shdjByB3HP27NeNyQ8EYA47v6qDgBj6wy4D80bltKeGuF9j5/daDZAv+XG7ATIMPTbIXvyyyk1yjzqV+56+3+q/Rna2Wo3b2aWnljzptxu8ha2PFrUjQQ/6EQnfvAr9iAHxQTHTWM8+qdjxnNOwBpjP19M6tt6ur9TSFuk+7OYbt4ixL30f6XB0ozOyR3hH8IvG7tfOuIXeky7UdVSxsAlde6UWjxPIgghvkIKWS3ozS5G8hRiua5dEaCTDAeC86TFuJyyEpDgERhGqRlVlulNKYd4UKVYBbAjeUOoXVqS2jSpQUQ85wGZv7IzXw9jJGBefXi5wJzKWrnMa3kiDA9DDtZ+IZaN89+E2PmSGnPdpqcsN7AGaJh8mM33qI4nisMNxn/N2UEAFr7hZA9uw+sDXCpRSiij9Rp5vxufq9CaUBqV5LWP4tfKlL5x928VqDMRP/dKA8g0DxLdd2MAc6xc2uMlj7xvz/Zl7tutHBtafBQr3z9wsOgDFun4q8RgMkWha1Pd0xcNKEddNG9PHT86BAxBHcDZ3/C0FvbBTj9UuD8R6HlDxUwPi5K2nAl0C4jpEcIzcn27/oTLbAXj0AxOHXhfIA+xY4wiYCZ161w4tK2RdQ7UuexqHmgufan3BiF+aAjvUZPGU29elCOJBmNf6laYGcfu+0Jkg2Y7Wumbf3c4BZtIeC2DMSFslMwbY7MoFnp3e901GAasZxtuKBgbUG7xGQAcADodMngKf+FK/fZYo4Y5N+vfL9u50+X4/ei8a0Bb699qf96rdLRPs0tExKKgHNwP1tLXeN+9rdv20IyXhpw+XyXCgtYMuIjyVwhioo24v26XwGwP8sgE6nyNbvmCHVwR0+SAq1hezXDRAp/TljKvcq/N/Zn8u0O71u3P25Rqf+4hXJcjJlrbEwnu9xY3dOqBsbLkygdf8lkJkKuPXfB48qvfxAZ/zDqDztUqNG5QvnQMAY/wKdasBsFeH2z17t6+BhZdGGbX3KkALME/eaTTwrncRuzL2npi3wweR2PRXxJhY3vHlTgB5yX4WY/iUvR+mHnVVM096qpmn/SU5k2afzBbnR4fKsdnOajZqp7P4CrdY+s+GGX8crGb/6auq1X84gO4rTRXPmv0zl0+8V80uHHyRmO6uxsaGK/NPIgbmufLzK5XKSE9Vp1BGT/cpNzAwJ3HJ/ifIDJ5V7GiKpDLsVDdqPUOX2KzVsU8n8CVvAKyYVsbrL0tSel0ekJ+47QqT9+0K/OeKfH2kYhaYexq2beDPLawc9k4hi1TzYuZNBsxtGumnhnpc8kGX2Dhgh/dctzSrGbAnDaCT9qIn+z1jB4Hk7UZ9bcK+JkHojEC/Xur35G3Y/GUVsyz1pKN2B9CJcmVcnhw4plE4wB7VeH23CzVsVptapOVbN1e71s2cozt8laJlo52HDOwNkDu9gI7xfOgS0ag7FE4jhk6IjD2XUTswTNbvcLNNO7ylzA4Ayd79SlxjvK66VvudUjTF9ez3oB6o3AmSSXTZG6296UV587VDAsI4BcOQfIYdCxZlb4LxpeAZY1lYjlAKs9eEhSlUpsHnjgNEjM6jTZslmlKByVmqPFdKER5BHGWHDiouYaBzpz+QtQ2gZ4KwYKAQMnCeRR2v4Bi7SC6D9UvtvUY2Lincaz4P9uifqC982gATDzp7VbLGU+3fSHmPJQ1gjl306XHhsz5kRYcPA67oufdcvPYDY88/d1NHfiYlvS9u+Uij7NlTdiA4Ykz4yNtBPetn+r14DOoEV83ox34yYL8zwBY681Fgl/tUJSiJ5vWywbHfZp/OuH2OQ0NgD1uoWe4BnbH7UkgPtrXWDT6ClYMI04mjv3RPd/zQPSchzu6XLnR6158feM2N7v5bA/efK0ee+8VylkaoZr8jjzGK950JykUDens81KEmGfeT484uvWmtDgBp/PA851LHf+KraC+u1q5c/n273/la+x4aBNE5EKer18BXOvwlFdW6Q39HXwCHP0bcUqfbYS+mNj0D24HDLtV30NfFdnyrXPZs57di4Xwsht6320D2gAJlCtqr71awDLck0ykJEGZOzoC9npSTr1XIKhXmyArIdImApPYd0mqkVb+6PyhkOeDz3G+eMmZ+WP53VOxlY+tlex8TgycV7sbZl0Ez+NepTy0YoBfs+8p3alXoohpVetIVHBOI4dSa5n3nEr1pzN4t73mJj5UO1+l96MaSBeJkt8/c88AOY+dz3I55H7qsbbD0ST9O15idelX51u3vGM0/bROj50BAT3thuFctiyVj6el7TS5i5AQmHuo/6xauGlGx97HYjYv63GzvCbutVXV0nkx6u//MY95DG0SK0DvF7zZVk497StnRG7nc5FCkEBofK0enrlVTEe9bx7LMatZ71l/u1V+h6v/cUftvOlf4PVcp/AdXTL5uzHz/i2So90X8+VglPByrzN4rVZ5fq9gptMoLN8+L3Jh5AbvHrbNSNCPiSl0/49K3LwrIFY86aGB0p/5lVamKUmDDRLKy3zGgT9FJPtQhpo1SvaAyljvGxO+7/ORD7clzxtTTD3td4n6XixtAJx/2+PG6sXJS4FKPuw24O1wSARx+80fdsqglDdAT91pVwII3G8DTJQuaATY7dAN1omDxdcf093VKkAP8Gb97dl6vz8ev1CjzHXauBjYy2UmFA9D7PLgD6tyqeKV+s0bskRZfmQobfX7iYzd5bqVLXj0njzojekb3C83b3Jwx91D9BnnZEbvBatif09o2WbfBjV7Y7MJtu1SoopKVtm1KlOOwQLQsAj9lyPOYGLPbm62YNvnsfXs1To/ZQSBjb1px7D8wd9gyme7t3wa2oK1eACfGs0MMiTdisXLGpw0+Yx1h1MLlLwX8evMmWOWij+OMXIJlr/Ptbr0HxGTnYIC0iNnXMI6fo6UNi9iZT/SGDJBElOG+QdntC6jR8XTTfV7r2di8fQyTJP6UznDa1SSMa/1a7DZkwKfkNo3GPzOQ/cgA4FOxc0JSoucN/C4YeJ94000c/KnYLcUt4UDpTrAMbHya+FbG+vwc+brX6OsQjsG02TnDGGl0Q20PGHo73EcS37EaIFQGH/vMybeVsx4+6w8DsGDVu7IGUEb9Wk09AD4OJYzvOTDQbz6847+4kV1/6+/LDkMkyE0B6uz59/zYnk/uc7nYqupQ61dpJQDQJy4AdgboWOKI0b34iVYaGQnjPlfsK2CvfbqxdQ4kYTvYyIPO72fPFyI7/j0IW1H07oVVChPiAMfrj9dHSt0Am6T7yBCj2rtHB0FeQ9gR+XscFSjQGbPzWsr2GEvv2ebBmux3xJn9jN93eyDv26UdevHKflfs3+0K3d/q90jAxhsQ930teyJCRB43B0b+PRLs0GHnXbt1SKWsJWOArlIZdvjUol4/amBugM4kYPCEImHL93yKHPnv7NBTxuhVzkLT2l2fN89IvnT7nL3v1QnQCw8afbTr027PvpXN7gNnULX73XqX37OjMjdQL9h7J9Wri+OA91UP0AA6PnEsZ9O35TkHvLmqAvcrfpyu5LibrsIt7B2mzi6dcT2M3f5cekohlb3/PTACZcCce9jq4jcuGJifcXO9p9xcz0k3P3DGTXUeddPdJ9xE22E32rjfzfSeNPBv1I69MMx7YYOEwDD4GBM/e49OPeyoYjtOj9xM5aYeTlcik4Mv0uHz1Xz8awmmK4U/8W6ol571V3v1/4n2tN9W5vpi9gfVYnzji1S4vRqbHFtcGE4szt03MB+slkd6dAqFnRceGEDfrhEwpI2dpw3IAfOkMUlyxpO3Lvgmslt1Lisgb9alGlO7YOqM3klj48WTQSDHLn30hvzlhTEvkssMDxpYXzEQ73SxO60ayycf9Rp4G1Db5xKyonULyON3miTuSCKEs88nh7r9Dl3CuDYXv+XFb9qf2y2gHbeDB+Um+NYB9qidWvFwi9GzM7/tx/TRATvd2mk2do2EuFMCc+3A1Yjm41lJg1OHORcATbMaFjXAnBQ4Y97TZz51U6c+kRAuZvdHYQvNa1G7pi+sc1MX1srTHus+pPvHtoa6PWzse7x2o5tt83WqWNGi9obFLl6CusZtGt8TS+sf0x4VoGAJk5882KVLGIcFzthKFC81hRbkc3duE6DDmkmVSytxy66e3fINYxOCndEwlmB03+69wFjV2JHizyYlTdYzXet8+pv9fCYWAP18zSde8V67yoVqVvlYWL5H4/m1PkaVXXrdWu3hBf6AjIDxI+3RZ88uV/gLxTDcf6z+S581bhdAE5ZI7X3Z3hDXMXIWG6ZwhAlALWUq77rJg6+56UOvadTO7nzuNDa1NzVBIFJ2EnA/6WtKiV+lbQ3gYIQPq8fyBegynubP8r5TQ0rMK8yb5+a8D5xRa9uxN3V4wO8dMrYe1/d/rh0wzyNTCcRmAJO33a3WdGFi30/cGIr5k+8pgnbyuN3f8fdULMNunSkAOgFNITgQnVuuxwRDT9hBRoI3vPrkBTR+4ZJ48us/s8+h3F9l7HyNEvZg6YjoSJjz4TRecIgnnX9DQon49wHQ4yT4kZkujcVOiedQlUtrgbWNsToZ7rymDNAV1HLtlIR06rg3hp4LEuQK/ft8laz97mpug7kTRNOxRSK5ggE6MbP5rs0u1+7XBfLAMy3C908Sn/3OPGbifgn80eGCECRYur2mCUXKUNsKUx84olE7grjCFRTwB9ShXrpbY6BeIwEcgJ65eixoaDsnli6GbuAP8Bfv10vhzthdITHsygMgrzzpCPLeWwN1e6esapWRq65EO5t9XMSzPu4BuwJAA+gEwlCyQkjMzH0D7tsewAH0iatizrB5MXpj8zoIjPZ6RTyZ7wqm6XVFA/TMA8bsDYqGBpB5T5vtPu4mWg+5sZaDbrbnhJvsOOqe2zXddcSNNe2zPx8xpn5eRCc31OotuqwlEQXbe2Dq3mUjRY3keVQTQ+2VzJMrueLMg9nKwtj9xfhsM84nV8y+o74OnzD3e9/Pg3+FtP+/787z/0LKxXL2nWo2eryamL1fjYxGFuefFBan71TL9sIhLIEygsJDBG6kqV1ymbsAdr0yxNNq+LqkHXpKY/eLduqzr7NTYv5hmxrPeLH4y/u90wbm7K0ZeWcNqNl/ZxnDPx5w8XsddjpscrF77QbmbS52v0MgHbvT4qI3G138bpuBeocx8DYlvyUlgrPTqX0dII7n/CXAc3vTg3PsWjB2v1YrFs50IAOjZ5eE8p2RewDo7NEX+k+5BfufYKH7iIRyUrX3H1MiG0xcdan0l9OBjpgND7gBcpi9edsO7bZh53N168TMZw24F2DmPUfkOQfQAfG5ixsE3DB7ImFR0Gc4KF097eabvnVTjTvs+/woHbCO/F/svWls3ft2HfalKIIHIwiKwgiCoAgCfzKCwiiCwgiKNHFcJ3EMx3WbZ/u9++58dSVdXc3zPM8zJVESRXEUKU4SKU6iqIEaKUqiJFKiOPPMIw/neThnd631O5Jv3aD9kriO8z78cchD8kw857/22nvttepPpvfaT+D6bIvfv2qjzddlTMNWN9XkY/ecxeo4lcgAZ57gJtlxuH9Jtq7OeOa0FMsE5kEA9gT3gh+dF4tiS5VMnz8jSHNffEwGKIfEkDk35w462TvBlHvUBPkY17jSdq7jYDrh8l0WBthxhu6/Roe2HQDufWD4bn5Pt7gEbjOKgiZy85BLUksDOsHcD1DV3+H1o1d8FKCvaFceNfskipPDnLK/N6iNTmc0MlLunnOti8IvAlm44Af7cPLn1pvxmQXxdaKcVq0rAZKr1dqn3ariT+XFvkaKehewslOtcGWN39wuUSAFeEpbQwGhDgCjVCnaUnIaxXtrAeartRJHlk4AjrEdLiX+Xj13giQ7H9yrjjLsBfdBts37YOKbL2e5WDlfk1DxVnnNs8hgN4AdCW4DKBNee/DbHMCXbZShDlvrw5U7JMD5W39UAACAAElEQVQbp5te9W6B+ohAfaeud3vxh8SAueI2xOIABwGdAMmRCbs2BHR2UNSpueNieDmj1r46QJSZAGyt06hIWo07J116WlOWCsixdBiNGDrzyPGeJJvnuISjlcm7JxXLKuU/3jcMeZltznZMPg3oU3eOaEzAtDf6DwzddP7zbgOB2oaj2p4YpuXxPeedQAMjJrJNyMr1qjLXZSzDtDd2ADQrL3cMHQA+qZCWfOcD31oBhl6lTHQK5ubaK22mrcpm5Bh3Wy33j8DN8BZFq7Idj59rjY1CNx2PNNue62uWaE1iOQI6wZngDVBfCJOltwHg3wDcAfLcKyfge1vSxwv9jQCdu+lUxGvNrVkBLxTezfU/U7t9lAwbn/PY0xIL3cuxQONV66m5ZP0N2TZwB8Bef8UGbl8xf2O2+XD48Tvxp6X4/VJpimh5HX1UaKG7VyzGrAkRLxImFAs8b3+4vzDrbZmYD3fE5mO93YvD/gcc0XKtWYZjrgX/W+ltqV+z9b/mdvvf1QrC4vSfMkAlNRFvSA57PYux7omFUNsC30xzaVHHLMEcb2geE6hUJ9qqBeBuNa320/dUt1MQN4UqduojoIOVz7AN9IHiuIa0aO62Tby757LJAc5jb28DnGts6GUNKkauVVQKzIcB0mToiRe1Fmu+KYHH8JsGgHmjjQDgR2gcA9AmmNOwhiI7snQBPACdgSwjL29pTSyRBvLhZ+Wyf+XPxt7f0646V9Y4Kx9Jgz/d5IaeMo2tOB2ickO762MvmbRWIlAfpJUrU9QI7AT4R3mWALtWwEojwLwhQ3Nxf/leC4KVRun3DjbNNTaK5Wg0E6k+AVA/q/Y7RXQEdK6sTb4o1aoambynOkOpbSM4mSbqT1kczChafcSiKAYSTQVKbRt9es1i3CO/f1m2r9zLJTvXSZmWmvTkxv+J4jtnv3paJzzmTjNBbJys/DFNZk6olc774Q4yQYfgwxU3mnu4E/teBbLwkpasdEmTaI2tcTBdOszJrhOvT6CE6nQAOlfQmCtOz3E6w9UeVyuZzDyOgiHEIBeAarCINqyb1J7mGlygaIsFijdbAOzZn79ehQFvT6Yz9B9nBwHsUtapSg1ji36zFNzjdfvUYh4CYx0CiEWKV1v32V9ax4n/0zxg6rKCLQRIFm1WweDN/VEBKyxQIkWMKt0gQRwBXK183g5Ake1tzuo5sxaAVjvlP28vgUKHs3Uq3Slu8+evUCBMEAD9MayFjJp77VwLG6x0ee7xit1q8dO8hvPreOkGp2jP5T76egn0Bq78YP6CdXruccXHblfnQ8Y3nxj6ZrFssfGq7fJQFxDedo5xo9W7nNKe7JwbAtzpZhIaAf0mH/8O+fMTrLneKOU6xXV1jEI9JkdDFXd0kaPvO95DfL9O0K3wrjMvovhxiil/Dac12qGgUqMasnbmq9MPQeB9XPbBFOhNPDgtZTzXKaeeZNn0s2yJ5aYenrHZBygE7h6VmG+czwPFCoV/bMNzA4Gv3dAtFCcoPobrT0k/QuU73+cEdFq5UjfCNU7mrc+20Dgmx7FvMHPHxMu0T8/nMU11O0jL9JtKm24F2NNchutqbz4CeoPbQ2coy4cGAH2NTb/lzwDsHx3kaCSjlLX0LF3s/HmacX8UxVGd3ura7qF2wzlX3y9QsR5wZjEE8rn+ZpvtT8/dcR2BXOycc3R2Csj6A29spuexa5njPMqR4iDOYfSt6K+/LBDvw2X3rQx7X37MuipPmb/hskUeFliMB8gLR6ST7XUgPWUWwTmFxzC7r8y10AGy1t7APfeFOd/rmblwx9BitKd/cSjwdHEsWvKXLfiF3/9JetuvbWP/Gg1kflNtkvmppWDn2YsjgZeLg72DC8G3c/PeluScAgTuCsynwcxnAORTAGzOysde3dAlZ+TjYukAeYL52xoAdK380CcJ8niDcC9dsaZdj6SynGird9UgmDXBlG3w2GMquYss9oTVIsC3pUYgHm+usujjcgA83qDNt/A9mPYLvGnB4HmQoY8ByHUAyMc5Zwfgc/ecrJ/A7oRxN9SCGn5aZkMEdDrE0fCGc/ZXDsz1O7KGLQUrB1A+Aqg/LpbynVGqIy2lNvq8ROEntGCN04f9YV465zxbB1l5nOp1gG1IYL7P/GTn5fQ5B4A+Yrv9LNgohWFHLM6sdLBqsnOydLJ+gjnV7lGw8MCtkzZQSZ94MHoCORh/BIUBC4X4/XyL3M7U31JpzxxyCfQ4N2dLlCfdexlunv0ILAVFy/CDS3hsxxWeQoGT2pKPL0uUNNp4Srnm/BmT0WKcdQNICPAjuB26yFFIR1U6ld1MR4uTtVXu1ZoXxWx0ipNgji38B5fxnA9rDY1APpiexRPAmcTWd2WF+Yu3WLTygAXFwAHcAFiK6MLFrsXsAcjyCIAtkz2HNZteB/a6TAUERWVUxPOx0AtdLegbW9I2q2CalWD8VH8DAKLF68yT9Z31nv+VRGZs6YdRMERQdAQKN5oP4EkAZcIbFfbhog2ygOWcfbBik4189IhXa32/wJy736MMgLlBhr3Zub1RmZ6/6hNDDxauctat11a7VDOqxqsPSRHPuNgEXk/u63N8EWUsLHPeUTjIyQ7P21ewTsXNwNUV5qElLP7OaQu2K06WfxMp2ujU3+oi7BB4M5iFegKK4LiyNk4Ql5PenvSsfI9m5fzfOPHgLinjh+XXf1I2wXqP4Hu+zkw2S9Qe1+iFgD+C55FAYckwH/obyHioEe+3hjQ75/uJwjUF+hxyaWn0eAeYjylG9qjY9shtxqaecqAuMeZFJ4p7cjE9Uz8rQJ+goK92r002HFLRM0xVfpUDdGYJsFsgz30VlIe1Jjn+8IqKWrXdOUt/dMVmpWrPVcobwXomLXibAYBPoViffFmuOfk0gfoNgf0mzn21Ov/JWKajPt1ibxQj5zFDQAdRcYYz920uPT//yJ7n6ATHNbb0rric3dhaJ7gHXmuOTgtXZ+P6RpauC34Au+eFwHyGxKrvmfsbieNcWht94OfB/mf7+DtPbBznVircqVFKPC+zWFOueeozxcg9t7Osr+ac9VSesG6Aej+IQhjnsMidSwJ+ruSOvUoTluYijRiHcciLo/WmDb+8gXNmlWb0c57nyfnAq7n50OuxhVhnIDk40JYaDjUkJwYzuSXFtE3lfTgV/K+NaP562Ln9YwasJOcm9qTG4tULg57u+XDHGCrBBbaJZlGBzsju8JYq0Cm84ScYrUkVO7O0X5QDjCtcpOjLm04AR5b+5pYOMvfJd7fFzLkaRkGcm5/XpNvaN51jGi1QG/DGuptn8ScVFn92E5XjdYvcZ+sn36JNAPqnVGsCaJ/eEIvnfuXwK65dNKRb7XelgB9qrZErHS1mKXgbeV2r+1K7HWBOBzgCO0GdgrdRuia9rtcaG4VxDG2JPSBQXnSADUAf1ey9QmtrdJkbfISK9l62WudSujflSBhH0RkFblEcNJgJVQLQy/aa7zpO8hX7waDBxHF74RuHLQwwFzNvzEybztBwJlO3x0AWgjYLgP6KkxasOau5YLgKQChnuRMWqQXAPi4zX/l+ieIS9y65pLamywpbUVoaW+oPLkoZT3MaquaZehbHSVgKdfqJ04DjabYYexxMPETf9Gqu2HEffJfAlnNSCZ2o7mYeesU2tXvJimM3Xcwp275szUfpx85sa85Xcb98XmLVvF2CEBhsGIzSC7DuyVpmAbLysu1i4ATsIEAvULhSRi3e3BVyb+OlRGYFqyU08+YuF8P2gv1yNY2MPYqCIq40to1yiCMrH2VrmfGhJes142aGeD8AnV7tnLfTEIYsmeI8snPf1R9kLuPYLwF1k+bkbKvLH53qcQnQ9ro5ONvspa7Nz4Pitxiz2lGQBHJ/lEJd9q14XgEAutzfmJfOFSy81uES3C5n8VTJs9tQc0RRrnSYo0qdhUn42ho8NrrjudjYgStLXURryTYxc63WcVUOoM9QGAr1qNJ3ManOBpfGNRONx5WPrt19zsgB5ENKqjuk1UOa+7CrQc/1UQrmaCaD/x//vxTwydr1LopKCiG5jnjb5cIPK4q3UHN0JqtJAY+ikYJMAjyNgmgqRIZPkB2XUdFZMXbtpN8/45j5/dOaqRPsOWenPat20wHuFMdNNgLQG5hSdwjgflxjiyF59O/UXrrWJanz4OOrSWfX01sej4XFrEtSy3Ut/6dXHUunbe3zIjHyGSWqVSlDfYpZ7QDu6bc47xHYee5rdYA/+6pc9q/cRafafepjcMu7WhUBc0xiA5jP9TzV2prAnLvnA67lzss5zcfT2edg4zqCrQ7Uw20O2HG5AKCfB/DP4e9mwb7npJJ/+sk2lp0Aitn4M3U/KRB+W4fzY6UIylALiNDjAgvfy7IgQNtXd8H8ODy3TlkfQN2L84qv5rR5b522EA2vmsDInxSAtFzXCE+XOG9MoNgZf12psSrP69MoaCjw46rbXH8z2HrL1HzgbWw+0tm7OOR9nJyIXrOZ0QO2KLb+ey7M61PW+q/Z+n8GQP/Izn+HyTp0glscDjxdiPUEwM5n5vubk3NdTWof8c3LPXOZR7QUSwA3lmaqBHUK4Bg56gQUdWDIbKU3qLWu3XMGpdCCkClotGWluh1vtkRzmQ0CXAcfFlj0DsAcgB57UCjwDt3JsUD9Zbz5Lpm39qKFG3Mtgp+FcMQIyi+r3Q4lgVjsvNFG2+7ZCNvudKSjiOPtba2yaeey2QH54MNreINf0345AZ5Wqcw856rbCAB98EmJDTbh8dy9amG88Tm3HmwCA39SJJOZBNj4ML5O4DHH77vZOc1lpHoHqHNdjStkMYB0GCzdC+bnKdoKkNwtcI43XJQgLnzjEAD5lNrsCRrL0ISmPkOrbpydc42NojoWBt2lx1AIgOnUnbAQxWTVxzVXj6Gi5usVvHlIiW50jBvinvkjgDcNP+6eE8APM90NB/9f3HePUbjGEzL3zjnffHhJ62wxnHRjYIkhBnzgRBgs3yORGtk856IJqovpkFa1T232RDqhywni9rlZOt3iCABUvtcdc237u5ctCPAJV+ySlSrn7Gy/e/JW2UAeQLtwg5g5QSoAwPYD9PwFKwXgAzk/gpWuEksla/cXODDvufS1DWR/b31Z30pBL8OZ61sVjzpIMRzn6myRk6kT3KtccEov/s6fs0JrYWq1cz7P+8X99wEoB7K+R6GwXIyXLF3ra+UbtdoWoxGN7FF3iRkzv5yzdUazDtI6NW27SntWHo6h/ygRG1k+W/i+3B/0PRk8XzdFpjJNDq9jiIExxRvFuFnMDMogxs3tgyp28ByLNpuXj52OcbTG5e7/dUbCrlIRoa2Acqc/oGKeUbLcQScbJqDTTlX74Yy+JcNVWp7LoXfPdXNaLAcAZiDP/QsqwLRXfo8JeWcszjEN3z/p1DOKLRnkM/ncubyNa53yvHwGaPlL0ZvCWihmo4UrxZkEfgbUKFznlIRwBPaPYT+0haUSfYrs/PF5mwVTnwCI03jICehOpsWOu2Xm4wD9oCyFuSXBsB+uBPK2tJP+NN8mGbryJFvGNRxF0TVOeewoRBgBOwPwnn1XYzTJIgOfIjvXUW0zFAGDsco6loye13FmDoZOwKdITkyd5jM0nel84FrsarWnQR0s+2P7fG7gI1N/kQZ0x84XGLRCds55eojHW4G6Wu+cl9N8Rq38JzKpmeXOeddDm+l+ZDOd922agP6mRutqCY4WX3Bj5zrOE9k4p2ZaoC7DgvXndemrOWN+EAxv1THrLd1jXmZK4Lw1yJVZgPgk0xhRqJGkjLUU4TxZKt3UNF8jjhlI9tJivJnuBwuzvY9mZgeej8yH2n2Lg/0vU2OhquT0cIbNT6wEW/8Tl7Wu2fqv2fp/Pna+8Pu2MLk+NR6rWEh4OhZC74bwppub62lKsvqkzeFUa5lNthSlE73ynYEK52PNAHeC+cf1rtfOdY3HWDsuxcwfpHPJn9g0M8m5WqYZNcCRAjIarDzMk6gr3HDJgrUXzFd91gLVGeapOmN9N0+apxoMrzHHwmwvg7UnnlfZEMCXhgico4/iGCawc+ecLP1tg0RuVHtyx5Kt9cTTEgF5gscjvEmfXHN75vy9l+wm1KvdTtYdY/sJR6j2HIoMgOGDHP1NggI5gjjAk7cVv3fZtdkB6rHGS5/U6VS4k3n7bxwwz/WdOMD0qo8ChM/gw8LfyTYvrqPanb+vdjs94PE3TE6belku57g4KuYAKmlP5SkBIwGd0aScsccAkoMobALVZ2ROw0z0URQTNJShzeZwU5ZFwMIjuF+CNU/OEyi6onSmA/seph0nk9weZMohLnxjrwCd7DqCE7gKBxQKbLuPgE3x5E0hG9n6oJTsnJ3vdB7sZKxgQ8zSpiBOJiR1R9U+prf70D38X69vl4EMxXQMcfHmr7X+3DXWm73SfGDqVLDTN9wnT3WC7WpnFFNA/3YHgBGZt6y0vstfW9eFzxUp6ru6VL9LRTnV6ZHra1FY7JTqnYYrg2LV29RaDhWtwd9+Y76cFWpPB3G/arHj/vzXNll35rfWe/FbsWGusFEkR9BL3HAzaTL0OAVjFIiVOUFcgoBOw5jyTXJto/CNbXUav9BONpjndsfDBSvVdheY0yf+2joXv6r5r4uH9dJLHkVFUGK3nWL2vG0WI3zdWLAErzOzfYvAnOMI5qZ7eFxdpiIiptjWTdp3H9SMeZ8YOff1J+6ddPvnAEaK4fjY2Von+LFI0XNhAUThHP6fFJJxHMNOAtPyqB5Xrj2YN1vZyguQlwFAE8zO/f5xuRHSLlbvs7q0nzs9AxpP6PfpNOeCfo7qsTBYZxogPQWGPtbI/XWa0pyS9/sU2PnUwwybA6DPgM1TCzD98BwY+gmp8zn20Djg1kFZCAvQlXxHq+ED6iBQ3El2Pk5RHAoF+r1zxMRZOn3eJwD0ky9KwMKrXYoaDirZ6Xop7RBZOsBtkqEt3GUnqMnPvUHz8Y+ratM453GWrtsAuM51PXCADvClkQzd4dhqJzuX6p3zdArfuJZG4A47ACdLX/gE6u/SoP7KrbQpe/2pKwpw2zO4D3l7oIAgqE+8v2sjrTg3Sgt0U13FoadFFmm8bOE7Fy1Qe8aCdTi/AsgDYOa+WyfMV3XUvBUHLMgRHkcqTTivMXUOJI7ryAyEGn2Kcz5Fj3y93pTbTAdeG/qRcBUPr9FMRy21BEmA/Nxs/7OJuXBbBOSwY3Eo4IxotLM+86WZ2PpH29hfg/p/wtn5P9DsHC9ycnokg6KGhUhnYMH3egoVZVJvas7LW1GVPS+0cfxDRx5fVZwnAX3k6TVFeHK9QepvxYw6IxnuNNIhjnMWzXWYSd5x38Y5o6b1Ki1PAeJRAhOzxOszBUz+qpOoEk/aQNUpmaj03Thl/VVnAeZ5AHOwWjD3ePNNzdWHAOYUy1HlPsTW0usGgPl97aEL0CkK4XraixvqBCSelSlwZZiz76ZcJ3jjLjpZfnpHfRC/E/s4T0JxEcERu3dFoji6xtFDPdZIERyKkHsAZoaiPM6XY9wgwJTqdgJmGBVvAAzcW7ZX62hk0BS7ybcdVTLn5MHKwwJ4CugI5jSfGQawT3Bnl+I2vC5xPI7gHRQ6bK3XHgfgHlP7OlZ/Th2NKAocb8luAf84hXoP06lqYCRsvwdvHpRwjutpCRrH4LUg449T1MQkNXxwYzWHbQCsL1AKVgiACQJYQlwt46oZ/naQqWg4SQ+yLVt1wKJcGbuxRyI4isTE0mv2S1hH0GFoCdkbZ+R0kSMIMSzGV7JL34cB5oGSHebDffbnrDJP7iqxTw+AlbNhApofLFahLGXbbADXe6+uECPlKpsXwNV76SvrA9MmQBIsuYbGVrZ2yemnzvkwRWZgzdHr65S0xpkygbT7/OcSqsXA6AN5q5U5zphS7p+TofdcIqADcPEYWXhw93zo5ha1riV4u+HcyXh7nwCe6143tytZjQluXHcjYIepBSj40TyXvzD/1SUWwPMiY+fz8+T8YNHS7WkTmVVSxPvx+92Z31h/9gq13UPFm1xHoHKnRHNsKUdQaAXwWPuvug5DL1fb8LgZ3kJ/+whfN7J7FBjsHEhLULlDrFvzaqrdAYrj2ns/kvaP36piTC54DHihBoHrYcwapyUw7ncI/0MaFnHFkZ2foboTmqUrjIUqebyXhhvPSoPBljtFmHQfJEvneyGhMJVD+t3hdPwuxwA0xGHnYPoBzWZOSvVOsOecXbvrXIED0BPsZx+dU1t+uuksvj+llv042T9NZW6nmblEnnTx26MVSRYdk3ivM3lNDnJMDuR+uuJVs22GzJzxqhTGseUOkJ557/bMZzkf77wLML/hNAL4jE29KHOpbe9q0/vnjWnBcAMAvR5/y2Lgjmu7M2q1mww9DcDpdvv8R891gLyU7t5Wmw+8sXmAOMF7niw93O7U7wTxtGhu3t+q0JWZ3mZ5tXPvnPdBMxm2v2c6H6grmaDB1GuAOh6vIp+fFVv4HrufORa6nYFz7QmA+UmQhRMWxNcRGlpxa4Y5CxzXocAZx3loBs+TTqDTKmDwGry6bhPAg+l2vE4C9NsoWO7h+T1wRw+P+8n5vqaFeV/L1ELozdBi9IMvOdzfmhoN1rrZ+uRaW5z9I9mLuxb8r0H9P83euf02Xtg/Ts6Nb2WizkK8t3Mh2DaEN9wc3ijJ2fc1Nv26AgBTDGaeBzbHlaxsgfko90qfE5iZRnZdQK6gE7bcW52RzBTf3AB0Vo4UwWlmDqAaflKouXPkNgVjxyx4CyB+44j1l+3Hcdh6S/ZbX/lR89VkWn/lWRu4dcH8t3PMU5dt/rv5FnsGQG9tsOG0wn3oZbVEbKNcc3sJoKea/aULXZGq/Vk5gNop2hOPrqmdrrk309S4d05VPRj8IIqMxMffeUjzmGL39SOXWc6WvQoBgjmAPXH344parhg3Z+3hOoA5PiShyqMC9TA+LEE+RwAr5+k0jYngxBipy9CqWgKvAYNb4nWnAfZOKcy9c2ashwC8kXr8LjsTt+isdgwgewTFAK6rPikxnK/6tAXKdgLIwT44379/SXnjVNbHAfpBsOM4Ve93zsqFjoVUBIUF2+8U3nEeypm8t3QnbmeX+Ut3OVZPNX7VIf0tW+xcKWO73F+0BQxxi9zaqIQmS6caeqj2gGPoZHo1RzSf5y4527/h0m1KmmPHIgqGz4IhWnXYgri/PoBpH/3JAaA9tFy9CDADQBOowgA0ttgJfGTedIejWI5CNrbZ/bnLAd6rrf/iF+bB9x78HcVnbGErCAYnd7a4Y5oL7xZr5VzaS/DXGtlGGbV4s7+3frB2f8F6APoy3DYKhLy1uJ3drgVOERvAkVatWt2i/eutPZqdE2yjdKyjap2Cu2tg9vlMRFslxzrFs+JrHwE962sL5CwzP4/cHzQHZ5eCBQgLip7L3+F1+MG6AOjdeC0ChW70wLCUuAD2gIRobCsH8NgHclZLKDhwZTkuydbXK9RFrwGKA+6zay+dKW/4X3Hez7m4E6AdETvmCiIZLNPt4hqf7FWrnR2BBNvZXJFk61pGMlkK3NG6IwFdLP3kp7Y29RV0BxzHz2kmo5S/xgyx9EGtJx7UCEBOg7SWpR98vVuXmwSIs53OIoOqd3ZXuI8+2XRRMazcWed1UwD9qQdg8k1nXLeBTD5tOKOIW66xoQDhbjw1HVppq6cxDgCdbnX3zruwItkbX5JYjip+Wr2OPy20SZzTJlsrAeZ10gpRyT77vk6t9hEQkEn6arys0Ix9rr1a7XZ5unfUqwBgC94BOhn6PQfqHFsS0AnAaS91x9Sfu0uK2+jT7mtVq13t9cAb7aUvsuWeZu+L4fc2p5zzF/Jdn6FZTTfYOT0+eD8A9Ek6u4GcDDL6GSSL6vQhnnNxUK1OchJuuGAhMPQomDgzJOLMgACIjz65amN4jcZp9dzC4uU6nm+JTVEsSB/7DmoGbtlCZ70t9ty1ZP9DSw48skUPY16fWtLXbEmmweHrRR9T4V4kk6HWuVT49UQy0h5Jxrs6U8OeB8nxWF5aMPcnGvf+2ojm/xOw/5v/l+PvpEUJ/0hChfnpFcmJoUuLwz6w8w+RBd/Lqbm+h0lWnBLBoWqdYNLX03z8w3MdM392TXPzEQaU4BhpKU+HlzCG9IaCWLiiNv2+USts/H6CaxT4XbHY+5c1Yw4B3MhSQ1UnBOie8oPWe323dV/bYX0Adk9VBgD9vPVVngOoXzQPQD3yCKDaAgB+dVvgnWipVDU61Io3Mo5BgjQOpamlWTeZeYKqdrbd2Sa/n62ZOK8fbqn8BOhi8AD+xMN8zce5riZPd6auEdDB0tmKj5AdN1y2wfs0ksnTJffAw3XnLQQmHak9KybOmXcwzdQDBHTO1PGc2dKPUOF+CyyCIS31XD87ISvXyZelKJwKUCmfx+2dlSiPs/wIT4r8PfwNb8OL1yqGwsQH9k9/eFrEMtKVrnHx2pO6b3UEqnF/DBEBY+FjGcJzGbyfpTl/gh/khlNqrQcr9jnRHn3m8ZiCYDYBrlDVuSjVOFhbgJncBWx7b9XMOsHVLZqMEGjoRMZwFjA8pq5FK12EKlfUKFTj86PoLwR2/7ET4AModQC8PmR+J0bs2PE3APBlEs6RbQYK12iFjXGpfrBrj4AYAAhQD5EJg30T0JUPnvmlfM8p7KLanq1/ro5RJc41thhV87Rhpdq8YA2Otbqd/ivf6eDamucq2/nfqY0dKKTBzGow9PUyhSEjZ0IaxXJyYgOo07WOinv6t5PVRgoBpvnL1YoPse1OwV7JWgteRcFx8Uvz8X5QiBB0vTkrtFNO0Obv9mZ95zoUYOf9KHT4fJmopl135ryjmBiWJe4u/P4GsPkN+L0VykkPFGxE4bFRhQKV/+wQxAHksr4t36znz8c7Wn9QrJgz8+F0lr3sZ2sOaHWO4xM5wbF44T43AZmmPxzZ4P1CS94EBWdcDWvk2uNZ2Qc7gD7qLGBpOsPVNQDm0O0zuM559sd54H8iX30q6Gtc9C4LC7bc2T0gmI82HtX9k8FTEDdJT/dHuK1bu8Hkj9rMQ4A5BXQ4xm+7HXrelusY7ZLSnd4IFGyyY6R1TLbYH2WJ8XMcMISCRNbItKNlRLACkXIE6uMgKFNvqtV+lxiYWzpgq1wJnQLYT4KtM1mOPu9UuM93MTLVMXoye87dnTDutkB9tvM+2PMTx9I1S08L47g9pDS2ZjnAOVB/5UB+gEI5x9IXwMrnKIrzvtYxz6jpvueOoRPE2+olhpsFuI+2VqqTmGBH8THOY3SspD01zZ2asnEu4SiR4zrqeK7YyFM+ZyYqXrNpALiON2Vg5mTl5TZNNk53vLYKm3tXhedbbcmeO5bsu2cp72N3+ADoPALMa+fxzFKB55YKvWReexLHQir8diYVeTuUinX0A9Sf2mQsx+bGNzpQt//xJ6D+a7HcX2HeP0u/MH/3P3L8vfTcgqKEf2bzM18np4dOpUZD9Qvxvm5UhWPz/c8W5rrvS7nJ9QwCzARn51SvEtS5vtBc7ARiDCnB95zPDD0vFZiTnbud83ti6bSA5ZtshKyT7XUGlNSdASgdF5gHOb+5ecwGyg9Yz7Xt9i5ng73P3Wzd1/F92QnrKsFRehyAnmmhpusWb0b1+bxKjJzRf/Qm5sE5eYxiNr6RCcRUz7fctPiT69qvlKqdoP2IgH7F4gB2xgeOva7XOtsQAZ9CO7q3NWbhDZ8lFfvQk1I3IuAuZ8MlgPMxzbT5O2TmH1vz0fpMXOIxglEHa06jWDkJoDwCUASYV4BR3TwkhhoAw47eA+MGwyY40xQmBgBO4LWZelWujPMRsH6CbvT2BTwGFEF4TFEB8wldUmTnrcRjoONTBU7EYOzylscHVqtmuD2+viF2B2jSggKARYCv8pjmarxtFheDPFnj5By4cQC3ucMGrm02H1hpsGKP2HoQ4Evh3GAdCi8w7QGApadgnYUobivZipMuV9OO6CAIMFCFq2lhMHjOn+kBroNrbNXOzpY+9l5GoJZtNy/Y9ruML60na/knMO/PXqad9CCKhn4wd4KaYlOLAK5go/1XlypKNJgWzhHQGTNKVXo/40QLwIivb1YLOUIhGcVpJVsEVFR+E+xoPENluxdgTWZMpsxZfKBwPW5/uXVdwGPiHB3snUI8gi3b+sNgylz1ImhwNk2DFn/uMhUWXI8jkw7mfW+hvGXaT9f94Gdse4fylqLg+Mz6cATxN35pBLiOxuJkubLTmXuu9byrDuhZWPThNSHbZvuehYQD9N2yvqVoj0UHNQb+/HUCeb5GfI6Mg6WATwfT2ABuGgvwf1Z30KncGXXKGFQycu7xp/UQH93rmBBINh5DwchO0rDS1g5pFTFRf9zF4OJ36NdOUZyU5WTs+Dnb8tyyGEIhQIMheg0MUlwpIyKXkMZNAd4vxXqTjSfAvM+lw1yOaL4/jPfUOHfVaRMLYCfIj905otY8vd3H7xx3rXbO52m3i9eHHYYhGhbd4CrlAY1/FOX64GNQkbMipnp/mPvpj67Kg36cka08xz0DU0dhPPGiXKAuRziuozFkiuwd7HwS5zQCvCxgmYn+oR5Hgztn0jCLxQAFc21VaXHcR8X7E7nECdBpMkMzmi4XsbrgbdaMXUp2Mvh++re/EUOnwp1jSwavzPSlj95n7jrcHlMip3E5293khMY4V8VxPojew3npbqaAfORpvnQ6Uep0lOp4VTPx8RdFKFCKZd89+6bUZt+W4flW2vz7ahwoSt6xE3ED191E0VJti123LdX7wFIDDy3lB4gHn5oFAd48Qs3pA1+HXwDMW9PHW3zfmsQxh6/HUolOT2rE99im4jm2ML45Depk6v/wp+5y/1UCe/qJ/7cOxMf/e/mxK6eWC/2cUWhO8U/SB1+037XFxT+y5OyS5OzIqdRYpHZhsI9CuEG12rubkjJJADufeuXa7WPP8pX1TQtPqtspZBtkMMmTAlWBWuNiTvhLusY5k5nx1iqxeLZ6dCmv8tPyNQ9V0eJ0r1hrAMy8r3iXdRdstfbLP9rrC0ut9dJKe5+3wzoK91vHtf3WDWD30bLw4XULPyoFS2fIQCnAu9Si3FunAQxAPkawBqCzxT4kMC+xKMAw8iBPSvqPwjhWrwRxBa68qlabffBRkWbjEbBsArSMWh5x/xIsnvvoYOFBALn/JkCy5pza6/F7YM4A8kjdBf0d5/+e8iPmKz9kfhw+FCn+NJj7KvYLVP03ydCv4rojFqk6Kjc5iuomFL5yxYbTPvFRMPRQDU6YLXheNKnBa0cTGrbu+6/vxPMqttDtTDH9GNXud69oZi4b2OrjuN/9AOmd5lML/YQ6BpGGCxIAcsav9TicjMNVh/H6b7ee/A32IRuMMG+9BcsAqBUA56pDzvgFJ2Iq1Afy1poHwOEHk/UXu/3zEQaKkNFRHV++U7asFGyFSrdbmHvcN/BYCUA39yqEJlS2R39L5k522XH+K+sCePaBEfdT+MZ1L/wtd645W+dMmaDqz/9RzN0PoKI7Gt3TvGCjNF3x5S7XChp/h8r4EJg31fHh9CHXORYJAFcPGLKA9tpazZzli569XEzYc2WZbpfq+X587aWfu9bkVuD2v5PJizLWOQuuYi46WDizzq/9aIPXN1miYhvAd4VAnm5tNJwZUuDJRguj0PBc+sp6Mj5DcbBU62wBgDb92HsvfO7iVovWq4gQQOOyG4UFCw061bH4YJFEi1x2L2IcY3AFsHwPgHwTHjejVVdK5CdVfd5y7dsz7S0ulr5VXvNKJqNIjKDOeTbBu+5IWkS22x10ruN6GTs4dc5Ehp0atsylj9BI5bDm5SMA9UTNUWcxzJwACiGZec8MdL43GA2L76nCj5bucIZEFFFKlb5XoD4qkd4Jzc4J4sPq9uzX4+O8fOwe99LPyHWQnu8Td49pxU0WsVyJY5FTvt05BN7cpefI58DMAFkVE/Dpw8D0wcdXnWiU8/07p7WSNwZgm3h+DWBdJh3KGMgHx16Tr2/Z7Ie7Amo6wE0y9RDsfbylDCBYIdCek7K9WlbYnKXTcIbten6vfXUGuHBfuzvt5PbpePwpO12iuvRu+lx6/UyOcrR6ZfsdDH0GbHwG102D4dOmmnokF/qC77sfC+BpKEPtUuJ5uVu7xXmDIztGLZOMUanONnsCz3nkSa6NUhf16jrO2eU22w7gfl8p0F7oqBFwM551sfu2Wu3MgF/orNb3i71g5/1Njp2DkafCAPAogDvG4zWON5aKv7EkLi0GMI/i+1ibJaNvk6no27lUvB2g3uexUX+zTcaLk3Nje1zAi/3ztBf8b6YJ6H89wP6T1vrPXFUz/Q9tbuKf2MLEv1BO7dzYn9vc5Gey4eOLpWP+cwD5UluY2pqcHj2fGg3XJ+N97xZC7ZEFz/OphZ4mCeHYYqIzElenqGqneIrsj6BO29MhzpEf5mkOrVn0k2tSrFNwJbMZAXkhrkchwKASgH6cbmnVRwDmYKw39gHg9gHUD1rvtW3WcXWNvcteZW8I5me+w2Ua0Av2WVfxIfMwYexuvgXvFViQwjiC2cMiC3Fv/UGhGHvsMcAbbJbWhYPPuMNeZpHHxbiuKA30JRLGEdTpb0wwVzY6v+eMHbdDcA7XnAXgZcoVjl0IrrYlcEmQD9Vk4GcXJZSL3+OH44qF6jgPx+OrOgUwP4rjsA2U7DVv2X6A6iEBOvfQPSV7tCserD4lQOfz51ycnu/c6R9Nt8QYy8rwFbrKBapP6zFHbp+V6M0PNt5buNUGKnBCfXZDnYJo3SmxcW4IxO5kipHz/oI4yLzDKBq41x4Fi48C9Kn65+3zOnYJuvI3WmfOBuvMBlu+uNz6Adre4k02ULRJTJ2z9CBZO07GfQDYPgDHAIBuIA/Mk6YkPAHTXIUgU75LMadaP7vunN1CNDvBzwTieCwBgnXhOjE2zsw/nAMbvrRUt+cr5OrYBhsAqPrAwLWTTvV74VqBdahotYJROFseAHtnVCn3s8nUuaMuwKaYrmh92pRmo1g5d765ox7A/XJlTAr0glViswTMnsyvAJ5fWR/AlTvoLA48OU6Ex3Z3pJjsd6UEcNo9r96r9nq8bIO84GMla9MpbJs0Ow+AjbPNT0EeVfZMQ2Mmuj/7W+vN+KUD9avL1e6nQK/zzC/cfeM5DHCdjoY5eT9KJ+DNWZY2lVmvQodjDO6vCxwpTsT/J6L9eeaj43XKdR7vLCCkdi9zyny23ekgN6RAm/QOunQPByVQY3eFLn/y1CeLBtse4oy1+pByA1x63iEBJOfparsDzAdREA6hoNSsnd0cGgpxTs5iD7c/2nhSbXW67rHdznFNjMY3lQ7Yla+uNbpjGgcM11M8t+9Toh/FcXKXI3DjtrijPt54VNczfpW77DSsYUeGJkdMixukLW+128SQCRIf610Us4+uuNS3h5eVOsixATc/uOkhERjjXZuLcBTLW2OCTLvjrhPJUeXORMmWEuVWyHSG++gkPnSXoz0swRzAP802PYE+7edOlk5hnQCdLfeehzav9LW7LnaVQjK23rnOBuCWuI0raD1g8RTPAdDZXp/uarLJD/cB5vdkp835PG20Jz806Xe5ukanS40gAeq0qqbomCtoI/LHuKJzCc8TJA8jIGpjnJO/vYHHfcvmOmpdchtb6gTtvvs47qnFvvChxhbeA9Q/4He60z/vf+BAPfAMoP1CQG6D7ZYafIej3Szehu/bdOmue88jmRrsmEslukdSw/2+1Ki/JTUVK0vOjR6y+aklTixn/1PaiOY3/9bnrP8EyP9O+sn+fTHyhel/tjg3/ic2O7wiOTW0Jzk5eIL7f9oBnB3BMZaRnB3LTM6N5KSmEhWLI6GHC9GezoVQW2zB0zI13/NogTOfGXoVvy6X4xOzrEceZivsQ1ahAGYCToKt3fsUWFzGmwY/B6tUyleLCy5hAUBvc9qiKqSkEQy2FswWJwQ/2J4XLM2Do+/6DvsAMG+/vMLaLi+31nPf2auz31l71jrrvLYXYA4AKzti3ppM89VfNW/tFQs05lkQ4O5vyBVrV3rQ0wqBe+TRdWc8AwYfBrgT0MNNhQD1a2q3f0xSo6Kdax20RNQKm1bR8hyg12ZYrCFTs3Gq4cnoyc61viaTmRzNz6ONWRauvwCQP2vBqhN4PodsoPSgeXB4yw6YF+y8//oeB+o3APLFuwXIUrjj9vwAdO6gj9DAgQUPPmhsg3HdjUJBH14fGu3QgCZScwIFwCHryt1k3XmbLXwPxc2dLLDvvQLJUBUAHY83XHtaIB6SavWM21PHEaykKO+YhVGo0O2JVrHByqPWg+KgNQOgemWVtZ1fYh2ZS603F2DJNvB1AFHlYRQWu80DcPcWAfTBYqlKH8hbozUzsSwZhuwHC97smCNYuZ9AjL/xE1BpkAJQ93PljM/5o61ryXbrvPCNdV9citvabP0AIgrE6NnuAVv14nCMfKVU5iEAM1fOQmDDPs2ff5AqnDPyIINbeF9cBQPYc92LoE5FO9mqJ/t7tbZjNK7JczvhYbbS81dZ/+Xv7MOZv7Cu81/oa082FfTfysiGbX4luzH2FSw3WLgSz9PFscbKt8qbPVq8ygY/trVxGbpGFbuLO9Xcu2KL1tjYlqfKnXP03oxf2EDWd7i/r60HgM5EtZ7MLwHKXN9bo2JiAI+DO/Z8DWhDy+jUcLp7EcP/JAJATwA8qcKnuczHtjv96IMFqyT+owNegpaweGy8pBMdGayiXrnGx/1smcIctcFqF5DD5Dfn1X5WtsWJBmckxLY53QOpbKcQjsFAzCeI4n86SLHlnQwZGHFWToEaQZ3GLrKMrT+mcB8WDBRTxm+6VD3a1bIoHG047AJ2alBk3D4scaVWzWQ3ezj9tVuDHKc6nT7u905qpY1KdT7eeNrUiIBOp76fAnqizgH6CAB9lJkGT65I5S4r5HuZ8nsYA/EgeaGqn+3pcaraX1Xa5BuANH04aJAFsGc8NEGdlzOvK22urVLsnuMyAjzn7k4lD8DtcOp3JlNy/Y272rLQFrMGaNPrXf7uT92OuqdZJi1k2tMAdAI1QZoten4/TdOY9tufsjCmFMKCx/WuEWD/CJd3nK8Hra0p4OVGDs7TgzyH4/xNJ8lgzUnzg1REUOCTQIyyM8HUzPc1EvYxz30RQJ30UPDWZMl+Hg8E4ItddZqhL3TRp75Wl0mCvvcRWHqzWLoAPfFeAO7A3QF8ktclOiw19AFHVzI11DOXGu4bs2FvIDXme2OTkerkdOJ8ugX/i/Rq2+/8rc5Z/wmY/4arXmZ/y+anf1cJN/OjS5MzowfwohSkJuP1ixOxh4uT0ZbFcXekxmMtqbHIy9RosC05NNCdjHUEFgOtIwue5pmF3qaF+U68Adkiai0FmBfa6BMAMnOs7xPEUOUB1Dl7EYhzP5pzaLDCBFn7c7rFVQDMC/GhcQXAx3xwCuBi9WCRVYcEYh4ws/7iLdZbsNE+5Ky2d1k/AsB/tPdX14Olr7O2rLXWmb/duor2WFfhHussAksvOWTd5Sesv+qceeuzrf9WJr7GceuihR6Vmq+xAEeuBe4XyHQmeC8Pl3kWBWtnbOCgzBWqP8WijrysFqiz9U61evx+rkRt0Qau0OH5NV7Gm59uSSUoVq6lhXDnHTMnoN++nJ6bn0ORctr6wcjFysvBxAXmhwDm+6w7fyuA2I0VCPJBADtvi6I4zdQbLwHQr0n9zhY4lelk2xEp43ECa6myEIqGbgBeTyEAMGeT9eB1iT8pl3hwoGSnWHYIB53sCOQhOshxBY5hL1xNqdhvnpJd1le0w7xg9BwvBG8eVmfk9fml9urU19Z2cZm9OPmFvTv/DUAboE5gpXANj7EXrLkPYNHPS1zfk71SB33WGYRCJhWjYI4AxmARAIwMUBhBqqJgj0RxzC4PlbpAFgK879pmew923ncVrBrMsjd7OYqFlTZA1TbAjPNzHmTjPEnTTY1paIHc5WLcdJNjlCrzy8Nc/bqxy0Wblm3RfNmfR8e3ZQJOqt/J2Akg3pylYLArxGC55tYDZt6d8SsxZW/WcgDoGuvFZc/FJbJ/ZQdACWklFMwtUYEQK3ZpbmT60RJ8XYrHUrwawA3AB6BHwOYHSzdpjs7WOwNWmItOX3fvlW9t4JITxw1cwn2fA2M/97n1X/pGwO3Hc+vjY+ZMn8UILWOLUMThtWPanPLkqw64fHiOEnA9CxUKCP35a1W4BNMjhyizzelAx04B2XAl2+k7tGbINTiC7kg6j51FmVbTOCOniQxjgWlGxNFMldtgoPc+NRqM2+UMXeMYMHQCerzqmL4frDmuPXAK0XTcPqG2/SC3H6oPOUfByn1uHbB0h9Ly2OXh3Hzs9lFd8numso0x+lf760dd4QGmr2yCuycl5ptk6NCDC/KJV7Qr9/Zp0csdfGYFUBDH58MtD4rzCOo0UmrKdMmD988L0Ec5R39a6EaLDzLl9khA50Gh7ww1QWDo42TnBHWc78a5wkYV/LsakZ/J59fF4OXl3l7n5ulk6TgcoNfiuG2zFK/RptW5q0n8xtk4RXNUrs+mV9umybi7H9vE+3tg600u47zzvlrqFBhPva3VVpHCpV7XyEJ7rLXKwo1XLXSvQPoanp8jdy7K+IqMPIr/JdfV+m8elZFM+M45kS7qpMjQuYbGrsFiH0DcA5D2gH0PPHWX/L7vAdh5gy2CpYuxf7hl8501APtGS/oem4VbwMbfOjYOAE8mePnx+Cmgd6ePvgWA+lRqaCCWGvV2p8aDj1NT8QqOgumLkgb2f/GTkJe/PettPxG9/T3NyecnfwdP+t8AyJeAde9Lzg1lp2YG61OTsTfJ8Uh/ciwUSo0FYskR/2By2DeYGh4YZHpaMt41shhun1j0vZxZ7H+yMM+dQTDzWTDz6VcAc7ypRx8CkO+71SexPKqlATrhepqsgGE2EuizJcQimI9I8V6g/XSutSUeEPguWAIfHu4+h6spDmMbegeABaCUtx7gtAbsfLV1ZIOhZ6+1D7nbrCNnCwB9jb0FQ393dYN9yNtuHfk77UPBTgD7XusuO26dpSesvXC/vSsEA66+aL5716wX4D4A9u6/k6u1tuCDa2Do1y0uL/hKZw/7olI75rSY5XzJOcbl67lEbl8AAF7A87woVzgd+DAMPS50qWmoZsM1p/E7Fy1cl4kK94wFqsB8b52xATDz7oJtAPX95rtxDIAOll6233qLdgM0dwjIQ9WnVRCEwZRVNEjlflrsnEEusdt4ncGuCeYqEsioq8GQAOh9pfut59pOAPoOe3d5lTPYQeHSk79JrJ0z9AAAncI/H4A6UHNKq3MU1PH2+ot2orDYooLJh8cebSrA677WOq6sVjek5dhn9vbct/Y24xt7l7nEulFk9eets4GibXj8W6wLxVZfLr6nkK0U/4crP1rv1ZUygZEfO072dJULKiTFzUjJJINsD/PEDRbJlnsAwOgD6IcrD6j9TbV8l0RwyyVEo2McZ+ZcGaNIje5wNFkhm49KaLfJzZnBdDnX9heuVgudSnXXht4h9se1NrWsc3+w/otf4fjSATruk1a1/rwfNHMPMCyFXQCwcuaNdwFY1YLPRUF57mvrOP0XKCwoVlv/Cby9V7531q2c0wO0qSAnMyeAR2hTC2YeLqDH+o9yi6NQjq3uUMEKiePYQWAxMZD1tfmzUTDkfG+9YOZk6b14LfjYKQLk6t4AZ+e0iuUaGoqpaClXAOn3vle71fR0jzLoJq0PiJe7FTtf3hqtrrGzQAtYMvJ4uXOMG6LRCufXnDOzGOMKHmfoVK6n0/TIbGUkRIU0/RHSe+T8Xyfo73/riBPHgfUO1hyTSHOQroXctuBKJX6eqD6mQBYydoIpk/xkF1x/0qnPeb/sLnxM6mOLvXq/E8TdOSHFPFv14/cZRHRWbX6ye8fcj+FnZ7QWN6Es9tPp4uKo1iMjartvUXHJwoHPjTN/iTJ5W4pUPSdnRAUW4Vw3CgCnxkdbPA8u2yhAbuIlAf2mxohk21SuTwIwx5sdO6fSfZqiN7bcW64r0EWmMwB+uc21Vafb7ne02ia1PHfb2X7vaQIbf+Z20SmEY+hK12O11Ge6n2jFbQrfk53TKnums0n75ZNg4iQldHukyJgbPIp4phNcS7nU7YHbl8xzi4Zcp8wPsuG/dVLng1jjRZx7MvD9MRvA+cVTdVwGMwmm0LUU4nHfAEOvE0NPEdApeiOQ+56qpZ7EJUFejL2nEWwdoM55+wfO1msB6ncs5Seov3RzczHz92lw/38Ce3IYgD7cA1DvSaYSPTOp4f6R5CjZur8jNRFB9RItSc4OnrL5sRW2MPsH/5GQl/9ygf2vgPk/Ynvd5iZ+bnOjG5MziczUdKI6NT3YkpqIdyfHw6h2/GOpUR9eJM9ccqhvLjnYO5eMdc0lo+/nFkOvFxa9zQuLvU3Jha4GiSDmuKLwotjGn1zFG/qCVlSi+BBQMKW9aYCGlNt4A7AlzdbtIM1WHua6dDG5xuWpZTwEMI9pD/qM2nVxnBC4ouQt2WZ9AIUesIgunDS7cnDizAFwA9DbslZb+5X19vriant+Zom9urDS2rLX2/tcAErBbnufs83eXNlob3N225vc3dZyaYu1XtlmnjuF9uFGhn0oPWkDNRfNC0D3siV//xrYeakYLkNbuJcuEH/m1jkGnxRJBaqxgcAcb/gGXOIQE6+/IOCNU4ym+fM5fc/nHQSQewCknoqj5q88bb3Fe60rb4v1F3NGDiZecQTsfK915jlW7QE750ye98F41MgdsP9H16Si59of981jt8/i9T4lBbwXLL7vOhhvQ5ZFUGn34nYHAOrvUOi8x2sSfVBk/TeO4zVcZyF8MLnz3l8CFnw/B4B+xIJclePqHAovrrR15m2ytxdXqlAK4TYHqs/Z63NLAehr7OXpb+z5sV9Y+4VvBeadAGp2TrrzNqhg6MxeZV2Xf7Be/L98DBup2GM9uWvAonFbpVsFAgxhiRLEcRIlIyK744w3TJFSxQ5c7rAA40+5agbmTqEd2+4eAE83xWdk0fROv7oCzPh7tbvVemb7GMUfd9nJ6rS6VrBSQji5uhWsdKtnVLqnU9fYIvfnr9bBXXOCuZf76lSR4zFEwd4J5P1X3A47Hdz6AJ49F9hu/1bzZ4J457kvrOPEn0kYx/Z+uGiVHNi4EheQ4GyFboerYZzFs8ggQ49zVk7wLvgB369Vu50udQR83hcd7SLcLc9DQZG7TOyfxQaFcWTlvnTKW6928ZdqZY/mOryOXQ2COgGds3POo3kQzGW7SwtZMF613Qs50nBJbGxDx2UWc0B/62x6d0kN7sRpAEoq1gmaBFvOyutPS9FNfwQK3uS+Vk0xHENYjrqVNZwj6DVAo6NYJc4TN/Y7rUXZLqniB2uOaHYdqzqotjfb7vR+Zxs8SoFk1WGZzcS0N75Pj1GZ8MweAGBTfT/SyE7AMb3HBtP762y7Kz3tfoYS2cbuncL3tCzer3CeaLmbpdOLgIUAi4kYQ4BuHtDaJ9c6GTtMr4ZRADrV7QJ0HGNsueOSepaJNEOfAPsloE++rrIpHbecOO5FmZg3xcNkuGTnar3TbY5K+NabYPBVrvXe2eic1Og8x/Y999Jp++p9BTb+wu2o4zqt+gK86dvBcJXxt3U22d5oU7TObq+XUczQs+vSLcUf5NjQ02IAe7kN08L6uWuze6pOWi/OQ70gFt1Fu6y/bJ95cd4J1WXIf8IHIO/neYaGMrV0rbwk07DZtxXaMdd+OZi4gJugLuFbsyUDLZ9AXYD/ca7ewf10gjqYet9d9/uh9Dw93v6Xbfd426eZumvBk63z6ATAswXfO5ca6Z8CUx8CqPtsItBmU9EGgPolgPpKs6k/Npv/p8I/56HyGz8VzX08/gsE85n/BU/w8+TM0B6AOdvrD5OT0U6wcjJyVDn+meSwdyE1NJBMJnqTYOSWjL23ZPitJf2M2nss9SL/GfMA8tlXqC7xD1W1SmOIOgAQPkB+nHTJqhkOEsCbwEdzlBqCxVmAklt9YHXH2Qy9wQnmtAtM3DsPEDyldSjuPkc4N8cJtx8nmR6cbLoBBmLnAHKy83dX1tobMM/XF1dZy+nvreXsUnsPEO+4thfMHSCetcGaz/xgz8+usheZm601a7s9v7ABLP2g9Tfk2SuA/LuiY9Z366L11zJFKMv8AMLok1KtthHUKZDjmpqsX59cc6BOq1lUrSxWBOhUjKc7EDR9ifIA2McExueVZkYBnL8cgIsPiheX3orjAu4P2etw3W4bwHUeAHoXGDsLlT6AcRBsnkVDEGDrLQVQo1qWGI+GPLSPTa+ncQ7PtT3u4PeXH1SHoZ+3j6Lm3ZV19irjO+sp3m2Rh0XWVbgF97dNxjVefGBZAMSa8i0IRh7AdX34exYGPfi9txd/sJcZS+xDPthb7QXrKD2K21oKlr7O3uD616e/tNdnvgITX2HdV1YAxH90YA4G/z7ze+u8vFyAHgCYszDrw/+QDJ4paVGdKPeIoYfKnO852V+UISPlW8WWyJq5OkbWTEOaGEAgDDbZfXmJdWWCQYOJ+sHEewGeVLx/yPgCwA5AA8j7CzfKrY3zdy9b6GxBAxRpccqWugcA68X34eJ1LtCFQSt4r/kA+P2XvlRrO0RGTQCmMI7rbwBiGcsAeNkC7+VjyFqi2TkB3QMWTkDtOPlnAPsvZXJDVs+2OQGYYjeumPnyHeumSYyXynkw9Hgx7oOCOLB5KuLjanmDNeJ6jgo82kFfhmLgB9nCUrSn0QAV+9nL5FjHDHYvzXYuf4/7WCXWzvU2+crfTAvXKvboIEB/nB3LG794qwNzFC8Un7G4GqpitOh++ZzzUmtdbEUrxGaPs/Ctc/NpKtjjN/crl4A71zQyIhjHa5m6d0RsW7vpLNZ5XTqRj+w8VL7H/Nd3mq9ou84fET4msP0IhZUsJiimo0Ct7pB8CgTo+D7KwuTWAR18HHI5xPmDq3FagZO63o0CPhnS0KkOxzhb5w8v2NiDs3IxDDMEp3yzOkXcrNDjraeHAn6GgiNei3OS3BaPCtiHGlEYPL4q/4cxsnLmUzzJB7AXy6SJivfpNzWycxWgt9ItrRaMtlQBRx893ql411ydfvA4l04z8wLFAAFdxjN0myOQv+c8vsGm2UKXc1yL9slnOCenfavCqx7oYGudwt3Jt9xrr7cR6pPIwnEeizZmS5QrLw2cQzgrl1snzik9JBM4T/TgnPAhf4u2h/rL9ui8EKaRF+2oeU4HoIdxjuNIdKw532beljtAB8lL9lAId9/NzgnsYOrcLU8C2FPeJ5YacKBOAZ3a7u+rtOq20FmHv7vrCoFAsxmV7wLxdqncTQfYe/wvhXPuEsCe6E7aUN+CjfTPpca8Ezbui6UmAt2pmcgDgHqWLQxvtsXJXwAD/wXY+m+7ba5Pormf/RehiP+/g/nsPwaY/3ObH/86OT90Aqy8yqYHW5MTsUByLDSSIpCPAMiHAeRDvZYcROUjIH/tqiv8Ixb679siXvSF9hs230ogz7XJx5cVppDgHic+9Dw5+7miVOpMRmh+IntAMPRw7Tm1puN3Lyv7e5gtdl7yILgz2hPVexwVfwwfYPmB4/Z81wgCq60HR2ce2TnA/Moqe391Nd502+x93i5ru7LZnmcst3e5O6yvIsPe5u60V5krAfLLrXHPZ3Zv/xf29OQKe3Fxgz09t9a6qy7Y86xd9uzCJnuTt9+6bmZYb/UlMPR8gGEJAL1cArn4kzIp3xMA+Dh3uh8XaVc9/hAMvTFLQE1DGLJyzs+5/hVje73ujKxXCbZ8/j5UuYowLdkn8PaVcd1rt73H86CojDNqAmuvZv871CbXzjoqZv/NY2Dwu/CagsnSXe7VLVXTZOk0eWBbvf3SjwBZFD0AdF/VKYviOXTkbraOqxvsTeYKzbmZkBTE33cBUPuKd+Cx7FFr34digIDew/Z6IYqCgi24r70oLLZYKwqBVgB4J25roPKUdZYct/YsvO4563CfywHqXwO4l1jHpaXWfu5r+5D1g3UD/Kl4b8v4EoC+TP8vP5hy6MY+zdepdg9RmAU2F0rvjEfAxuPMAk8LryJlXF9bi5PseonHFLQCUApV7NMeelfmt9Z54StFgXJ+zj309tOf4filVOZk7F6K83h/9CkHKBP8ei99p5a0B6Dny10lACbgcpWNojkycQJ6n9zjvgGbXiYA92ktbKNj2MomXymzGO6u9134WjvfNGXx4m/8V7/HdV/IXpbM3TnQ/SBmHsZzipVvlOKezJzrbJy/B65+Z+H8pRa6+q2U73Rni5eukwd8jHvoBa5l77/yDYqQ71wuOhmloltdZ8GXt0pWsEG5wLGAWaPrA8o+3+yMX7Retk+jDs6NmdIm1l65X614CuSUI48Ciytpw1wxq3CGK0OchRPUq5ySnYYx2tWWE+ARt18OwOPa1iAZOBl5mmkPAsj5s4Quj4l5x2lCVOlcBbnm6L2+3bzFOyWkDKfNXWIsBMv3qz1P22CxcbxHFN7D26l0Ubsx6TGOpRPcjqm970xrjorFJ7Red0yPc/guW+en5f429TjLRu6cVkufHaEoQ2koiKt1M34p8nE/BPJBjg85Jrh1VOPExJ2zNnz/gg3RppatZ271pFfWJlqr1GLn4cKpaqVkn3p9U+xdSWwA+YnWSpugHexL5/NO/RHNuAjoAnC22dPt9ikaz3C2ztvDMc25eM8TAHiTZutk6FMdTsU+xkhpWbdWKsWSGzejz8vSoVFXlC8RabgssysC/KCCoq6Ilb/P3WQdeTw24nO/SecKH8Wy9Lxo5GgRZIW5EHjeQ+pS5Nn06+sA5pu2AJB2gH7XGcj0plvw/ekWPMEdgJ78BOquyzvbzhz4qr8sCsDy1a7nfnrkjaWib9OA3iZwdwdX2l7rZwL5oS5LDfcmU6MDSYD6TGrcN5Ia93sA6s2puURZcn7klCVH1trixJ/bwuQfmE3/bhrcwdon/35aPPezjy35v6kCuL/7V8HcZofwzki8S03FI8mJ6FRqLLSQHPUlAeZ4UXpR8QDMo21c5teL6uYerKaqbeFtqc214B/49LJNAMg5t6IoRm1TgjnXisiKKg5IPc19ac5o2YqWt/i9LLXZ5ef+KEu+v8N0XqI4hR9AnggE5nstWM7b2myeQgBQGtC78tzsXGK4yyvBwtdbO8D87WUA16X1YOd77V3+fntxbo01n/zeHh/82uo2/9yqN/ypNe76pT06usReXAJrLTttdw5+Z00nVtirKzuss/S4ecDOA/cojEMVC4YbFYjjEm/2yAN8EHDEH4J50DzmQb5sEPnBoPAsqr3ybAG75uW0V9Uc+rT56clevl8raJyPe6Rg3yuQ5AfmA9hsNz48vQDTLgrh2HovSzP50n0WvHEEH6jDasfz/odf1SjClcWEDz97c2G5vTr9rfWCobNI8FWjiKi7ZK3nluB1WiU2zcIhgoKk78ZRgPwqtzuO3+8vO2SB2gzzVmfYaxRAnazKC3k7O+3d5dX25PBnKgje4XXuBeP/UHrMXp773l5yfn7ya7BzgPjlpdZ2/lsdXbnr1abn9W/PfK52fDvYO9PieNLuylklQPdc22Deoi0AaNrBbtR6WrRqF07Mu2UhypZviHvgAPQgAI5CNTL2gfyN1o3n0nXxOxxLANx4fgBU+pd3ZPzKOs59rmAUL94nBHRaw/aCxdNwpf+Ks4btUxraD5qxD2Q7Bs3bp7qbbL2f7Xay4XynOKctLAGd4jEa0VAMx9CTGNh890U8Z67O4f7Zmg9cdQUAFeacbxOw2QUgqA/gUISr0tRWy7GuH7/Xef4LPIbvAdoAdFzSLW6wYovW2qgw55ydAj4q0Hk7nuzv3J64bGk343XZJMFbIB0+E1RHwuWfy0mOu+V4vWWWQlaeBvDELbdHTmU6i3Gya4rmtBpGwRn3wQGIrjW/TcI3ttg5T+dueIwtdgCn5tjaMWdgT5a2VKhil5qdM3Aq3cnK03Nz+fkT0G/xc35INr6MBfZcQyFZuAnAjmK2HEBd5W6f7e7IzYMqAsLahNipscsgcwlusV2/B6C91ynpuZt+O92eZxeA8bL4v/H8RAMbFhfcKSeoj9C6lXbUd89pjY6khBazHBMMstvArkLdCXURKNwbpIuivj6Jn/H7DGUnMImQWzwTYMEE6skXZWLkBHOGGRGQqV4nQ6cwju12MXAA+cTzj2tspU4l/yzddlfkKhk2gP+tS2WbelenY5JHe71m4gyuGn933wE5W/vtt7V6NtpaZ6Nv6i3RXKEAJq7Ocj2Y2zbcrPFVHteWjYKkeN66kyU9UC9IxfucjSBL6+xD7joU9xtxrsJ5GP8PGnlxvMexKM/Xow8zbYzhN815NttaYnPtN0X4JHIDXnA9bbG70a2xcVUNlym21dWSB8DT+rX3vml0S5twAPp0WyXYepXMdvgzAb+/xSz86hOwE8iN++qRl86Ahgev58w90ekwbISg7gFb94wB1AOpqeC71MzgveTcUHFygaK50a2WHF1qi6M/x9d/YPNj/7PZBMB96h/81Jzmb5phzG9ov5wz88Wxz5Nzw4dQqVSlZgHm0/FIahJgPhFZSI0HLTXqNQF6AlVO/L0ZXrxkoNmtHvSgYuqosoU3+Ke9cGA+2ZQha0U3B00zLbAwfxnZ516tNfnB/AIANBqSEMiH0/OlseeoFpm6w+r44UVVucOMVbxz0rXsq+jXvd0CODl5ijeo3d4HttGNk1RX7hqA00owzuXWevZbaznxpT078oU9O/oV2Pgyew5G/uTw19a09zO7u/Pndnvz/2E3Vv5bK1v+v1nNxj+1piPfW3vRUXuSucUeHFtmTzLWWVvBfvtQcsT6qjLNW3/FAnfzFLMabbpm4Xu5EooEUcWSxdIuNcb9TKrg8SEgmBPU+WFw7fULWk/7tJJWeUJFjbfioNbPPGX7wH73SfDG2XkHPjjtmcutE+y6F2A6cB0AV3EY4L5NGoEBra4dMX/lCTHvxNMKmbtQle5jez53g709u0Rt+4GSA/YhbzPAOdP6Sw/LaIdFQ1fOBn1QY803rBNg3VO4GWC+VbN8Ajp973vLjgnQP+Rvwod5LQqBlXhtv8Lr+it7j9tuvbDSukqP2uucXfbgwC/s8aHP7BnA/m3Gt2Dj39ubc7gEY+/FCfnNhR+s+fAvrPXkr+z1OQfoA8XbcFLYbR3ZK6zn6o9SvQ8UAoTABFmwBejOxvUhxqfSYKVko0CW6nTOuOnaRsFX15UfrSNzmfzK+3JWWj/Au+P8lwL0rosA9iwAcN46sVNmpVP5TgMaL2fLAHKuk0lIlzaSoSua0svI0GkiA7Dtz/oaILxE+99k4/wd+qXTCY0qeIK+DGMAyH2cYV/6RkI8BqdQrEZlPK1oqTz3ga37cpfhNr8FE/+VTGeY9sZuANX27CaQ3XtzAej5TuEeLV7jjGc4Py9aJbc23Wc6OtXLeXmOU8zTGIePmY9FAsDybbLVVbFy9Qe139lyDxdvlrJd6u2b6bhagnqtSzqjh3k0HUbC9jxf80S6Vc2/oQL84/cJFQAuNY8Ax7k4gZMzZrabE3ec6YrU7BSTEdAbGZ172oFs1UHHtgH2VLk7QN9rAwV4T6Ag7C/k556dvh0WvrFPR6B8r4UrD8qHIEIvf247qDA47BL82JrHe4nPg6l+FLrx8fH3/MWbpMNg+1+dAs78aWrT5ARttG9l5kCsxo0G1Mqn6h33x8dMVk73RP5tFEUPW+7OofGM3As5NqRfBtvoBGzuoXNlTewbgD5L8H1dKfc4qdyfFYKRl+prmm2NPimQPfb403z8rEi2sPSBn8LfTIHVT76+mWbo9coRn2irtcm2Opt4i6O9wcZxTLy7q7jpqfY6ZZiPvq6z4ZfVFn5QZJH7+ThvFMvQy4eCnmLY/pJ95r15zLwC9vMWZPe0Mct6S/aoM9fJwhlHH+2MmdOAgityi2FQJ2zoPi1vgQHAgennDKfJtzliw/tKZxxDvOi5kz4A7t31YN01IoRJXPJ7sXgCe999jXDnO2+DnXM8wQz5SoW3zH2gyC7t+e57BrbeAvB+BWx67drxdJQL8vrmjzaxwC4K5z6YDffgAFsf6ZsDY58CWx9MTYY8qdlYW2o+8SA1N3wTjD0nuTB6DIC+GcD+rS2O/4nZGFj72G8B3P/mJLml2fnP3I45s8on/pxK9tTcUAXY+RuCeXIKYD4ZXUhNhvHYHaDbcL8APcn2BV44ttkpVEh21drie7bZr9l0c7ZNoDIbvXsynWu9XyIVpmsxmMMDQKLDGQ1WwmCpsXR7nYIRvmknGJ2HY0xG/pyfE9DPqwWWqOdcDR/OGzsshBOnr3ijDeAk1ceTcR7n5xTCrQIbX2qvznxnz498bo/3/9we7fsze3qQAPOV3dn2v1vtmn9jt1b+a6tb++9w+YdWuuT3rPi7f2l1W39uL7O2W9v109ZwCOz95Ep8v03s/EP5SdnDeuouW/BurgWpeG/IBphnmR/Xhe/mufU0ttqZvY6vKXJjRGoC4E5Qd633i1pL49dsl1Ol7is/6NbPZBCzT8D9IXstCpP1mpW3X/xBDL2vYLOSz7yle7Xj3VOw1QbKDgrIqTgN1mba8Isqecyz3d6HoqD90g/WdmGp2DlBugN/46/Lso7crfb6/HKtqZEx+/C4Qg8K1E7vRrHQfW0nPrwHpEHoLT1i7wv3WPuVdfh+jb0iSKPIeHHqG3uJgzPzB/sB7EUHrSVzszUd/KU9OfQLe3Hic2s9/Y1m6a9wyTEIj2dHfmXPD//SXhz7DH8PFg9G34fHFrxxCM95hfXif9hDJTwA3YcTrQeAQzMZsqjojTRoXmcy2nYBFBXHYRR3DFjpzUaRgkLlfcbnAmruXb87+zlY+lcOsOnpDiDjfNwDUO/j7+Q5BzmmsUn9ztk5Z9c5BP8fFJ5CQOcOPPfEBfJgwIxRdYr2VRJKuYzwLfJmJ7AG017uFKSx3c5Zux/seUBz85XOFx1Azdtj14Ct9Q9n/0JhLmT6gYJV1nWBM/jvNAcP4j7pFT9YsUlRrRTFxUrXCeDZRQikXe08UrgvU9Gh7gLNb6QBWK+ENR50VpNhzlUUI3SJ4y48AS+9OeAAfZ92w4cBVNouYGsdYEuWToFgQm3vg5plJyhUw8+G2Vankh0snXNltZ/ZksYl43ppHjXE/HrOsZmYV3NUavXhu+cB+CdkLsMWeUShP2xrnwADR7FbuhsgvhX/v3XaimBHx8eZfukOhQf5rtO//4D5GaErF0EAPEGGgI7bC1OzU7QJ759dNtJ4Wsxe94HzU4AbDtc2pouAw9qUIIDTi50rZ5PNhXiMZ3X7LBriKjQO6Wuq8OmwSFOraLqjwN+LVB0RQ+dutpzUxLRLQVpyBdBk1VwNm1Rr3YHzxPNyMfAJ5oS3FEsVLwvVJw7IJ5qvqW0/9cq15cnyJwjo8oQnWNeAfdNuusrG39Zo3Wy0tRogXydQn/wofqNldmuNxcHMaahFEkIBHLuIXgA6SQK3XqjR4fmlH+cbf9VxjQf7cf6h+VQvwbxgE36XnbX9ei2Y6cAuKs/X3OGfAZjPvcyz+ddFtthWagsgfUkAOkE81cvjrmPkvWTowJAPVcCRSku+A/B/oGucC2mRJqvrjgCcgV5TbVUC9tn3tbbQybb9A8fUvc8ksCOwG4VzoRZZxyYB6saZe/CFJdlVBltPptm6OTX8QnKMs3XfRGoiMJiaiflSs4Pdqfnh1tT80L3UwkhZcnH4Epj7Hlsc+RIA//syWXNt+J/9/2ZM81fc335TUn1UHR/BHE/iTWomHktNR2dS0xGBeYpgPu5ji0K7fUlWOKiA+KIlvY/xYt7Vi7/wrsLmWott+tlVGwegD/NDw3ZUDZXSh8FED8m9zIvqjxWfMrsf5qByzXPqzZeoPF/QWMEB+vgzuitdlZ3iyF2qRymQoRhmp4WZYY0PoacIgH4NzLVgnfXgQ/4hexXAbznA/BtrBnN8ehBM8cBfWNOu/2CNW/7U6jb+kVWt+D27uex/tUpc1q4GoP/4r61s6b+0W6v/yO7v+cw6y87Ys8xtdv/wEnt0erWbn5efsb5bl8x/O9uCOLwA8P5qfA+2HrrDDPU8WcCKlT8qsMFH/DrHoow/bcIl2HmwDoy8/pKF2YKXWcxJub0RwAc4Hy/epXY7zV3e0s0OANh+YQVY7Y8S+HXlbdTeOYVo/cU70pe7lenOLofv1hkL0VL2mQuNYbHQTfEZV8gAcF1g4m0XV8pMh6E077LA/LPAAMsPWUc+TuTPq2yA2fCl+60fzL6vFNfnbLIXZ761rusA2oKd9vbSKnt5bom9ubhC44yXeJxP8Bo37ftze7jvM3tXsB9F0Cqr3/zvrRmg3XLsCx3Pj34OJv8F/v5He3rkMxRZ/8Ge7Pu5PT30F/by5JfWlvGddWaBMV7fbZ25G9y6IXfG89fq8OJ/zJMuAYVjliDAh4ycwiSJ42jCUuqCVhg60gsWRwDv12raGrW9O9h2vwy2DAZOQFc4CQoFL+6nL3uZ1tpoEcsZeu9ld7AtHih0bDlUvFGAx9k0gV5sufBHsWsy6jDDUqhCV3t7tSJSPdnOMrb38tdKcCO4st3OFjsFcjw4Oyeo0l6VATCdZ39pnqwl+H6NCgV2CvQ4FLiyXLN5MvKRmr1KSGPbnYDOnXiK+SgCpPe8L12QOMtXPn6XJEejnDheL3Y5qNyn8t3Lx6FVNKdcdw5xYNkVe8S0OQPXbJqBNDd2C+w5i2dQDve/ZbByy7XmB+nbnk7F4/w8VskW9XF5IQw3XdVetnbHAehDOkccdwKyOxkKEiIDJqCHynbLEpiASbD24vADWHpzULhfWelWH/Ga+XE9o3L187I95kXh52FUL64LVRyQeVEEz4cdQi/z6ct34/5OqW2uQBdcRsD+/SXbcVvb8D7bhvcb/r58t+576G6mnN4obGMmQpBRxbjduEyVTmlLJ4bHHcJjjQDUwni+DCIKopjh9cONF+SXQd0AuxNDAHeuknJljWA+3npTs3IK4wjSEy8YJV1sIwD+MZpCpcePZOti783XxebHyfAppGurdWloKhBuOVvst9Vi4XKrpDcGV9FaHXOfYBEB5s5cjBhdLpvynR10Uy7OS+e0JttTtEtdwoHre7WS2o3zAz+bNOzqA5D356/Ha78R5AxFFTsifK4s3DSuOKvz/xTY+VxLti28yLHk60JLvSuzZEelpbpuiYGnehss1X/XebZT2T4ARo7ryNBJDhfaytwl/kZqd8aodtYCxG9pp50Mfbq9UrvtC2zbp+fwUsnTLhas3MTQm/+SpfO6YLo9T7vYj6tvQ2DsQ11mI2DsYwMLqanATGomNJGaiQ6l5gZDNpfoTc3HW1ML8Ybk/Oh5W+CcfeRPbX70n6Ii+B/A2P873OjP/trW3X4C5GlPdjLzud92e+Yjq5NzwwUA9BYAegDVyQQAHU+KYB7C4Qc796hFkaRaMOZm51QlLnoe2iL+CfOd1Tb37obNvkb12EJP9mwbeXhJrZf4nQxnH1pz0iK1Z+RklgAj5470eMs1ZaHPvCqxaRQDUy9Rmb4oxG0UoiKlMjTLRh+cR3XMXGScOKp260QUJBtj7GURTUnWipl/uPIjwHyZRFovTn5tz3Gw5Xt/+5/abTDympW/b3W6/FdWza/X/TurXftHVrP631ol2Hr9pj+xR8eW2/vS03bnwLd279C39uLyVrDzU2q1y0muLltfd1cQ4C9YAGAeugtAb8xVpnjwbrZ83Wm6EMUHhSw9cgegX5/56aDdKudTinMt2aujJ23s0lu0UwDcDkbddmGJtWUutfdZK8XEe4u2C/T5dReV72DO3QU7zFNxzDyoqrm7HmRKG+6btoxUxPeCbfdQvAKw5Frai9MAzuJD1l/OOfl6qeX7SlGBA8gTr+q1rsbbIaB35G0DYH9vT49+ad2lx+xd7nZ7dXYpXt8luO819iZzmT1BsXR70x/bw/1/AUb+K3ubs8vuHlxqNev+EED9lf4XvHx66Jf2/NiXKLK+sNr1f2gPtv97u7/1j/H/+SUY/NdSwb8G6+/I3SiBDccmXHHrurIcJ28AHlh2gDNg5ndX4ETNDHKq3RmIgu+DBNrSrZoFc9d8AK9R56UlLhwFQE0AZ6u958oy3N4ysfABRqbi9xkI08usb3zdQwEbjk76v2d+rchTH1guBWpSuF93UaduV3yFgJQ/i5Q6wxmZ2xS7RDL6pLM4kCtbej7ulwOdA1oCPBX1wcLVEtlxxk3HuZ7MLxwQs4OAvyVAM4+cPwvKZ34tGPpm2cPSmY0dAYri/FTX0zde6WhL9fu89KEIYHFAVs7nENLzAFOlSY8c7zYq8S2g13iDdADcr5a5DNgvd/ATaqODhQPACfjsVPC15wiE/utk5py7JzRTP5ZWtB8Uu+ccfBAMNtF4yYb/L9beO6rKfNsSHaPHHT169Oi/ety/3rvdt2+fUCdU1alw6pwqK1paljnnnCMqZsEAoqIoQQUkIzlnQQRJIlkkqOScQUEQAxL2Xm/O9W3rnPvGe/e+fqP/+I0d2GzY3/6+31xzrbnmyg2QQY5EZc/4vetgch7q4z5Ixo7XPLt91Rj+w5nsnGuPAK6XU/PAClsQwBLY28JOqXdBg58VmDq+7zB8JzF2CsAdYPGtIceMIUBk7CztAYAJOL34/+hdQPbdx3Q5F2v8aS46ObCXroXRfH98D5yCh9ey84LzIYayfQDo/ghKvMDE3dT+mA6JzykAo1NiIgcknVeW2ofPy0CAgE5w70+5qpkJsvKRAjD9+9wfww2AfhivVtY645xe7gT3smgd5sIgQCcc8vcKsVeWGa1sFMdpvbz6jhrJGMz8jgYIo2T5AGwy8+HyZDW3otEVRzsrwNP1jcYxuH2OfYLtrZwX8SzLRztlOhOdQbqu/GJg1cry261j2EOOSz27asLYnWKl5lC0Z6Z+iaJkZkN4LFmqUPvc+ze17DoOhj5ZHiRTlaFifhoj5roUMTekirkRgN6cqSBuBoaYO2jvWmA4wimog52DIE5WxshEVaxMAFsmwNqZsn/HQS7snqpOUNdRMnbOTJ9kir4p91+BunRbBrkosJcZKXk+935SGwVzAxbb2CEA+4taYF0TMK/DZH7TPWl+1zsu4/1jWC/N4wN9AHSy9lzT1DCilJenZerlWpHRaVi/M2rrBPZn/+XvVPH/8e+mkP6H/91K9v9s9Ne9/Scjzf5mrky82muaGvE0TwzdN48PtpnfPXuJqGTS/BZg/prMHGD+sh3svMVQCPKDs3aOAzOFL2GqNQ+Afk8t+qg+5Ai8N4+ilGW/LGTvpb9O4OF6nusrg+zH5NShsiidg84RemOVOEHLI3UR0N+UYZXiNYUcO4joOIe1NopR7FXlTHUz2RrT7aydN4WwRQ1g7rULALJdxV9M4xaDFeaeBZgf/RmgPUPSD82SzONzJePwz3Lv5GK5Z7tM7hxbKBknlwDMF8ldm2XyJNJJCtyPApS2y33XA1Id5ihNyd7Szlnp6QHyNP6G1ES7ANDdjVo6AJ0p9450X2lP8wGgA9xzQ9TfvS8vGKzcSzpTb0rvXX/pBbB3pXmASbtJB4esMLXFNjSslih7Fbw1kYGToQYckBqwkLrAQzrQpPbWYQD6Ge0HJ0t/6msN5k7l+zm8h5O0J7po/yffk37zHPHaEn0RbPc4AoL9CpYV7ru0dY9uePVhdlIXbCPNUReUiffej5HevAjcv6iL6vfym/sA6LulzA0gE+ss5R4HJO/cKilx2SxPfK0A5qtxHBdo2SLHbqXkOayRch8bybqAYOjMMmXmBPL8i2sl59xKKXHeCuBfKwlWP+KYz8fxXyglYPEP8X4lV9dLqetGDTLasSm3RNioGp4KeAJwI1h1B77rjigbZVq98TgPAOjd0bY6pY3T2Sia69RxpEfwOjtNrbNGzkUfd1rKNgYYrXNUezOVzuEo9HSntzvnf9P7vcFruzSAKZNhN3kDXP23KYjrVDYAHi1iCZKdnLoWe0IG4k4CVE9p/Vp72EMM1t7ku03BmANSyLCVZeM9OrQVbo8BtvR9RxCgc9gjj2vbXDP71UP2q/ELDXHYt96EYIDvRfA3rGFP6Zx0Ank/gglaxVKwx99jal1noePvafAQbHjQsyShPvj8DJpet1Vnux4cQ7ahdfH/p9odTFXT7smGAI7ue9onnkKR2nmjXs6pd9rf7ajCOSrGqTYfxM8oknvxfogK2PcQAvkhGshkeoJ1BstzKtvTjF5velKoGQttXtnulWIYtDDtrqyaQ3wAsqyPNwOoyZw7Ae4UPdb57pNmsHU+38khQdE4H9gTHYEgFQyyTQWV58HaHaQr9pze7wD77ow5q7bD3QxMGLSARVPIxQwiGT5/r4WgjuNAVX1PspNaI3NUMOcdcBRzF4IEMnSufvysHwFBj842cNQ2XHpjsH+e5Qayeo4SZZcOzWU46fBVcaSWHozWtDvyDsD8lmK5Us5Mt8y2QABBAxrVFAH8ycrJwtXPXUE8XSevvbEA9MuHYOFg7XR3o3L9xcNEtaJW33Uw9JeVafqc/hz7Q38WvgtmFKlmp9kUyFZHwiUd/NQDwkGNTgstk0NPaEbkqedOaQi0BqDvlepr66WeGaiQg/h+TkgP2/iovWDgx5G52LPfFnjJRGkgwDxEpqrDxPQkSsy1iWDnAPXGOwagt+Vi5QHQAerdBTpdzdx+30jDMwX/OE51WZOPAerVcTJeFQPSCKx4FI4VJe8q41T9/q4mTSbqM2SKrXAWUFeWbpnMJiqMAyvvLTWeozr+/c97HxoDX9i/DlA3vagD5gHvXgP7xnpE3vWaZLxv0jz+7A1Afcg8NdRinhwulKmRSDGNXLLU1ucbtXWK5ob/hwHuTMcT4LXt7b/8HcD/h/8d6fX/avTV0Q1n7DtDlj9yHGDuZZ4YvgcgbzKP9Q1hjSMyMZledxnMXFPt+HAvGrRR38QPzVRFT5lhAtB6X+shkw3pMl5LpSWiTYD6q4oYnGCcYx4uw7R5xe3oQwpB4nACJiGySlTwH8PrxsDqxx5FGyy9PAKgHiavi2/JaIGvjFJYl0nLR7o+4QKMN1KrHQD0lvCj0hAMsAs0wLzSfZsqp8kIiwAk9+2XSbbtArl3Yg6AZy7uz9fbu0fmSPapZZJ1eqWu3HNr5d6ZlVLsuldqY90k8/xmeeC2X0p9baQ+3kNaUv2lLc1fGpJuSk3CDTznKfVJXtLIvvTbPtJ6+6Y0Jd6QphSANYC7IyNQfd+7MgOk/bYn1k1N03cD+NtTriuYtydd1QEoXO3YIFpiLljY9DFl6BT11dDdDverwYQrwdTrAOTNUefBzm1VhMbHrXF0fHOX7lR37QvvSHLRaJzBQw0YPIWB1d77sKzwfkfAzMHmWT8POSWNEfY6E5618Z7CRLBzFwQNdvIk8Lg89DTA/MHFdQDnlVITdhHHaZ1k2CwE8G4ByG+VfIflknNqoaQdngOWvhivWyUPvU7Kfac9UujI479Skg/MktuH5wLwV0ip8za5a7tEInZ8I8mHZuO55WDoa6UYgUHhxVV4TwQK/tbShE2bPfBVnjuMDQTMuhbATsMZplN7dLLaOeniuFUwWwZ3XTE22KBPqbe7tqJhg2+iIx0YnHq4U1wWfFgXa+xtwUYLl9G2Zq21dzrRNfmDWYPZN1HtDmAluLKe3aMser8q2dm+xtp2F+vqFKTFspf9qFrIEuhp39pxi+x4l44tVc/4QKbLDyhIsx+dqXT1fA8+oEp2AiqZMg1vdPoZntO55f57VaDXCKbfTBe5MFrBntAAok995w/q7XMd2nJIAw/asfL/I1PnatWhMkYgQDMUZhB6yaxwy5oyF/UJ7K9/bwGrCnGK0shmabzDfvNUo/VMPdmxcbP/W9l5mjGjXAVzCLa0l/uuiwre6Nw2BBAcyvLVdDsV7v06cvSyjk19kU2nxxvyHK8fwHv00ESIrF7V6mDnCCg6AL5k303BR3HNn5Q2eing+mhEkNsYwnIb94JTalZEIG7HZ2gOxrkeQuZ+XsG8LdIGz9tKGwC6Vd/jpKb0u/A5Oc6X8wloG82xwa1MuzOojDyttWIG2y0IECnifaYM3VU649ihc0Vv2a1DV0bqP+jZwKUMHkD/PMNDSw19CGreM3raXCvJIWt/EGqk2ysM5TsHnAznBhpTJ1UcHCMj7FkviTVeB0Cnsp1M/CVFcY9p05qigD4KBv6iNE5V64NF0TLAORGcW15sGf/MEc6lZOsA82zOMI+QXrapascNle3XtGOmLdpBDaVawum2eBxMnGLRffL0xmap9dkrNV47pMJpmTx2WaUi01YGsZFGOYwZG2Zzhu+5yNv7njJe7C9TFSFiqo4Q85NoMdfEAqiTwMJTRVrA0tuyDADvBKPuAkvvJcgWGo5wBPomvKY2SUyP48HUY2ScIA58eFcaLG9KguVtWRiwI0Yxh4I5bYmj8p2T2joKLGK4Eq2nCxXvfQD0vhJj2EunJYBgOv5fgXoNAL1ZTK86xDQGUvuuF7D5DOu5yTz+fNw8MTgMlt4BUK80T46ksbYOtn7WpIr4VysB4rMB7N8ZAP/6Y7D33xptbwT54f9/6ngLmP8ni7z+/1Agnxz7UYF84qU1++3M48Ox5nfPH5jHnjUJwfx115jpVaeJrFxG2/H/AMhHmg1mTks9snOOqGP9HAeACvepNrD05myZbLwr4/WIHtkvqDWOVJxsOEmrEgHgCVrrGMMBf1d7Vw36NW2CSOsdAJxpel0AdT5+W8YI1g/s3FNPjKE7jjqkYyCB7PykbuRt2IyawLzqA63kKTbgCoB5uetmKbu6AWC+CmCzTPLtl0i+3SLJO7MIt4s1xZtxbK7cAaBngp2nAYSSDs6RNLD0HPs1Uhd1RYo8rOX+lV1SeN1aKm45KHizpl4be02qIpylOsJVKsOcsZzA1F2lMeE6XnNd6uKwcFuf4CGNSZ7SluoLoAfgJ+M+btvTAeZp3tKWfE1aE50BnrhgwKapIKX/OVvJ6oKPa5/4UwL5rePKVqlCr7q5V2vdDeHnFITZNtYUbied+F32h/YyjZ/E9r+r+hx74RsjL6hYrfrmHqnyPmjUy30Basnu0priKY1g5hS8VQcck8eRF6U7P07fn6y9wueQFDlv1xR6+rEFcvfkUnkc7CBpRxdIxokF8oBgfX6N5CFgyjg+D6A9Q+4eXySZp5bKI99T8sj7iDw4v1oywd7j9kyXpP0A9SNzERCslkTrnyVx/wy5g/fNPr1UHjiskPv4jjLB2IudNkqZCuestPZfhWCkHiz7sfcuqfEBU7/FFN8p3YR74+3V2pXtbe10eAPL7IyxBQAYk9g4a71JHeeYUrfWuejtoUd1NQda68Q3TeGDjbWHHDQc4cKPGbV1AikHl3CGuQWIuyzMW8ep0r0t3BjkQpV7N3vgwYA7LEY0TVTAc+BJyAFNmxPU21g/R+DQou+5T53ZCOiGCxz/FwPUO4IOGFaz+DwtvrvwXru11l93c6vWx2lvy7nlFMz1RR/VurgOaMG1wcCCavYBndF+VH3Xma1geYG/x2lhTJezRYuA3q+3tnq8Oglw9MVnPZSe7jp+1s5wdmMPN+eMp1xUtzcdrnLnspGuJjinX1XDFra58ff5cx2NmumqYrehTDDbO27asqXMlQ5y7AHHz0bYp4yfPwdDHwArp3C2j9a9rKEjOOgioNNBEIDbpsB+DowR39Mtfq/UzRw2AmC/A1LL9kvcMg3fjHOFLL4VIE4gp80wu0NaWbbiMWEQg/ei1XADwL8pDCQhzkGFXk1gpWT1nZxmGHdRM2eNNE2KdzQcLVOcta20Neqsvh9FYt0prpaBRxeMmQYxbKk9rzMNBulXz5nhYOq8HSSg64QyPx0wxR5ztqWNcnokn7NMLmMNfaQ4SkbK4uVlOSdMxiohYr860/QjtImtJLhbBHBVtJ+OB2AbI597KcSlrud+uAxgTxgqjZcB3O/NCpKONF8dzNSb7q3TGXvBzrmHUNPTFX9J22Bb6UWBALeZGSI/XIMeW6Tm5g556r5ZKp2WSrnDXKm6ulRq3TdoyyedHbUEk3ZZMzSjOdflXaG3TDy8JVNVYWJ+agH0+kQD0Fvviqk9W8Hb1AVA7waw9xaATRcag1gItGDuphaK4u7IJOvpxAkq5ktDZKwkSN6WBmk2993DCLD3OGMsK5XzzYZIjmXhX2aoA8gFgC59lrnqtJsFSzcR3Hsss9XpEz/4VGQEmAcMNL0loPeDpT8TMHTcf2YyTwxNmiZevMLtc6wWmRgsNU8OpeG5UNPk8HWs82DuJwHyB8Dct2rbmzJ4gjwZ/C9Cun/4X02x/1ftL5eJv8jU26UK5OMvrprGB0PN74ayAebVquZ72z9sftMzpnUDfAim2AURinmYTfg1xhSb9yPqyM75wakexMGYassHoGcpQ38Hhj5em6q373hbk6oTdng7Xn9XJhruyUS90XowjohKAb0izLitipbxCiP64pdEdj6Sw1QcouK0i9KfZIcL/JQysU6sZrrCBZG97ZUnN7eDmW9Wz/BigHnRhWW6Ch2WyINzi7CWyv2zSzXdftv6JwDMTADMfEk9ulAS9sxUFvnAeY9UBNmrwUyRm5UUexyRquAL8gQgXhVyQR4F2MsDz1OS524jhT528ijYUdPxFcHnsRzlUagTwP6KPI1xlZpYZ2mMd5OWJHcF/GYAfEe6oYRnL3drspsy9XaLD3IbgLjZYqNYB+ZM57Y69nlic2K7GtvDaoOOa/85zWQ4lIVucWTlrMe36aAWsO2Is1IfaqsCPZrpVN3YLQ9dt6lojbXuMueNqtKvA4DXALgZJFQgWGhL95fW9ED8vWMqeiv3sJKs08sl9+xyBfD7YObVgfaSfnSe3NPHqyQbP7tns0iPZ8rBnyTbdjHAf55U+p2RCgB6rt1SgPZcidv9vcTsmq4tgdlnV2m9nUFCIo558oGfJPf0Ysk6tUDS8d08uLBa/9fHXjsR1FhLta+Vlh4I6E+x6nG/w5IGpbKZBjSNwYe0w6GNSniw7b44Q/VOUxqmYtvA4NqZqo84phPcWhXkqZI+pDPXewAYbcEHtBebKX3W0JneJkNvwSbGEaQEZraUtVOUFgpwD7VSEKcAjrPKu5WtAyTwWgrpmKpv4XjWEGMEKxXznQgaeNtKy9lgQ+xGa1g6wrGmTTEf+8M7ESiwDY/g26zivJ3qaEexHsVxXeq9bgjc+lV8d1hT9s9U6W9jpP8TzlhGuR5TJzyWHqj05/AXFbWxNo2f0ySF7m8MgrpwLN6PpDUm1x03ZqMTsDXV/jdrVFW0q0XqVcMohvVyNYO5gve2UxEd29w4BW0456bWzNnSxWEjDAKoJGcKn3X04SzD+5xta+oKqO1n9gBwitjstM21A8GZCs0AuO2RYOKWskmt926p4Tnib409AIHrjR1S7b4T93fJY0+cQ167tVOiCeCv9XeAVTsdzgIO4tw5oqy9F8ejHZ+1IfCQdpAwC8ASF0tdTSHsd7cDUz+rwTZnFmhdGdcqWS1bb9lq2RZjTDykjwQBnCyXrJ3/NwMJDjBiDX4o44Yx/x0A/zzDUy2Zh3IDjAmTuf6qYH8BMCeg83l10yuOlpGHifLyYYKq5F9ZnORGmWIHoBPUmUJnfVwNYvDa5xZ23nc/FHsBBbtBqqvpyQnR9jSCeVOiuw5Z6U4zRjPT0pneFjxGXQhW2iLttETVgoCylZoTiz9DI87DBgSXT6+vk5Kzs6TMfq5UXFoidV5bcK4dNmx26W1Pz/wsV3mVdwMs3VemHgWDoUeCbceBoScroJtbM8HOcwDoAO0erG6w6t4HfwN0C6hLJwe45MhUwx2L8BrgDVAnS39HUC+5JWPADAqyJ58kaOvbFFvhLLV0E5k6QbvbwtR7yywpeMtSNfxD7VkX1tRJXoF9wlLzGwD6WB/AfMAAda6JQQV18/jgGJj7S/N4f595op+iuUo8/8A8PpRunnyRKFMvwsVQxruIafis9rRPKnv/0NLy9u9Pd/u/Ob/92kivv1xvGh8+BzDHERjMwD9GJXsb1nPzWP8r8+uecfOrLpP5FcG81agfjFDKX2dh5tXGYPl+Nu6X4eCXGGDeTiN9sPOmdAB1mozXpepknImGNKxUfcw1CRCnClHNAepYa08GoMdamHkkIisw8+oY7VMcexiKEztARu6zTc1NnmPTGKC9Y7K9AnonTWSwOTdRkRywGxftdlzIm+WhywYpuYKT7PIqgPpyKXFcDkBfqsw8j3X04/Ml6cBMidnzo0Ttni4J+ymCWyIph+aDoS+SylvnJN+VjnFgn1d2SuGNQ1Lme1JKfU5KidcJyXG2kpRzO+XOJSvJ9wSoe5+Wey7Wknphj2S7HZEiPzupDL2EAOCKVIacx32w3WgnAPs1FdF13glQ0Rzr7Rxs0HH7hnQCkFlPb6MQJQm3ZO0xjurMRrvXp2AcVKfXANCfUuUOltAcfUGtXtklQBU7BWRtVP6G2UoD+3PBDvrzgjVtXu25Rx5d245jsFRyTs+XUretqs6vJlvXdLyVPAR4t2eFa489zWHKPHZJ4eWNkgWAzTuzFEC9UPIvbpCHN0+omDDj2BzJslkMIP8ZaxZY+xy5B6Z9/9xKyQTA07Cn3NMaf2+RBk6Baz6ToHVf4njPAlivA3gvlkSrWRKy6SuJ2v6tlj9SERRknJgPxs8SyGKpuLZFKrFB0+ymXseubpdqsAPaxLYCeMiuOgE67GyoxcZez9R6CA1irAEAZ6QvAcFf4kVs4iekVVn5cQC74SRIUGfbUws2+Q5s5BRJtQaTsR9UFk+1O1vdKJgjgCqIsxXO1wKowQaYU/nOWeltAUa9m+rxJr8d2p7W7LfHqH3f2quBgWEpa63PdYFddgRbq/Kc/esEZvbTa02ban2A60C8YdzSGrgf77lH55eztt9Ipzm6wWmL3TEA7nEtF3SGHdFxnqp4J6irm5kxaIXz39nT33rrkI57pWUpmTeZuXq3xxmOagxseCyUmTPbgUCgO5JzxR2M2eUpBrBzcIlOHrOAulqf0i2NvcdYg0kGkyegs497JM9Pa+ODVHrn+ilos3+b9XkGAEOZhrqdorheVYgDTJghoEo83t4A9ySmtR0AMqe07FLjs0tqsZ547pAnXntwXuzFHrBNtRjlLltwy86KDQD17VLru09rv034zjvjWEM/h+NxWAGcqXqeRwzkKLCr9dln/CyIJkv7EUTuxe/jO8B114AAuJElLvpDRDnotcrxxQrmCZfVdpnATz8J3u9LdtZJgtSDcALis7RrKv57ln5Dnt0DW7/HKXM35VmG4YrJSZMvC0MA7kEymAPwz7tlDFYqCNEhKSMEdLaqaZtaitGaVmko2VX4VppoDIbSlHuMimLJyJ9p502odGX6SwdbZXHbHOcsDbEuqu1pib0i3Wx55f4Te9lwm+SeEm6rqXZmqqj1oOajRQ2LdhtOijgXKy4tAqjPllK7uVJ5dYWWqLqjjmsnEsflGsNv3OTtAw+ZLAsQc1W4mOvixdwMMNd0+z0w8BwANoC8BwwdoK6rFyDeS/e3IgPUteYNUG+xjFd9HPdL2p2APlYSKG+L/cHcAeqVkZqan6xJ1PY4s8Ur3sTUetff1cufVRkWsfSDB0FlOl5T8iSsCugNmqU2v+my1NH7cTsAQB9QcFe2Pt5vMo/3Tcp43xsZ730pEwPPzZPPegDsbVgNAPsnMjlQap54nmuefA6AH/QEa7dSkxrtY9fs+T/8r5nF0PkNrNz8bjDZ/GbgkflNX5v5bd9zLAuQd5u0Vs5oRIG88Rdmboyiw4d7Rvedh0aqAgfa1FVoqNtp89qcCbC+LZN1t2WiNgUAjkWDACyC/IRlpu1ELe7XphpgzihLRQ4A8apYMPNoBfcxS+18JN8bkSwd4VywGbC384Iy9E66gNERDkyn3h/Rudc2tQ595LYRF/JGeei8SR46GSz9/jkwyFOLAOTzFHxi982UiF0zJHTndAnDirP6WUVwaccXS/6V3WDj5yXr/AbJPLtW0s+slRzHbZLFdXG75ALM0+y3SeyJdZJ6bpvccdgp8babJcR6lcTZbpHMq4ekAABfHnRRHgWdlzL/s7jvIPUJ7tKS6iudmbe0b53tbT3ZQdJ9D1FzJgD+jre0J1/XzaGVZg5JzmDel3XTYAqebLuebWdYjbjQ2gH8Xak3pO+uj/SkuRubC53jAP4cpNLMmhfrd/f81B2PVq4V7juk8MJKrBVg5WC18S5Sdn2HVNHy1nUrABxMMScSzPqIpruLrmyUPLtlknHkZ8kBQKcDwNlfXoBgJ2H3N5IOAE47guBo/09ye/+PkmW7CMx6veSfXwMwXiZPwh3l/qVtknZ4tsTgOAeu/VxCN3ypaffsM4v1NnTTNPFd8amEbcLze36QmO1fyx0EBxlg+Dmnl+iGzPT7Yy8EMz57Aeb8ngHo6jIHQAYQt4NJNtw6gA19l9rGcqNnir2LIi+wLjI6usw1s24OcFJDkhBjeAtT9a0A9C4AFj3fCewMBjR9bzGbIWtXD/hQa6MVTlvH9oDJHlaW3K618t2qXO8Aa28DeDd4bzXYOdm9/y5VqLcFGWl6Fctxnngoe8sP/1JD57CPvkSCLMCVdXEwXA1IADRtFktattqx7a6JrWh0dgu11rQ8WX8zMwB4nfaPsyyF92Bpiu1k9DDvsfRtN1IIiNcZAYOdTg2jiYyCOl9Lph5/zujfRiDQhXNJjw+AlO5xgxTDpZxXP/NhCt5oJpPCCWZOOsrU8F93M0BegR4beq4Xlre2iBHMB9JccC1f1pQ6BW80Z1FA56AlDlhKdNR+c6bXu8B22d/MmjnBnWy4JeI0mLO1PPXZg/NhuzzC+fsYQStbPEsurcE+sAWLnS1rpPDSaim7ulF/VnZlLX5nrwJ6V8IlnBNHQQasdEiQzheg+BJgXuNNAaa1DnWqZ9sknqu8QVMkKwTX1Org3EFAwDHGan9Mr4awU+qpwRkKrOOztasL13AP3S/jHbWWTtFc321nHUSjzDzLR3vRefucYJ5lSb9zJHSOjzFatSRKRooi5AXY+zCYO33fX1elyuvKVEMAxxa0qjvqxz5iaU3jnHLW0EfA1PnzoZJY7S/vuRegA5Oak65LU8xVeXzrlNSE2klDpCP2lfMIShzxmRh8OKqiXUsVwUe0DMPzjeUiehvQB4HlJ6OEhOPmsUGqnJbIo4uLpMJxsTxxXa3XTF/8aXz/F9VUbCTLRV7nXpfxIm8xVYKl10QroEtbBkCa6XbWunMBtnl/S7kDyEXT48W63qfMCco0MZuqT1flOzO5b4v8sXxlrMgP4G70vI+XhwHYo4AxBls3AadMJJ8qgisz7GCfV/3N651pdoC8qd+Sch96KjJcB8xtNUTh71k617v3t70K9OZ3ukx4DGDvHTdTET8x8Aa3r7CGzRN9AwgAuhAA1Kk6fnL4ukwNbzWU8eo492+n3v/Gzsd/J1OvlpvGh86b3z1PNL/uf2J+3ddnftPzyvwKQD4KRk7BGxfBnFJ91g2Gaw0QH3z/QdmvV6rMXAUFGi3hwFKw0HLP6BukGpFtBgT2es6vTcHtbY2m1FhfzfWTtPVgkuKGJ3EK6FQsEszHKIQrCVZV+y9gnmVMQaJqsj/ZQQVPdAtrwolUi0jwiedmXKybFMwfuW1WECi5sl77znPOrpA7JxZKovUcid77E4D8Rwne/qMEbpsut3AbAmCPsZotd2yXSwYA/Gm0s58MaPwAAIAASURBVNx3tZK7p1dJ6tElkmC9QJKPLZOk46sk8fhqgPkWuXd5j8SfXCNh+5eI/66FErh7iUQeAcBf2Cs5bkflvvtxyb1xVPJuHJESX1upjnBS3/dWMPP2u4GIjtny5q+mNB3p/tKbBXDP8JfO214Ac2dpZu0Nm0WzbhjYwBKvam85U+pdahjjDhAHq79tPNcScxHgRlA7qZatNQEHpRGMg61tfN+m8HPaWkZTl5JLa6Xk8lppwEVb5X8Cx2iNFF9eJ/cB3E8jwSzSfKWICnSH1ZLvAJZsu1hSrH6U5L0/alo8//IOycO6vX+6pIORp+A5KtVT9s/Q3v6cs6slg8HRMVzYgfaSabdeYnf+ILfWfykBqz+V6C3faGvgncNMwc/Ac38Wv2UfSfSOryUGKxigH4/btIMzpPD8cim8uEbr6+xPf4LNu8odGzdA/QlWvf8BaWYaGSBc779P56uToXOmOmusnbHsRz6lNpRMuXPqHl/fBlavPcv0NGd6nGNTlc07SBeZLEEdTJaqXaadu8Du+ViBk4I6HXt6UMGUNfdWbQvbrZtdCxXlgQAEj02qkG9lqx1T5IEGiKswLsjK8E2nQQ7bxNi+BjCmSI1pcA5AURAGSOrkt6iT+j+x/t/otwubLBg63pfz37s4whT/l7bisc2OvvcRNgrg7ADpJ1unm566ugHUo0/rBs0AoZsT4TgnnBPSeEujHG39O2cALVhyT6wd/s5p6dSA57zRkoRrUBXunGfO+ni6k8U85rwK5J7/4pHuZti83nFTU5bhbA8F7Be5voZ7WooTAPuCKs7pTzHIqWp0iMu4roDenXBef94Bls7vq5kZjWg6I17Ad2x0PhB4KwDc7KKo9tijwP7AYbmUOuE8R0Bfqpm6dQhiCeqbFOjJ4tvYJQL2yT7qVtqV4r0J5tU3NqljIQmBpukRINZRlErWzgwZRaUeu6UCwQE7RWoQLNcFHDacGynQ0z5t/K/hFnDHtdzKYSUK5q7yDEycojNmKZ7ddQdo01wnVFPqXEN5gYabXLaXOuixE+BlcZS2ob18GC8vCe4Wlj76yABztp+NVt8BS09VP3ZdFMWVJeoaKIyWXjLzu/7SCibODpzW5BtSH3FJqgNOyROA+tNAukHaaY95fRAZua00stzgvUuFoZx1wHOWPv8MQLtD90lPuLVmqLrZrYHzt/nmRmm4gT3UbaU8cV4hdQB5BrictzB8xxGgfkVevWfppf5ifhxqiOJa7yqgm7o4ZCUfLD1fb809BQYzJ3nsLzHq3r3FFjJZqmSSAD3FjioSwAI/ef3AR1vkxsjSS28pcx8rDZG35ZHythI48yRZzWnUJ55ta7/0nz9Wf3fTc05ss4A8cY/ta8BBedkowqz1K2Dk2x4DwLl4n7V1sve3nRZg7xWZ6Kd4ziQTWOMDJvNE/yQY/DiA/o28630OgK8zTw4mao0d2Gyk3lUF//+eercA+j+KvP5EJoa3mt5x9GnfA4B5j/lVF8C8Y9L8ssOkNq66EIUMNxr9d/wg/EDPH4k8KxcZKNGISdMg3ZYDTiVie57RP9h8V9sPTI1pugjoUwTzumTD8ac2SVMfFDNMgJWz7UAXwJwp9rGKSHmjArhAGX3gq76/L3LccYG76ijEZ2mXtBWCfcfsOaejVw02ymr3TVLltkEeuaxXp7GSK2CQjuslz2EtGPYquX1sscTunyNhu2ZK0LYfJWDrj+K/5Qfxx23AjpkSuudniTsAlnl4oRR5HJEnUc4A9jWScWqlJB6cJ5G7Z0nEnrkSuX+RRB8GsNuuk3Qw86gjK8Vj00/ivulnCdq3XOJsNknq+T1YuyXZfrsk2W+VjCv7pdjnlFrH1iV6qhK+MemmNCR4SFMiFp3mKJJLxS2WquAplENUT6V7i9boLqr/OlNhVK0zJc80Xz02jjoq4cPPKDNgSxo3FdbYaabzBBsPQbwLQUNN4HFsQADzyxskH8D9AGDdGHUJwL1NHpxbLg/smCZfIZ1ZYfI0/IK2k2WdWgqAXih3j86V2F3fSuTWryQRoF7ovFfuX96uqfFEAHns7u/AtGdI2qGftZf/DoA802aFpB1dKCU3T8jtkyvl1to/i9fSP4nn4t9L3I5v9D1vH8Rx343vYPXnErDiTxKN94/aNk0C1/xJwjf9BSx9hhRfWIKAYgHed7YUIfB46mOFoGQzmNJmeeq7RxkahXJMsTf47VWPeD5mixHZXANAq4XKbbC8Rks9lB4Fbdi8aUDSCbB+X09vZ4o5/pwK7cj4mZInM+dUty48R4U8p7B1gdUzdc0Nrk2Beb8COhXwautKIxf8DzUem6X+5nZNuRPYGRBQNa7jWwP2KpPuiTqp6XUCOhXvbB0jmCug026Vo2EBsl1qRWoDED6m2QM65zVjEWSZYWAmoSXogLH5AnjYctfDmjDenz3mTGkzXU7w7onD9RPKlrhjWiun1znnICgzT7I3AN0y7ISA22dhyZ2xxjRE1rV1wEmyMeSEFq5DnD/OtjRl5JfVnIXlMabZmVXTEaJ3XBSsmXZnexpfYwD6RQA3LVmvqhWsrnueatBCcxgK1ejpzxq0qtJpKhNjL3W3jspT792aai912mjoQly3YQ/YLPnnV0gRgkGucucNUorAPt9+BZ5fLeUA/GqvfSqYq0fgy86JVirjg5m52C+1uHYqr2/B+bYa59oW7DF75Sl9INy3I5DcqcEAQf2J5y6chzuk+iZ+DvZeBfZeH0h3yuPq81CHa48Mvi0GAbnOqbiqg6c4hGkQgP2c4sAMd1W+D9MZszBc+8wHc/2VuRuCOS9Vv2sPenGEDFPlXhoLQI/TYUtUqr+vmY9WZVg82VOUpQ+WJOhsia6cMOnIvKXkoTnJHQv7S4q7tCS4Sm2IvTwOPIXA/phU+x7VYETHJvseUrvkOp89OtSoHoSJEwF5jjP7xK4LtmvSA6GXE/+oH4mwVlMkWhc3+26RRs+N+L31OjqYLo6Dt+1lOP2yvMxyltd51+VdwU0xPQoUc20MyCBYenuWMnNT9wNVuQvV7sAXg5kDyAno/WXAoXLNEOtizZvt0g0ZMgGwflUQIC9zPPD+ngB1HwX1MYD6GDDlNUD9DUGdnVQK6tnGJDf2o/89qBPQBy0kdsjSjz5UY2HpLaKlaGXpBPRu4z7BXAHdeF7G+7CMdLwq4id4n7X3XpO86wGw94K1g1BPPCs2TQ0FqGBORXJsIdeWtn/4dwD9zWcyMbITDD1A3vY/NL1BhDDaxbFxJtNIm5hetOIftrSjUaav4+cqjIOmtQs67bDZnxNtskSYHuFqx2MqE1toom8Bc/YVYpnqkwDoWDXvFxj503iZfEIgjzXaDirfK9ojLL3m/ur5O5LnJcMAczrCDWU4a2rPAHP2jPLiw+blQ7HLFqm8tgEX8VqwzDVSgCg899waAPlqtW1NObZcYg8ulNBds8DIAR6bp4vP5h/Ea+P34oX7ftt/kpDdcyVq3zyJPjhfqiOdJd1+oyRZz5X4fbMleMt3ErjhWwnYMkMCd8yR4P2LJdJ6pQTtnie38HsBu+ZL8IFlEn1srSTYbJDwI6slxHqFROA22W6HZLsekpKAc2DoLlIb5y618cYs9dq4a1IXf0OakgnkPtKGiLnt9k1pTbquivfm2EsK2oyY6d/OkYRMuddp2t1WByEw7ceJaU98D0s1xWs3tmudvAK35WAh1dhsKj12IRK/Jo889oKhLNdaePKeb7T1rC7svPZ9FzoA4M8skGLX7dJXkCCPbu7XzZE17DxsgvdOzFcTnvi9P0iK9c9S5m6tDnrJ+8HM906XxH0Ac+vZBovf96OKClMOzJHond9LvssBiT+0WLyXfijXF/xOfMDEU/bPlIR90w1x3M4fJXT9FxK67jOJWP9nCd/4ZzD0TyV0418l/dBPkmc7G7czESzM1LY4ip4eumyUimublK1TMFcJpk4gf+q1Q0WRtPptBptrCKbaeZ+O0O1OclLlcp0F0JvpNkcwpIsYwFJ94qMN73i2KbHezvQ8DWzUiS6W9efjqnxnWxf729k+psYtIVYGoPtww9uqtUOOZq3jMBhtedttYThUzx9XZXtLIOvox3VKGXvZjX70fTpghnVspsypOlfDFtz2UKlPvQCCEl3UATDTgFuCUFPAAYD8AYD5fl3UCJDRd6r5zinDmCXRwVh4v3b2ZeN9OvE5e+OMNjQFffaU0xYVYN6baNikDoBZvk99q6Vn4kWL4xtB+JIGA5xFTjauBjIA8GfqXY77WZww5m7UizlFLfOGzv9+oWl1F8NW1fLePezlTr2qQK7mUykuFo92W20hI+h3aMvZaRV98pogkDIbxywTA9KSK/Qw2C65zCzZzJcShyUK6g8QxBY4rNLglQE/pwGWuWw2sj03d6l1LJXwNd471eugFkER6+7MZFE8ynp81bVtYO6bpezKepx/2wDm2/D7O9TyuAHXY40fxXh7dRIijaA0CxBppy1fXQlOGoSwHs3+dNbNn2V6GsCewSFTngD1W2p5PQD2rj/LNfrUCfCqcKfqvQigD1DnWFOm0yl6o5KdLHyoNEmGy5L0PlvTWEPvygqS5tu+UpfgjnVDGuNdpT72itRGOMrTEDup9mMXy1Ep99wvj7wO4pqyRuC/U0pZrry6TqqvbZRaHTEM5s1pgN5bELRuly76GHAAUMxRdSl8xixQnI30s9tCxaEHNC3fErBDR/h2AOjp0TCUel5GMq9oLf3N/RsyWewj5upw4EWikXbXVHuBQRQ78gx86SowGDkzwwRzZc/VFnx6pOI2svTJp8nypiRUhrPdVdvxMvs62Lq3vC0JVFB/Uxwgr4uC1dfEGN0KwklXU1rEdhQbg8UGDFYuTLMrkBtLXjzBqgHuNgDQ234BboOh4/7bLgPcmXpXMO9XQP9lTSiY476m5k0Wg5qXAHSy9GTT5NC5qanhhUYtXVvZ/uO/Beig8eMfy9TrjaZ3LxC6DBaaX/f2EdBNI+0m83CbMW2GU2doe0f1OpXrWq8oNFoIqDwEcJsoXGB6pDVdBMvcescQNDSnAswT9YsxgZGbsUx1APC6RAVyE4B86nGMTFZHyWRlhIxXhKuifexhiNFqUMwI1U9eUs2OL2E4zwPsnFaQztoSw7p5d8JZRLzcaA9ozZwCuMrrOPGc12vfcs7ZZXLv9AoA+SpJOrZC4o4AaA8slPA98yRox8/iu3mGeK7/Xq6v/Uaur/tW3Nd/J96bpksAQJ1gn+m0Two9bSVm7yxJ3D9bwrfh56u/EI8VX4jnum/Ef/tsiTi4Um5u+VlcV30jN9b/KH67FgHkwUD3LhXvbXPkBhi79y78zaPr5LbDbsm9fkLKAi5IVThb267Ko+DLqoKvjnaR+gQw9mRvaQGgN6ewpuUmjXFXpSHGURqiLgDMzymYs2WNbFwZedAJAPhBqcSGUQG2UK7gvVU3n+JLa7ROyLQiNyBuOgUAcU48e+S+S+7bzpGc47Mk69hsROMn5XGAreQc+0kyD34n9w7/IHURl6Ql5abhpndqidbHc04uwOvnSDrY+O2DP6kArshtr4TvnK6MPdlqBgB9piTu+gHM+2uJ2AKGve4LCQQjD17/F8m/sl8DKr9lv8f6UKI3fyW3D8yQSDDx6O3fSdSWryV8w+cSvOpj8Vv8O/Ff+gcJWvuxxOyYJukHZ+D/wt88/pPcOz5bHoB1kSUVXKTQkUwLn9OVm+067WzgZsz6+hO20gDsa3z3qoUsN9z26HPSEnkKzMNKQZ1qZwI9F/0LaEiktXgAKfuQCSQtZO1hh7STgiyRwNgVbQswPKY191YAKBm81teZbiRD99lqsHQ/ADyDC4A63eia/K3wGqbnj2h6nOnujtCjGhi8n3rGPnCCLevY7wVqfTTNsQjWNPUffkKzC60MKNhnrfXwA9LIwCXwgIKS0ZrH/x2fByydGQcdEKKDRxwMBz1Orgs5Yhl2c1Z/TqU5gVpfS2ZOMKfLGY1UVKB2Qe/3W4ajcA1wmlbyJQ0IyMgHdWKZ4e7Wz/cjK8+6ieev6aASCt5GAFrKwmmwApCn8K1HXd0M9TrBuzeZhjJuxvegpi5nNc3eyTa1cARmOtnrmGZsysDA6TGRZbNQii6ulfJrOyUfgX36kdl6DqXu/1FyAO5FuBYKzy/FNbFGip22qkshu2EeXtuMvQTni7cVzhcA/I3NOtCHPdaFF1dIKQKAElxXtCt+iGuLzL3wwirsO8Y1V+oE4PPcrSI5Wi/Tupme5vUB+B4izyqoc14F2+R4S5dMwynPS7UE1At0cXY6RXFk7Rah3ND9YBnKJ2MPlEHW2PNDZIiiONrFFkYZw1OKYmQA958V4rbAaE/rzDI0Ot3ZwdKRHqCkoT4BBCLWVZ5GXpYnCOQr/G2l7OYRKbq2T/IRABW77Za6YFtcK/vx2daoDXMRrreHTqvksdt6qfHYIDU31kmj12YFdRoV9YUfVi+DgTgAddJZeZFM10B6IpzUyX8DscfAzKkxOahC0l4w+sHE0wDbizJ6z0neMPWe7y5TZX5ifhIh5qbbShYV1Jl6Zy2dqneazXQXWsD8sSFSe7/ed1p1FitLH69OkFeFOFYcp03xJs6v4Xtu8triVEexHFXwbx9GyrvH8eqVMkFQbyuQKbyHiap2HataY2SpqR0bfmrcjuDxKHDydfu/BnSCuNbQ+42WNgug8755/P0asDB2ALuCO41pBl6Zp561mCdfpMvki0tqHasOc/82oL8fh/rbqam3S03jI5fM7wYzzK/7OwDor8zD7ZMy1CymwVqjftBXoa5vnFRDeb+JasL29weXPrv0270jQCF8AWlGu0Ejp+EkG/2EAPGpmngxK4jHyRSWuvpURcsEQbwcAP6QvYJB8pppkKIAsHI/eVXgIy8fcHmrG9yL+6yzUQjHVLujtpO0xdAOlYrU/Uav+Q22pq1DdG6AOVXqTK/HHV4qMdZLwbiXSsS+BXJrx2zx2fij3Fj9vbis+FqcV3wlLqunyfU1XwPgCeoAlf3zpNjXHr+3SCJ2/iBRWCFbvhXfNX+Rm6u/0mAgZO9C8d4yU5yXTxPXFd/ItTXTxW3tdLmxYZa4rZ8pjsu/lqurp4vntvkSemitJNnvkkyXw5J/87QUeJ2VfM8z8uDmWSn2Py+Pwq9KDdh6YwrAPNVb02ANcU5SF+mo3uqN0YZApSHUELk16sSz04bTm/9hqfTcpW5vlR47pBwMpezKBgU59tyXs9/cw1C089g0xV/Ba3dLgf0ibd0rAGOhF3uR0xbJPPCN3N03TbJPzpOunAgp9Tys1rh3mD63nqmAmrrvW6zvsDHOALsGuJ7brMcmZMNfJWIzgBmBT8SWb1TsFrDGSK37rfwTHn+BzWK/JB1dKkGrPpTgNZ9K/C6A+LavJGTjFwD0ryUMYB625iMJAOB7zf+1+Cz4lb6WNfQUsP27h2dJNsA8++Rs7VEvvrQWwYbhIVDEFOtVlllWa2cDZ6sXX8bnd1mv9XXWPyuubQXgb5E6f06BskEwtBes3UrZe722Ih3Tlsdmjk0NMUC9C4BO9k7RXBtZLgCwg/3ZdEnDopd8UyCd5Q6porydqfkgK2lmql3nqu/VenlrID3jdwJwd1sGwBzU9i8aszBlz4CAqvRuGpdQTc4aPvvCcZ5rLZuqbhWkGS1j6tLGsZRk6iwl0EhFB88gcOCsd59d2oLFNjytkVPERBe0SGNICYeEcI44+7k7WHfH8eBrmMbuZjo+2VF/TltUHVF622DLPYmXjZVg1NT7CeIpl5Sdcw1wCAseE9A5/ZBal34daOJomKkw3Z7uouA+BHAfsYAY7VBpGsNaOnvAqVrvwXu/T6v3pV5TRtvIdkOy9FgHBFz2+h3V+tAY6RCAdC8Ad708sF8uWeyMwD5QeGm9svVcmwUaiDJzlLJvutw9Okvun12oupoCR3bBbNJsT+WNrWoR/ZQ20QgS6V1ReX2r1PkdwPvvkqrrW1RkW3h+leSdYZfMYsnFOUimXmYJpMvdNkut7wFtZetKuCJdcY4IPi5IW8RpZe8t4afVYIZTywbuulumsTnrMWGQ1AvWThtZLgX1TAPQOW98INtPnnFaY94tGbjPYU/Bugbuh0nf/Qgd3dyXFw4QD8Ze4iUNBO84N6mLd8P969KQeEPbZWujnKQy+JyUeh+XIndrKbx+UApd90juhY1y33GLPPE/hs+/Q7tZuAoQJBVfXC6PrqyWpxxmdH2t1Husl0YAOk2StCuDFsIAdTLvoXRHeZ5oi3VKXqTYAeBPA8BPKcBTx9HP0b4A+uHb9jJCUAdTf53jKu8KPMRUbqTeBdiioN5pAfPWLG1RUwyi0p1p8EGLJSuWtlBbrMenWh/I+NM0eV0WBezw0QyT4d9vp50Ww5ku8gqY8lZZ+y1ti6aWa7IeeNqSb/Sfa+/5Y+3okhf1hiB8xLJGyc6BlW/aLIxcXeMsAG4BcYvi3QDvfgtb7zPuTxjtbuaJ51yTWGDoQw0yOZxsMumQl/9PDN0yRY0q93cz1Q1ufChSxp49Mb/qfi4jbWPmoUaTaYDT0gDmXaVqDjPZQtV6Lg4SG/Kx2uixmwkwBztvSbMwciO1TlGDqR4AXhMrpie05YuUKTLx6kgZBxt/98hg4mOlBHB/BW+u0QJvGc2/qQBOr9+X+QRzH308nGuMRmXdvDfpnDKnRrCY+mBO59orj7BhlyBCfoBoOQcn3p2TiyT5yEKw8oUSc2iJxFovkZiDAOd9ZOc/ieem78Gqp4nLyi/FdeVXAOOvxH3tNPFa/7X4bf1O7l7ZJ5lXrCRg0zTxW/sXAPkX4rXiU/Fc8Zn4rgc73zpDriEIcJjzkdjP+lAuzPtELi78XK4umyZXV3wnF5Z+LecXTxOnVT+IBwA9DICe7LBH7jgdkrTL1pLqeEDuXj0i2TdspMjPQcpDnORJ7HUF9Ca9CN2kJspRagDm9TGXpCnWSdPubEvjjHPau7JNrUGZ+kk1m2G6nRtRpbvhfV7mskHTg8reb+xUhl54eY3URV+UMl6oYOj5Z+ZrLboOkXr+2SWSsf8bSd39pRRcwkWaGSaZOI6ZR400dzbYfJrVtxK75QtJ2v2dxIJVhyL4SbJZJz5r/grQ/kQCVn8i4WDdUVspZsNxW/mp3FzyR/Fd9gcJXf+5AejHl4OBfwjw/rOq2MM3Acy3fgnQniYRawH8+Jn34g/EZ9FvwNI/APB/gvf7SmJ3fi+Zx+dI3ql52EAXItBYDGCfL1nH5sm9Y3ge//8jWsQCxCtcN2Az2ojPBkB3NVqUmE7lMSlCEFB98yDOnRMIhvYBCA6oEp7A3sgJUUyvq7DOxpLiPY3N2E6ZIVeHDpw4pYDOka1tCqasrx/WnnaK6thz22ppb6PAznChO6IWtRz+QpbeHGgl3QBotomxHq5jWoMOaH1enbXIyjm3G4t2quy77qTojbPf8Rqy9R4AtNbNI05qHbwxYK/2YDcQ1H12SwM+m6Hwx/8YajDbdrZPxV/EBsepX5c0ZU67U0465OIscZqecFpYN0CoM+aczhYnyBDQKSjsABjxPRTUmYpHgE3mzxS8ThcDmD8nOweYE9j7bztpqyBtTvm+2p4Gts/+a84CH0y/ro/5GtqhskZOkRvZeTO1D2wrA/i1qrUxg65jaurSFm2n2RXWtWsCrHHu70Bgt1KKsQ+wHfPBuWUGuwRTzz+7FCC/QK2ded4lsmS0f7rknVuNwG+jiuUYDDy6vk2qANycIaCAfsXQ4jwG637itU8esQUW7L7g3DJ1l+R1k2e7SIoovEMAXUwWj2D6EfYjDhRqCTtlOKyF2yJQ5OCS49IadlKNaah2Z+mAQk2aHbHc0H/bWWvm7+1w+2m2w/kWeYEAc18sfx3s1GcZwcxbvZ8TJD33AqX5NggBs3y3feVpjItUhZyTMj9bKfICcN88LuUBZ6QyxF4eBZ4GmJ+QBwDy+1cB5Fd2Su7lHZJ7aavkX94mD6/tVW1Nts0iPW55pxfhMy+RMsflUumyRh67AtjdVknDzY1aWmoN2Kltm6yhDyYDpO86ySCY+vOk0wD0szKcek5GdNkpiA/huSH8bCjpjD4/mn5BXoGpv7t/TSaLb4q5MkikPl5Jo9bTCegtIJDNGYZGi3awLAGrSK1eRDuwGrX7iuNRTe0lMlF/T948SlB73IF0d836UOzYjtVNfUrKeRnJctMxrjrxrSbZmMFOh9PuEoPtc9jYiwbgaqM6xJlHmxXIza9aAeatAHMw9DELoI/3/g2wNc3+3FgTz97XzI00OxdFcnwegG4CoJsmB1+CmdcA0OPpAz+pPekj//M9oP8/CuP+rg/9H2XizZ+1B31i2MU89vye+VVPg3mk4zkAfczU/3hyqqfcNNVRLJOIdCYA5hN0fGvCar4nU013xdSM6EkFbyk4CMkAcYOVm+qwauIA5jEy9RhRj4J4qIyBjY+VgY2XcNxggAHgD7zkFcCb41RH8z3k5f0buO8hr/I98dhg58M512UwkwMSsMEkUVRySpqwqdWCCT3G5ljpvUvKbmyRIlx0eedXSAaiyds2CwEciyWRLN1mua7Eo4sA6nMlbDcV7d+JD8DIdwMAe+M08d/0ldzaAoDa9rXEHl4kJf52ErZvlniDWd5c9pFcX/qhOC/4nbgs/liur/yrXF7wkZz+4V/k5Nf/JKe+/5Wcnfk7OTXjA7Gb87HYzf1UTs//XC4s/1acwdQ9t8+X6JObJPnCXomz2ykRJzdLtM1WPLaSu67H5IH3GSkLuiRV0S5Sm3BDXeVqonA/9qo0xjmDUV+VJnWOM9rXKI6j6I2AxJQ7Zw8z/V6rznFW6qNOf3ZawnI9xqJLHltsSq6uk5qwczr7nWn17KMzpMQF7BUXffaxWXJn71eStu8beUJDnFvnJW3P13L34HTJADvPOPSjRGz4RG6t+RgA/LUErf1CQjZ/J8nHV4vPso/lJsDXa9EHqkoPBjO/ueT34r3kD+K//A9ya+WHErLuM2wc+yXVZrVErPuTJOwE68amGrnxc0nE/cQdXwLQP5SA5UYAELjiIwla/bFEAPBjwd65AbM8kGdLQJ+vgUaa1Q+SeWSWplBZI70PtpRvvxCbrrE5F11aiUBmgzwBoBc7UaW/QrM3FR77peYWGIjnDg14yNCfaM/6EUta9yTOMVutszcB2DvjHNQ/volGNABP3YBjTmOTPqw96lSSt4QcVvOajojjqpYnoLfpLPUDRo2ajJ/AT8ObACsVsVFh3suNnFkA7Yc/piBPMxPW5vtwvvfpkJOLaqJiALqNkR1gIBBzWp+j0K89/IQ0BVIgd0id0ho4tIeGKJx+FXZCU9PshW6OIDt0AGheUtaoIz8J6rEGcLMlrFvHil4yyg0RZwCc9gpABPUetvwR+AH0bTqSlC1wDjqulLapFM0NcKwp0+rpYJ2soXO2OICeg0k4lISvIRNlK9azjOt4nasOQeHPqGZnsMBxwC0ILgjo7BfnOd/ELBWOkdr8suMDP2erYpXHTqnystKujWIAOtPeJQDVwvNg6AD0MrDv+wgA7+IcTuf5fGgGzp85kmY9S8tGLN+UItilIp66k3LXLVrKIWNnYPg+QC631Mzvn1koJY7LpOTiEnlgt1ju4b2ycB5mH/1J8mzmSuHZRVJot0DKr65V1X0LW0uZAQo6pkY2HOXMQInjXekf34bv7r2FLb3eWTsfRLDTD+bOIOhZDo4TmTkA/RkAfSAnEAB+S3qzb0l3diCWAead6d7AwGtSGeEk5aGOUuJ3RooB2oUeRyTXea/cddgsOU4A7qu7JQ+PuXKv7JasSzvk7nnsCVg55zdJzsXNYOkbJRPH5u6xuZZy23x5gGNYfG6xlOJzP3RcIlVXl6sTXJ3HRmnw2izNrI+H7JeBOLDyO3QRBBtGQPo88bSy9OG0C/ISzH0047KukTsXAO52ukZx/zUAfSzPTSaLwNLLAOqPQ4AxFtW7arMA5vW3xcQBLrR9bc8T0/MKZcyml00A3CajRxwsfaqtWMYbsrSdb7gkQp7juPWkuOB6PiV1gQc1C9eNc/dFppsalY1XRKpo2wSsU9tymsmQ2A4Zs9FVID7aqjVzeY1bXW0WUO8AoPf+UjM3Ftn3oAK60Zf+rwGddXT55bV9YOgDL82Tg3XvGfqUcLY6neNG//HfU7pbetHH/odMjn0nE6PbTe9euJvfDKSbR7ufmIfbe6ae17+c7H88BlCfnGgvMo0335fx5hyZ4CD5hnSjtxwgPgkAn6qLlyma6tdZRG91eL4mQdvPJpSVG6n1sbJgo15RRDGCr7wqIjP3xvKS1wT2B54A8hvyMu8aGPk1Gcl2k8Es+h0TzJ0MMI87jYv6hNRiU3wSuF+q/MDOfQDoN3dIIaLpfIB6Di7m7EtYl9dJDlYuLsA8LseVkmW3RNJt5knKkZ8kwXqGJByYLvEAhQSAWPy+7yRuz3dS5m0rd+w3ie+qj8QHYOSx7PfiBqBynv8bubbkQ3Ga9zs5O/2/i803/wRA/29iN+M3cnr6r+Tkd7+SYz/8Vk7M/KM4LPpSnJl+3zxbfHcvkdDD6yTg4Grx3LVEvPA44MBqiT69Q9LA2HM8beWB7zkpCLwgD0MuSXnwRakKdZL6OLrJXVfnuDauJBcD0OOMKWza6xpsY6TgQ8/oYxrOaC0xkPaw1uqkVuHKOvo6sPStymDqAOhlbrsB4DNwkf4kFd50hDso2Ye/k0yraZIPttGa6if5F9dLhtU3APVpknP8Z8nEJhi+Hgx842cSs/WvErL2Uwnb+r3cPr5S/Jd9IJ4L/gXM+reaSnfH8br04z+J+7xfSxDAPHzdJxK67lPJvrATAdc6PP5YUnCsE3Z8BaD/k8Rt+4uk7PxSQtd8aAQFqz6V0LV/xs8+l8jNf9F6fPz2aXJ779eacufmknH4J7mD7+/eidmSexqPj86S1IMzJNd2jlS4rdPyC0sOlR7MWGySXGzCd4/PlbSj86TwCliYj7UUu2yRErfNUk1BHWvsnJMecFiZVDPNeJgFQcDUytaoOAcFuFam32kxS3tZtrNxTrllRjt9EDrCj6oZCT3S6abF1iey83YLM2CanYydbnQdtFQFO+bUr3Ya3VCwh8cUsNGGlv7X/aoud7QwdLB3DhVhjzinjEW9F/LZKKAzIGgNPqYMsAnnAI1QmnBOaL2WIizcspWqVQEaTBugQmCmyQlHfhK4aUuqXuRJHGnsaEzwY0sXwJPjMcmidWoZ/pdmHAuCuyFQs1e2zJR+b/JldX+jmv0ZrV8B2gTsnngOQTGGobD/+gWYZg8zARTBcX548mXLZDJHHPdTmoliAPLEklJvCrdXAWgNwLExzFYZO339KfJ8cGmjFDiukQKHZXIf7LwIgMwOjgKw8zw8Ttr3gyTv+VaSd3+rQWr6wZmSun+mCjzTDs2SewAuWhIzm/XQbYv2qhs18bVqTMXaOQGejpO5YOUP7JdKqeNSsHX8PQA4s0QZ1j9KLvUdCDgf2M6WEoeFUum6QWq9dkkdAu0GBIyNCLqopGdAR10GQV2/e450RUDFAS+sk9NchkNfBvCYgG6wc1/pu+crvVm+0pMVIN0ZgdKe4S9t6X7qacHsXn3idakMvySFvraS6bxf0h13SrbzPoD4Hkk5vRaEZQnWMpCdlXL71FqsdZKKa5Li33sA/Ds2qyTz9GrJOLlcUg/jejn4kx6njMOzNFh5cBoBy7kFUnp+iTy6DLbuzLr6GnlybZ3Uem7C+Q5QZ+o9ie2ONlqi6qEpEvvPUxxkGID+MttJRrOuyGimk7y8e0FGCPQA9FeZlwHorjJV6C7mUi8xl/uK+WmE4R6n2eBMJY5TTzk6NQaYc9tIv9MLRVPhTSC1APTBp2DY5TLelC9jtdkyWpkqQ0VR8owjYDk1LsVZujmKN/umvCwKknfsrqq/o1lotXv9+9q5ptkNZi6jLcBYA9DlDR6/5pCWFjG9bQOgGy1qJoui/b2q3Ui592k6XoVyyubfi+a68bzW3U34vTdg6x3myaEHFv/3vfhjPxhpd21f+3dZOq1ff6up94lXe2Vi6Lq8eZ5oHu0tNQ23t0w9b3w+OVDzaqKnYmy8vXjyXXOe6V1TpuHwVpsk4zXxMo4DO/E0GitOJgHqEwBzXbXJ+FmCvHscI+8qwwyG/jBULfgI6lQYvin2tyw/eV1IcL8powDzkRxXeZFN8QzAPPMqNgRE9qlgE9jAWsnOAej14UcA6oekBpviE1wY1YEHpBIb5yNsyg+xOT/02i3lPgB7XESVflycJLZNSm9skMKrKwBWiyTXfr7knJkr93DhZZz8We4CGPKwKVQF2Unk9i/l1rqPxG/VH8Rr+e/FY+kHYOoE9t/IhVn/LPbT/8l0+rv/02Q//Z9N52YC0H/4FUD913L6pz+K/fw/i+Oyb+TK6h+0hu6ydqa4rJsljqumy8WV34vLhtnis2+lRJ3ZKXecj0rODVvJu3lGHvjYy8Og81IV7iQ1Ma5g5QD0RDdpTnSRZs4f59Q1DmzhFLbYS2BbDmr12hDOY3IOzP28TltrJHsPPakT2J567QSrAFsBOyXAPbqxTeojHKTK97Cm2++fnid1ofZS6ozI/PC3kmM9Da/fLk3xbpKLY5K2+wtJ2/WF5ILN52Al7/yzJG79RJK2fS6xm3BrNUOyT68A4/69BC//jYSt/iPA+CPxXPhruTb7XyRg2R+1Ju639Pdg3B9KtsMWST+7AWD9iaTs+lYSt/1Vojf9GesTidv8ufgs/p1cm/s/8dpPEDB8psFB9Oa/ShzAPGYLQH/PNGVYxmYMtoVN5t6JuSqSS90/XVL2fS85tnOxCa82GBVromDhNBPioJh0TtY7Nk/rhCXX9kj+pU1SDNZVgfOlCucL57hXeO9X570GHENmQdjixwwITUHa9Pja6mAOKqzpBc6gqdH/oLaP6chIpuUB1GTZbCFjexuBVkVpoccV1JvZWhfMqW+nta7HWdushROUWbPnBDEq0+lJz/o02XIXa91kcawDxhme5p34fVXnA9RYc2Z5oJUuXuE2umhP2qwpXwftge5gHTf6nD5mDZdOZgR5jhBl+r0Nn7ERgM8BHExxU4FNj3K2QuqI3vBTmpKnGE2Dm+izKvRq5vHgxLMwG81qdLFfnOp31sbBMp/fdVPjGO0xT6DF6mnpve2qPdccK8r/hwEH2SmnmtEvnAEELY1ZVuLMArZfUkPylC6Hvgc1O/Ue8Cu99kvOubW4plcBaJcBXGeDRS9WnUWh43p873MlAudRMILKyE1fSPy2rxCUfmmUenbiPNzzg3ZbsM2SA4eofC91Wi9FYPgF55ZqGaf44jJN2xc6rNSBQQUA9QJcQ4+cKBbD37FfDDCfI/cJejgHC7CKzsyT0guLpNptg7a/UaehwO57QMWLDOooauzg944gbeDOdbV8ZYq9H8DTd9dTTWUGqILH8/33fKQnw0c673hJxx1vbW1tTPIAK78hT2PcpCbumjyNvSZPoii4vSg516wl+dwWiT+zQVLtNkjc4cUSsmuWBO2YIRF7Z0vMgUUSa71YEo4s08xZ2kmA/NElkmGzAsfjZ/WaoHaFmbQ7B3+UrKOzEfDjs53F5zq/WMovLZOHl5ZKxdWVmoavRiD91H2TNHKKIAWlUSdw3vM8Pym9sTbqRDiYClaeeUXb1UbAyEcyHLEuYV2Wl/euyNtcV5ksuCFTpd5ifugrpqogwxKWIjlqtpgVrgHeVITJZFWUjlI1Mf1OpTtbyQjsLywaMID6RGuRjNXnyKvqO2qFO1wWLyNlsfLyUby8rk6Wd3V31QTNxJa1LnqqlKu4TpXtdEOlK+rLRq2Zy2gjVpNx+5p96Hj+TRMYOoB9rB3A3GWYyUz8Xa3cwsoVuLU/nSK6NkuqvtPSq95tAuCP4/eGzJPsR3+erpawU6Ob8ce+MSzadSrbP/xboP6fjRa28d8ZoD66XcaGz5teD94yj/Zlm4Y7q6cGWzomBmqH3nVVvBlvLRx/15Q9OVZ72zT2NMH05nG0vKkKlzEA9lh1FMA7DiDOqTbv59LG4/kYY5RdeagOVTHM8o20uwHqhhDuFRj7ywIKZK4pkA/iC39+10me3b2Ck9xJegDoXbR9RITfgo2tmUw9FisGG000mFQ0Nl+cPHWRx6UWG2MdWEsdNr96LjL6UAB/0D6p9tsuFR6ItF1XS8lVTvNaigt4seQ74mK9vFoaYi9LxtllEr3tE1PYpo9Nges/NPmt/dAUsPajSd+Vf5x0W/jryctz/nny4sz/Pnl+xn+bvPDTrybtZvx68uyM35jOzPxg8szsP0zaL/izyWHxVyb7RV+aTs36XE7O+lRs5nwhNvP/KmcXTZOr634WP6vVEm+3W1IvHdS6+j2341LgbScVoY7axlaf6C6NidcA5K4AdVdpTnDSyWcEdHq7q3tcnFFTb6KKFptzKxhWFzbDtvgL2AxPYwM+Jg0B7B3dJo89Nml/PtXfjQgEHgccw8a0WEVxjVHnFQALT81Uq8ZGsqAgW8k58h0Y+l8l5+A0ybb6Su7u/lzSdnwqads/kYy9f5FUAH3WyQVgJ8slfvPHErX+Qwlb9UfxBUv3XfIBmPlHEr3+Uwle8QfxA+sOwm3m2XVg6dslBiAeB5YfCeYei/uRGz6TqA2fij+A32cJwH/lxwD9z7R9jZtvwo4vsf4qiTtxn4HA3u8lERsNN+q7R+dI+qEZqmBO3v+DZADcydLKnNerULD65m5V9+cxO3PkZ523fs9uLb5v1go3S8GVTVLuvkOqaEjiZSXlXmzZ2a/ZDu0qoPDw1nHt8acxD4ffNKtnvp2u2ltHVcHMOjUHf6jzHNkyxWp0niOwK8ACsMNOWpzpjirIU9ylJi0xRn81RWusW/eqDelJnfU9cNtJU+KGTz3FeGC5ccZsbQJrO54nmLfjPZhFaNcswinDPU3/x7PGlC+amiioG7d0DSTD5WtYE3+f6q4HG+coXjJzAj5fyyl7HMyjug3qCmKMgKY9jkHkWTx/XNPfHQBmgnsbR5pSYwBg7+XIU44+BaD3IjDpSbygJYvuZATrdz1U3MbfZTmgk3aoAPxOBBitYP61AG12dVT57Fe7Xw4kenrLVso9WVri2OBjCOqPymOfA1JAhn5xvSrO7x7+UTKPzFQAzndYDYCfD/CeJrdWfyoBOLcCVn0sgas+kVu4H7npL7qit+Ac2zMdoD5f7tlQLLpa29pybBZI8YWlUgbwyj21AGsRgH6l5J2cB6b/gxSeXSAVV1ZKOfaQB6fmKaDfPzlbCm3nSIndAik7vwiAtxqAvkunwNFjvsHvoJZFGOw1IiDkfPU+9vDfuSZ91BnQPe6OhwJ4P8E9y1sGsmjN6i3d6d7SnuYFRn4TQO4qFRGX5WGIo5QEOkhxgL0UBZyTslsO8ojP+Z2V9Mt7JdZ2vcSdWCUxh5dK2N45ErR9OkD9Rwnd/bNEWs2R2APzJNZqtiTsny1JB+ZKyqF5qlmJ2/YNrrlv5fbu7yQV11vmoZ8Q6IOh282XkguLpdSRNXUcGzD1MgY2V6hfWSfVHlvVepnnP7uQWjncCHsz69a91ISkXpQX2N9H7l2VlxlXAPCXZQTkjS1sr0DoxvKvy0SRJxi6v5iqQwwHuYZEbYXW1QAQJ+Y8DJaJqgiZqk/VIS6qeieYk1UP1arbG4XdU11lMt5SKO+auQpkAvcn2otkqrPUSK2zRe2X2eeGeYy87zWniQwXVe0jNJQByI/W/229AuC/JaiDxY91AHu7LOI4S638XY+CuZCRE7wJ5BTSva+/K7vn73WbtB+d7nET/U8A6smmyRcXWRbHH/3Lv+scZ0H7//S3IS1vv5SpN4vl3Ssr0+shl6mXzyKnRnpzJwfbn4z31XWMdVQ8H2spfPm2PmvszdPU8VdV8ZOjj6JMLx+G6xotj5RXj6JktCIGt5Ey+jBMRktDZQSMfLQ4SF4WB8toSZCMFuFxEW8DtDVt+IG3vLjvLkNg5YOca57OWcJcbHO5Iv1pV6Qr9bJ03b4sHckAtOTL0pbiKO3YHNpTuBylDRdDWxIYRxI2h0RjtSRgcwHDaULk24DNsS4MjPXWXlz826TCE+zNfYOUuK2VUjJYCqfCbE3VoWdMKYe+NSXs+WIyatvnk+FbPh8Pwwra8Kdx7xUfjF1b9Osx5/n/MnZ5zr+MOc/77dileR+MOfz8wbjdT78dt53+q3GbGb8dPzv3s3G7eV9Mnpjxkcnqy99MHvzud6bjsz4znVowTewWfyuXV82Q65vnys1di8V37zIJPrJOkhx2Sb6nrQI6I+2GBHdpAKA3JBhMvTmBLP0qbjlWlbV0J4D7Zb1tBcBzIAQ3X7Ik9k63xYC1RRM8CDL7pClwF9YebCL7EAxckFqAUullRNdXVkil23pcjMukHKvCdb10pvtKlcduKbWfI2VYxadxER/5RnKtv5S8Q1/pyj/+veQe/Q7AuUL93BO2fgpA/6MELf+tBC77QME5Fow7cu1HErrydxK+6vcSgp+lHVssORe2SRxAPGTNn8QPrw1Z86HE4LVxW7+QiPV/klA8H7r2TxKy+mOtr9/ejU1lxzQweqOlLWzjXyRq+zfa8555cqH2xacdmC7JVt/L7YOzAPKzlY3Th6DKc6c88tiu0/Xun12irUscFpNhuwQsfZMUOm+X+5fWS4HLFqkA8Jdc36mjYRUwAhEQgZn+X8y9B2xc+XXvDxhBEASGERiGYQT57zMWjr1eb1+tuqjee+8SRZEUi9jE3nvvvffee++9zbAPOzUkh0UswyKKGo1Gd84753ep9f6D2LGD9/Ai4OBO45AU79zP+Z5Ka2hF8RYwTKkNVK+jSdb4uAPrMiAYjiZbw0C0MZstT/3LVHRDk+kYwEkx09pTpqKt2C5tgv3LHcBTkZ0E4UtV3TTClEKuFPom1UpFUq/QiWW5ZYQtwZygThvFFmjwCqpZCovT33uaqtez+GI3ClkTzNkCEAZuFx7gdL5kk7kgLF1Y2oYmD06k84t7qJWPRp8S5GnGgSjBks04oKgP2/ZHbZKJ5iwNQfUELxHa03i+idGBYNPQaMEJ3qcpaFRcSCFkvoDQHn8mPoTPF9U5seK8OVToc/n8ilFKadD3oVQARQMm2dQ2O/b9BmONoReBLgjSgO4AdeiLMoauIF3o8FGFgXBa/UsbB3Wh3esJdPiqQzul28zOsdQMA7r9DSjVOwZpCO2Uh7sh7s43EHrlcwi48AeIvvon5jjG3kDI3/wS0vDcoimGeVon0Gk8CVXmF6HK7DzUItQFqNLbnFGhU+86Og1NFmehWl8FHd+j0I1wE5JaRXFAyrXd4RK02p6DDkcEOir0Xp87IApTg1EadBSpzroRXrI2QyNmdE6wIT0s7eDJRsGSQl8iRV4WjEBHsNdEwwKq87kKUuhU9BaK14hAli/vjHeGpkhbqAkwhWK351Dq/hxqA4yhJdwaGoPNodrHEMrcdaDQ7jHkmN6ADL3zkPjsOCTh75mKSj2J5j88PQRp6iqQ/ewIZCHMM57s2ylWPQAFzw5CMTrRFajSa01PMieG6gfIOhnQr+P15Ca00Z4Mz9sgDFTFz4M+W5A0mUDFngb4uaBZD6as7ZPGGS8XUyU8bd3zRaD74NGbrcJer/aBLVTp75oDgeuMBGUfjYTN2gF66U5bNNpoIbxHlS7vike1ngbcGIJe0sq3rlFbGalrtm9kCGHdx4xbRKO8+NIg35K9Qiu/d4bGUNvb2uDO8JiPNgAfpKT88fn1Qb5lbUPEg3zzJ0DfHueB/hHOVPX+bu7j6Fc+tE6PUa79Y/6dVceLEfTT7Gt4hT+tUL6bRajPIdQX+5WK5Wy2uOUD5dPf/f6/nO/+k/D7L3gPgNS67CDI396Cd69fKBDs77eWUt9LJbXyV1PdsoXRkbezvTPbU+1Lb8YapJui6q3NwbLtjf4S2UZfoWy9N1++JsyRr3VnKVY60xSrbSncSmsSJ0Vba0vi1tuTufW2ZG6tNYGTNkVz0rowbrkmkFup9OaWyt25V6WuqMg9YKnckynzV2U+MEdGF7Vyf5BQjybaHHqx7PEybwb7WYT6TCFCrRAVQx5eoFDJE8jHs6xRwVvyyh1PKFG8HvTHaOIF4gkqMTXoClVFewrCGH1uotCPa/V9qKixOasoNT4sLzRQkeXrHthOU/t2K+HB51uRN/99M+Tqv2/6Xvh00+fC77YCr3615XP5yy2383/acjj579vWhz/dRpW+bXvqS5n50c/kz/d8ItfZ+78UhiqfKYwR7qanvgPLc3s4y/O7wfzst2Bx7ntwvXUEInSuQb6TNrTiB7I/wweGcgJglIY+0A51gjkp9AJfmCpAtZ7rw1T6x/A7qfWZogCmzkkp8blee7zQ0vQs6pcmqKBqTNLDDxYBXRtVEE2bc4LB4AcwEEjDIu5Br99t6PO9ydTodEkEdLqix+14DrrtT0On7UloszwMbeYHocXsIDSbI8gtj0KzxWEQeD+CJtvLUK69FwqefoNK/Us8fgvFGrvQvocSze+hTHMXFD35GnIefA6VFlegzU8PshHUSXfpIvpHhDh+3dNdkKuO9vQHyFT9gYE8DdU9heSLtPZD4bN9eKRCvK8h4e4uSFM7ALnaR9jFlrbk5VE+HsFfgrCuMD0PNVZ8OxIN+2j3vM9WudbZXsEL9AUopJwgTa+zuQ0tqNJrHG5Dg8dj6AzWhHYEelewDip1AxiIMUFVbgNDCDZRghVzgtj8/BSEOJsLYM9SHqP4mv7oF2yfPI2SHUfFSJXyBD0aHjJN4XMCIBU/oRHMWYicoI5ql2bKU8idgE4KmwrDqCiNFaahul3ZCVvPMmjb7uzndkHlTorXi+Wf+XWeznyRGytc46unabzoLEJ6FsE5nY/OX44bP3EQwTmBCpzBnBaSINAJpDT/f4qmDqZY4+9sjg4w7QqwYU6LiFb2ok3i66hQkPbSs2hAlgOrM+DnI1gxJ+clDXuhKEW6OWszo/8HKrajn4dMjD8vLQ+iNAZFD1ixHn7dWAoBXJ+F2KnYjRYKDcUYo0LXh64AfkAMTTPsDNCFVvdHLK/dTn3h/k/Z2t42T1VopZy5DeW4r0KjzUWoMDzBokFZT/DcenoAkhHa8Xe+huBLn0HY5c8gBmEefumPEHn5jwj7b9Fh3AtZaip4Du5nbZVVL05DveUlhNd16HC+Cu3O11Gx4zljRUr8FDSYnYBW63MM6L3e16Hf5yb0+d1loXiB5w187C4MBT+BkfCnCHMNhDo613gdeplkwmormOOTbc+iLWxQD+sm8GGLWV5VhiPQQ2G+PAzmKiPw2hfOljfR3PVx6oTJ8QNRFs208IK2GGeoDbSAQjc9yLR5CrkOmgzsFZ76XJW3EVfja8SVuWpz+Zb3uCzDK1ya7lkuTecMl4Bgj1U7BPH4mUpBRU7TGamVNENtL0tL5CHQqe6gSPsQlKEDU2N6gqUaOlCVC7xvgQB/X6HvHegJuA8CP6o3uIeCCX9X/N3GUKWPJRqxrYdjCPVx/L1piBNtxFwsdITVUncEuQ9s1gXCei1ajd/OWl1+zrusORi47mgA2pc+ks+3RhPQqUhugkLveSz0TlBnSn2chzrQWPK1IX4oGhuMNsS3tElH/tyCtkYLxkbx9s4U1I8jzVcR4Ku0hAVV+6oAjSrpUb2v96FSx9dsUv/5CN+2RvZmfEeh76h0Cr+zkPrMTn/6Tq4cj5xsFo8SHuD4PA9zcgJe8vb2JXBvX3LKdzPbSvn8vPL9Qiv3YSWabWKD7V3I6V//xRa2/wD1f9iR86jWZZ/A+zffsDC8/M09Ajv3ds37w5vleMXGq/z3a7P1MoT7u4XxwW3J4MT2dI94a7J75vVEh2RjrFmyOdIwvzFUuygdqFxa6y1bkfaUStd6S9fx9vp6T+nmmrBgc7U7e2u1PXVrpTl+e7khcvtVTej2q8rA7VdVgdtL1UHbr6qDZa+qQ+SL1WHyhZoItCj5Qm00HqPl8zWR8rmqMPlcRYBCUuarmCnxVKBa58QFrhzCnJvIseVGs9EyLLiRNFPFcKoJJ0o25kSJhniBQqDHakNvFCq3SA1OEK7BdYaqc6O5boq+eHN5g8tlWbX1GVm5ydHtQv2DmznPdm+mPvlKmvjgTyvRd/64EnbtDytBV/6wFHLji6WwW98u+V39csn9wh9XHE78u9T26KdS62O/W7c4/LtNw/2fbOnv/f+2jQ7+Tmag8geZ4ZHPFaYnvlYg1DmTU99wZqe/4ZxvqkCIxiVIt3wClX7G0JngDv1ZfjBA1e7ZfN/oeK4vq3AnqL9kBXKBDOw0311M06YK8EKPF8aZPDemligEOksX+DxnptJnM81hLtMYZtNoHKoujMU+41U8Kr6RcFUQhTxgNhJGgyLugKQ0BB0gd2i1PwfNlscQ3oehyVQFGlGhN77Yh8f9qM4R6Gj0eI//E2i2PQ/VevuhUm8PVD3fAxXaP7CQfI3BPqg12Au1eruhSmcXlD/7Flocb+IF2xKKNfdAvtouBPZu/LoDaAhtjd1QqrMfivHCkaO2G1U7OgJa+1iovVALHQbNfZB07xtIfrgLUlX3Qqb6ftYbX2J0EvKp4En3KBTrn2Cb2diUMO/HLBdaa3MdaqyvsqUybMqd0RkoNrkM+UaovJweQLn1TahzeQgN7o+hGVVeW6AWm5TVh5AmmPfHmsEgKnQRKnSqjB9GwFFhoSjRmq2hHUOoD8dbMthRQeII2jiq1SmENsGcQuIvWX+3NRsnK860ZotF6D7lvCn8PIuvo1A7KXR+Sporf7uArxinAjOaY05AZ1DPcWIwn0ejMbbkCLAiN1q+Q5PcUL0v0EavAi+2spNGBM8g1CnMzmotEKQTqfas9mISAU5Hck4maTNfpjP+frYsxD6ciI5MggVT67Shry/a5MfQ+ygpzAwbttGP8usUDu9B8A7EGLHfn+oLKBUwmWrF/i+o3Y2iA2L8PadYNMkd/6/4eecTtMgk2YbNPO+P0AVBiAb0hmqx1af90bQq9wUIg7WhzuEW2h1o9dKANi81VsTW7HILOn2pJfMhy6HXWFyGOgRwsx06bcbHUVmq4Pm0l0V5KHycproP0kip3/4awq78EcKvfAGB5/4dwi7+ASJvfMH2CCTc+R5SH+xi52AJOop15udQieI55XQZWml+g/MNaEGHgcLO7Q4XUI2fByEq1V4vqvy+DiJ0locozRVIxycI8mcwFKoGwxGaLPQ+GqUNE4kv8DNpis6PJSsypBQGRWaoi+BViT8slgfDYhntaAiE2ZIQEKMinywMYd0vg+luMJDmBr3JbtCT6sHmWHQmuFEtDlfi9YLLddDiMq2fcplWjxWpxncVacZ3FBmmd+WZZncUqQZXFCnPzylSdc8okrVOKWLVD3NxTw9ziU9VuDSNQ1ym5kHIQkWejRDPxd+9QPcwfq6O4WftGFSZUNHpGWij/DnlzFkaTxWGIp6AKEYdRuI0YSRaE88FXXQarfDvTcWU+FlgBZTUakzRKxM8X23YPBEa471BMK8PYaO91+tCQFodCNIKX7SPUKe+9HhQDmaCcryQD7n/qNKLgRvKBoWQdp7HgGIgC7iJCn4dKpu9PrgztvXjhLdhlhfnbZhNe/tRjRPEd8aaK1cQ4itd+LXdPNDXeplKB1LnH0PuWztA39qBOuXSP+bT3+5UvqMqJ5CzcPs7fjQsC7+Tev+oyhHknGwSQf7RMSC4z8gR6LS8RcS9X8lEoJvgmxxEPtOu9H/6e/ek/5z3BGS/hffvEeyyY6jY78D7bS2Qv7ZicN9aiaaQvGJ9Lvfd6mzhuyVx4dtXk4Vv58eLt+dHirclI+VvZgYq34j76rde9jZvTQraX08JOl9PdHVvjbYJ10cbe9f6a3oR8oNrgoLB1c580Wp7jmi1I2dktSNvbKUzb0ralT+13JEjWe7IlSy156DhsS1LsticLllsTJyfq4uZl1SGL86UB62IywLWxcXem1MFHpsTea6bo9lO0pEM25XhdOuV4TTL9eFUC9lQipliIMmE649/AX1xhlwfqnJBpLaiL8lCjupc1uKnKqt3ubZVZX12s9T4qLRAX2UlV/vAUqbm3vlUtd2ShMffi2Mfoj3YMxX3cN9UJFrA7V1TPle/Fbtf+mbG9fyXEqfzX807nP1yyebMFys2p79atz7z9ZbNhe+37C/vlTldOyB3un5A4XxDhfO8f5IL1rrKJZk9Qo/aAOqDraAjzo19MPtSvfDD6gmDGV4gSveE4Qx3GEMvfCovAKaLQ2C2NAzBGwxzbBGLPwLdh0FcUkAKyAMv8p54QafCInuYSTfjN4Cl0zpQQxZyn6YJZ8UeeJFRQ5A/AhHCfDj0IV54HsBKSwpeaIygx+MSCF3PQY8LqnSHk9Bhexw6rE9Ap/1J6ELrsD4O7Wg0zpJCim2o2CkM3/DiANTo/gDVunugBgFfq7cLap5/j47AAWgyOQjdHndQDTpBM7621vAA1BkdwtvH0RE4AEWozqmivkL/EA9y9d1QpnOAHQnquep7IYNy76gekh9+h0pqFxTqHIZCveNsKUyJ4Sm8+BxlO9ppmAiFZKlFrcz4HFvLWm11meXcy0wvQqnZVch7fgoqrW9Dsfl1tninDuFOgG/2RlUf8AyEEfo7QDeHnmhTvG3BjO2kT7FjQCfQk4ofRcgT9Cg8z4q1WAGZ1U57F4WQLVh1POWeaVf7LLWgZfMXcQZoUujkjOU4sJA7bf4i1U1AXyz2ZkNdCPK0iIR6r6m4jYrWaPXmbK4bqwqnEDu1lkmowK3Qm50f8wiGOTw/ZmgFL9Ve4OteItRJDU+mEcydmY2nOaDh/Ww3mMhCZw9vDyfaoMNiy9INtKhjIMYM4Uo5bFNevSPQSZlTlwUVpw2jmu8IfAat3qoIY+2dSIUlu5BPUMSC6jrS7FlEg1YAE8j7UImTA0DqnsLro+gM9UfogDBUk2326w3WAmGYLgjDSbUbsJ0C1dbXodFVFf++6tDgeIttTmxwQrC7PoB6+9sInjN4XhxlVedUQFlCYEKgk0qnKE/eM1Sg6BDGoTKPuvY5xFz7AkIv/B7CEejhV0m14+3Ln7MakPR7X0Ce6rdQaXgEWh2v4Pl7E8F+Y6dl7Roq8JvQ5Uo96Bfwc3AFhB7XQOh1A3q8b7DiMBGN+43VY4uC2CjiKF3WgkfHcWpppCJJFnmxZ39vCZuK54VAD4SF0gBYKKM1yv4I8yCYQqBPFYXACAJ9INUdYe4C3fH20I7WkeDEtcc6cw2htlypt7Eiw/6ZIsH0sSJG/5Y8/NlFWaT6WVm0+ilZ+NMTsmiNk7J4rVOyxGfHZfHqh+Vx6kcUCRpHFMkahxWZWoe5XJ3DXAEVmCLAS14gyF+cYnUpdTbo5KPz0u52FZX4XQT5UxiJ0YLJZD103gzRcTXB85lgTbsSbGChxA1elXnCYimZF/4+6GSyI/5+CGspgvw1DQ5riYSN5nA0PDbRVjkaqBPAr9Ut9+Kh3hKOUE8EJVW2U4v0ePHOILNSgJEC4AYyQdEdi5bAxokrJ6r5dagsJ94PQAVzFFqnvDhT7aTEqZKdBscImAFCHJY7AZbQdmAOUnx+rY+F2oGU+X/Mn9Po19f8kBnYQrXPwu+TPxbJAV/wtlPJPvdj0dyf788yhc4hyBnQZfh178T0HG1n21K+XxpTfljLR0/Cgq065/PofxvQ/4Na/wj2X/ED4uWfI9x3MbhTnl0ue4CAV+febWlx7zY0P7xZV/3wZvWBfHPpgXxt6cH79aVHMumC+vuVOc13q5Lnb1dmDN8uTZugsrfYXhi32ZKMOL6eHnR9PdXn/nqy13NjsttzY7TLe3Os03d9tCtwbaQrcn24M3ZtpCVxXdSSvDrUnLo60JC8MlCfvNRTmbokKE1dbM/LXGzNKpxvyiyfa0yrlTQk187UJVRPV0cXi0vDcqdKQrInioLyRwr8qkfzvAeHczwXRdke26JMd4Uo00UxmOYo709zlkua0reFyXabrSHPpU1+Wku1Ho8lVS73xJX2t6fKrG9MFFtcH8k3vTKYY3K5N8vkqjDL5Fp3utGV7qTn54UJOme7Y5+dFUZrnu6N1Dw7GKp2ZiT0yemJENXj4qDHp+ZD1C4shWleloZqXt5E247QviqL0bspj9W/rUizUucKEObVQTbQHOUErTEu0JnoDoIkdxCi592PnjeBXZThzcY0juXy+XRxcTB+yINgrjSIee/zTI158Rf+Eio+8kJzY7PuJdkIFYQ6LRyh43QafeDs8EPlAy/Rm6Y5zGMxT2Ew+B5TXFR00+dzBXrdzzIb8DiHdgbBfhqEzqdA4HwGBI5noNvpDAjdr8BIrBE7Ch1PQ6fdSWgxP4JK/gACHZW3zndQqfUtAn4XtCDQW0wPQrvjZVS0TlCuuxdV/T5oMD7CptMVIrALEOgVCPYa46NQZ4JqwPAwVOgdZO1sBPUCyqOj2irQ5HPp1J+er6UChfrHocbyIhQb0iz5Iwjss+wi3+J6h+25L9I/hRemM2xhDO1gLze7CGXmVyEXgU4LeNjmPKrsRahXOzxApf4EWvw0oD1IF/oJYgj07ggTGIgzZxAneFMYmpQ6C8ejih1DtTuMoBpJph5XhBOFqhFQk2l8ixtb9Unh9kw7timMD7HyanyWqW4+5C7JddxR27ziXkAHbRHhTGFYtvKVZpeTuiV4s3y5x482w3rIXXfy6J4wV+TPNvDNIxxmi1ChF/oi0D1ZTn0y054p9KkddT6axMN7LNMFxtmoYVcYRqeFiiNp81Y//j49UcaowKld1ITVFwzSMhSafYAqWsTC7dbQFaINpZZX0Tm6CwORzxHCVI+gzQrXKPdOzg6lJ8gp6kU13+mvDl2B1EOuzbYC0iwFYYgWCAKeQi06YzW2N1k4XRiK74VKnV5LCr3e+QFLl1RZXkPgXESn7gyUG59nxWylL85CNqpMNhGO1u+q7oHU+99B+sNv2XlWgkDPxseS7nwLcTe/gjgEd/TVP7LphDHX+WPU1d9D3LU/QMrtzyH38ddQiU5mnckJaEeFToVfBHaB1y3o8bkNAjz/OxzPMev2vA79AZTGegB9eBxCRU7LgQjqNHqYBhixBTAx+mxF62SyBUtFUB0EpVoWaBpfWSC8KvVDGCLQK0JBUsa3rk4VBsBEvj8MZ3lCX7ITCOLsoTXUFMp99KHU15Ar9TRUFLnpKfJddOWp1urbEfp3tgM0Lm95Pzi55XHn8KbPPZXNgPsHN4MfHtyMeqKyGfPk4Fac2qHthKcq2ymaKrIMrcPyXG0VRbHhUUWF6Umu0vwkV2NF9Sjn8PNEKSxU5T43oJ8ietHqeL3Anx9FAkF8scAGlkocEMBOqKxdYb3WCzabAtECYKslFLbbo+BNRzRsdcTAVnsMvGmPhm28TbaJ9zdaomCtiUZ8R8J6Ywys1oXBUpkvKwilWiqa6iZrCmNjYbneJFTlGcDR7nQyqoAfxPt9+LgwHj70JANH+86n6tlcdzbffamXn8uOBtTiRiF5gvlSF7+1bWdzGx0J6srlbl6xU+58Q/TnYjiyjZ8eh/nn8Qg/huFHd6D+kuXNYWeNKoP4xx50ZnRfsgPwKR7mcnQC8DF4v6hQKl5tKhUrI/BBmotA//sV+l8B+z/vJON/zcP93e9BLv+CheXJ5PLP4N27T+EtPreNHgTZW+m/gWztE9n6+m/fbSx9+u71yu/lr1c/k0sXP5evSb56v7Lw3fbK7K63iy93M5sT7309P7n/9czYwS3JxJGN2YlTr2dHL70WD19Znxq8tj7Vd211XIjWdW11pP2adKj1xkp/053l3nrVJWGN5mJXjc5CR7nmYlvxo7nWghuSlpxzkvq0M9N1qdfENamaLyuTAicrE6onyuOmxspi18dKo2SjxREySUv+5kRVykpvmsc8QnSiM85xsC3aprs53KK9OcSktSnIuLk+wKC+zk+/usrbsLLKy7Cy0lO3tMxFq7TEWaO0wAnNVr08z0atMtvyUW2mxePmNNOH3WmmD/rTTR+NpFuoilPNHkuSTR8upZg8XM+weLKVYf10O9f+mbzUy0hRG2ylaIp0hKZIB2gItYGmMFtoi7Jn8957khDo6V74AfZloxonaDd6Ea/Q58pC0QJhrsSPDUt4VeoPS+UBePL7w0oFP8yD5t0v5NszqM/SBq80U37oSRaN0fRmC0Sm4mi2uDqMR2uyilpasdrjegb63c9AL4K8zwPB7obwdsHbbufw/gU88kb5wrE4A3zuHHTZHoUep1MM9u3WJ1mOnULzzaaHoAWVeYvpfmh6sQdarE8jSJygxlAFGgwPQo3+ASjWRGWutQchvx/qTI9Bk+UpaDI/CbUIdrqQluse3AnF45HCf9oqkKO+DxU7FeuoQLHBCSg1PsNmy9PwmY9FcU2O19hQDIJ4ns4xVuhDBT9FRqjSLa6xit4s3dOQZ3QZsg0uQIkZwsH6FtQ6P4ImH1SIATrQGWoAvTGmIIgygd5oM4Q3D/LhBAK7LcutE+Rpf/RQigN7ToTwG4o1YTaSaMJPB2PqnC88Y8VkpMiYGndhRW601Y2F2vNpvabdjyF0prYL+NA6FZRRcdxMrvNOAaQLc+IWCnmb2algp0KzuQJfhDieG+j4LZSGwDwqPAb0PAK6KyuIG0//cw0AizZQdAGV+Sgq9jGaUJjqAAOozvvRaRnA35P+HzpC8O8dYYBgN0QgGyBk8TaFyMOfs5A8hcYr7e5Aqfk11gopDNaEZo/HbMEPzUboRXALw3VhINYMv04fWjwfI7A1ENjPoAcfp/+zvgg96PRTY2mSYgNShqiCAxD6Ec9BEKyNt7WgyfUhVNvcQifuHCtgy312nP2NC/ROMuet6PlRKKXRxHg+pNz7DqJRidN+gPQH30C+2vd4zu2DrEc/QMKdryHqymcQhao8/vpnkHzrc0i7g4YgT0XLfPAlFD/bjefrEag1OAitNieh0+USdLqiWkeVTu1alDMXeFwGgetFdG4vI8zvgihcDYZohwDtFIjUQkeFH/ZEy4QGw57BMP6fjeL9iUQzliahvzfVPdB42wX8LC+iOl8sD4FFdLAl5WH4uQ+AqQK6DlC43RW64+ygOdQcqn31uQJnTUW2nYY8w1ZDlm71dDvZ/PFWounDzajnt6S+Ty5InW8dW7G9fGDR9vLeRbcb+xZ97uxdCri7eyns3g8r8U/2S5PVD66nPzu0laWjsl2gd0hWYXxYXmd5StFod55rdrzAtThdgjZ0Wrp9r8NgKDr+UU/w59aBl+lGeL6hCCiwhOUSO1irdILNWlfYanCHty1+8K4zHC0C3ndFgKI3Bj4MJAI3mIrHFFD0J8N7YSKbFrrZijBvRFVeF8pstT4CjVr3gtHBQUVPi3+KXUBa7gGva33gXQvNe48AZW8cKBHirGiOKuHxPcm4gVSm5JXj5XyPOhXKLXxc8d21c7uTbWvjFXkXU+W07OWjOlfSsJq1AT4kvy5i0KZKd36OOy1moWr6fhaK5z6G4zdFDOqk1JXUzkYq/d0Mnz+Xz+8AnIc6C7l/VOhyAvpODh1fD/I5DoEu4xSvlhDoQu7DWiLfk/52904O/e8H+l8Ixf/TDtx/wefaqdmdjaX7553n/+Ev2D/yJv4nZgsL/8xsefnnH00qnfgF2bpY/C+bEskvXy+M/erNsvg327Oj//pGLPrNCh5/tNEeZtKJ/n9bEwk+WRro/pRsTdTyyUpPy78uCOp/Je0o+wWZpK3il4vt+b+dbS06Nd1S5CpuKqqfbiyQTDXkbEraSzcXBLVLY+WpU8Ol8Z3DRdHFA3mRyb25YdE9mYHRgnTfeEGKV3xnkkdsW4JnZEusa3hLtEt4c4RDZGOYfWRDiHVkbaBVdLW/eWyFt0limadRepGbQW6hi35xocvz6gIXvdY8R+3eHDvNkSxrzalsW835PAftlUJXvc0SD8PtCh8TeU2ghaIqwIxDuEORiw6UeRpCjb8Zwt0awe7A2k8G0z1hPD8QpkpCYboUP+CV0QhfqngNQwWGFwAam4lGQF8q82M9v8vlCPkSWmJDozntYS7bEuYyKPxuCrOoGOeLPNlUp8nopzAWqcoqUJfr49jFqNfjPKrzc9CD6rzfEy9Srueh0/EsdDmdQ4V+jgFc6HwWL2S38MOtw4fgLQ9Dh/Vh6MbbQhaSP8pMaHucWZf1ETQV6Ha5gMBygzab0wj0/VCpvRuKn34HRU+/h8rn+6GWptehNSLQ601PQM2Lo6jgD0Gt0RGoNFCBcr3DbChICYFd9ygUah9mYXfK8dGSlwKdowzoVHnfYHuZDROhVa/ZmocgU/0gQl0F8vVOQzkCvRBhkKpxBDIR6ll65yHPEF9vegXK7O5Cvac6g3qzrzZ0hxkxoPdQuJkAzoBuxeeXE60Y1PvibWAgyQ4GCe6Uc0bFOhTHD/ihim/KIU9l2LJBLmx4CxUvZjv+mC9nxsLrHiBBqFNenMLoMwR8VNsE9DkCO1PqHswRmMl2ZY9TvpyqoindQj3jkgIqlPSHaVR1kuJAkBSRQg9i98U7YfepLCc+95/IV/ATuAfpd0p1hJF0JxhOxueSbaGPIhQIcopODMRZghD/H7oRzt1hutBNnRABGqwzoBNB240qmsDd6vMUKq1vQr3jbejyU0X43ocWHzX2+laEPG3x64ngHYNWb1LoCOlAfC+0/mgjtimww08D6u1vQZEB/q1MzkOzy0OWQ6eBSMJgXXQEVKHC/AoUPj/FdgfkorNGveRZqMzztPAcMTzFitmolTHl/rcQefkziL36OSSwIswvoYAiPuo/QOaj7yHx5heQcOMzPP4BUu/8ETLu/hFy7v8J8h99CUVPvoEKHaoFUYGa53uhzQrPZWf8PDhdQLuE6vwq9HpdR5BfhB5ycr2uwGDAbQS2GozH6SG0tWE48hmMxPFFfrRDfZDWkFJPPdsdYM4DPY96/n3w7+kDc+igUwcAVbfPV0Tg5zwapkvCYLwgAEZz+IUqwkRnaIu05uoCTBQlbnryHHtNhLnaVqr5k/VEk4fSOKP7i7GGd+YjdG/N+KleFLvePjHleP3whNP1QxPu1/dMeF3/birw5rczsY/2zKdp7F/KenZwJU/70Gah/qGtKtOjsiabM/JWp/OKNpeLXLv7Za7LEx2VwJsginiAAkANplOeozCgSWtm8KrQElZKbGGjyhG26lzgbZMHyNt8QdEZAoruMOAEEfChLwpVdDwoRQjd4VRU2EkI9USQC+PYkDFpA8K8NgiWqoPhVVUoLFaGsuiSBJ1YCeuQcGKDalaKnWCj2gPeNvrB+7YAUHbSRLlwUHZH8oBHsAOqdaA2N9ol8rIalDNNbE86A/tsC9/eRhvb5lt5kJMaJ1sRsBw6C8Wv9vFGFe5SVPVUFEfhd3rNqgBgVbBTMCfgC+bWdormNvp5xc5C7xM7xW4zO2BH9f1u+ie3PxbDoZp/N8kUOshnSLUrlO8XNpUfXk0h0KtBIfVG1t5jUXLG3f+iKO7vBPvP/v+Q/isl9H/be/3sP3nvn9yu/4nRY3is/yv2k/f88X3x8eWu+t/MddTcmOuojZ/tqBLNddUurYi65mfaq0amG4qrJ+vzwsers01GyzMfiErTbg2WpDwYKIpV7S+IUe/Li9Dqyw3TFGaFaHakBeh0pPgbtif5mLUkelg1xbjZNUU4OdaF2btWh1p7V/lZBFf6mseW+ZqnlvkYF+Z7GNQWueq3F7nq9Re46U2UeL+Yx8dXSj0MN0vc9bfpw1jorKXItn3K5dlrcMVuelDhYwQ1Qeao1q2hPcYJ+tK9YSw/FKZKo2C6PBrmKqPgFc1zplaWqjBYqgmBZfRsl6tDYImN0QzYGehBqs7tx53x8wj1+Swz1jZCvcETqMwnImlk4yP2oVksDwJRwE0Y8r0GA16Xocf9AvR7X4E+uu16AdX3Weh2OAPdjqehw+YoDPo/hNEIbbx9BJpfkALfB+0Wh6DH7hj0Oh6HfueTMOByCnrtj4HA9hj0OBxnzsF0lgt0U3GROap40yNQb3AAqvFi2WCsAo2mh6EG7zdbnIA227PQgIqdxtHSUJt642Msl1ltTP2waC9OQT7B+ukeKH5+hE2Jo+Eg1Jdea3UR6szPs0rd1Cd7IEvjIBsfm4GWq3sKil5cggKDc5CmeRRSNY9BNgI9S/c85BhegSKalOWqCg1emlDnoQ7NfrrQHopQp3BzvDlT6RRqJxum1bV47I21hv5EWwQ6QdKW5dOpd30g1hhvm7IhNVT4xXrCSV1n8y2GH6vZSZkvFHmgkkZwf5yWls8PWKFWsjlU17M7+XKqkVgs9OLz6DThrQhBUOzL8uUzCH1JEalzfrrgNKr0aeqQyPeFl1RMyaYNurMWsdEUGxiMRVDT7msEdn+sJap0OxClOOB9M/ZYHwJcEGYIwkhjVOhm7HEhKujukGcIc/y/8VSDRvcnrP2PQN7ogbe98ej2GOqc7kGrxwOoQTDXOt6FBpd7UOdwFyptbiCw+W6CJnc1aMPXN7g8YDMBKFdOLYNtvupsYQrNDCjQPgalRmcQ6vehDdU+1UfU2l7Hv/NFtrI3Xe0g5Kgj0BHkOfQ3VqXz4Rib80/Tzai4LerKnyDq4h8gEcGdee9zVOdfQSE6kcUauyFH9RvIfPgFZD/4E+Q9+gJB/gUUqn6BjubXUKaOjqb2HqgzPITn6X5otz4BAnRKu/Bz0OlwGuFO1e0IdoS5wO08DPhch+GQhzBGK3PjdGEiQZ+v8E4y5oEeq8/DPN6IVf9PptqwWohp+tvmecIMOm/TFEVBuE+jKp8pCWEtalOFYTCSFwCDVNGe6g7CBFeuPcZR0RJhK6/yM9su9tDfzHXQkmbZai5m2mjOZFhqTqVZqI2g9SebqgrjDO4LI7RudAc+vdDp/+hUd8D9Q8Kgu3v7EegjaZr7p7K1DkkKnqsslRsfl9Zantxqsj0ta3E8J+9wvaQQeF3levCaMBRCDvwDEMerw1z6c1jIQRFQYA4rRVYgLbWBjXJb2KxxgDcNCPRWH3jf7g/vOwJRTYeCUhgOXH80KmcaEkN95Smo1nmov+uOR5UewYC+WM4XA85T7QCdwzTsiFJReU54ztNaXgdYK3dGpe4OskYv4Fr9gMPvw3UGgRIdB2VfLBsXCzRdjubAU5ubuBq42Z1d6jSAZqaOjZEF2hr6qp0Pu69+hLkQOGnvDtB7dirdhXw+nZQ7C8d3ALdMX4dGx9UO/Fo8ruBz0m4GdqqChzdjfBid5cVfMgOCN7MJ3ljefHznPnsdp5TPyBDoS8r3S6jOl1Gdrxvim51gNW1/bTf6/8t/P4H3T52DHRP9VO3/JfD/7C/Otv1P/i2L6n++MNCoMtfT5IvWuTbWN7HQ19I73VGdL26pcJxqLr0gri/+bLIy79dj9cW/EtVn/UZUnfXJQEnqp32lib/vy0v8/UBO5Ge9+VHfCLIiD3alhZ7pSg261pnid68twetRc4y7Wn2Ek1ZdhNOLujAHq9pge/fqQKvQSj/T5HJf08IyH5Pacj+z7kpf05Ey7xczJa56K8WuupsFTlqyXLun8gInTUWpux5X6fOCqwkwg8ZQK2hPcIaedB8YzguFyZJoEFfGwnwNzXCORTUdAysNsbCKttYQDWtNUXiMhNXaULbNiiqjqX9/oZj2SzvCYp49wtwc5tIMYT7DFBZLPFm4fRI97rEoNRbam0w2gbHgOwzqfZ5XUIVfQNVxHmGO5nIeBPanWYEchdU7rY/BULA6DAY+hi6bw9BqdghtP3RYHIBuVOJ9Dkeg3wnNkY5H8T7C3A4Vu8MpthxkOOgRDHldAhFaL14UBQ5noQePPfjeLZbHGOjbrE7ikYC+FypQvdcYHkaVfpgBnWbQU59xNk2QU9vDr1Y1Pc+2wlUYn2GbtqrwmPJ4NyQ/3sOUW9rTfZD4eC+kqaMq1zqOADgBmc+OsdWvmTpnIE37HKQj1PNMrkOZwyN+xrWbOptz3eSrw7ZRCSJNmFLlc8t89TcBvQcf64m3hl604UR7BL09Knlr9vwwFcsl0AhZM9aWNUlQz+GBzufKnZgi5/u0vZnxbWceLOTOQI4X+Jk8d9bixUPdix++gl8rRiCIKcxOdRXFQUzZLJQGoyL3gZcUZieg53nBeBaCPNcLpnM9YTzDkeX7B9HZ6I0xQkNwR72A3jgLGEpygJ4YPiLRE2kEbaiK2wNIgesj2I1YqLwzSAOavVQR5qpQ6/wQKuzvQpXDHSizQtDa3oImBH2D2xMG8KIXF6Dc8hqbQVBhQcdLUEWFbW6PoMlNFZoR3CwXbnYFmtEhaPfRRLg/gQaHe+iknWa1EjT4pQyhXm93HZocbrF8eYnhaXTgjkP6EyqW3MOKJbPwdvqjHyBXY9/OZr6z7PyIvETLfn4PaXc/hxxU3nmPv4SyZ9+zWo7SZ7vZNMQyMs1dqMh3Q+Xz3VCu9R2UP/sOavX3Qr3hAWgyPggd9qfQKaWC0QvQ7XIWhB4XmcPLHF/vyzDodx1EgXdhJBQd5UgNmIh9DlP4uaKiSAb1OAM2+nWC0jAUsclGhy7fB//OCHDa15DtzgoGx9IcYSLTna06nswPgIm8QNae1pPqznXGE8yd5C1RTrKWCPvt2mArKV4zFss8DWeK3fTHCl31+4vcDdoL3Q0biz2Mq8u9zUrLfSwKSz1f5Oc56xZmWKsXp5jcL08yuFKbqnOmOUv3hLDA8NRgpdnZqQabc5Jm+/MrLc4X1jvcL20LvK7J+wJuKYZC7nJjkfe5yVhVmEnWhIUMXVjKM4LlfBNYLSSj3eaWsFaFUK91RpXuyWCu6AiAD52BqKCDQdmDYB9AqIuQUaPpCNwMtEzgRBkg702C1+2RsFIXwoQFKwZER1Wc78GAPovXsCUaRlPlwcbGvmnwhHfNCPQ2H1Tpvvj++D16wnigo6OgHMkEmCxGmFegIq9BhV7Pr2GdbeA3t83W8Y/P4e0FBD2CnULwSlLsrMK9mxXJ8QDfsSV6DSr7V+QI0GIYfK9F/PrFOt7oMQK8FJ2DjUE+p05Qf7sDcKbCx1nxG1/RTjb255Y32QSHQJejopci0EeUH1YKaUkLwPYVZN3/WXX+f0fhL/wzSKW/gPX1f4HXr3/1Znn5N1tbr34Nm5u/ZI9TWJ6H+8/+mv0t31siavvlgqjrzHx/e+DKWF/z8lhf+5ygIXtG0OAobqs5I24v/+2CoBi/n8PPyOpR1ZOJsrL+UVwf/09kguLIf+4oS/lFT2HsvwoQ7t1Z4bt7MkNUulP9T7Ql+51pTvS60BLrcasp1lW1IcJJpy7M1qoWVXtNiHVsTYhVdk2QZW21v2U3Qh6hbiQp9TCQFrs93yr10JeVeRrJK72NFVV+Jgh0E6gPNoeWGHsQpHjCcE4wjBdHsnnNs1WxMFdNyxkI6HEgbUSgNyLQG6PYisC1ujCQ1gbDaqX/zopKBHuhC9vatZBpAnOpeuhdGyLQ8YMSpw5TkehxJxvBQgUqgLDHMOx/G0aD7jDr97oGAuez0GF7kimTLjwKEOjddnjf8gjbF93ncwchfRx6nCjUfhS6Ee5dlgegx/YADDgeZkAfcD6Kxiv2QY8LIMm0g6lYbRj2uQIDHuehDx2Gfrdz0OtyBuF+hu97tzrJ5+ItENQGKqy1rd7kKDSYn4Q6BHrdC4Q6HvMR1BmqP7AZ3VU0SxvVeYXxKba4pQwhn666F1LwIk/9x6mquyEB1VqS6gFIUKXw+1HI0ToG6ajQ07VQyemcgxQ02s5XZH0fajw0mVW6PmVwJ6B3hhuDINoChDEW0BNLVe/WLG/eR+HoOCvoRpXbj0dRqiNbgiMixZ5gszN1zhzGUyz4GeTUn04XqjxnPrye78YAvYAXsaUyyqH6wzzeJoVOBW+zBdRD7sL6t2cI9PneTNGJcxDqNCY1x521ME4X+DCwL5SHwmxxAFPl4kI/BnSWG89wYTMMxjNdGNCH8GfqjX6BADeG7ghD6ELrj7dkcBeiUWi8xRcdGi9U3gj2zmBdNgO/K1ibqfE6l0dQjTAvoSVIJpeh0OgCFBlfhArrG6jK70EtPpdvcBZKEOL5hufw9jkG7qIX56ES4d+AzkCT832osriCztVRKDG5BM2uj6GFlD8+TuF26oVOfbgL8jUOIOBPQSU6bjQgqMTwJFQYnYQCzf2Q82Q3ZON5kPVoFyruHyDn8bdQqk2FbCehVPcApFO7402E+cMvoUj9ayjR+AaqtHchrPezlssqvX0sMkR58jqjA9BogoqcOjYM9qI6p/tHoNXyFFPllHLq9bgEAwjv4YBbzAEe9LsGg75X0a7g7aswFIifo3BVflUubeNLpToKy51NfuZsHSzVQZBz9hHoL3PI0XJhqY6BRGvoS7CF/iRHGExzheFMHxrnygmTPbiOOBdFa5S9rCnCbqsxxEZaF2I5XxNgPlXhYzxY6mXUWY7iocLPorgqCK85wfaJDZGu0U2xnuGNMe6hjVGuoQ1hDpE1gVaxFd4GqRVuz/IrXdQq610fNbd43u/t9Hsw1h3wQCIMur80EHp/fTDsoUwU8Ug+EvVYMR7zmJuMU4PZFC1YyNLbAfoLWCkwgZUdoK+X28B6Nal0d1Tpviz0/qHdFxU0KmkBQrcPoT4UjyBHBT2egwqaestpO2cOKIbSYVuQBJttcXg9Q7jXhDLFPkd59GJ3WC73gI1aL3jT6AOyFh8WBeA6EOjd/gA96DAMxrBwPv++NOOdYF4NyjmELYGbHRsA5hHI8w28SfAxgj09ttC6o9h5gMNSB8BiGzPlIj632ILW+CPEgWyhFt+Tdrbj96HbS807bW59Ozn1UdbSxm1/HD4zinxG9b49umMI/e1RDt6OcQh5hPnUllIumeH7zzfC8Q3U2MA3gH/bSW3/7H+qMkdQL/+cwfvNm9/IZGufvNvY+FS2tvbJmzfLv2GQF1PO/T+fXfv3/GJifJ9FUc/nS6IerdWJwUTpxEDtwkBb9nxfi92MsPmCuLf+t+L6+r+p0AAcHH5GcBdlxfwSAf9JX17U7/szwr8QpoV91ZkUvKsjyedga4LXqcZ4z2tNUQzsLxrDHdwbIhwiEfC5tcHWtQh2YXWg5Vh1gPl8jb+5tCrAfKvCz1RW7vVCgVDnqvyMoDbQFJrCraEDVTr1pdOs5onicJipjAFJdTQCPRakTQmw1hyPJ38MD/SGcJDWhSLYQ0FaEwirCHSyFfRsX+XawAKCfD71OUhQpb8q9YDpeHWYjn4MCwU0X9sNRoPv4gXqJozgxWg89B5MhN+HMQT7gOdV1r5GSpqAS3nyLpvjMJFgDgM+N1BVH4dehHqf/XGmxAUI9R7rA9DvoAIDTgTzYzDochLV+AUQeV+CGbygjUVqwoD7BXQEzkIfKp0B93No5/F5vDB6X0XAX2Qh/k67M+xC2mByjOXV2+zPs0EelFOnMHy53hEE+m6mwiqNTzMrx4t8lSk/2z0VFTlTcGhp+LrEhz9A4qM9EP9gDxtOk/3sMFPraQh0gnkyAd3wChRY3oVyl6dQjeq8ElV6hSsCBlV6W4gBQs8EuqLMoDuGCsZsGLgH8NiDIBcg0An2g8kO+LgzPk+V4rZsMAu1tNECHTYTPc0G1Zgjazdks8vZABhU3gjhxYoQBDK1JfrzIXcKvVOIHUEuznFGR8B9Z/yvF8LZnQ0YImU3hY8TrCmsTvUVcwh1Ppfuy5Q6VbBT5Tr1mbPWtFQHVtk+iADvi0WlHmUMnVT0hspcEGEEnajIBQj49kBtaEA13uyjDu1+mixPTnn0BgR6he1thPdNKDa9DDnPz0LKsxOQq3+Ggb3Y+BJT5KTQi6kS3egipD87jo9fQHBfgEL9s/j4JajE11Qi5HMR6FnqKgjxi9CIzkCj0wOoNr/IeseznqACV9vH5v/TUp+S5ypQoX8casmB0z0MBWqoyh99yyxf9VtU4BRS3wXlzw+wzgmqbC988h2UaXyLIP8eqnUQ5s9/QOVNIN+PdhBqDQ9Co+kRNnOBWiybzQ5CmwXNXDgMzehYtuO5R45mh91p6HG/DEN+N0CENhx4C4aDbuF9HuqiQHws9D6MR9D2MU22PldMHSaZVvwcgiw7Ng9gGp0xST7liBHoVMSIf9PJXA8YQcerP8keeuNt0Em0BUG8PQgTXbjuBGdU5s4IcwdZU7gtD/Mgy3m0iZpAy96aIIvm6gCL0tpgm/T6MNvoxminwJZYN/fWBD+b7tQAK0FGqIUgK9KiNzPSqicjxFGY6u/dnewV2Z3onNyTYF84kGDVOJRs3juaZDI2nmwsmUh5sTKZbLA5magjm0zQVkwl6yjEKbqcJN2AW8x5wS3lmcAy2kqBKawWWcBaiRVslPG59Dd1ziBrcmMq+n2rFyjavVFJI3wF/gj1CFTQKQhyWo1K4KXitTLgpoqBGy9gi77kgzkg68ugaaIcqnZuqcqfW6ny4dZrPbmtRh9O1uwN79vwPbv8UJkTzKOAG0sDeFkEypkqBHktghsBO4/AXtgB+jx/5OZpl3oDqvM6VO74GjRurnbn8Va+WI5Vvbcy+JOKB+YM1DJwAwKcN7qN34sZQn0Bv8dSKw/09R5OuTnEKbdG0cY45fYYB29GFco3I8wQ5nJ4OypX0nF7TIag38bXbCplk/PKdzO9SsViLnDrqM7fnPmbJsT9j4L6jkJnRsqclPtfGkL/934vkegf18Ujv0WQP1idHAremB7LXxrpyV4cEjjOi9ovSYbafrcgEPxdns9HqPfmx/9Lf17Sr0VZ8b8h1d6bHv7bzoyQ33ckBnzVFue7vzne60xjvMe95mgX/cYYJ+fGSB7qdWE29bVB1v21Idbi2iDLJQT7eoWviQw9bHmVnylXG2jBNYTZQEsUfpCTPH6cHkeblGarYtApjIXVRgR5SyKsoxHUpQ1RCPMIWK0JQXUeACsVqM5LPGGp2BWWCuxhMdMUFlCdS6iYJdUAlaArAv0pmgasVIXAdIoRTFAFa9BtBDqvOuj+dPQTmAp/BCOoRvo9LkI/wrfX8QRrU5tMskboIuQdUL1bHYZOi0M74fbjILRRgR6r/dBndxjvH4VB5xMw4nUehtzPwstYPRjwf4SvPwxCVOODrmdY6H0CL4ovIx6iE3EbhkgBeV6CPjx2OZyDZvMT0GR5AjqcLkCb3VlosjgB9aZ4QTc+zibJ5aNKq0SQV6JyLzU4gkA/hUcEOrUsEczRSKHT2NiEBz9A3L3vIekRgl5TBbJ1T0KG9mlI0j2PQL8AmajQ88zvQLH9YyhDqFe4aUCZsxrUolpvonx62AvojDSBToQ6QZzAPYBKvJdUeixv/Yl2PNDxSNAfTXeA0TQ7fhANbREjqKfbsvYzCYXXCzxYGxrlwgnoi6SwKVxOY1tRxU3T4CCasEY7wWmMK437RUU+iVCgNrPxLBcG98lcL5hAmykOQqCHwWxJMIgJ6qjUx7M9mPobQadiNMOJRRGo+I1qAig3TmH2znADVgAoiDSGLgR6V5gBdIQ8h1Y/2maoCW1o1KPfGaLDFHqp1VUos7zOWtVy9c5C4pMjLIWRpX2ctQWSKqfiw2xdvK2HCl3rJBTqnWbz0guen4YsvJ9P88Pxdp72McjWOAR5Wiqs3bDB/iZUUg79mQpbzJPx+AcofrYPSrX2ovqmNIwK1BgdZa2N2Y++YdXpmfcpD/4VFDz+GgH+LZTh62jGAaVravQOQIPeXmg0RDPax+o+2lCJNxodxOfw/Hm+l6nzBnyMwuuNCPVWBHqHzTFWDNrtcglarUmlnwMhOpx9+HkY8LyATvANGAu5AyN4/jILuQtjCHNKaYkTn8NMqjHbOEatitTBME2jeqn+Ic+d/e1n0DGjDgSaGzBbGABTqNZHszxgMNUFehMd0XG0g44oG64xxEJRF2gqrw0w22oIsiSYL9YGWUzgUVgXbF3fgNeWhgj7+KYoJ1+q7WmP937Rkeqv2Z0a9Kg3K/Jef17UncHS5FtDpen3RsrTVUerMrXGKtMsJipSXSfLEoKnymLSZ0ojKiWlIZ3z5SEj86X+koVi75X5Ys+tuUIX2XyBi3w+30mxWOCsWCpy4ZZKXLjlYidupcSBk5bYcetlDtxGhT1sVNjC60o72Kp1hLcNLvAOwf6+xR3NBSHsDlwXQn0wFuGdDZwYgS6pQrVL4esmUsAcqmhOOVvHcdPVCsVEqfztQK78dXeKfKM9VrbZFCrbagqUv20JULxv91coBYGcsi+EU44kgnIK1f48KmV6r1eolJcoNN60Exr/CPaaHbg38oAnlb7QtKO+d9Q5Gd1eaOZgvg5/lmpOOV3JKV+WcsqpArRCTiku4mAG70sq0Ko4fC8Ffi+FcrldoZQKFdx6n1y5MSRTbo1s79gWvB7eVL4eWlduDUsR6FIE/ArakvLN6CLCXKJ8OzGhlM10KuUL+ZxixZuf4f7+u4+tav/j1Pl/kUf/h/9TEP/z+9f/A1XFr4qHr6xNioI35yYKpVMj2ctjg64rop5Ly0PCvxvmH/9ROP5jGJ5MlBX6cwK8IC3yVz3pwf8qTA79XVeq/zftid4n2hO8bzXHe+o0Rbu4NkQ6RNeF2BYizFvRqxZVBVhIqlCl1/hbbFUHWcrRs1Y0RztybbEuXEcSTY4LgJH8UJgsjYaZatp7HA+LdQhwgnl7Cmx0pLLjehMPdZZDr/KHZVTgr/IdYR4vJHNpJghyVOcp+jCfboRmDEs0MjdFh21AWq0OAzFdfKJV4WXkI5ZXHw+9C+N4kRJHPoSZmMfwMuohjAbehEFU0v0ux5mKnkg0R7V+AvqdTkCPA170qIrd6hD02B7Fx1C1I8wHnI9An/NRVO94tDsC/fZH4WW0Dl70NKDNdD9zBHrx60f8ryHMH8AkXgyHvFH9eFyAEd9rIPK/gRfTC6jST7LK+C5U9FRl3O5wloG90ewkf7HGCzvl1SvxWE7964bHWTg2h6ZeUZ4dLQWBnoQKncLu8Q++RaDvgZSnBxBEpyATYZOsewGS9S5BhiHCyew2FNs+QKirQrkrAt1FjSn1Bi8taAlCyKFK74hA6EWZMhU+mOTIQN4dacZC8gT6QVRZg0xpWcNwmhMLd9NAGhpEQ3Pgx9N21pgirOeoir3Qkx0lxX6wUBHOZgxQUdAMhdSzUFVTyxspcuojpxGuqOYmsj1hNNMNRMkO+N4OeN8dxkmx0/TAYmprDIW50jCYxtu0sY+APpRgjq+3RbXuwGwo0Qr6YkyhOwodlQgDNEMG9vZgHQbz7khD6AjWZSDvCNKGFl90bKiQzVMNKuzuQIn5NTZtLx9VecKTQxDzcC8eD6KzdBRy0VkqMDjDig9p1W6WxhHIUKf2wWOQp3MSMjWOQja1nWnhazUOovo+DLm0SlfnMDRYXYJS/ROQj3+7vKf7IPMhdUPsglLNH1jlOVm59h5mRZp7UKV/B/lPvoEidZp/sBtKNb6HMq09UKW/H+peHGZ1GU0mKtBGo4tphLHJfmgxPwjtFtReqcKKMhvMjqAaP4ogP8Ksw+Y4CCiK5EFFoldAQB0eeF/oRG2c59m5OhxwHcaD77GoFtlYGK/Op+I0GdDFKS9AnGGJytwWnTMnlmrhj+ik0Sz+Ai/WYihB52uuNIR3woqD2ehnalvtirXnWsLMuRofA3mZh+52mcfz9Qpvg8VqPxNU5ua9dSGWtY2h9plNEQ7hLdFOrq1xnvrt8b6qVOODqvzUQG6EymBB3P7hovi9w9UZeydrC/a/bCxVmW6tPDbXWXNhrqv61kJHpearzjKrV11l/ivd5elrgvJKaU9p54awZGRdWCRGm1/vLpKud+dvrnflbW505mxtdGRurbcmb280R8s2GsPQAmWbDf7yjTpf+Watt/x1nZd8q8FL8bbZWyFrdFPIGlwV75pcFYp2X4WyL1KhHM1QKF8WKRCyCnjVrIClDrlypUsGK4It5UrPpnK1R6pc7l1SLggWP8y2zSvEDfPy8ar5d6KCxXeDGSsf+hLWlf3R28qhGJlyLEWhnC5QINA55atGDpab+PD3cgszYEZV7XgkeL9q4/D7ccqVbgV+T4VyVaCAVaFcSbYiIJPBcpdM+apjG1X7tnKmdkv5smJLOVGCVrilnCzC+2VbMFOziU7BJrxq2YTlznWQ9q3DxtAKbCKot8bmldsTM8rtyQmE9Qi8mRAp30z2w/aUUPl2ulv5VtyO1qp8O9OolM1Ww7tX+dz75WhOIXUEoC1r1Hcu++R/bCHcX8ur/994b+nExC/WZqYOrs+M2W1IpvI3ZsdzpZMi75XxgXvSiZ7PpRMdv/jvfm9S6R/z7B9z7WQEd6bck8J/3Y6KnaDemeR/rDXJ+05DvNuLxign74Zw+1RU6tW1QVbC2gDLqboAy8WGIOvNhjA7WVOUo7wVYd6W6M51pnhBb4YviHKDWA59tiYRXjUkwXIjwrw1GTY70uB1Vzq87kyFrbZE2GiOgfX6cDYLeaXEHZbyUZnnWMECK4Yzgtmk5whxPZjPMIHlCryAZLwAaU04qngPkCRpwWziM1TkeCFCsE6F48Up+Aaq9BvwMvwOTEfcAzEexwPxAuZ1Cp+7Dy8TjGDI7TQMuuHFDaHc73gMwX0Uem0Q0nao0G0OsdC70Pog9Nsi7M33QrfZPpgIewrieH2WUxd5nIdxvCBOhd2BYb+rLKRPUQARXihFPlfQqbjL8pNClwt4YT3HX1Cp4h6hTm10pNzrXxxFxX4KGq1OQ/ULgvoRqDA4DlVGqNL1j0OhLkLi2UG2aCLl0Q+QilBPergLgY63n+yDHN0TkKN/HlKeX4BUfQT6iyuQiwq9wOYhFNk9hgpXTbZTmpR6jYcG1Pk+h/ZwY2gL46072hwGUUkRuDtYOB4VLgK9P8EWge6Ayt2aHcdRdY2mU9jbHqFuC6MIdypOo3GoNGedpv5JSnzZ3HUJTXkrQ5XNhsL4sRnsY2k0mtUFpnJompsrvp8rjCDMR/A9h1Bp98fzufsRdBwmcr1hqsAfVXwAiAsD4SXrY/ZD+Lviz2LNW6ItDCTzrXZ9rCjOiMG8g2Aeog8t/s+gGRV5B4K9M0QP1boedIbpsqE7ta6PoNZdFapdHkGJ1U0ot70DxaZXIR6hHX7nB4h+uI/VKaQ9VYG858dQiRPID0HGU/w7aKhAqhqNYMXn0QGgHvIC7aOsqK1EV4XN7S98th8dtDOs2LEIb9NwoVzV76BQ7VsoQitW3wVlz3ZDlTaq9qdfQQVCnbolyBop5224H6p1fkB1jmrcGGFufAhaTQ9Dh+Vx6ELF3WmFytsSYW6+HzqsCNwnWJ0IWafdKeiyO8kKOHtd0YH1uAT9VPhGLWms7uMSDOL9Id/r6HBehyE8b4fR2R1lka3r7PYIOsQT0U/hZbw2iJMN+ZA7bdTL5+slZmijHNVGFPnAbPFOe2FpMJvZPl8VA7Nsx3kMjBeGwWCGH9ed4KRoCDaTV3obbpZ76i1V+hiIa/yM+usCzOvrw62yG8PtQ1siHBybY9x1OhJ9bghS/E4JM8L29mZFfTNQHP/ZUGHy71CV/3akPv+34vry31LN0Ex3zafLwvrfLfY0fb4y2LJrVdR6TCrqurU2JtDZnOix25rq9X/zsjdxW9yXvz3TX/12ZrBze3qg/+3MwIhsum/irbh36u1kl/jtaLNEJqqcfztYurg9ULy43Ve4tN2bv/K2J0sq60mXvutJXn8viN983x2DFrWp6Ind4oaSEYy5WzBdvkVAVC53rCulvSvKtcFF2BCJlZsTY8qtqX7lGwTf1nSrcnO6Wbkx0/hh8tS3BgAAgABJREFUbbr5w+pYO7fYJ1RIWkaUk2UzyrG8ReV4tlQ5lbelnC3ZVs5XyZRLDXLlUiOCugUVcwcaQntNIAepkJlS2iNTrg1sw/rQlnJ9YFO5PriOt6XK9SH8GRDI0qElWBuYV672S2Clf0b5SjDDzbeLlTMtYm6mSaycbZ5SznVOKBcFY7DcP4KvH1Guj4jg9Xg/vEFgb6PSlkkale8XqpXy5WJQLOfCe2k6934tkfsgjeU+rEdzHzZC8RjMKTZ9OcVrV+BeWwG3rQkgvwag2I9s+nQn1P6P/+PV+X8H/H9vqP31gvizjTmx5pv5qfjNRXHh2vREsHR6VG1lYvi7dXHvv1A723/XsSCgk/30Ng95h38Qx1OOPfTnpNa7U8M+FSSHfNeBH7DmRC+15jgPm8Zol8iGSKfCulC79oZQ27GGYKv5+iCb9YYw221U5wh0Z649wY3rTPaAHvTQB2lZS3EETFfFwWJ9Iqw0JcEGAn2jjQpIEmGzNRFet8TDZlMUbNAs5EofWC11Q6A7wFKeDSzlItQR3nMIc0myHsylGrEedUmGOaw1xMN0kj68jFVjRXIvox4xoE+E3kbQXoGJwCswFXwNDRU5wnzM/xKMep+B6VgdmIzUQKCfhEGXU6jITyKIz+BtBDIq8Q7T3dBm9D20G/8AnSa7oRfB3oeA70fVPhWhBjPJxjDudwleBt9ER+EujAddB4HdcehAVUT5cwq7jwTcZEAf8KKL6GUYcL8IfdTv64qGR7rIkmqvNUTFZXUK2uzPQpPlaagzO4EwPwHVxqehyoxGwhIwVFhFPOXSqWKawE759GTVPZCtjWpR/xykGVyCVMPLkGl8DXIt7kKO5X0osH6E6lwDKj21ocydwI5K3UMTmoMNEOYvoDXUiMG9N84WelCpd6BC70SjArk+BnRHPNqwkPxIhhsLpYoQ6DRdjoW/U1FVo/p+SVvHCN4lAT+2Lknw/qvqCLzIh7IQ+2iaPYzTMhUEOcuBE9DT+dA5tczR96HhNkP4/sNpLjCW44Vq3RvGc7zZ7TG8PZrtAUOpzjBIg3DQ6DiAX8um4TGFTurcENX5c2hGJd5ArWi+GtAWqAPCCCOEuj40e6tDHQK9Gq3G5TEC/TaU29yGIrPrkPD0OEQ92ItA3wsxjxDqj/dDrvZxyEGgZ2ocZEs/8p6pMLCnPD4Iqfh8ptoByNdEkGvuh1KdQ2yAEAG8TO8I1JqeYqOAS7T2MkVO6rxA9WumxMs0v4dqBHrp068Z2Cl03miEUNdHuOvthgY8thiTAj8KzUb7oM14P3TSvAS0VtMDzNpQqXdaHWbdG90IcAFBnIYouZ5hdR1D3ghvH4S39xUY9r/GK/DQBzD60fA8FfldYWH3EYJ5wDUWdh8NvgMTkY9hOkEbZpIMYDrNDOZyHWC+yJ3ZXCE/0peKH6leYqEsFI0GRoXDXEU0zFTGItBjYbIkCsbywzhRpr+8K8FluynCZr0uyHS+NsB0pC7QpLUh0KK4IcI6kmDeGuWi0x7vdq0jzeegMC3gK2FW6O/6c6P/jaUFK7J+Kf7f7L0HbJXpte8tRdFRdBRFURRFUZQvyhdF58vJzc1JpjDMDMMwwNCb6cWAMQZT3Svu3ca927j33nDHvffee+8NU4ZhiPl/a629mZDJpJ6cm3PvxdKjd3vX1/Du57f+q5ZlfJfXUH3ed6Tqp7n5X8fGyr7FRxY3jwaav7860vOTR2MDv/hsanTTs7mxbZ/PTx56tjyl+vnylNaz1WmHz5dn/L9YnY36YnUu6cXqXNaLlZn83y1Plv1ucbjqxfxAzYuFwboX80NNL+b6W17MdLW9mGrv+mKqsWdjoq5vY7xuYGO8euh341UjG5PVYy9nascw1zj2crF1iCDaQxBve/l0qgZPpwpfilpdjlOAT6DnufHiMa0nnhtfPA7ceL4W8fLpXNrLlZESzHc1vJxr7NqYJsjOlE/RWng5X77ycqFy5eUyGQqrTSsvV0ntP2wjYHct4WHX0sv1PlLQg1MvH4+O4Mn4wMun4114MtZGt1tePhIjog5PJ6rwZLLs5ZPpkpePJ4terk8UklHxauW+fDSV/fLxTIacx2cLKRvPFhM2ni/FbHyxFsYJbXLOG48J1E/vAJ8ZAJ/rAF/coKVBSx343QVaZ2mdpHWIIL6LGLRZmdH+4/+jYf43wZae+3Rp8kcP56aPr89Pej6Zn05anR7xX50Yvro8Orppfarne38Ec2Ud+9+q0r9euVt/85Va70gP/AG73+tjfTbXx3oer41116mJcHGvvGeXUBFkU0Fqvavcz2KCFPpKRYDV45oQu+e1BPOmWNeN1iRPdKb4YCAzGONFkZgtj8VCZQyWq2KxUhONNQZ6dSTWqyKwVhGCNU6Ie+AlQw0Y6ItZdpjLsBS3Ome4s7t9KlablLoWpjMdMJvjJg1phu9dwlgYx9OvEqjVSaVfIEV+jlTzCQH6kNchDPsclmO/2z70uezGVJwRhgNU0Xd3L7odCOY2O9FJUO+y2yGJcC0mpHwI5I1Gm9FAq07vbbSYbkaX9VYMeByjc9BHv8se9Dt/iiEyEgZo0+yw3YM2270E91MYu3eR1gW6fRpdLofF/T7AyodUkSgkVxUM+J5Fi+MRlBttR505qSq7AzKustbyAEqNSa0b7EWxyT4UGuyWBDmeo85QT5CY+nuIVeO1mdQjqUOd/UjUOUJAP4JE/eNINT6LFCNapqrIsr6EAgI6q/Q8h8vII6iXut9Gtb8C6NV+BMEQE1LlFqgjmLNKbw27I674zihrgq21AL2HINufwr35HQToPOyFVXpfvJ3UiU/m+kmWOndz4yS3cYL4HE/bKiBj7r63uNO5e9sAgz3JTia+sSu/O8ZGXPzs8ld8Hn+uOXpJufclOCoMiVQXMgCc0Btni85Ihj+dH8fOWaWzMRBmgkYyTOp8tVDjQyrc6zrKXa+gwu0Kyu9eIaWuieZgHTQFa9F9Gih2vIAHducJ6GTwWJ4VqGcaHEOc5h6EX/wQYRc+QCiBPezcJikNTOGENwJ6mgYp9IvcV/1DUeUJl96XOvE09feRzUC//hHyb21BzlUuJduMSqPdKNb+WNnc5UMZ/JPGNeSk0nOv/hYPNH+LYlol198WaNcQtCu03yOYb5JYeZUBA3s7qjhuTvdx3LyGY+MGH6LOiKH+Pqn0D6XTISd7NgvUuTTzU8kT4XkGXJLW53WSjMuzZMRexGCgGgaC+HhBQlMM+n5JJj0hv4uHi543HHIJ41HXMBmri0kynmdSrRXjUbO53wAvxVQ1mX9e4IcZ+v8fzfTEYLoHBnl0cpYvetN8NjqT3V+0x9991hzl+Lg+zHahOshipCrQrIngXlh9zzqq5p61XU0ow9xFYN4c7/sLBjkn7g7lxX6nOTv7Xznpt6cn+V/KXuvX8fX7bJki9DmmbADGOU2c27S6+pMvnqz95sXjtW2/e/roCJ49ubDx+eMbG88fGW08XbfZ+Pyhy8ZnpDQ/W/fe+GLdl47+G88Ixk+WIzY+I8g9Idg9mU96+XQh7eXj+YyXj+eyXj6aJiBOZzEQN54txG18Ts8naOPFUxsFAL+4RuuCEnhHFQvHaTEECYhf6Gy8eGrHn4fny1FkDGSQkifwDlbhYW/Dy7WeNjzs7sB6fxvBu+Xlk9Gml09GGl4+Ha17+Rkp/s9nSD0vZG2Icl6JYOMBnFn+O3o/Po+NJ64bG585YeOZHTaeW762zGmRmn5uRJB+BepbyvO9qgT1aeU576Pz3U5rixLWPDHtN7R+TetXtH5B69+Uavwnynj5q2Zt33yjzOkfYX196ntPFmZ2Pl6etnuyNBvzaG4qbHVm/Ba73x8PD/+AL9o/uIhJzXMmfE9Pzz/EGnql1hnqBPLv0PpxU7T3rxpjvPdwkkpdjIdDTaRbREWIY0l5kE1beYDlWJm/xVJFoNV6TbjDs+YEjxftyT4bXWm+G1yDPpobipmyOCzXJBHEE/CQY+cE88e1MbLWSZ1zhvtSgQeWcl2wks0wt8fifTsscIeldAvM8ihVjqXHG2IqwVDKQZar4zGdbo2JqOui3qdjbmIy/BImQy9ggqA+do+g7k9QZ6XueZhgfgC9TrvQ63qAgG6CAXcV9DnvlQz2dquP0UnKvJtg3m3/CXocdtBxB7q4bM1qG1rvbEGr6RY0Gr6LZto8h0N0lJnwH9H7HKD3PoQO3jwd9mPY9wymwi9jMuwSKXVSO57HMeRHSj7oLEbo2EVA72HA0/O63Y9LxjF3oGu2P4gmu/2SvFRrfQAlRrsI6lzCtgu5Ojtx/9Y2ZF7bgpQrHyrUIq14dQLMte1I1d6HFF0VJOgeFaAn659GgsEpJBLYU81IhTpoEshp2Wsgx/4yHhDgK711ZFV46aA6wAANoXdQf88ENYF0O8SYYGklZUcd0dZoZ8jGkHommLNK7om1kEEvPVGmoth5zv1krq+iAUy6G0ZSnTGc4oAJdr0XBEpclR/j+uQ+UtVsBLBrXRR5jI14A5ros/kz2cXfEmpMj1kKwFmR9yQ6oSfBgZ6neJzrzbnUrpWe1xJiiMYgQ0n2q/ZhYBPMeblrEthvEMyvy2KXe3MQAZ9gX+qsjkIbgrrtRVqquG98HGm6hxB/7VOEK8sCw1Q3IfT022Q0vU//3h9K45cUUuhx534j0884Xp504R0pNUtXfw/ZXDt+cysKbxLQL78t5WTVHEox2I5yvY9RevtD5Fx5B/Gn/x2pqv8D2er/EwVXf6MA+rW3UKX9LmoN3kO9/ibUG7Ea34omM25otJugvo3A/ZGsehOGPF2Ld7aika9J048Uyv3OJ9JfgcEucLditb5f3Ou82DvU5nBAjp1uR0iZk3HpcRSdHB6i61E8SlwdEnweI6GXMRqmgdFwTYxF62Ai0RST0r9fMR6Xmwi9mns+m+MhddfskRnN8pKOcH2pHuhM5AEsDhuN4TYvakIsntaEWK/VBFtOVQdb9VQHW1fUhdgl1Yc7eddHu+o0kVhojvfe0pzq+wtO0lWAnHN7lBBXluP+J8uNvwUQ4B8//gGePfupov33F5vw4tk2/O7zffjd8yO0CLjPCcDPT9NtVfyOlOgGQW7j81u0tGjp0NITGG4854EjJvK7QrmqEQDp9S/20GdtVcLv10ro/Vy5/k2pYBmK7Jbep4DnBoH0hcEGw/fFE3ewO5sNhOfLYQRrWg9DRDV/6eZecycFbYONz4w28PkthWr+A8V8VKGacYAWn88u5dqpXAzpba+BetNXYP1L5flyM5gfKUH9A8VsFKkn/65yfUcZI//2VzqufuP/OJj/HReewPyz5blNTxbmjJ6uzEU8WZyJWJ+bsnw4M7FzdXbkJwzurypzvo8X/kFA/wO1HhHxLVbpnP3eEO+7vTHOU60+1suyIc4zpDbGvbAm3KWlJtRxpCbMcaEuwnG9Oc7tWUeqz4vuDP+N3vvBG4N5oZgojsJCFcG8IQWPGpLwpCEeT+oi8bQuAk9qI/CoOhQPyxWx8+VcZyzdZ5jbY+G+g9SgS5Y7N5ZJ4W5x5lLCtlwWgvXGNMxnWGA+xQjzyQZS1jYRrlTo985jPPgcxgJPYtj7qAB90PMIKWmFO3ws2gid9rsJ8AqF3u2wEz2OdLTfjl7HHRh03YthD3ouKfoBl72kxPcS5HdLohzXrQ+H6aLZfCv9vgW9znvQ67KPFBGpbIsdpOBPYDpcUVI34HMcIwFn6DzOYjTgNJ3TGUmg6yWl3kug5xhmn88ZdHmeICV1FG2k5rn9ZrOzCqqtD6LMdB+KjfeigFR6ni5DfSsyb2yV+ekcy43n+c+sILUU5WqJuseQpH8CyQanEWd4CglGZ0ilX0CmtQZyHRVQz3XQoKMGytwJft66AvRKPz3UEhRrg40J6Hw0RFuEBTpi7GjZinJmmHYSfPuSSCkn2KErylQBdY6lp7lgnODNc+85/s2AH+LyNG4HWsD9vINkdG4/va5XurnZkNJ3JGjbSHe39kgzNIUYCdgF7iGcgW8iyXLdsbboovPopPNoCTNHA4G/mSfIhXE9vYF0wKvz10GNrzaqCOhl7jdQSkAvvnsNlZ63CfKKx2p9b4srnofWVLnfRAmX9NlcRL6Zwt2erncYMVe2kTonaKtvRfTFDxB+9h1FWIOBrkn/5mqbEK/6H0i/xK1X30fy+d8ihYCeqb6JYP4RirW2Iv/aZuRr/FYxzMecYGy9H9VG21CuvQWFNzYj+dz/kNasOeq/QcmNd1B+611ZDPQ6w/fQZLwJLQRsTsTs4AoL+z3o5NwM6+3S3KjZYhsdP5ZETi635N+bzQnkvLhVMatz651iCLTzax33kqG5h2DOzY/20H37COJH0MUdFeWoQnA/KiWf/X6n0c/lnqTQR0I1ZF7CeNQtTCYYYTrVihYPYbElkLtgPsddXO48jGWOgM6tXqfZeMsPxmBWILpS3HlI00Z9qPXz6mCLx6TEl2pDbcZqQ+xaakNs8+vCHCIao+/atdCe0poUsLMrNeTXrMwZ5pyw+58F+V+A+6vhXQSnJz9UJG99/nNFiRW3KCXY4zmD7S0l7DYrAUwAfEEgfLH990vgvVn53F8qIfhjJQC/p4Te6+u7SjD+SKlsf6X8jG0KALNR8DtVpYrX+IqLm+5/flb5nAPKz/9A+dmvVPMvXzMifqZcP1Uq6Ffrx8r1Oqy/CuzvvAbqbynXn2qR/gbgX73Q1tbWvvt0aemdp8sLN56vLYd9tjwf92hhynV9fvL0w4WJn81Ko5rX2sLyBa9U5wLzP+GK+vrPU8bP/8KXhS3k2uTQ7zWlBfysMc5va2O8r2pDjNedhjivwIYY99z6KI+mukjXoYZo17m2ZK/1jlS/Z53p/i/67wdtDOVHbEyURGOmMh5LtclYIwCvNyTjcX08ntaG42lNKB5XBeNReQAelfniYbEH1vJcsJRNEM+yU8CcVXqWjbjfGfTzGVYC8dWKMIE616Tzmk3Sx1yiHmZib2A6SoNUuhom7qkSQDkZ7hQpY4K6xyFR6cP+ahgL10YXgZxh3OO4k4C+Az1OHE+no/02Uu4KV7qoe/f9GLi7F32k7rvtd9Jr9mKKDIIuUuSdNlzStl2Ufo9y8Eu/11lMcQjg3kUM+Z6k87iASTIyRgNJuUdcwhgZG1xa1+12VNrUDvidQ7//eQF7r9cp2mCPE9hV0MRQtzuCMvNDKDHmpjO7kK2zA9lanyDjBqlDbkpz5SMBOme5J3L8nICeTMpcgG5wEvEE9WST80gzv4RsewK60zUC+1Xct1dHkesNAro+yrx0Ue5jIFCvJpjXyCJQht1BG6nzzlg7UcltBFquLRbXe7KzQl3zHHU6Dqa6YCDFBUOkzgdIwfPjDHZu3zqZF4CpgnuYyA2U5zDMu0n5d8dw/NyeYG0jneoagnTF7d4eYSbH+ntGaKHbAnSO5UfZ0DmZyznWBemTojci8BuiPkAHtf5aqPImmHveRCnBusz9Fh64XJMM/zIp1dNHjZ82qr1votpXi56vhwqPWyi0V0O20VFR5+m0Yq98gtBzmxF3+WPEXdoiyYcJl95D2pUPpAFMOkE8lefca5Aiv7pZ6sfTL5JCV3sbJTqkwmlxB7cizbdIQX+CJut9aHU4jDrTT1Bl8BGqDLchRxlHz1H/D5RcfweVWgRz3U2o1iWFrvcuGvTeRoP+u2g0eg8tpu8L1Lm6os1sC1otuIxyu6I/gu0Ouvb4mt1N1+JuRYKn8z4yLg+i1+2weIb6PVXQ736IjMwjdJsMWjImB7yOilE74MfG5XEyLI8pStd8T2EoQBUDgaoEdVUMBl8iqF/BRNRN+o7pYjbZRAzruUz6bmbfxWK+F+YLfKXV6Xy+H90OkI6Ns4X3MM6x8/v+BHWPFy0xTs8ayNhviHRcaIx2HmiMcq5riHTOqIty9SVlbtSa7H+cQL65Oyv05wPZ8d9nF7t4Cf+BIP8r4P6vSnh95zX1+T0l4H6ghN4PlQD80WtA/PFr8P7+a+7mb73eXvxPzAf51u+NCnn9j5Xw/aUSzm8pVfM7rwH7dVf3z19zc38VxN/5GvX8+vrWV9ZXup3+11Ru/d8D9MXFbzPMP1te1Hq2thj2+aPFtMeLM76PFqfV1hanf7PIQ2C+2uNdCfO/F+h/yfp95XZnoHOCSnO8/5aGWN+zjbHeJnXRXoF1Ue65DTGeTU0J3gOtyX5zLUne661JXs86UwNe9JE6H84P25gsjsRCZQJW6xKxXp+IR3XxeFzD7naFMn9UEYj1Yk+sPXDDCsF8mbPbs0gBpFpgKskUEwnGmEq8g6kUM0yy2z3RmB4jhV7sj9mcu5iI0ZYY31QcbTjcFjaGgB5zDVNRVzAZflky3EdIpY+RWh8llcwb2nDIdQwGqpNC3ykKR6HQaXO0/RjddtsI0lsI0HsI6LQJOu+SNUCA77L6CB3mpMjJAJjhcaJ+Z+kxVvm7SckT9N2PYMT/DCnzy1KPzpn2E2FqmInUwJQyFDATeRXjdHuIs/B5Q5XEOS4XUpUNll2eCqAfEsXe4Hwc1fZHUW5BUCe1/sBwt3SRyyW1nnr9Y6RcI7Df2InEW3uRoH0ESXqk0FmZG55BjN4JWqdJpZ9DMqn0+3YEOOdbBPXrBPerAvdSDx2UeeuhnMBe4qFNYNdFlb+BxNa5+UxLuDlauXyNwMvNQjhZrjPKSuLavQkO6OJOc3E2BHAXArMtHZ0wkHZXFDyrcZ6DzQN5xmTSno8ktjHAGeYdpPg5Xs6/d4jLXR/N9wzRTOq8MZQ+O8QUjcGsxs3EmOiItpMmJbVBRqjy5fi/AUHfWJL6KhnmBOhi1+tkqFxDiSspcLfbKHDQRL7jFZQT6Gt8tKUFLj+3nt/DTxelpOKzTU4i6dY+pOscQPKN3Yi88CHiCeYJ6u8jiZR4MgE89dK7yNDgLHaemkfHax/IBL1cTYL9Rc5ef5tg/TGqTT5VZqp/QCqa49h7SC3vRovVDtSzO9ziU9SIWn8fxTdJ1RP4izR/i8pbb9N6CxU3/gOV1/+nrOpbv0a93ltoNnmfwP4hHT8gqH9EIN+uzPXYQbDfpjBCxTglo9LlAPpcD9K1eBgD3sfQx13f7h6U1ceP0f2D3kcxSPDm649bJXPoh6/BIf9zCnf7PTWMhqrLGg/XVFSXxJHRnGiIhXRrLGQ7YiHXFYsPfDBf6CcjUqWRUJ6/TFIcpzWcSyo9MwDdyZ4v2uPuPmuNdV1rjnGdao5z7WmO9ShrjHaPa4p3d2lL8b/RlRG8qysr6tf9DxJ+1FOW/O1Xyvyf3An0m3+itfe3/sT6l79VrX7NbJHXh4e9Mii+9ydA/Z2/wnD4xl+73hD4H3sh/QuPaX22uqz6+eqi7/OHyymPV2ZDCOhajxZntzyen//B63V8r2D+5fqaoS7/KKAr69S/zx3lWpOCSKEHqDYn+Jk3JfgF08pvSw5s6kq7N9R3P2yhPztsfSA37NlIXviLyZKYjbnKhI3F6mSsNmTgcXM6njYm4ml9DJ7WEdCrQrBe5oe1Yi88LPTEwyIvrNFalRp0F8xl2GIq2RyTCSaYJLALzLkmndY8KfblB95YKiSFkEq/Z1hiPs0UczzXOEEb84m0ErTo9m1S6wT2sIukmNUwHaEuse3ZlDuk0K+Keu4jCPe47BOgt1tupY1yGyn27RhwZaCzMidYM7Q5rs5K3IEA77Ib03GGGA+6gBFS7yPepPzdSRVxkw43UkNex5RLBRMC8cuYDleTc5iKuEz3qUnS3ATHKAn8Q36n0cPKye8URoIuklI/hQ43FQF6E60652OoslNBueVBlJjsRzGtIuMDyNDaRQD6FCm39yBJmxQ6x9D1GeinBehRBPRIvVOk1M8hweQCMm2vIc/5NrIdNQXoHFcvuHsbxZ4ENm8DPCAAlngS9Pz0FS74QCNJlGsktdzGyWoEYXaHtxHkBd4pLpJl3hNnK+5zjrdzwtxgujv6khzQGW0hM7An8kLkvoF0VwymuZHit6X3s0RnnJ3EzFvDzSTDXRrbhBgJ0OsCdaWcjmP5taTI6wns3KSkLcqe7jNHhY8equk864KNpfSuzPM2itxuSm5AIRkqBfQ3FipvZ9teIrBfFnhXuN1QNNjx0kK1vyEq6FhgcxEp2geRfHsvUmnFaXyElCs89ewjZFzZjPRLb5MC5zj5u4pGL1ofIe+mooMbN33Ju7YJhTc3i/putNpLazcazBUwb+f+/ta70EEqmgHfdGc76ow/lhK0Bq4V565u2ptRZ8AJcZtRrfMuanTeIZX+LpqN3kHrHYI5l07e2UJA/xCtBHZudtRJKr1bmcDJuR59ZFRywidfh+yF6rnLnQu5i+FuiaU3We6SLHguq+wmY7Hf84SAnDPehwK5KkQVw7wCz0vi3CjH0EPVpb/DBAF9Ok6PFPodGZS0mMvq3BNLRT5YKg5QDFkqCsH0gzCM5pEyzwpEb4YPelI8NzoT3V+0xrk9a412WWmMchlrirnb1hTrXkgiIKw1OcCyM+2eWm9W5Na+3Kh/GyiL//5stqJ99d8Spny1/osh/18Kxa+811cNiW/+OTf3Gyj/N3S1P1td3fJ8bdn8i/WViGdrSyFPlhb0niws7Fybm/spu9q/msn5pTJH2Tf/jsS7P4D5132BXqlzWt/uyY34YWty+C9b0+7tbEoKVG9ODLBsTQwIaU8JKuzMCGnpyY4YGciLXhgpjF0fL4p5NlMc82KhOnFjpT4da40ZWG9Kx+PGZDypiyNVHobHlUF4TKr8Yb4TVrPtaTlgNc8VqwT2FQI6t3tdJAWwlOOMBXazZ9lhMcdR8Ts9fynPEatkCKyW+mEp3RRLWeakHIwxn6JPENfCbNxNzJJKn47RxEz0FYKpusIFH3KeIKouGxM3oBlTxraHfU+gjzdA+10SQ+9xoM2SoD7sfQSjPiqSzT7kegCjXocw4nkQw257MBF+E6Osau7uxJjXQQx6HpIY/RCXBnmrkLFAytvnuLjZx++dwWSIqhgUk3wudA4zkXxuNzFFip3h3i+lQgz0CwT2swT4E+gimLe4HUfj3ROoJZVeaX0IFWYHUGq6H2Vmh5FvfFDalKbe3ocknUMEdE6II7VpdBbxtKJInfOK1j+DWCNVpFtdQY7jLWTZaSLLVgP37TWR63QLRR76KPbSR6GrFkq9tFFB6peVek2AIRpCTSVRriXCglQ6u90tpcStndT6AMG5l8vY4h0I6g5oJ8izkmcVPpDK5WW28pzx/HsYyvJBHxkA/DsnuLHS52S7LoJ7E32GuPc52S3ijrjc6wP0RHmzAmdFXu1Pt0PuoCXSVkZvVgfyfQaoDTYi4OuTGr+JfGc2UK4jnyFup448rr13voYcW3Xk2qohz+YSip2uoogUO8O9kv7WclL1ZS7XkGt+Dhn6KsjUP4S0258i+/YnKND5RDq7ZV5+F/evbEKWxiaC92aU6H4s/fl5JCn36q+hVam/FWW6W0iNMzAPo9V2DxoI4B08HMj6U7TbfopOu90S6+YEtwYTHs27E230nGazbWjh+LfZx3T8GG0WH6PDaqvMEuiTcNCniuZHZlvRbPyBKHVW7FxGyQmbnZzQaf2JlGBy1Ua/235S6fvF7S4KnYxDLp3kygouX+uWBDguUzuFXm9FeaXEz31OK5rLiKeIQX8Bg/fI6Iy8jYlYffGYzaVZSwdH7ua4Uuwv3R2XSkOxWB4lJakTD8LRnx2IjiR3tMY5b7TG3X3enuDxtDXOfaUx1m2sMda1pTneK7c1xT+wMzXYpDsr9HR3dtwmrjFXlKWVfeuvBfqX8FO02P6XN1B78/PfAOhj3+Ie8M9XV08/f/TQ4fnDVdfPVpb0Pl9e2Pn5wsLP/pyrXZEE9/cCHd/4c66tV53kuMlMT3b0T+j4G1LpB9pS7t1oTQ10ak0JiiKgl3RnhXX05UaPDRfGLUyUJqzPlMc/m69KfLFSl7zxsCEZ63UJWK+JxqOqUDwqD8bDYl+skgJfSjfDYrKRrKW0O1gmy3+ZXXmcbMMjUzmGTselPGfJfF/KJ1XA7vhM2lAyrbCcS4ZAkR/mk0g5kCqfib2pWATxqair4m6fjrxC4LyiUMWSpHYJE5HXxWU/RkAf9eOytmMY9lE0huGucqP+p0id75O4OrvSO20/RrvVRxJD5xK1Podt6LPfSs9XE4U+7L4XYz4EegL/qP9Jek+G+Cnl+6mSEXERI4GnMRV6HnNRmgR1Oh+C+lzMDczHamE+/paECbjL3VCQqtT/DgaoyuryPIZ2j1NodT+NRqcTqLZVQYXFIZSbH0CF5REUmakgS+8AAX0/kgno7G5PNDiFJGNVxBmdUwL9DCJ0TskxyUwdmXbXkWmjiXTry8gioGc73sADdz2UeBmhwFWHFLquKHSF611fAdMAA9RxBnqsnYC9mZR0W6QVwfwuBjI8Jfu8K95e4ZbnpLkUJ1LjbooOcAT8kZwgjOQGoTfNHd0JdF8SAT3CnN7HXNztbaTSG0MJ4qzOGfR0HyfF1fhroy5IkX1fQ+fB51UbbIbWaHs0hlnKOdUGKcID7FbP4la3Tpp44HoL9+0uK8IKDHS6zS1wc6wJ6rRyaZW6aCqm0Tldke55D2wvINfkGApNeR1GqdlBVJjuQf7ND5Bz7T0U3t4iyrzw1vsoM9iOMsPtqDLegSbb/ZJJ3mi+kxT6RwJyHtjDJWNNBOwOewb6TlLn29DD/f4d9pLhSNB32k+36eiwC72Ou6VBET/e57RHQjpsWHba0GtIffe77JOyyG7HPYqeCTza12aHtCPusf8UXcqmSN30ugF3uhYDTkojpXEyIsdDL9JSdFCU/gwBZ5WLrzECNilydrtzTgcbkqOcDMcqna7toaBLGLp3BSPhNyTTfTLBEDPJZphLt6HvpgOWC9zJsPbHanmozGVYrIzBXHksJh9EoDczYKMtwWOjOfbu87Y496ftyd5LbYneI00Jnk2tyT5Z7anBvrR36PXlRB/tLUh8a6gs7cdcX86laX8b0GkP/Bqgv1Gtb37+Ka72x48f/+CL9eVNX6yvXfji8cNrzx+unPxsZWUzT27DV5Pg2Br9Gpj/PXXuf+41X6rzsuRvdxSm/4C7NHXcj93cnhF5sj09Qq8jI8Kz835UUnd2dFVvTnxXf17c1EBuxMpIbujTqcLI5/OlUS+Wy8M3VsrDsVYegodlgQRyH6wVumONwLxKansh2ZhApkXgvUaQvUFQNsBihpWiQ9x9Bre9xOpYmS+SKue1kGFJrzMiFa6HuUR9UvJupHCvEyQvi+qVFa6m2MQIpFORGpiOvkZKWFMJ/FuYSzaRDnRTkZoCeK4VZ+iykp+LJ2UffRUTXMPufZwUtwpttLsx4HFAmtMMErwHnGiDddqG4QAui7uMQVLrw+77MO57DFP3zpHqP4V+jmG6ce07Z7ifkg12NIjj6ZcE5tMRGuJBWEzSxWKiDpZT9OnfQJM2TzVSRufE5TkWdgX9tLH2+J5Fp885NLmeRZ3DKVTaHCGlzusYii2OEoQOI13vEFL0jiLZ4ASSjc4g2eQCYg3PCcgjtE8i5NZRhGudINV+gVT6VQF6mqUGqfSrBL0byHPRJpVugAI3PVHr5b4GBHR9VAbQ8tcXkFaRWm9ll3e0jdSqM3i74h0xTMq7m4DeQUq7M96JVLoDukmB94t6v0vwdpE52P30vAFabTH2Ygy0RlqgIcSUlL4NuskYaIliQBuLC701whLNZDhw45tKMiwaSZk3R1iTYWEkqy7MGvWhZASEW4j3oMJbG5mWF5FsfAb3Cdb5zteR43gdGTb0NzpcQ57DFWRw1zwCfq71RaQaHkU+HUucr6DQnlS7w2UUWJxFptZ+ZOvsxQOTg6ihf+caq0Mo1v9EFDnPta803YVSwx2ourMb1Wa7UGexG62Oh2VMLzd2aTD9RCDOUG+x3SXu9VYrhvl21Bl9gFbLT6Tvfye3XHU+IKv37gH0uRDM7XZJQyOGM8fDGdbcxKjtzocSK+/n55Hq5vAQJ8Bxd8Murq4g43PQ4yiG2Cj159LIM5gMVaXr7CIZsWoKjxAZkWMMdQ71hF4SaAu4OVbOR4Y9t0zm3gn0+Hiooq/DWAR9N6NuYDJGG9PxhlhIIyM83UJhVN+3k3yXlQdeWCsLwkpFBJarYgjqCQT1eIwXRWEgJ2yjOyPweVeK/9OO1MCFzrTgoa70oIbOtHsZnVlhnj33I7X68xMODZZl/GayOutHi2Vl3/7b8oCUbmkB+u8HYb1xQ7/5+ae42jkRjmPnLx49+uB3T9f3PVtb2vZ8efkXjx7Nfv/V2NWvhfmXrvayb/6tsZzXm9B8XSOaV6NX2fXVVpbx3Y68tB/35iT+qicvfnt3dtwFWuY9uXGBvXmJGf35cQ39eTEDg3mRM0M5oWvD2cFPx3JCnk/nh27MF4duLJeFYUWAHoRHJX5Yf6DIYl9hF3rqHYIyWfxxOpiiDWMukV3n9ljJdxWX+wrBeiXfhVS7AxZIzS+kEoiT9UnRamGGlW7kVYK8oyhuBvKEQFxN1Mi4clPiJjPcQY6nsnEfeFby85k2WCLlz3Xr42FXRIkMB56TzPPx0AtiHEzR89k1z7Af5dI3AvzEPQJy8CmM+R3DqPcR+kwNet5tDLkflDj7kPsBMgT4Oaqy+fY6k9py41jlYQyK+/2kfA6Pe52gc2MjYyGRFHrcTSwR0BdSjDBOm+cAN/YIPi9A51rggcCLBPXzaHFXRa3zaVTbn0ANgb3OWRUVdqdRcOcYMg2OIk3/BFKMThLUzhLQLyqBfhJht44hUPMg7t1UQYwBPWauQUC/jhRzgpy1JinZm7jvqE0w1xegF7rro9TbEBV+hqiiVe5DUPUzQFUgu9/NCdwO4vpm+DLc+zMI6MmuaI9zREeiC0HdhYDuTMrcFX2pBPVUd/TQ6k7iMboe6IhzIjVujnZW5dwzno48XrMjzpbe10Qy7Bvo/ZsI1qy+q3x1JZbPbvbmCFv6XHPU3rNADSn1muA7ci5lXlpIs7iIBKPTSDY9h2xbDQI6GS62V5DjdENUe6rJGaSbnUM+qfUUg+NI0T+GAltS65aqyLU4h0Ja2boHkXVjO/J0t6Pizh6C9h4Zd1tpsltu11rwfbtRa75H1HkdQb2ZFHgLx8ntFf3RuWyROwZ20v3NdLvViuPcewju7FbfJg2MOkixdxLAZagPKfIeZ1LtPDDI7CM039mCNottaLNSzA9gyCuy2Qn0TnvRx8ltdH11OrJrf6/C2PQ7TtfdaTJoVTEdeh5TYRfo2lSTag9OEJXwExuq9L3h9sgTkVfEgGSv1WQE3R95TX4fi6DFIaBILlWj71UMJ8Np0/dGD7NJxlgiQ3gliz1p9D0lQ5uNc857eVgeJLMYVquipXHUdFkMxh5EYYiA3kNA70jxe9ye4rfQRUDvTg9p6M6ISOu9H+3ZVxB3q7807dBwWc6vxspyf/gK6H+jMPmmAuZj33pTA/3m558Hc7741te/9/nn6z//4unDt75YW/sNKfMfQ+Fi/5c/en6P0rX05UjW31uyX8L8r7Bu/wDoXzECXsXV2e3Fs9W53eJgcdrP+h+kvtObn7qvpyD1Wl9BmkNfQVIUWdb5A3kxbQO50SMDOeFz4/mh69MPQp7NFYe/WCqP2litjMLD6ijpBPeoMgSPSv3wsNBNYuYLaeaYTzalZUwgI1AT3LkkbYXj6AR9af2a50ybhj2WM+m5SQxygnHMdcxGckz8ktSZz6aa08ajhREGZeBZhdomWE6SupjgsjHlsJYxcbWTIueEOHoND33hTWqaNquxME1pcclux36vYxjyPy2v49dz8tpEGBkKBGF2o3P52zh9zlQIbZjhdB7RuhggNd7rsEO6z42SQpri50s2vYqUCg14qKDPnTONjyhKhXxPyZHfn+P9i/G3MU+GxiIZLHPJRtLBS6bE0d8xQRvs8D11dPuqot1bFQ2u51DjxDA/gwa3i6ghqBdZnpamKBmGBHMjdrefQ/IdNcQYqiJM6ySCr6vAV+MAAjQPi2KPN72EFKtrSDIjsJmz2/0mspy0ke2sjTxXPQF7kTvPszcSqJd66aHMm5U6x6sZwLZojrSRenVW0X0CbC+0EcjbE1zQxa1+CegdpNY7CfC9aZ7oSXFDOxkCfF87Ab0h1BIt4Zbicuf34LK4rgRHUu3WotB5NYaZoybIUOLk7CVoCLNEW5wLmqLIoKDXVwXeQbkfqfV7BHRvHaRaqBPQz5LRcpLgfQ4ZlupkuFxF3l0tZJNaTzE8I9n/ObaXkGVxAYl6R3Hf5DSyTfjf7wTyuf2r8VHk6XAVwaeoImhX3tlJMN8u7XnrrPagxpzn2++UVaG/TYBeb7FL+qg3Wu5Gp9MhRb03QbyLAU8AbzQhSJsz2HdJyRnDusl0i6LO3Hwr2i22Snin34UUuwP3RNgjvRF6uPxMYL9P+h90ENC5PI0VPYeIhv3IQKTrbZQMzBHf42RoHqfr9DSm6XsxRcatJIKKQr9EcFfHVORluk2AJ6BPRXPm+nVMSUMmLYH2jEBbH7OJBphJMsR0ov6Xv8/xSmaFTkZ3upWihJQM7ZVc+o4WemCVjPXV0iCl6z0K85VxmCyJw1Be+EZ3euCLtiTfx21JfgvtKazQQxp674en9eZFe/YXJmkNlWYpgN5Y9p8A+h8kj70B+Zuf/+VA/6aUGzx69P1nz9Z+yjH0x4/nf6CE9Te+Nkb0aimax3zzz4H6z372a+r8jz/r9+qc41lsNQ+UZf9isCJ3a39Z9vG+kvsGfQ8yvXsLUpJ68+LL+vJiukihT4wURC/NFEU9XiiPeb5UGftitTJ6Y60qEo+rwvCoLACPOHudLPrlNAvMkyqfitWTLPHpWH2x/BczrWlzIDXO6j3XCSuZVpLstpxmguUUA8zG0uYTeUU6r4mSVrrJZ0m5c0tK6dvuewz93gRR3uwIyqMB3MjlHD2mULzc452zeTljfiJeDxPRNzATryt94SdjbmPk3mWBuiIh6AyG6fUcc+T34sUxySn6bI6LD3OsPJAMhfDbtIHvFQXV57wLQ54HpZkNJ79xDTyfA2fS93PTDjcVDPmcwAjfR+c4Su8zn3AbS8l64nWY51nv8TpkYFyVUZajdM6TUdcwFHIFXaTQu/wuot3nEpo8LqLR7YIC6C7nUWp3HnkWZ5BJYEplaJFCTzS9IEAPvX0SQddU4HP5ALwv70fIjWOIMjiPRDMNAXuc8UWkWmkS1G8jjZR6BsE9h8HuoociT4K5nwmpdX2UeOqhwpcUe5AxGgjErJZZrTeFWwnAu1M80BrvjKZYJ06EIqC7oTXWEY2RtuhK5tG5HuJqb460R2O4HalqLj27I4q7hSDeRFBv5wY2ZBSwa70m2IieZyYGBMO8zEcH1YHG3KSE3t+F3tcelQT0Im8j1NJ7lfnoIZEgzomAEbrHEaVzHAmGZwXynB+Q53ITyWToxOtyS9xTuE9AzyS1zkZQqvZhZOkfQa6xCh6YqaDc4jCqrQ6i3vYgagji1aYM9J2otyKVTnAv09sqc8dLdXnW+CfSZ71c533pwd7uQBB23S+dB3n8bo3+e1JbXme4Bc1mOwjuPORnm5SeNXF9OSe02XASJsHakePr++i4X/oZdDPIXfZJDXm/+2EZ28sNYrgsjUNB7F4XoNO1yEAf8uback7IPKaoOfei641j6XTdcwiKyycF7mTUyncpSgH1yeibmOQZCZzFnmSEuRRTzKWaSXdG6dBIBvA0Gd8z9L2dSyLjO81SCXQ2wJ2lOuVhiQ/Wir1lsNJDnppYFYeF6hRMlsZvDOZGvujJCH1MynyhOyNkpOd+RENPbkxGf0Gi52BxutZoRc6h0cr8X09WP/gR92f/G13uX80Kf6PM3/z8s4A++6/SY/jJkx+yUmeX0R9Znsp+xNJQ5hXMld3g/gjGyiYzf+4L8VV3+1ef9ypRjtU5Qf27I9VFPxmqLHhrqCJv12DZfbWB4kzL/uLMkL6ijOzB4sy6kdKMgeGSlJnxksS1qdLYp3MV8c8XK2I2lsvCyWoPkgS4tQI3gfQiwzzlDm0YZpim40KGLW0MnN1+l5S7q8J9l++EtVwHLKebE+gMRJXPxt4k1cs13LwZaRDU2R3OMcHLUpM+lWIlY1H7SQn3uB1ED22AnNnbw0MpnA7QfYfpcYI8wZ1jhpNJ5hiJvIUReh8e9DJBayziKql0Bj4rfVXlXPWToqYHub+193GB+kgg97k+h1FanAU8GqGFLtdj6HY5iEGPY5LVzpn0czFXpURtgj0DYeoYpvcc4KQjj+MC+EGvo7QhnxbXPhssS0k6WJDEvtsYpb9zgAdo0GezR2GU/tbewEvo9r+EnkANdAZoosNfAy2eaqhloNurIt/qLDLvnEEyAT1e/6y41iP1ziKEgB5w9TC8Lu2D+8Xd8LtyCCGk2mONLhLM1RBteB4Jd0ipW2oi0fwKEi2uiGLPdtIiCOqi1MeEYGkkLnherIhr7pkTUK3REMEgtkY7qe6eNC90JLmhKdpRYNuewC74u6gPtxEAdyZ7CYzrw6xQHWyOanqPqgATgrYN2hj8pMbrQ8zo/WwF+rX3zESF19J9lQGGKPHSRZkXqfRIO7SRsdAc44KKADM88NJDXagFKsnYiOUyPYNTiNA5gQito4jVO4k0i8sCdF7pVpcJ6qeQoHcMcToqyDJTRQ5BPfHmHqRr7UWh6RGUWR1Dlc0RgvkRNNofQp3NPtSRKq8joNfe2YEqo09QdHsz8nmoys1NqDH8SErQKrQ3E7w/VDR4sd+BJlLfXIJWb8KPb0E1PVZvvE1aubbc2SqlZuxC77bfJeq7T8od6ZrlTHS6ZtvJSGyTjm48YIXj5gdFmffcPYh+qaIgmNP1MUyGJydyckLlWAiPCL6ouD4Dz4rHisNF43Q9cv6G9GFQGqSj3EmRrsuJSHbDXxPjlvs5TCXoS4vl2dQ7mKI1TXCfod+n6Xs2zQlxBHQu+RSoZ1hh+b6DJLiu5t7FKufHlAZgrSIcazVxWKlLwUJN6sZsVfqLifKUp0MFcUv9edFjfbnRTX158Vl9D5J9SZ3rjVTkHx2vK3hrur7sx38r0L+aD/QG5m9+/lnudgXQ19a+K8MDXsvQ/NIdv7j47RV6TLLcGehKZf51bqUvhxK8Bvy/L36Ob3A/+B76Yg3XFP5guLbs50PVRZuHqh8cGqjKuTFYmesyUp4bM1qZWzRWldcyUp41NlKaujBemvh4tjzu2VJF7IuV8siNFQL6SkkwVot8sVLgLuVmS5k2WCaVvsqZsfTl5yS59RJvOnpivYh+LyCgc+Z6piUB/Q6pc0MsJmkT6LQww0lvHBvnzmv+BFOfM9IFa9D/ImbS7aXcht3YPL602/0I+jyPEchV0OmiGBXZQZsk97Lu8yalHW9MML9Om5qG9Koej9DEBAF9lDbFYVLG3KaVXfii0rmvNd03SMqaDQLJFKYNUZEtfJ42QT05B4Y1v4Y3Vz5HcdWz65/OezbmBiaVpWnDfgrFPiIbsaokLC0m6kpyHBsv7AIdCTovYyy5lIhrgTkxaShME/33rqIn+Cq6AjVltflcJoWuihK7c8gxPy3KM07/NKJ0Oav9NMK0TyH41nH4aByC+4U9cDqzU8AeeF0FYTpnCOYXEKF3DjEEd4Z6rIk6Yo0vIc3mGjIJ6hl2NySmXkoquNiLlqcBHQ0IsMaoJYjWEcwbo+wJ2E6i0DtTPNFMEK8LsyHgOtP9d0U91/Nz4gnCpN7598pAjoFbSgy8LsQCLbEOovqrAozovU3JYKD3DrFEHcG+ho5VQaYoJ2A/cNcnY8CKPsOVjIO7KA8wp/t05X348QRjMmK0jyNc6zhCbxO0ybBJNVfHffsbyKe/g5vqpN4hA0b/JCKu75cEwjwLVWkmk3F7Nx6YHkKlzVFU2x5Gg+0hNDkeRpMDHW33iUu92vBjKUvjcab5mu+g+NZ7AupagnqtIfdc/0R6qtcZvIdKnXfRYPwROmx3od1mJ5rN+THF4uErnBzX77xfyiRbrHaS8j4k1xl7k/q9jqPblcvMDsukNF482Gf4VQthUdxqCiBHkNLmxDVanA8yEcZNizTkWh6l61FKJ8l4HCTFzos9Q0M+/L05qfBA0XtxEtxkpKaEn2bYzZ5sgpkUEzG6pxKNMMGz0KN0JNNdvjec8R5xkwwBLUzS9T+TaIr5NBsssXetxB9r5WHgcNtKZSyWa1M2luszX8zXZj6dKk9bGilJnhgsSmwbKEzKHyhKDR4qyzYZr8o9O1VbsGmsruynY21l3/175lG8Afqbn39+/PwPOwz9EczXSbVzfboAfewPMzj/FMz/Uj/33wP765/z6vGh+vrvcExrrLnsF6M1JVuH64tPj9Q90ButK/Yer32QMlZTUDFSldM1WpE1NVWVsTJflfp0oSrh+WJZ3Ivl8piNlYpIrJSGEtD9sVLoTV92dyzneyhqVws8xD23/mXWu6tY+Sv3bbHEGbSSxa4rZV3cVU2ar7DiCDgjimSQNz4GOM9ypo1vKt0B/f4EYwLscCDB1f88bYw8Reo8BgIuoJfg3+15QlF763sWkwl3CJQMdHWMkILmxaBm1T1ESnyINr5hgi6763kxqLn5C5e5TXDSncTlz0tWMG9249zrmiEeooA4lwQNePEwFsXmO8kxf1pjMqf9vLjcRVmRauKY5pSsq5gllcSbKxsOgxzPJwNlJIQbe1xTbKYRtzEQcgPdgVdFobf6Xka96wWUOqgi2+IMEgyOI5LUaZj2adwjkPMKun4MnmoH4HR6J6yPboXzuU/hffkQ/DWPKp5HCp7hHmOkhiiCeaQBwd1cAykE9SRS6+k2N1DoTiD3NhGoP/Di24YEVgtUh5BKjyR1TcqbFTmr8LZkT9RHEqCjnNAU74qacDvUhtsTzO/SfQ70OktUBN4hCJtLlnoNAZ1BXxduTe9PxoOPISr8TRRgp8erCPzldLvczxQFBHR2sdeE2JCSdyajwAYPPPRR5mtMQDdGspkawgjk924eFaAnGF9AoslFxBurSmZ/CsE90eg8YnVPIvrWYcRpH0Gm8QnkGKkgW/8AHtw5gBpbFdTbEdDtD6PZ6QhanFTQzBPwuCRNbwvKdD5EqfYHKNV6H7VGHxO430Ppjd+gnBvDGG9FlfYmVNx+VyaicXY7A72NjpwY12LxKVqt96DZajfabPegz5UT23iYD6vzYwTek/L/Lp6kwPOKLm5+p+R6GgtWKO8hCQXx9agqeSGSiU7fj7HQK3RN05GvaS599D4mw4I4ea7XZb8kafbf3S9rkJM0vVQU17jfKRn9y/kaU5xoGq+DOWnUZCXJozOpVpgkYI/F6JNReQPDZFSOhF7DcIgmXZua9Jl07UfwOGNjLGTYYSmfy9gCsFIeiuXKaCxXJ20sVCW/mKtKeTZVnroyVp42MVKe1jFYmlY0WJIWMVKeYzNWma82WVO4dbqh+N+memq/x+NQ34D5zc//TjD/xtclcXx5P6nyR48efZ+7wzHQlaVr3/wLrqa/Duikynv+hFv+94Neyr411tb23cnW6h9NNtX8aqyxas9YY6XaaHOV+VhjefBoQ0n2ZENx3UxjycBsQ9HcbH3u2lx15rP56rTnC5VJG8uV8RsrVdHgkrXlokAsPSCoFwdhlRV7MSn2Qk8s81S1PFcs3nfCIm0EXBc+S+pgJlYb01E3CZAEWlHip2hjUlG4JF0OotthN9p56ARvktL1ai/GEy3RF3RVul5xl7XBIAXUB6Un9XlJMhuQmtoL4mafSbWQzY/hOhR0Xtzhg34nJQY/7HtcMbzFjevKj4uikZnqdHuYDAoGOwOd1TarpClSKOMRNySur4jtq8mGyu7yfu9TinaatDHzRtznzffRJu2jUGK8QU9JbbyaIvM95KKodjYO2MDg8xoOps8KI6CT8hqJuI5h2jz7Qq4L0Nt81dHseQk1ruootL+IJCOCM6nTkNsnCNgqCLx2AgHXVOB6fg9sj2+D6cHNsD32MVxUd8P94j56zjF6/BiCb55AKCn1SIJ6hMEFRBqqIc7kEmKM1RFucB4pVpoo9CSY+5igyMtYYuvlgWaoJDjXhtoJwBujnNES5wYel9sc64q6aGc0slqPdqLHndBIv9dE2BPMLQjOJgRrVvi2AvtGgn8VvVeeqxYZD7qSjFfmaygQryCglwbcIdAbk8rWR4GHIYp9CPCk1GvJmGCVXkLnVRVoigwbTfr7T5ARo4II7TNINL2EaH1VuS9K55SU7YVrnZTM/2htFcTrHEGK7gHkmRxFqfUpVNsfQ72jChpoNdFioLcqgV5r/ikq9T9CpR4t/S2oIZg3WuwUl3u59nsyv7xK9wNUaL0rI07rjD5CO12bnQ770W6vcJ9LhzZS3b0eR+XIPdS7pdGLihhvPJWvj0slfdlLpHCPj/I1IW708/KcbnotD1LhXgWjwWxcqgvU2SjlJjDspZJw012Ov++XFrACdlcujdurGCLEde505CTOvrt7MMTtin1PineJv3tcTrqYaiqJqnPp1tK3nb8zk/HGpNR1MUrqnKE+EnqTjAAtTMfoYiaOY+8W9H12pO+3F1YrQrFSHY/FiviNmdK4F+PFsc+GC+PWBx8kzAwUpfQNlqRXDJfmJI1U5rqMVedem6ot3jNVX/xr3nP+Hrf7m583P/9EV/sftyr8EuYEcK4/5yWla5Lx/hdc6K8B/S+63L+S3f6ngM6W8mxP80/GO+remmytOzTd2nBtvLnGbrypMoa+dEVz7TUt822VI9MNJQszdQ8ez9fmPJuvSX+xVJOysVKTgpWaJIXbrSxEYumrxYFYfuArCn0pn1u7umOeG8hk2GOWJ6jFGWIq+ra4v1nJsjtwULk59d49JI042HXZziDnaVLcYct6N1ptdmEwRIvWbfR4HJcuVyM8UCLwomx43MaSFY6Ui9GmOBp+RRpjcH/qUQI938/9rjnJaMD9oPRuZ9dkv+t+DLgqFA2PW+3jWl92V3JmMcOdW7TSa8fDr9Mi5cINanyPS+Yxx9E5Ma/f54QS7MdkM+ZNmIewDPgqFsfqebOe4tI6AjmXtnGG/WgQ17erScc4bv4xpgwLjEXewGikFgZIKXUFaaLN/wpa/DRQ566OYgc1pJuelSz24Fsn4KN5RFS431UVOKvuInX+EUz3vwfLI1tgd3IbnM7ugJvafniRWve9ooKgWycRrn+B1nmE6aoinAAfTFD0u0YGgtZpyYLP9zZFPgGV4V5CsC0jqFfdsyYwO6ImjMDOEI/3QEuCF5oI7gx1XvUxBPgoR1SF2gicWVHXcFJcuC291oHUuQMeeBogw+E6clx0SKlzzNwAhW56KAuwoM+6Q0aEMXJd9ZBzV1dWAZ1DNX0uQ73Ez4wMDHNkOdxEmM5pOt9TiDW8oIT5KYTcPI4g/vfQOEBGzhEp44u8dQQJBPRU3YPIMz0iJYAt7ufQdPe4rBaXo7IaeZyt7X7UW+1BndlO1N3ZQUvRurXeZNuXI0prjVmtv4+KW++iUvs9Ue41eu+hwYTBvhtdZIx2OR9Er+shRfUDwVvR3OWcoupBmrqcVnif2ADkhE6JjV8UJT5K1wM/t9db0dFNev7TtcHVGa8e49dz3kef1zH0cYc4NwXMOamOVfqrhjSddooad2513Ov4qTStGaTn8kTCyTA18YzNxnGJp77kvCykWWEuzRKTKeaYiDXCSDjnn9wQLxd7pybJCJiO1aXnKxLmOKy29sAbD0mlr1ZEYbk85sVMSezz8aL49aGihKWBouShodLMhuHynKzRilz/iZoCo4mawuNTtSWb5trKfsp7T88/eGrkm583P//lMP+jGnNS5gzyp0tLP+KjqPPXXO1//fv/maS4PwdzJdBnm5v/dXag+fsLnU0/m+6o3zzb1Xh0qqNRa7K1wX2msyFppqOmYrq1umO6pXJspql8Za6x5OlCfd7zxdr0jeX61I3VhnQ8rE3CWhUBvTwMK0UBWMy+i6lUG9oUrDGdZo+5LG7pSkDPdMB8mjVtHKaYjdeTpDCuL5+UOvKL4mpngPLGxMlD7VY7COy70G67V5pzcJycXYFjMYYy25l/7yMV009Kh4HJCmacy9YY5qScGeRzBHQpaZMa8/MKONNiYI8o3ZDDPkcxQhvcsLcKBmlDlCVlaIfl2CtxzcMYDrooLWD5PbjjHMcsh2WDPiYb64APxzCPybhUSWYisA+xW5XOTYa3BL2KuStdqoFnRb0PEth5U2e36wht2orkJe7WpYWhKG10kzpqJai3BFxFvacGSh3VkGVxXmrPQwlirLwDrx+H95UjcDi7ExYqH8L0wHswO/Q+LFW2wIqWw+ntcD67Cx4XDxDUj5BSJ/jpnEWo9lkyCk7B5+oRuKodgLv6AcSaXUaWqwHu39VHNi2GepG3sQC6KtQWFSE2qIlkN7sHWpN90JzgTorckaDrhIZYN9SSCi8nFV4aeIeUvQWqSXlXkjFQTa+tCbHDfSctJFpq4L6zjngACtx0keV4G0WkxgsE5vrII4WeaXdTsvIz7G+hiEBfQ8ZAeSC9L93OdLiBKANVROqfUyQEkmFz78YxBF8/Cp9L++jv3A2fy/sQqHkY4TdUkKx7BPeNjqDI/AiaXM+h0+cC2r3OoMP9JNruHhOFXm+9Dw3We9Fgs09i6c12+0iZfypzxxstd6KFx+mSAm803yHx9EqdzSgntV52812UXv8tao22oM32U8lc73Y5gA5lkhvHxFmNM4iHAs58ec0O8rWnDPOwsceGHSd/jocp4uJ83XClBht7w+JhuqgAvbRuPf5aIudxAXoXqfEOu09lzGqLxSdkDPPUtu1ot9yGdouP0GXzCfoc9xDUyYD1OCjllrNRVzEXexPz8bdJrRtiKc0ci+mWmCe1PpNkjslYQ0zEGNA1qY2JiOti1E5EcIdGbSlv48YzXKv+sICT5Py5D8XGclnki4WKuKczFckrkxVpE+MVWW1jlbmFpM4jJmsK7SZqiy6QONg+11r5y8Wexh/yHvQG6m9+/jsD/fVm+19TLjYmJWxch85AZ5e70tX+V9dW/jXZnn/q8Vf38Zdosafn2/MdHT9Y7G75+WJP85b57tbTc13NBrNdzd60MgjydVPtdX3TbbVT8+3Va/PNFU8Xm4peLDfkbqw0ZOJhE626BKxVhJIi98VcpiPGOW4do4/xxDvy+1KeG5a5gUyuE1n0DljOsMAibR5z3MSCY3nhygEmgWck3scxwC7b7WiV8ZG0KdHGypsjxyK7vUjFxhij6+5RdLoQ+Nkl6f37JLZhnmrGKpyAPRV2lYwGA0VCWpiabJgM/Al2oUscnDZRBr8kt52n37k97GlFXJ0z5b2OSrIRu825T/boPXUCrbZkrA9x8hFBe8hLkXE/IDXtZwjuJ8gI2SFz07vst6PDlge/HKDXnJQMZImxR9N5xdDGGH5VNmsGOi/2IAyLIaJBSog2zxgtjCWQ8RKhg+YATTT4aaLeQwMVLurIsbogrV6DSZH6XVUodA9S4HantsPs8PsCdNOD74nr3ezg+7A6+jFsT+4kBb8XbpcOwlvjCPxunEQgwTzg+gl40H3O53bB8eynCCAFn2RzC2n2Wki2uUkqWU/UeoGXEUHdHEWkpCsIzI3xngL0elLoFaH2KL9nh5ooFwK6G0qCCLxB5qTmbUWtl9HtYgJxib8F0h21EW+uISpc1Dip8AyH28ghiGfTffdddJHnbohkS01J4uOyu3QCfnmgNarC7AXuabbXEWd6CeG6Z3GP/g3u3SSg3zwmLnj3i3vgdn43QX0PfNT3I1LrCNL0VZBtdBgllkfR7HYWHV7n0Op2ikBOytzhiMwwrzPfI0Bvtj+ATrcjaHM6SEDfJVBv5kErltslqY3HpNYbf0THbagz+hg1BltQqfuBJMxxslyb9U6pT+es9Q6HfZLN3utxTFzkbLSxMcrXU4+rwhXPUGYvlSRk+p8RaLP3iasv2PMk+R907Y3QbQ7t8FzzHh6Vyp4gWj3unAy6D20E8xZudGO2Aw0mW9HI5XN0nq0mvD6UxWNZu0mx9zsrOs5x6+Op0AtYiOVOhnpYTjfFaqY1VrlULcsGSwT3OVLuk9G6pNI1yeAgYzP8hoTL5hP1sUjG+XKGFdZynLBW5I3V0nucJPtipTL22Updyvpyw/25+cacvtn6nIrJ2vwkUufe47VFtyYbyo5MtVeSSq/76Vpb23cllv431KS/+Xnz889S6N/4I9gr1TkDXWCubC7z91iof+41fw74r5rXMNAXx3p+uDzQ+Yu5oa5tCwMdF+b7Ou4s9HcEzve2Zc92tbQQ4IfmuhrnFjpr1pfbq58ttZW9WGnOw3rrfaw3Z2CtJhYrD/xlZvJshh1mM+2wQLc5dr5W4oeHJcpyNm7tmmEjzWVmuSaca2LDr8hm1kcQ5baWnaRw2s22osXkfTQZbEKt7juo09uEBmOGOwHSWYUMBnPayM5JHflwkCKJjbPhZb6zH2fEK0rKWJHPxhtIORlPlhrkRLoATohTE1f3VOQNOgduR8teAnVFH3Z2hZNanyAlNU6bnWLYivqXo0+HAtTQ7bwf7dY76Hy2os18i3T44h7bfXR/tyMpO5MtqL35KzQbvIUOsw/QZb1N2nuyoTDFLWq5FSwpojlu5JGgT5C/Ia5UXtLxLpzrhm9gPPYWJpIMMRith1a/a6i4ewnljhdQaH1OSrKCSI16XSZVTYqUk9/cLh2A7YlPRJkb73sXJvs3Kdd7MD/0AayPfQyHM7vhcG4PnC4cIEV+SIwAb43DcCHQ257YDtvjn8Dl/H6E6qoi5s4VhOmrIc7sCrJcdJDrZohcDxOCrTEKvO+QIndBS7IfaqNdURxoheIAG5QS1CvDnVFOwK8IJgCH2KKc4F7gY4JsAnU2qe8MJ20kk/JmoOd5GBDAdZBJqj3LSRfpBHaGOhsQCQRsycw3vogkMgAKvE3oMx1Q4mdOyv26KPRA+jfg3IF7pNDZuOF8Atfzu+BybqccvdX3IfL2YaToHUK+6RFUO55Ch7cqwfwkGuwPopZL1az2Szc47gzX7HAIHXdVJHbdQSBucySlTf+nDOc2MtS4DK3B6EPUG3yARjpyu9cWMzbg6PUGH6JK6216/AO6/2MyRPeQOj8uTYbYKOUWsR0O+8Xb1GG/T7xPXI/OEwC7HPdKNznuDtfLMXcyGBnonJzJyZMSkvE7q5hn7qGYby4zAPzOiYHQRZ/R6XCQznO/jG9tNN1G50HnavgB6vXfR73ue2g2el860fHUtj6nfdIkiUNOYwGnMRtxGcvxOlKFsZRqhJV0bgTFCasGmCTjfDhcC4NB3MlQDcMhl+l7Q9cvPZ/7TCylmSk6yfEUxfKAjbWK8I2ViqhnS1UJjxdq0lYWG3LGFpuLWuabSwvnmiuiZprLbWZaq9Rn2mt2LXTV/3qpv/VHK0P13/m6Et03P29+/jslw30dSCURjhvLcF93KWVT9iX+X36OZBGvDA19Z2my/0erw72/Wh4Z3Lky1KuxPNprtzzSE7Y42FVIYG9b7GsfWexrXFjqqnu83Fn9fLW9dONRaw6etN2XmeerZaTOH/hgkZS4xMpz7sqRZygvcVIc359mjSmedR6jgymCqLRwJQU9GnxJQNlDaohhyBtOI4G8TvctVGv/FlW330E9bUpN5h/TBviplKONJ5ihz/e8qGE2BoYDFAqX3Zis1jk2LeVotKZj9SRzfoQgPhCgjn5fNYHySLA6KR8CeZQWxsM0v5xprlDq5zHGcXLPw+gndc0GwiSppCFfjs+TcUDGRLfTATSbfiSbZLPRe2jQexs1t/8DpVf/HeUa/x8qadVd/yVaGOrmHyobiuyhDfSQNKqZIHhzb/slzjJONhaAs7tdEvC4ax3PUY/UxCQZPiMxeugMvokSJzWBebbZKSQaHIP/1cNwIxXqQuByUydAX9qvUOhKoJsyzPfxehfmpNI5893+9KewO0tK/ByB/exuONHR7eJ+2J/ZBUuVj+S11gR1bw0VhOhcQODN0wjUOo04y2sEXgOCrRHBVxeZLnoEcRs0JfgS0N1ItVvT73a0bEmd26E63AU1Ec6oIMA/8DUTYyCVXegOWvRaXVL/N8VIyHHTI8BrKR6jlWx9XRR6trMuogzPC9AjDc5Lg5xMgn0xKfySAHMkWV9D0I1j8LnCWfxHRKFzlr/vlcO4S+rc5dwO3FX9FD6X9yP85gGk6x8idX4cjW7n0OGjipa7x0iZH0K93X402B1EnY3i2O5CAHbnKonjMv2O4+Gc09FBkOyg66/e8H3U6PLY0/dImW9GnT4Zb3oEeMOtdPsDlGj+B0qu/0YebzD9GF3OBHOnw2i12UNA34122z3SVa7Tbo8Av4sUfD+p9S7pDrdbYt48tIX7vnPYhpMz+Xru9ziOTrrm2ug9OItensvDX7iOnSDeToaCTHwz2SaGRT0ZG830+c2mW8XwYLC30PXK3eq6bD8hoO/FsAdPFzwhEwjHg1Sl4+JUBLvgtcX9zu2J5+ja5Mlrg+HaGAzmLosaGLqnIa53Vumc3DrHbWKzbKVE9WFpAB5WhBHUI5+TSn+6VJ2yvtSYMzPfXNK30FZZNddRmzbfUeM911VvMN/bdHqxp33LUl/7v7Go4L0Ib1zvb37+dwH665ntr8rUXnO1f+O/6lz+5DnSl4e/RCvTQz9eHR399er4yL6lscFryxMDTkvjAzErY/0ly8M9XStDXRPLg+0rKz31Tx92lj9/1Ja/8ZiU+SOC+VpFmCTBLeW6Yy7THjMZ9ljIccVirpsAnkcvMswn44wwwWo46qYMZ5mK4lGiN8WFx5m+3QR0Lvvh/tYN+ptJmb+HOlJB9Uo3ZqvlDjSS6mkw3YL+YC1SUNxu9Si99jiBnZb/KWVS2klS72cUit37FIY5QzeYa8S5BaY2qYub6A/QILhfFsXBUB+mTWqcjIsxgjoDlUMArFqGvFREwbD7nWvJB7w4O/mcrH7PU6g33ooanbdRdf3fUab+czy48P8i9+z/g+KLP0O15i9Qe/1/oEWfgG6xBd32O6UvNyfjsZuTXf58TvOJelhMN8HM/8/eecDGeWX3HgiCRRAEecFik7dvs/F6vV63dVuv3CS5ybIsq1KkKFEUSbGTYu+k2Hvvvffei9ib2HvvvQx7G5LDIno0+3/nXspBArzkBXh4CQJwgINvOJz5Zoa83/2d/72nZBjzaHyWTseqfLEmM/NJ2vR3M8IsTagjsfqo81RBkfUD5FneQ7rxHYRq3OBK1OPBJXgr/cCj2d3ufwu72xdgTar8J7P64WPY3PgMDlJfwJmAz5bV2fNc7n0DF1L0bgR5Bnp76S9gef1zWN08Tz9fhr+6FII0pOGnRsA0ekiw1eUwz3HWo/s6KCG13prkj5YkPwK6E4HcGZWhDqgOc6THvdCR5o+GGFeUBVpy5Z1qrYZMRz0UEKw5wF3Z+Yzovj7SbTWRbqOBTHIcCtwMkUPnjycFHv9yn5wVzcm00yLlboWyAAu+ahCiLY0AcmSCCeIRujL8GKh2E96PfoCnwmUC+xW+5J6ifxMlVndQ73IPvYGK6At4gH6yPlLpXQTcbhbd7iGNPoL5kN99gvk9jJAxZT1ICr3H4Tt0WX6FTqsv0WT0MRp0ydk0/hyNBh+jVuMDVKq9jwr19+jxj1H/+E+o1viQwP5HNOp/gk7b79BPTkOPwxXeiW3cXxYTvtK8teowKfVR1nXN/SrvBTDhdwdjrAQs/cyAP+L+Ay8lPMG3dWT50j17vM/xWx40ytqvdlhc5J+lyYjZZ/w96zTfRb3We3im8yF9JjK9j2icfoJW+ryd5p9hyOFrTHj+gBlyLmfZtlIYS2VjNRT0TuNakvXI8dbjq0esktxS1hPMp1thLtEIcwTyGbpmWTbGUrIhV+gsJmaj0Jn3ZWDFpfaeRWO3MVG825J2stOWKyKgb2701MxsDzT3bY20V2+MtidtjPV6bE4OaW9OjdzanRk6t7sw+dr+ysQvVl5m+Zwp9bPbfx+g83x0NnD///f1/XeAznus7wkEPxfOzb26uzhzTrg4J7W1MG2wvTjjt704m7W9MNm0Mzs2JpweW96ZHhLujrYf7g3UiPd6SyV7nTnYIZhvVYdho5LUeak/1opJlVcEnj5W7ov1YnesZNvxYhQruXTMMCdIsTQYlteqSaaN2WiNl0C/wXN4u22/JqhfQi/btyRrsfgSzWYXuRJiE2mNxrvo9VJAv/cDvnw5yvYh/aR51C+zIZ+76HOnyZkmaRaxPBCgiLFQFmime7q8ncJScQzJuTDhNkOqYzxUmed/L7AccNZVjUUTk2LhleLIYZhh5WUDZTDuJ0Ugl8MowWCUVFyX7RXUkSKrUHoNpQ9eRdnD11Cn+gaB/F20E+h7SbkP2n6BEdcrmPC5xZ2Cn4p/sP1S1hGLdY9bJaiz5c0lUuwzLwuJsJawS+n6WMwywWy6KcZoMm3000QBAT3d5C4S9aUQQrBiMHe7/zW8SHX7ENRZQRmmxJkiZxC3ZkZQtyGzu3WeR72702ucZb+C092LcCKIO5IyZ8vtbJ/9CcHc4jq9hpwCF4K8txK9h8I1+KlKIcZYiQM3i2DLAJzjaoBn0R5oivNGFQG9KswBVaHMHNFICr05yQfPYty4mk+2UCGnQAGZDnrIJ6eAATmdAM2cgww6Z6K5ChLI2EpAlrM+Ei1V6P3keSodi2YP075DDoE6Cr3NkeWki7Qn6vz3AQRwptIjSJ0Hqt6ELzk13gpXeTyAj8IVhKpfRw45P2U2MmjylCd1rsRL646GEdj976PTUwaDAQ8xwh4niLPl9n7PW+h3v8WVL1vG5i1RyaHstb3E96Wb9D/lqrxa9X08VXgbuXJvokT5XVRrfohy1XdRQVap9h7qdc/x/PU+R1Li7qT0yVj++Sw5m0ME9FGvGzxFk20zsVap0wRutq89zirFsd+Rip7wk+JR8qME8zE/GVLut7jCH6DXdJEC77T4gl8bTYaf4xl9rmf0nrVqf0D5ozdQ9uhtlCu/g0rVd1BPn+2Z9kdoJLi3m35K3+VLjHtcxRyNRQE5kUuxKlhNJHWeon+aSsqK1iQZ8GJKc8nGdDTlq1msF8IMKfSZWA3M0zXFslVY1Ptani22n7oR1L35Xvp+Q4xkvyVVvNeWfSjsLBJu91Ut7wy3TG2Pd3ZtTfYV7UwORwlnR22F8+Oqu4tTV4RLcx8KV+de3dsT/Pw/Ghx8dju7/adC/d8B/V/+W3vs/5l7/MwbFq1N/wNB/fX95fnzO8uLcjuCOavdpfkwoWCuYG9pqkO4MDklXJhY350d3dsdbTre66sU73YVQdiUgi1S5hvlgQTzAGxWBvJl9+2acKyzNLUCJwgI5GxCWMm0xlKGNSajdTAc9ohMGeOkjtny3USYAl9G73O6ytPTum2Y8riMJpqkamhyqjf4hEcUt5icp0n0c9ST6uh2oYktSP2f9yOZihryleYTcg/BfMhfDiME3QGC+3SsHsFahyYfUh/prK68KYHSkgDKlrpt6GdzHsE7TU4Ga1zBJqz5aDW+l83qwbM99WmWFuTJ+qP/cJonHyDPA/KGvO6g1fJrlKm8i1KF11FLKq1Z549o0fkAfeSYDLOIZ6fvMO5zBzOh8qeV41iwEyuUE/hTIJ8Kr/q1km6E9ewnWEw15I4Fa325lEJOSJYZBFmWmEqzQHuILopsFZBkII0wjZsIIqB7kkJ3u/cV3ElxexHEPAjsLne/JqhfgP3tz0mtn4Ld5uZnsJO6AOe7X8H13iU4yXxJdpFgfpGedwEOd76EHd1n6t6GwG95g0XIf0nnO12ad5G7QlC/jShjRQ5WBnQG3qpQJ1SSIi8PdkBZkD0qQhxQG+VGat0NZcH2XLHnuRvR6x4iyugBAV0X2S4GiDV7hDQCepqdBuLofpSRIj2HHrPVouc8RpThQ4SxnHljFskvx9V4shUpfAdS7izVzlQRSebKBHoCufrtl0C/wfPu3R98B08yBvQIDVYlTgYV9vfQ7qeIQXLuhkMVMRRwF10eUuTwKWA8XBVjwYoY9pFFj/MP6HEl59JdiqBORo7hoPttPtYGnK+imy1pG51HtfoHyLrzKkoevo2SR+9xq9H8E8ppLFRrETz1P+MwZxBnBZFGvW4TuFlt9tuYDLrHa7WP+xKkmUNKAB+n4yRT42x/nFVA9GTpmz/wwDmWwTEZxMbMPUwF3ceox3UMu542hWmzoGuD1DmDOnOEu60v0fVyEeUaH6JA/i2UKLyJUqU3UEFgr2ErBwT2Rv2P0WZ2Ab2sLC05FpN+tzEfdo/3LliKV8dysjYvfMT6HrDaCwsE9HkW5Z5kzK8jtkXFehCw1Ta2bbScZszbIa9lW2EjzxobRc48Zma/Plwsak442e/IFon6y7ZFI40C4UTnyO7sUINwfiJPuDgVsr88Z7G3PC8vWlu6dLAueP9oe+nX/y8xRWe3s9t/iXL/rxysPwGdVaU72Jj7pWh19Z1duqCEq4vKwuUFp13BfNyuYK5UuDTTI1yaniEPenNvZlC0P1R3st9dJNlty4KwIZGUeCTWCehsiZ31NF9jy+tl/gR0X6zkOWKWTQRki6lmmI4zwDhTw1GadF+XTwwzpM7HaaIa8ryNXlLT3Q4/oOMJq9J1gRfvqNP5E+p0/4RW8694BHG75QWauD4n9S2L0fDHvPJWHy/ocZOALksgv89BPhaiQBP0Q4wGK2A2Xhezcdo8j1aQZo7lTCuC5BNs5Nry5hPLGVY0cRE0WW4t6zKVYc5VM+uuxsrPzrJa7Cwi2f17DDp+jQHHbzHkcw/dtpdPP7fTddQZXETd43PoILi3sWhno0/5igNrrDFGzsoUq9POysiS+p9mefN0ZOVsJ9mePMulpwl7geXMpxnwFYT5ZEP63Nr0N3pMjpAZFgjoM2mW6AjTQSEHugxfSvZTvgpfpe/hKXeJgP4NPAjoTJm63b9E0P4KLjJfEKgvSAjsEnupzyUOdy5KCOQSV9lvJAz6LrJfSRz57y/CQYpgLnWeHx0J5Da3z/NAOgZ/tvzuJMuW6r/nUI82eIAUK3VkOumhxO8J8r3MUOhjiacBtiglqNdGeRDYHUmJm5KitkC+uzESXir0lCeaSLXTRiQBOZXgzSrWheve5xZpePr7NBtNhOrIIlCDHAiCebQhKXT6OcH0Ean4Rwh/fBchmlKIYSl39FmCtcjB0ZTmCv0U6Jf5MUD5B0Rr30SuhQxqXeTRG/QIIxGqGCKgD9BY6SfHbziQnDPfuxjwuIVel5vodKRx6CqFbrc76PW4Sw6iDIf6AFPsLLCNnM52ci4rlN5C+q1XkH7nt8i5/zbyH5ISVvuAxsGf0ExjgO2zt1tcJAjL8SBMtpI05M56nN8hkEtzkE+z5kCspHHAPe4o8ipyXrf59tOQlzQ5GKw6ojQPhptmlRDJEZim62XS7w5GXo4vliLX9YTGHTm7LYafoln/HJrICW4gxV6j9SeC+bsoVHgLxQpvo0KVnA5yROpIqTcZfkbj9Sv0OHx/unIQJMvHqIB1BUzSIqX+mG8Hrb1s4LKcacGvHxYgt5hshMUEGpsE/VXuiJpjI4fB3BabLIOl0Bk7rJFLla9kvyFCfNCceLzfnr530Fe8vj9aP7c3098nEozXilZnMvZXF31EG8sGR1sr0kfb6+ef766/9lOvi//suKKz29nt/3np+78M6HNzfyUUzv3d8crKK7srKx/trQqu7a4vae+uLngJlxZSyGqFS3MDe4Lphf25kW3ReNuhaKhGvN9TKNltz4GwORXb9bG8MtzaU18e1c72zVeKPMm8eInW2QxbLGTb8bzxiXiCVJIxV+ynk4IxZiJVMR54nyvsLppY2p5cQoPRBdRof4wytQ+Rr/gHVGh9ihLVj1Cq+g6aTT7l0cN9zjcwFWtMKoYUlOs1jPnL8rrtowH3OcjHQpS44ppk0eyx6jyKnO33MXgvZ7DVgic8FWeJHI0VFqhHqp0Z+/0aQZ71TmeR7/Msep4UE1NQLA3ptLTnKdA7rL6lx26inT5zFX3eZwYX0E+fa8CZRcCzUp/SXGUxJT4fpcybzAgSdHgO71SEMsaD5THBjBWg4bXhFSFgUf9szzxJD5Pk7EzFatJ9Q8ykmmCanI7OCF3k2yoikYAeon6TR3GzFC0W/OV+n+WZf8dAJvF4cFlCgGfQFjtKfyFmIHe884XYWeYrsYvs12LX+5e4Od/9Uux457yYIC52uvOFxOH2BQndlzjLfE2OwBdcqbM8dlZ5zomlvcmQk0COA8tVZyo53U4HuQTtLBdDUusGBG9LArkTh3lpkA1yXQ2RQs/JYMvqdIwxUUKMqRKSbbQQTao8mZyCaDqPv+YdBGnd5QF4ieaqpLxVCdJ3eV582GNZcgQeIIQUeBQBP4ogHsgD364iiCAebaCASD05hBLUA1Ru8seZU8OW3oPU6HPq3kahlTSaPR9iMEwFY5FqGAknwIY9wlg4AZ7GDF9eZyrci8Du+xC9nvJod2LpbPfR6nAXnXS/z43UPHsOQb3D/EtUqbyDdKnfIPbaPyHtzusoVHybxugf0EigZJHvbM+60eAjes0NXh9hxEeKL5uPsrrtNC5GvKR4qeGFaBVy+BQ4wPtdWTtW5tzS+3jK8q0dXkApmPUEUOQxIQz+0yEPSMXL0Plu8narw6430MOgbnoBz3Q/Rrny+xzgT5XfI/sQRYrvoeDB2yhT/gNX6MzpaLX8Br2uNzFO552MeHRaAyHiIc/2YIFxLAtlLcscq5nmvCsbb7SU/YRDfT7ZhF9TLNiUZaksp+jwADrW/lhY7c+zWnbrwyGsC8F+Q6TkoClWfNASd3jYmS48GipePZpsnDqaH+g6XpkoP1xfSDjcWnE53l5Tf767feVkZ+ddsGDhU5V+BvSz29nt/16YZuRnTJ3vr6z8Yn9z6Y39jZWLoo2le/vry2aiNUHI/qogb29loWVfMDWxPze8uj/esbc30nC8N1gl3ustkQg787FDKn27JRWb9XHYqAgmVe6P1RIfArkL5nOcsJDriqUCgnuhF1YKSL0XuGONPPeVbGtePnKRgSpKjYONqaN2u+/QRBNljd55FCr/Een3/4DU++8jV/kzJMq8gaekLlpNP0OLyccE9OtYyLAjBSPNW0dOscj2EFZT/VTt8oCzOGWs8HxvHZ5is5zOgP2EJiMLbsuZNlhIMiUVbITpOFYN67RG9QarkJVsAEGSPm+ZOuJ1ixeWGfa4xgOR2szPo9PuKprNLqHN6hKaTL/kk2gTn8i/pUn5Jgf9CDkb476sxvtDUuQM6Fqn35smw+lYgjXBZIycmTGC+SiLAWBQp8ldkGqIxVQjjNDrhknFT8dpYzLBAJPJpuiLNkKFqzpSTOR4ulaAynX4k7FgOM+H30sYzL0Ur4k9yTzkvxOTuhY7y3518pO5yH5zTJA/dpP7hhup9WMnqQsnTrfOnzhKXTyxu/W52P72Z2In6S8lzGxvn5fY3mLK/gsJAZ8HzTmQseI1odoyiDdTRpotA7YBUu11kO5kgKf+NqTU7VDsZ41MZ0PEWarTcx4jy1EXiZZqiDZ5RMr8MWJJsTPAh+nc56rfV+UWh3ic8SPEGiryYDwPpWsIfczq1T9EgLo0QkilM8D7sKh82W/g9fB7+vkeKfiHdJ678FO+zmHOth286bXhGreQpHcb5Q730ROkgsEIFQyxtMPQR3yZfZwtvdP/aNCb4Bggj1G2jx74CD3eimj3YJXkHqHVWQ5tDtKk2lnZ1rt8X50ta7MAuNx7v0fK7deQTFag8AeC6Ft833yQntNpzWq9f8x7ozMFzIojDXve5qs6/fTzMCnxEVbT/WUvAhaEN0BQ73W7izb7u+hylcWg7wN0O9/CoAcrVnSPHFcaLwGnS+9s5aff8RKp8y94AaZeh0toZ0F7xudRp/sJ8hXeQYbs60iT+T3Spd9AjuybKHr4JsrVP0TLkysYIKd0mK1o+bOqhg95hbp5cn5XMthKFSnzXLoWCmywkW9DILd6WUXOhl+/rNAM26KailLBdKQyD6gTsOI0eVbYLHXCTrUvdhsjsd+WgIOOZBy0JYsPOtJOjnuzRc+HioUnEw2C5wv9YyfLo23P16ZKnm8uRhzvrFmd7G3K/bi398nR0favgX/dxOrsdnY7g/m/vdz+M9bZjVepW19//2B9+cr+xqqyaH3Vfn99KWFvdb5ctDLTI1ocnxHNDazvT3aJRBPtJ6KJJvH+SK1kt78Mwp4ibHfmYKMpGSvlwVjII0WeZY1JUuOzabZYJpgLGNCLvHmluJUCZ26reU58D3suUY83fRgndcDU0lCICi/H2eRwB2X6l1CkeRGZCh8jXvo9RF7/LVfrjYbn0Gb2OU1+9yHIcSYVrnDaYIUVowlghTse8LaRS3GPsJKoRjDXIqXBUmssaCKyJXPAQroNFjNsIEi3xnS8MWbiWWcpA8wnmdCkZMbbvq5kWnKlzoFOIB/1uMkDkkYJ7ixVrcHoc9QZfIV6vU/5lkCzwTl0mJ0/DeZz+AG99qeT92SoAt9vHA9Vou/6mN7jpSMTo00qXYMmc2UyJQL7PZ5fzPbU50jFL5Iin4hUxxBN4lMxmph6CfSBWBM0+umQSldBrD6r7iZNEJSRhGjISHyVb0p8Hl0T+6ncJLt14q18/ZjAfuypcPWYwCci0O15vDR3hSt7nvJX9tzuX9pzufuVyFnmi0MCONkXhw63zx873L54fKruv5TY/bNq/0riLP0l33t3e3AZ/mpSCNW9jygCdLqDHlfocQTsdEd9FPpYId/LHKmkylNstTnQGcTjLdQQZaqMVJvHpNSVEaEvjyDtuxIf+uws8M5f/Q4iDR4inBS3P0He+9ENRLL3oJ+9WTEcTRlung+vwuXuJbjev4wAel44S63TuceL47jJXabHvyWgX0Wo+g2kGUihlcA8GKqO/iAlnrI2HKKEUfqfjAbJ8fS0ET85uq+IwYBHGAhQQ3+AOvq4aRDUVdDlIYcuFylS6uSsMSiTou+i/3Xpo3eRKvVbxFx/FUVKH6JMhRSw9oe8TDFbnmeV5FhcSI/tZXSRw8qWz1lBpFE6jhPMh0ilD/nfo3H2CDM0DlhthWE/BXS6PUS76wP0ej1Ah5MMmm1v8S2AIV+WxfEQ44Fy3NFkqWtddpfQan6RnMmveV57O2siQ1CvpbFZovZHJEu/jdgbryPh1usoVP0ErY70nmHkSEdrYCKGxmC0Ks8rX0zRxRLLuCh2IpDbkdlju9wTOxVe3LbKPLBV4ob1QhdevpmtaLFreCaBlSjWw0KaIQTZ5DTnW2G9hKBeF4i95iiCeTwO2hNw1JUqPu7PPjkeKhQdj9dun8x3Ck4EgyMnK8MtP65NZP24Oe/3o3DNQHywffXkRPQOV+nAX5+p9LPb2e3f37//S5Yqx9T58/X1147W1j7bX1+RIpjrHGyueu1tLGWIludrRavTA/uCSYFofnD7YKb78HC+R3y00CM5nGqV7I/WYHegBDud2dhoiIfgqT9mshwwwUqyMkBmOmKtNBBbdVHYqo3ERmUI32NffQn15VxHCAj+c2kWvGjKdLoVptKsMBStg95gVTQ6y6JI52uE3nwbLhf/EQ4X/ieib/8eNaSKWNT7FCmsxSx73jBinJdoJZUeeh8L0Uoc5qtJGlhLY40nTLBdaM87u7GCNhuFrjQhufL2j2vZdtyxWCZ4s7aQgjRTro5ZTvgGKZFVUvQz4QoY9byB4Ze5wmOk1FlhkTqdP6Le6BLK1T5Aldo7qNf+gKcLscjnbpvvaGJl+cG3eavVhQR9UjJs+VwPs3GkvkndzMYbYiJcExNhrFubKiZC5Hm6Ha/lnvAYi/RZ2FL7cKgyxum106ymO/2dhhPM0BJigFK3x0ixVEaYnryEoCoJ17kvDtGQFgeq3DoOVL99HKIlcxioIS3yV7uz5692W0ig2/ZXubFJx3VSwuukiNcJmOu+Stc3vRSubhLct90fXN52u39Z6HrvWxFB/pBgf0x24nyXlD0ZU/tu99hS/TdiT8Wr4gD1O2KCsThUX16SYvtYkm6vK4kyUZQQqCWZTgbiXFdjSYqNtiSDHk+1eyyJtVCTRBkpSUihS1KfaEmi6T6pc3GQhoyYwC0moItDNO+Kw/XlxaGP74np84nps0pIgdPzZCW+6lISBnPmSLBqd2xP35ng7UPQD6DHmFL3V5UiZ+MKXO59C0/F7xGoeg1ZZjLo9FdGp58iOn3lMciC3wicI4FyPN98kO1TB8pjJJQtxWthNFIPY1H6GInQJfCRhepgOEgV3e530fzkKtptr6Hfg5S0yw1UaZ1DqjSD5e9IEb+LOu1zp3voJuc5xJla7njCMjauoMfpB95ljalrtg8+HSyH2bDTIkdzrPEKU7p0nCInb4yugdFgNQzS5+73VkCHqxz6vB9iLFSVjynmKDJ130eqnxm7JphjySrW9ThcRZPJF6g3+AzPjL9CgconSLjzByTLfYh625v0HVUwzJyHaDW6/gywSBBeYvnmhbbYeOqMrXJ3Ojpgq9QVwkovbJe68ej1HYL5NtkmXb9ruQ507ZhjIVmf1LoRwdyIrme6hnJMsJhjihVS6vwclR4Q1gVgtymMlHq85LiXQT3r5GSkRPR8snbzx9nmuR/nWwd+XO6pPlkbSTnZmnX7cX9VWSzc/Pr5/uYbrJrmyw6VZyr97HZ2+z8FwjF1zvLfecnZra23RFtrl0ilKxxsrVqINpbCRGuLRYdr8y0Hq7NjB8tjqwdzvXvHc53Hz+e7xXSUHM+04nC8FnsE9O2OTKzVR2O+xAeTWY6YynLGPKny1cowbFaHEczDsVUfjp16Ant1IDarArFe4YeVYjesPXXHylMvLD31xlKJF+YI8qOJhtwhGIgxQr3LAySrXITX5dfg/OWvkfHwA1Ro/RHtNpe5QpkjwLE2j8PeNzDme4vU7X2spGhiNU0ba+m62CCY7xTZ857r21x1OHKFwQpgbOTZ86X19Rxr3sJ1iQC6lGHOI3WX0415JbuFeFLWgbI8vWjA/isMOn/Dc8m7LS+gTvN9VOt+iaz77yBX9lXUaryHJqPzPJiPBcsxdT7gIYXpSA1S5Wx5UheTsfqkhnQxm2BEZozxCHWaoFm0/8tJmqA+GaFIakmTK5/5FGOMxRBgWBBhkhFf+RhJMkdHlBkq/UyQ6/xYkmipJok2eySONlYSh+s+OA7WvnsY8vieKFRPfjtE78E23V8P1pZdDtK6KwjVkpkL074/E8JM59SC6DFfNak5UvQLpOyXfR/dWPUhyHsq/rBNQBQSuPdI2Ys85L89pOOhh8L3xx6k+H2Vr58EaUifhD6WPYkxUT5JtFQXx5qriKOMFMWRhg9PYs1UxKm2uuI0Bz1xmr2OONlWW0yPnUQaKIoJ5OIUS/UTOtLr750EqkufENBPSKWfEJSPQ3XljkMeyx4HqMucELxPgrXuiiP0OOQldF9CTorE+9FNiQuBm1W881a6QUr+Juh7IkBDBu70mNNLoEdq30SpnRxavBXR4HoPnd4E8RACOqncIYJ5v6c0Brxl+VL7WIQmb/ozFWeCqXhjOrJiKhbkUBlilHW785UjmF9Hkxlr2HIFnfbXUKH9GZKk3kDk1d/ysVCt9RFaWX46KXNeEpb1TbdlTYZY2eJrPJecbQ1NhTzglQuZMp8jkLNAtMUYOsao0H0NnmWxQONgkj7TaLAK+v2UMBighOloljKmxkscs9gTtvXUTs5CG71PrdaHqFB7H88ML6KabVupfoha/Yso17mIfPXzKDe7ih5/eYyG03el95xJfIy5VH0s5xHMi+yw/tQRG2XO2CxzxVaFO3aqvDjQd8rcIWQqvZzgzlR6sQt3jlfzHbCcQU4wwXyROQbpBphLp3GbZUTnNMNKviWdk6BeTa+t88d+SwQOO+Nx3JMkPhnOP/xxolIonmtafTHfMvdiuatLvDpY/uPWdIJEOGf/YkegIBaufIm9jddPC2+dLb2f3c5u/2egM3W+v/KLY+HqqwT1j8huHW6uax9uLbkdrC8mHa7MVx+tzfYdrUzOHS0ObR7Nd4iOZlpPRJPPJAejlTgYLYdopAx7/YXYas/Aan0MlqrCsVIVxkG+VhmO9SpS5KTa11m3tfpQbNeF0IXtj81KP/pdADbqwrBRFcSj4peLXF6aG+YJtDPZ1pgktT5M0OsO1USJ+S1ka3+DAk2aPO+/i2rjb0gd/YDxMFXM0/MGXL/nqT2slel6BqnyLD1sZhtip8ASwhIHgjqBvNj5dNmwxIU3k9jIsSFoP+EFMTYLHHhaDq9gl2KIeVb0JtUAszHq5CxIo9v6a7SYMvX9MdqMP0G91rsoU3oDOQp/QiIpn/x7r6Nekyn0z2giv4gO629fTtyKmI+nCS7ZjKBujpkEUvwJJmTGBGyCfIweTdas1asqplgufoQKxmmynQgnuEep0fP0MEkgH419jAlydCbIMRgmwHRHW7D2opJCL1NJtqvRSZaL4XGKg95xos1jUbylhjDeQn093kpjOd5KcyHOQp24pDIWZao8EGWq0hdjrtoVY6bSFWXyqCuGLNJYqSvUQKEvXO/BUJiO3Fiw9r2pQIJ8gIb0Aqne5QBVqfUA1TvrBPpt30fXhb7KN/dIOe8Fqt8RBWvJiAjKohRr7cMoY6XDcIOHhzHGiofh+g8PSbUfR5uoHCZZax2m2OkcJ9loHRLQD2PpsRiyREtNfozQkT8M1JIV+WvIiIJ15PboHKIQHTlRmJ68KFTn/mGQ1r3DUHJU6HXHkSaPToL1HogDtUi9q0lLvJVvS3xUbku8VW7DiwP9HtldUuw3CebXeHxBgv4dlNo+QJW9HBoJ6L0BChgMVEA/KfVeL1n0ktM15CeHkRAVjEWzZjjmBKgnmGX/r0RzzCVZEeRZISI1jAYpoc9VCu1PviPl/QXqCJplGp8jSfpdRFx9DZmyb5E6Z6WKz6OFHLse2+9JMX+FNsuvuZM3SPBl+eespS6rWsiKGc3FaGA64hEPmGQNiubIoVtJ1MZiggZvtbvI0xc1MRbG1LoiRoIUeZwFixFhJWHZNhCrFc9qN7SafMbT5QqV3kOx6keIl30HkVJvo9TgGzQ7SqHX/wFGolTIQVTBBOvol6aHJXJ6l/PNT+FbZIPNp3bYKrPHTqUbhNWe2K1mUPeEsMobuzU+2K8NwF5tMHaqg3hfBraVNZekRWNcl466mE83xFIuOQgFT0jxk0ovtcd2lTu2a32x1xCC/eZw7LdGSg67EsXHg5nHP06U7Ylnn62/WGideiHo7PrzSk+lZGMkTrI1a/tib0UBoo0vcSx89Ww//ez2n7mE/Rf/jT7vz8BT1TZ+eULq/Hhn4+LR5prcweaq2cGGIOhwfT5HtDLdcrQ8Mna0NCw4EgwKj+Y7j4+mGsUEc8nBUAkOhkshItvtzcd2ZxY2W1OwVhuJRRbZTrbOlDkpctYjeacxFlvPIunnCAJ6ECl0mgjqI7FeEwYBW4J/6oG1Mi9S6p5YKnTFfK4tZrMsMJVqQorUhCv2rhB1NLndR7bO14hTOIcKg69IlVzmQT1zGbYY9LpBAJXBcpI2wdwQW6QOhDSZCIuY2WC7xBm7lT6kMNx5UximvtezLbCe+wRbRa5YY/3S43WxSKr4NC9ehRfLYJMsi0huMfsCZarvokTxdZQpvoH8+6+h8OGbyJb/CJkP/oSCB2+h/NEf0EIKvcX8Eim366fqi0DNItpZ8RpBhh3BwoLv2y/QcTHVEgukuKejHmOcR+OTSieYsyh91tt9hpyJ2UR9UlDmBHIjjCcaY4QcgsEEC3TF2UgaIuwkZYG24kJfm+N8P9vDXB+bvTwf680czyfL2e5Wc2Rj2Z5P+rLcLTuy3MyaMlxN69OcjSvTnQ3Lkx0MSpPs9EqTbB6XJNrolCc+0a6ON9eojzNTb4k2Ve6IMH7UE2HwaCRMX34sTE9uKkz3wUyIluxCoOZdUvqyq8FM9es+2AzTf7CZaKW1mWqvux1l/Gg70lBBSE6CMMpISRhppCgMN1QUxpiqClPtdIQp9rrChCeawgRyOOIs1YXJdrrb9P6bUYZKm2EGCpuhhgrrBOz1CGOl9XAjpU1yPjYjjR9thhoobkcaPRImW+vsJVo/FkWaqhyHGSodh+o/PAnWkZcEat+T+GvKSHxJmQc/vo+gx/fgqyrFFbuf8g3E6Uqj4Ikcap3l0en3CAME7l7/h+ghmPeRMu9n+9mBD8mp0sQsOVuL6U8wn2pN9gQLadbcWLol+/0YOZCD3vd4QGSr6Veo1fkURcofIebGmxzoLPiswfALcv6+IrB+TPcv0tghZ9D8a3TaENA9b/OshiFSySyHez6BwM3+xwR1llGxzJrxkEpfJqAvs3Sw5MdYTdLBcoIWj8OYCFPme+hjQfJ8fLGsiPGAuxzonTZfkRPxGQ/Ie6r8Do83yVT4EHH3/4gqc1LmvnKny+zkNEwnatC40qIxqYflXBOs5LJqcMZYI7CvMwiXWBPY7fmSuZAgLqz25mp9t8YP+8+CIGqKJIsm6PvxqPc5+oyzydpYyDAkZW6JtUIbrBDQV8ihXi+ma6zMga57chBqPbFX70uvDcZBe7TkuDfp5GQ4+/DFVJnwxXTtsmSmduLH2fquF4K2kherIxGSnSVrHO3I4cfDczg6+jXNXWdR72e3/5Ql7P8WUP/n7m/b2397vLPzysnO+vvPt9evHG6vqYrWBfaijYWYg7W50sOV8a6jpZGZo+Wh9aOlftHzubbjo/EasWjoqUQ0WADRYBH2Boqw25PPl9zXSaELir2xWEhqu9gHq2UB2KyNYm0UIWxOwG57CnbbkiBsisNOUyy2G2OwURuBVVLqazQprFX68uNquQ+B3QOLebaYTjMikOlgLE4bfeEaaPGQQ43NLZSZfodaiys8V7jH9TZNIC68ixXLoV1L1cNGrjmENBkJi61JndtinxTGfl0wKQwfrtI3Cx34Hvlp1K4tNvMdeSDcbPxpOtk4qWS2DL7IotwTNTHsJUVq7AIK5F9HmtQ/IeX2r5F25zcoUzuHbIWPUKB6AdkPSLGrfMCDkfpcbtLnkSMFpsKNlcdcYOUxCz0gyLLHUoYNgdyC79uzYjuLScb/nGLH0odYgNZk8EPMslrZpHjmyKmZTDamv4UJhuJNMZxkKelNsJc0xziK66JcT6rCPURPwzyFJWFe608jvAUl4V4TpaEeAyUhXm0lYd7VJaFeRU9DPbOKg9zTCgPdEgoCnOPyfB1jcr0dovK8rGOyPawSsjwsUzJdTDPSnU0Kkh0NSwj2lUnW2g3xVtot8U80u0jx9xFghwjaY5FGShOk7qdizdXmYi3V5tIc9BdSHfQEsRZqAlL+gjhzteV4S/XlGHPV5ShT5dUYU5XVVAf91Ww3s+U0R8PlFFsdQZKtznK6i7Eggyz+ifZCnKUWnUtzLuGJ1gwdZ+KstOYSbXTn4q21F2ItNAXxVo9XM1xM1sk2E231hLFW2nvRFpqiaHP1kwhjFXGIgYI4WE9BEmagiBDdByD1Dl+VOwjWlEG8oSxyLdmSuzL62D64rwI6Pe6hy02agH4Xg76yGAl8gKloTR4UOU//m7k0K6zkOGKVxtZCtiOpdTP6/WOMEdRZp78eUtptTy6TQr+AYpVziL35FqJ+eA3JUq+jkSDeZv09T7MsU/sItfrn0Wh6Cb1ONzAZ8oCrc1aymBU6YtXVFgjorA0pq8q2RIBfSqBjohZWWfwHMxrTghglgryC+NPJAABu0UlEQVQWqXYdGiNKvDTtWABrICSHcVLorIZ7l+235Eh8zqPqqzQ+QJn6H5Gv9ikyNS6izv4W+ug7TrAGL4lMmdN7Z+nTdzQkFW2G9Xxm5jRGLbmyZkp9o4QgXOpCEPbFbr0/hHX+2CUTkco+bI7AQXMUwT0UW09dyDEwIaDrYD7TgNQ+naPQGmtFZHQNbpDi36xwxFaFM3ZqPLBX50NAD8RhZxSe9yZKTgbTT16MFx1KpquEktkagXi2fky82Nz2Yrmn4MXGeBh2ly1wKLyFHw8+BA5++TJI7kyln93+/yr0/zZAZ6Ve9/Z+/nK5/RzZjaOtVb2jTYHP0fpi2tHaVO3h0ugQKXPB8WLv9vF8+/HR5LMTps73h55ib7AEe0Ol2Osvxk5nBtYJzssVAVgo9sJCvjvB2B2rpf7YqArBVm0YB/huezIBPRF7DOrN8RzoW88I+HWhBP4QrJd5Y6XYFcuFbNmdVHrOE0ynGmKcJrdhUskDUZpo91dCo8tdVFjcQLurDHpYy0unqzwoh0UNs0Ajlp62SQphmyYkYYkdRLU+OGyKoIknBNtlbtgudeVtHtfyyXJteRrORq41X2Zne9aCZD1e9GWaQCxIOW3Ywkp+NhmeR9793xHMX0Hi9V+REiOFrvIxYm6/iTwVArr8n2jy/hM6nnyLiQA5Ulyapw1c6DyzrOpckgHWSzyxnOOE5SxHDnXWo533myZFOB1DjkuwElfqwwwuoUyxq/Ca2YI0cjbSzDGebIohUujDiVaSwRQncXui50lDgt9hQ3ywsDoueLkqPmSmNjFsqCYpvK0uMbyc7mfVJoRFVCeG+VQnhrpUxwfbVseFWFXG+FuVR/lalUX4WpSGetuWhHq6FIa6uxUFufsV+DuH5Pk7RuX52CXleFlnkcIvyHK3Ks9wN6tNdTJpSHUwbEmx12sj60p3NOxLczHqy/WwGsj2Mh9KcdAbSrTTHWGWbK8/lmynN5Fspz+WSvcz3c3Hiv3txvK9n4xlOJuOpbuZj+X72Y8UBjgOZbtZDKS7mg1kupj3ZbiY9aS5mPWluZr1ZbDH3cwGUp1NR9JdzcfyfG2mCvzsFrI8rZdTnc3Xkx2Nt8lEiXb6xwT4kxgLTXGMlaYkwlQFIY8fIFj7PiL05BBvdB9FNvLo8FdFq6c8mp3v0vi5i05XKVLn98iBeoCRgId8y2M23oCAZ0KOlw0P+lrJsuNd/WaTLUil62Mi6jGv/z/gdQedtldR/fgCyjU+Q8rd9xB94/eIvv4ach78AXX6F/FU7WNkyr2DUo2PUWf0JTpsvsck65QW9JCciPs0LnSwQWORVWJbzTSFgAC/SEBfSTM8PabqYCvLABvpuliMUSTQq/MuaKz3wTgpdeb4jflKc6Cz7acOm2/RYPgZGvTOoZQciXLtT1Br8g1qrX5Aq8cd9LPmR+EPMEnOAVPny1l6WCV1vpZvSgrdCEu5xlgkE+RbEIjt+B76dq03hPUB2G8KJQvDXkMwATkAosZQHDRF4aAxAqL6IH5tnTYQekwOEJ0jzxRLzEEgpb9RSk4z2VapHbYrXLBT7U7n9MIeg3p7JJ73JEhOhjKPxWP5ohdT5dsv5hsEf17uHnux0tvyYq2foD4RItkT6OFg+ypORO8CPPL9LEju7HZ2+wnobP/8+cbG60fba5+x6kwH64tmB2sLQYfrMzlHy6MtB4KBiaOF7tXj2da959PNx8fTTeKDyWeSvbEq7I9UENSLIexMx3ZrAlargwnm7lgocsd8rhMEhZ5YKw/EWqkfX17fqPTHZjVd9PWRfAmeLbfvMKDXs312UuVlnlgpcYOgyAkLpMznSTnPsiYlGWyZWRuDMWoYjFZFT+gjNJOyYkvv/UGK6HC5gX6PGwRORfSz9LBweV5lbTPPivdzPiRVcUgTDlMTu2z/r8wdO6QmdkrdsVVkTzC3xE6xI98rn+N15dWxlKKPRXrPuRjl0xKwMRq8ilYDAT1D9veIvfaPpMRIod99E4kybyFO6i3kqX2BArJqnfPodbyGiSB53thiNlaN16hnvdNZU5oN+vtsFHtinWwtnwUVOZ8G6BW4EPDpu4ar0Hd4hKkwVuRDmeChjgl6/UySPikflgFgibFkS8lgso1kKN3tpC/T77A9NXivIS1quSk9bqwlM76lJSupqCU7OaEtJ9WrLTvFpD03XaEtL+VWa3bK1aaspMttWfGXWzLjrjSlJ1xtSIm+VZ8aebc+KVyhLilCtSYpTKc6PsSsKi7YujI20KU80s+nMsIvqDzcO6Y0zDOhONQ97WmQS05hgENBfoBzUWGgS2lxsGt5WZhnZXGgc22+j21tvrdNPR2b8nxsyGybCvzsmwr9HFueBns0VUT5NJWF+zQV0/3CYI/68kjf+srogNqSMM9qOk9lcbB7eVGwR3lBkHtpYaBreWGQe3lJkDv9zr2eHm8qjfDtqIjy73sa6jlSEOg2lefntJDn67ia5WmzmeFquZfqbHaY6mQmTrYzFMdaaEliTFQQY6SIFFN5lDkootHtIapt76DO7hYaHW+h01kKg/7yGCYnaixMhacRssDF6URTDvK1HHteqniBnK/5lCcEdTNMx+sTTFUI6DLosPsB9QZf88DIDPmPEPbD7xFy+TeIuvZbFCi+i1z5d5Eh9y4qtT5Bg9EXaLe9gmmWHhb5iFS6PO/0t86Dylh65BMspxrxbR62FbSabsKd040sI2xlG2I9RQMrCap03xgb2eTgxWnw3PVxlupIUGcd1rocLqNM6yNyNN9HttIHSJL/I54afINWl9to95BCFyutHCCD0ciHmE9WpzGphaVMPQ73hQw9AjpBOM8MS6TQN8qcsF1JQK/2xE6dH3YJ5CIW0NYWg30G8eZIAnokRGz5nYAurA7AVjk59FkWNFbpGiLlv5DDlt+NsZJvQkZ/0wJTUu0W2Hxqg61KJ1L9PthvCcFRZyxBPVFMUD8RjxUdiqerhS8WWgSS5c4xAnrbn7cmSiRCAT1xSw/P9wjqJ2/RPHYWJHd2O7v9K6Bvbr5xvLNy8Wh79d7BlsBKtLkYcbg6VXK4MtxxtNg/dTjXvn443SwiOzmabpKIxmuxP1yG/YEC7PVmkTpPxVZDFBafemKxxAuLxR5YKHDFWmUQWTAp9GBS32Ec4AzmW3VsH51A3sAsEuukzDdqgrBa4YuVclLo5T5YeuqBpWJnUgoE9XRDjCWQQqZJcChWHX0hSujwlUd/qDJGCXZdrERm4F1MRTzEROgDzMY8IqVjSIB8gt0KL5pognHIlgefBWCvwg27pc6ne+gE9c0Ca2wX2/P7rLnEdJQaKS8VXnxmJU0fC7xIhj7m4tTR4/Q9wfocku+8jsBLv0Lgd/+E4KuvIfj73yDt3nvIV7uAKqMraLG+ynOZWeW7ZeYMJLD68fp0HgsICAyrBU4EcA+a0LywyY5kG8UuHOqsOh2LXua9ppk6Z0FxpPLHY7QwEaeLqRRTzGTaSaayHCTDqY7ioQyvw6GcoL3+3MjVjtyEgfaCtOqugqy47uJsp87iPJ2uksK7vaVFX7aXFb7TVl7wam9Rxq+Ytefl/bq7JPuVrry01zryM99oy8v8qLUw43xbXtplcgButeQky7VkJyg3ZcZrNqfHGbWkx1s0psbaP0uKcKtLCferSwwNqokLCquMC4qqjg2Kq4kPSapLDEmqivJPKYvwSSPln1Ee4ZtVFumTUx7pn1MRFZBXFROYV5sQkvcsJSKnNoksMYxZVn1yREZDWkxabVJ4Sk18WFJtQlhCTXxoXHV8MLequNCEmtiQlKq4kAxyNPJqEyNKnqVGVdckhDaURwe2lUX69xDkB4pDPaeKgtwE5GRs5/k5HGa5W5+kOZmIk2x0kWihjkyrRyhzVEKNw31UWN9CjfVNNNjdRIfzba7QhwIf8p4CkwT0iShy7OJZzQJbrLKURgb0dGvMkc3zvXVzjIaRQvd9gB632/x//sz8CorVzyPm1psIuPRrhF75DeJuvIaE268j9+G7eKp+DrWGF9HtfP10z5yMFWJhqze8l0CODR2f8I5lSyxlMssMG7ksxsOUAG6CHYLsDlsaT1LDZgY5rDnmpN71eADdLDmx4/530Od8hVdabLT8Fin330GKwgfIUPkU+frfoM1TFn0sGp61Xg2WxXDYfUzGKmA6gZwYOudMkioEmQzopNaLWBCbAzbLyOEsJahXeULIrh9S6IcdcXjel47j7hTst8Vhny25E8z3av0J6H7kAPhis9wTglwz+lvpkD0m06a/H33nDFLuWfpYJrCzPfXNMge+n77bGAhRWySdM05yMpAsPhnJOhaPlx6KZ59tixeal8Ur3RMvNka7/iycK5Lsr/vheFsd4v2LwOGvzvLTz25n2wMvI9xFa2v/cLK9/c6xcOXLg81l+cNNgf3hxnzM8epk6fOVsZ7jhb65w9n2TdFMq0g01XDC1Pk+qfODoWLsE8x3CeYbjdEEYC/M5TtjPt8JszkOWCFVzgLiNuuisNOaBCHbOycTtiVjm0zYmYmdtiRskjrfqAsl8Aeegr0+DGuk4teqArBazoLjHDCXaYS5LHNMZ5hikpTzUIQKwVyJV/maoMmw1/sOxll3tZB7WGTRwHGkeAjoO0+dSTmE4+BZMI5owjhge+gVrthjKTjlHhCWuWKj0BY7ZW6kkOxPi9tEnaaNrdF7beSYQZCiy3PBmfrvtP4GJSrvkhp/DZ5f/YrsH+Fy8X8h4hordPMhijUvoMVBGj3ud0lZq5HaV+cd01g1OAGzdCss099mjRT5ZrErB/h2qSe/v57vyNN/WMGbqZjHHOijBPQR1gksUh2j0Y8xGqNLjo0RptJtJdO5nuLxHJ/j4exA0VBe6OZgYczUQEl6dX9pblB/RZF2f1XxlaH60nOD9ZVvjdSX/nKkvv5v5urr/6q+vv4vR7Kzf8aM/dxdUvLX7WVlf9tdX/KL7uqSV7orS94iB+Bcb2nel93FOVd6inNu9Jbk3e0pylXoLsxU787P0O4qSDfqyEu1aM9NtWrJSbRtzYx3astJcmvOjPNoTI/2akyJ9mlIi/ZpTIv2a0yPCmhIiwti1pwZH9KanRTSnpsW1JabGtSelxrQmpMa0J6f5tNRkOnVmp/q0ZKT4taWk+zSmp3s1JrJLNGpJSvRpTkzyaMpO8GvKSc+qDUnOaI9Pz2OnpvSkJaQ9iw1Nu1ZSnROTUJ4eXVscFt5VMBMabjPdlGg62GBr4M4y9VKnO6gjzwHDVS4qKDK/j6qbG5zoDfZ30CL/XUO9UFfuVOgsywDchRn4/R5NUHWHXApywaL2Q6kOB0gYEZQH4/S5VBn9d/Ztk+zzTVUkxJOu/c+Ai+/Av9Lr8D7q18j+LtXkXj3bWQ+OodSnQvodrnJu5PNsmC4xMc8g4Jt92wWOmI1xxKrWSyuwpzX7d+i8bldYENmCWGRJfZKrLBFynczXQ/bOaZ86X0lSROCuEeYDZbhaZWsbO2Q3wPkq5xD/IMPUfD4C9RY/YAmZyn0BshhMEQOPX5SBPY75BA/xEyiKgf6bLIaFujcK/kWL/e7XTjIt6s8ToFOCn2fLbG3RuGoJwXPB7NwSFA/aIuFsCYAOxX03AoPrD91w1qpOzkFdljM1MV8Bin/LLqO0jUxl6ZFfz9DLOWZYrmALcVbYafSmVS6N6n9EBx3kUrvT5D8OJQiFo8XHr+YqTt8IWjdFq/2Lb9YH5p6sTHRJtldzMDhpj1eiKSBk3doLvv52dL72e1MoRPQWYS7aHv1HdEW6260pHS4vuB0uLEYd7w+V360Mt5zMN8/J5rp2hRNNYsOJp6dHIxXSw5GyiEidS5sT8LGswgsl/tiliA1k0tQzCU1U8Ryyr1JrftguykRe9152GlP5WDfaUvBJoF9pysTW/TzOlPudWFYrQ4htR5NP4fS6zwwx9LHyBbzbUmRGmOebIYUM1t6H4pQJpWugF5W2Sv4Pgb975FSksZY4B0sJmqSutHDRt4TUuGepBoCCOZBOG4Oxl61Byl1Anu9P0R1PtghZb5Z7IDdSi+skMMwm6BL6lwJU6Sa1kn9bBVa87KXvCQoqZpyrY+QIv07xN9+DT7f/BMcP/+f8P76H5Eu+zbKtD5Fo80NUj7q9JmUORDm4liDFUOanE154Nsy/W1W8gjoRaf575vFzjQBkkovcuG58LzbW5opAV0bY/SeowTzAZZWFaqK3lBN9IXTd48xxGiylXgsw/VkNDfgcDgvdJtgvjBUnNI1UpEbN1xVoj5QW/HRQEvlP0y1l/0tA/nISPbPAMe/+LfHguNfsOew57LXjTRXvzLWVPPGUE35+8O1FZ+M1JdfHKgtuzRUVXZlqLL0xkBNyd3eyiK5vopC+d6yfKW+0gLlvpI89Z7ibM3ekixtcgR0ekpy9bpLcw16nuYZdZfkmvSWZJv007G/tMikv6rEpK/6qRGz3spig8HqEr2Byqc6PZVPNXsqizV7y4pUe8oLlJn1lhUq8Z+fFmh2Ps3T6Sor0Osuzzfoq3hq1FNWbNRVUqDXVZyn2VWQrdlGTkZzVmJEY1pMbW1y+ExlbKCwLNznuDDARZzvaSEpcXuMKjdVVDnIodpWGrUE9RbHW3j25Hu0OtxCr9c9+l+rYDxCldtsnB6B25Ibq4bGgi4FrLIhAX0hzRKTceRcxdKYIQdzOIjGo+ddtNr9gEq9i4iXfgchV38L/29/g5ArryH8xu+R/IAFTn6CNrvrmIpS410AF5L0+RI72zvfYmVVaRyy9K9tGh8rLI2SHM3dEicIaazuldhg/6kNdkk97+SZYDvXmCv3lUR1LCeQAxlG14Pb9xj0uI5xuj4q6HMkPvwj8gjolZbfo4E1mvGRwViUEgYI6v3B9H1jlQjk6phP1SL1rE+q2pjUswXWWYpZtTuB3BU71W5kp0DfawgiRR5GajoKz4ey8Hwg81Spt0bTc/ywxUBeYI8VckKWCy2xlG+G2XQtzKZqkGNOCp3AvlrIHAZrUuhWdC2w/HS6VqtcsPfMDwftEfixPwEvhtMkLyYKT17MVh//ebH5ULLWK3yxMbL65+2piT/vLjRIDtbi8HzPABB/CRy/8jLq/QzoZ7czoIt21t492Fq/fLCxpHy4teRCQE86XJurPFgaGxDNDy7sT3duiiYbRYcTtScHoxXig+ESyW4vq90eQwAOhqDMG7OFTpjJc8RCoSupc18ssWC4ZzGkytOx3RiP7WexBGwydr85Aes1EVirCSVFHoGdljgIWxOwSWp6tdIf80WsIA3B/CXQ2XGW1MoIAbI/SgVdAQ/Q5HYbzS630ON5G33eMmg0/xpjBN3VdH3eGGI9zxpbT12xS0r8iCB+3EzK4hmDezAO6nyxX0mqONcCQhbww6JzWSW4eF2u+CciHtHEasaBz/Y6Ox2votX2ChJk3oTD57+E0Qd/R8r8Vwi4/Bsk3nkT5Y8/Rzupnz7fB7zf+ngkC6p6TI6FEVbSjPlyKishu17gwtX5RrHb6RI7q7j1lBRNHgu6Om3fupBMkIjRwkiQPIfEUIgS+oKU0R2khvYgTbSH6Ev64yxPBpMdDwez/IVDhZGrw6UpE8OVuZVjdcX2Y/XlX08TlH8KzmSKnNl/ZEyw5610d/+1oLX159MtLeQQ1P96rK3+1bGOpjem2hvfmWyp/3C0sfaj0eb6zyaa6y+ONtR+OdRU/fVIQ+WlsYaqKyP1FVdH66quDTXV3BhpqLo12lgjNdRQLf2TDddX3h2j41gzszpuE/Sc8ea6WxPNddfGm+qvDjXUXhltqrk80lB7aYzOPcbPX3tpiM7PbLCe/a7yEjkdF0ebqz8bqa/6kK1CDNY8fa2vqvTD7tJC+c7CrDBS8R2N6TGCuvjQvfJwj+MSPytxqZe+pJIUeoXdPdTY3UWdrRSe2d5CveUPpNJvoMtNhpzDh+RIMahr8X1yQZoFr+nPugWu5NM4ybHHMtliuhXPU59NNKDnkgMXqc5LyHa63iZgX0OZ7hdIk3sPIT+8DqcLv4b1p7+C/9W3kEjqvcLwG0ySw8Da+bKo+pUMU3oPQ2zmmGGNHMmldBNsFTmRo+eENRo32yUEuzIX7Jc7Q0Rqdr/MEXtPbbFbYEYqnRzGJBUydVLpKhhxu4Jhr+u8h0GD1bdIfXSOFPqXqLZi6Wqy6A+QxVC4Aibi1DBFTsAsKXNBhg6Ws/WxlKVHavrlkniBBQ9i2yp3wFaFI4f67jNv7DUGYK8ljAAegeOeRJwQ1I+6k3DYxaAey0u8rpd6nK6qZephlZyPlSILfs4lvpduipVCUwL6E35u5jRssdx0craF9XRdkuN91BWDHwdS8WI8X/JipkL8Yr7hRLLcfihZ79v78/bE6p+FCyN/3l8plxxt+uBEdA8nB+/TWD+rInd2O1ty5znopNCPd9cuHW+tKh1uLjOFnnCwNlspWp7sO5gfnBNNt20eTjWIDserjkXDpeK9/lzJTkeiZPNZKClrfywwRU0qkwXDMWMw32xMwhap87WqMGzUkApviCOLPzUC/RLrxFYVRKo9kYylr4XT42EE+SCsENRXyljqG02gJW6YzbXBRIoRhuI00RmsiHonKVTbXEUbC/DxkiGTRT0BnTW12GClJjMMsZphBGE5TUKVbtgnZXHUFIznBPWjBn8csBzYchfslNHkWOODjQJbUkXmmEvUxWS0OmZjNfgy53quJbpogq4xvMCXL30vvwr9D/4eD3/3NzD76O8Rdu13KNQ4j1b708Cqbg9Z9PnJc8dgkT4vrxmfYc6j2DcKHbFR5IpN+j4bpNDXCxxP62STAltKt+AR7AzoMwn6GAtXxSDr3042HPKIA70nQBVtAZqS5kBdcXuUxXFvoqNoIMNvc7gwamG8IrNv7Flx3kRztd54e837TGn/y/81A/V/JAPjp+cyqG+MjPzNXF/f3010d/9irrPzl4u9zb+a6e5+ZaGr67WZjo43mC30tr8z3dXyLrPZ9sb3JztbPpzqbvxopqP5HLO59ubPmE2RTXe2nj+1hvNzL3+e6zn93WxX6yczvc3nprrbPprtaX//p3NOtbe/wxwJZqc/N77DnIuZ5uZX5jrrfzlCjsdcff3f/bQK0Uf3e6tKz/VVFpt1FWeXt+UmTDQmB2/WRDiLKvzNTiq9dCRlToqotJNFnb006u2kUGd9Cw3W19Focw3tTrfR6SLDV1jGI7V4W18WxCggoK8ypyvXmcBEYyWXVHouOa9pVphNMCAHTIOAroHRcHV0ekiT2qfzWV9FBUE9Vf4jOH7xG2i/+/ewPv8bhN/+AwrUL2CARdSHKGLQ9x5PW1vNtuRR7RvkjC5nmGCDxjwL3GTFj1hGxl61L0Q13jR2PXBQ4w5RFY1rUtFsX32dlPVaijZWCOrjPjcw5HkdkyH30eZwFRnqnyOXgF5peQVd3nfRFyiHvmB5noM+Hq2AyRgFzKeokzrXJrBrk1LXpO9IIC4wf5k3bs+BvlvLgO5DQPeHqCWU4B2Og44YnAxm4Hl/Bg57MnHUk0bKPQ47zMnPt8MMXYfz2Qak1M14HvoKqXG2N88C4tZLmMNAzkrNKch363zo/H507hACehROehPx41AGxBMlkhfzz8SSpdYTyWrXsWRzRCjZmV748/5Sh+RwPQk/7uic7qXz3PSzNLaz2xnQRdvb74i2ti4dC9c50HkO+spM6YFgvEs02zF1MNG4ejBRIzwaqTjc788T77QniTcawiWrNQEE9AAISr0wR8p8rtCd22pdJAE9EYLyEPp9FCnyZGy3JmOrOZHuJ2KjLoovtbPI+J02eqwx8hTmNBGsVvnR7xnU/Xhg3CKp9XGC4wjBdjRRHz1hKqi2u4Uy8+/Q4nITgzQptrlJoYUU9GIyqwxniuV0Pb5cvk8T4HapI/ZrffGcJqDnTYE4oknpoI4mRoL8ASn3PQL6ep4tTaJmmInTxkysJjayzbFFkGdBcnUWl1H2+DyS738Ahwv/SBPzL6D+5v+A1blfIkbmPVI+t/hSe58nKZ9AJQKwCm8Hu5rD0tGseTeqlTwWdEdKhJyULfpbrRc6k7GKdY4EcSu+xz5HIBekm2GMwDAQII8+fzn0+t3HYJAiBkLU0BOkLmkN0BQ3BRmcNEVYHnYkOgkHsgJXhwujpyYqs9qmGkqTplsblGYIeAzI/+p/zYD+L6D+fx0bbJ99ZORnc3P1f/Uv4S4YGfn5ykT3L6YHBv5hjWxuhIG+91fMlgbafz0z0v0Ks7m+tlcXBrteYyYY7nn9X1kPs1Z+/6fn0LlfZa9hr2XnYcbOyc7/L407F/Q52Gf6aeXhXzorLCZguL7i9aHqp6r9ZXkZHblxA83J/qs14fbCGn+Tw0oPzZNyR0XJM9eHkmeOsqglhV5lcZ2AfgPPnlxD/ZMbBOJbBNuHBFtlTEQ/xlK2IylyUue5Dlgmm2N1AwjoK4U0NjNtMJ1w2pBkPEqTAKnF+6t3esigxeEGjZ0rKNP/GmEEcaM//Qp6f/wlvC7/DplKn6HZ5iZ6PFiHM9YIRp6UOI3BdCMet8FUOqtauFXizGunbzKg15BT2kDq9Rk5pFWuEFWQkVO6W2yL7XxLbGcZYi1ZFbPh5AT6SPHGL83W3yFHm5wKtQsoNvoWTc7/m703AW7jvPJ9q6ZeTU1N3UpNpVKpqVQqlZeXyU3l5aZyU365GT+P7es4tuM4irfYjhdZkWVZm2VZK7WQFMV930VxE0mRFMV9AUEQXAGS4E5xEwiCAIgdjUaj0Wg0sRHqnHe+puQojp2xM1OTxI9d9VWDAAECxNff7/zPOd85v0SYvwFrFftgpeRVmEUlv5T3S5xzr0lK3dr4DjhQoTtJ4l37SQT6OQnmLNk3PpgiZaPzaBDzaqLSy0CYvEZKtyJ4WyCy2ISAr4XgTB1C/TpQfZlgQ6PY1HhYcrfbUK1LMXMEOikFS5LiiHpn8LU5vB6l/e0IdJIctzV9TVL/YVT/UV03bJuGxbt2jYhAj4me1aDIGujfcTbt7wR3pxj1n4VY5CmIRL6163bfPb5IgP67z/mcP4yhM9TjJClOoK0JAZexXHDougXLkkYwTOqE9RFrQCtn/LdbBHa6NuxVXY16BgtiqKZFlzJftHQTkKeCTZ4v1XL3jNcANVQBbhWq79k2HM3g0dQBQ8bEdYR9JfhnGiSYe0mVqYlKPJdLLnevulRKkvOMloBTkQlGBJ6+gTQiOQpLFQdhpvBNVOi/gv64Z2Dw/NMS9CYvPwPzac/vZAWT2tG3PgCuP11yp3O48BE3e3iiGIIjGRAYTEPQo9pR4cIxVgysIgtV8iWE6Qmw1B1DwJ6W4uabNYelbUzDp/43jiegBoGe8eS/wIV/+7/g0r99C0r2/A9UPXukvcxzaS+jqn4H7pS+i0DfJylzUtvaheqbZLITZc72ZYBPmSclwdFdSdJCTdpRknrxxuojUtycdHkjLvuZlOelUqQEDMsFb8EqqR1e+p6oyX8vNl5wPKq5dl6Yq01m7rQVmtd6qpd1/c0Kg7o3f3NqZI9pfuIbBMb/IaDfH/fAfn+YzeaPAH9/sAbDl1jD9JfImcD2wXHfAPi0QR4n48HnGPC17r82+Vv3x/2fyfv4tM8gvc+JwW+sjfa+tiS/VTPbXjk12ZBnHq+6wqhLTvPKzEPB/tS3o0NXfhMbSnhR7I/7JfSeegbU538Bw6efkbr6KT98CjSXX4A5hO16BSrVrgxUq6lomF0EZ8slBPoZye1O9WRKCY4mNDKNOFdIad71ikNguH5UCpPMZ76MSv05fO2nofO9h6Hkue/C2f/1Nbj4r1+Ha7/6vrQbYvj0U3AbjdGF5Odgs+qQVOSIRmOS7b4ETFe81BCFIT3FFRngV6IRqiqE8HgpCEqcx31XYAthKChQPXedB7blBNCNh8Bx/begy38RllOeBeX7/wodh/8NavY9DC2HH4OhCz+HGQT9UuGvYakAf6fwJZyvL4EeVTrJPjfdeBusBL54m7jfqS40FAaSwTeQhqobrxt1Lir0AvCTPBQEOgFvaBZV+uINiOA5OFEKAVURPlYBtDIHqN5kMLecgvXqt0FX8Sbo8b1ZmklCHDGKzuD/lcTP4yW3u0+CeSH4SWhsuhLCi/UQ1XbA9oYcYqZRuGsdF+9SCzFU6GHRZ2JEv331dwF3J4TY0xDb2gX67vHFAfnnBfrHs9wDXtd3BY/rUcFtey3gMscJTkNpwK5tFWwro1uGqVVBN2jil7so3/xN1qupFjyjpWH3UFHUNZAfs8pSRWPnZbD15QGNAPeMVYNzoAj0LVfArryKEL+B9yG4pxuAJQlxqooddT5BysCW4bgqZbUz6qsI+Ovgm65F4JdJyt/cSRq8xMFa3ftwp/qw5G5Xpb4Mw1dehIGEPdBz8qdSos906h7Qle4DN8n4JQ1ZcFH0KYkaToIgqglpjKLCIQpjMAO2RgtAIEUy1CVAI2xJe0hKUuXnJYVP6qevFr0OM8l7YPjkY6C++DTUvvVjuPrqjyH/1Z9A6VuPgiLuBZhI+Q1oknCBzH8DF8UjCPSDUpMV563TYEdlThFw9+eAuytRipn7BhDofdl4O0XKaCaNX+wNJ1AJvidlV5PY+2z6r2GKuH5TXoCp5JdQqZOqZqjay4+I00XHYqq8o8Hxq+e4mdoU6k5biV4nr9OsD7Y1G8b6LpimRx9B6H0FHoiZfwT0P3+e/N0fGAUfg7wE2I8UvfkfPm0QGD94lm67fn+bjI+/5ieOP/EZyPOIQWOYGHxlbbCjbEV2Y3ShtUw3XZdhV5WcZQezDwvyxDfCvedfiikvvCDKTj0LvSefhsEzP4e+E09C15HHQXbsCUmlk7aiS3lvSt+rhXTfu3kGgX4RzKQW/03iOk7D7zUNVe0pSaFbcI4arqNhVvsBgv0wzonXYT79RZi5sgfG4p6C3kM/gZyn/wWSHv0/Iedn34aWff8LhlE1zxLVnP4rWEGl7sJ5Q5LjfN0XwCsBPRm8ilQEehrO22wQRvIhMlUBYZJpPpwNW0qi1JNQpV8ELxqyHjRkPTePgbH4Nbh95Wnofvf/gdaDD0PTwccQ6I9D/7lnYDzpWdAk/xzmsn6J8/Vl0Je/Bua6/eBofR9BfhDsCHNXx4fg7jwt7RMnyWqSgiYwHycwzwefpNQR6pMIcE0phG7XQnS+BqIzVRDSlMMWGh0klu7quQLW9jgw3jyCMH8btOVvwHrVftgk8fWmD2CzicTqEeryy+AdTEeo56G6r4AQvlZ4CYG+1g5RgwKiZjXEbJNizLUoisx68Hd+O/W7LXpGDLM1EPEd2nW57x5fNKB/rpKzHwc62Yce8LgeESjrywGX6WTAZcgNWLX1gc05RWB9dC6wKtdxt1us7Gwj7Z2o4uiRYt41WBi0yTOjpo74mKnzcsw1UCw6+wthszMFVmpPwFL1h2DtLQBqoAzo0SpwKAtRcReAsy8fHAh/Z38BWGWZYEfAoXEA3FQ1+OcR+qjW3YN5YEMAmlovgg4XUy0umATo0wV7YQhhPpb9OiguPgedJ56AAVRAS/mv7NSQrt4PVNNxXAAR0qhsAsMFkhIPjpdASEqKy4UgqvUQLjjkTMpVkt9jceH09cQD03ZWynBfzHkF5jLx71zCxS/xF3C74E2YyNoLmoJDMF58FGYrz8Bq3QW4XXYM7lS8DxsNZ8DYeA7Wqo+jWjsKruazYL9FalenSB4AqiNeSnAi+3Mlt7ssFQ2Is2C5/h6YUJmRrU8rCICV/NfQOHkBJhHok0nPwwzCfS7nbZjM2S/Olx2NzZZ9GB3JPS6ois+zU7Vp1uWOa4vr/TcVxlFZsXlqYJ95fvK7RMk+OA8+D8g/7XcefP7HjchPvP/TYPynxie87p/6m5/0mQjQ0WD4xubc6MtGtbxwfaBZvtJdOTfTkGlQXT3nVGYdYnsSfiP0xL0YlZ3ZE2s//pTY+f5Pxe7jP4XOo49D+6HHpDa9arLF69JzMJPyotReVU9KweKcJrkOZP+5uf5DoNri0RhMR8iT+u6HwVD1HoL/hNTxz3D9fVS/b8ECqQ+f82uYTvoFjJx6DCp+/T8g/Wf/IgH96nPfgbbfPoSwfxJuk21mCHQSMrLXv7+z75xsV+vD+dOfIbneCdADCPQwAjMyWbHjfkfQCkNpUpKct+2ktC+d67oI1sq9sHTlZ9Cx/39C/dsPQTuq867jT4LizNMwfOlpmEx+Fg3HZ+F27i9BW/I8fr5Xcb4eBqr1OLgQ7O7OkzhOSVnoDImhS1BPh8BEIQK8BPwIdn68GIJT1+5lvFdAdPkmbC/dhOhcLYRRYYemq4EdLgRLOxpBbXFgajgMG7UHQFv5W9i4cVjasbJRfwSMDUcQ6nE7W+RIJj15XfIaSw0Q0RKg90PMMgF37bNijFqJxViLcJd3m34X9A6K24FciAov7yTFSa1VdwvM7B5fgFj478dnXrgfBDpPKsWRPuhu2x7eaTjC29aS/ZbFyoBB08mtKsZ9i92L3Hybnp2ttzMT1xl6pIRzDeQJ5u7LQUNrXNjckxx1KnLFjebz4krtMbiNqsbUlgpmWR6Yu7PA3JEKxuYEsMmywNabgwq+GKFeiJAvAkpdDhwpBztXL6lzClWsTZaMQE8CU8t5WL/nbl9B9bNYeRgWK3bGSNpr0H8Z4YfQW7u2H2yNH6JKOixVgvP2p4NHQeq25wGPIzxVhYo8B5V6HsK8BGFOAH9VKoJBmk3wA+mozuPAWr0PldLLsFqyD5ZLfgvLRfvBUH0MrLhoO+RoeAwW4/sjBXDQUBm8umOgKPKkgjoONGRsHSlgIa7Z9gSwINCZXtJLGlUc3iZbeUhCHNmq5um4IFWfM1W+C9rSfXA751VJzZFs/Zk0NCQSXwB1wh6YTn8VpnP2iuPZ+2NTJcejM+WnhfGSc9zYtURqqi5Hv9pdPa4fam/aHFdcss+OPuNe1nwVPpbR/lnd7J/0u59X1X8WGH/a3/3P8EqRmD+1OPVN2/zY89ZJRbp+pK15rff66PzNrMWJa+dM/VkHnT0Jr7Hd514Itn3wbLj56E9jLYcfE9uPPCZ24LkNwdf67mMwePopUJ39OaguPIffzWtwp+RtyYuyierbgvOR9KZ3NJ2VQid0VyLYSGniiv0I9ONScqPh+mGYz3kDptNeQmC+CctocM6mPIfq/1Eo+tX/DcW//O9Q+ty3ofJX/wJd7z6EBsTPYL34dVgvfQOste+iUv8ADUzSeyAD+KEs/BsJCPe0HeMUAbqNwAupSYJnPgRHEPT9V8DbegLcCEmuLxkcNe/C4uWfgvy9H0HVGz+E5vf+X2g+9jgMoBGsSXsBZjNwpD2D42lYzvslrF19AawNB8DVcgyvo3fBdvMgOJqPSpXdmL548CqSpIpunCoHhMmdhLjAJHG3V0vucf/YVQgvNkix9PBsHYK+Shpb09elzopueQbY8TNY2y6AuSUO1q4fAh3pHIfGt7HxiJQRT8su7+x5V+VDAJ8XXL4FkbUuiBoHYds2DduozrfptZjos7KxAL2KQG9FkMdBLPwEgORu/9JucZnd44sA87+/Nz6C+ucFup+mv+V32R7iXcZnArb1/X7zShxnnC/0aVWNzJJSwSz2jnO3Oxe42Zt6RnPd6h4toezyNNbQFidsdl4KWrpTwmsNH0ZvV+yP3an7QDS2JQMZa40XYeNWPKzfOAPW7gxwoYJ3kwpx47VA1LwdByku45uuwfuugWekCCyoal0IZJccDQJcAIzNqIjaLoGlKwUXhVSwdlwGY9MZ0N34AMcJ0N8g22PiwIm/65OnIKyLpfaOJCuYU6ZKLkB+tFBqzBJGVR7BhSgyc33H5T6ULZWFZbvigL6FRkjZ66C7+jY4Wi+AvT0RHLhgS73a5VnSeyNV7cggMX7XQBHQQ0XgUuQAhcPenQY2fH+W1nhpaxqJn7OKdHCjOjff/BDcZAsS2Vvccg4BcBzM10m/7R2gz2W+jIvrizCb+jyo4/eA/NTPQXn2FzCR+qo4nXdAnCw4Gpu8eiY8W5PIz93IpuZvlZqWOmsXdf2tCqNKVkjUuX1h7AfEnf1pQP4kmH4WVfzXHmp68H7y+anF0W/ap0eetWr6zprUrWVrveXtS01Zo5qKc4tDOe+Z+pP3OmWXXmY7Tv+Sv3XsZ8Gb7/3vaMOBR8VbBx8Vmw89Jja986jYe+wJUMU9C+oLvwRN8vMwk/EqGne/hfXyd6USvHpSnx+NTKr1LHhIR7Hm02CuOQDGqnfwu30fzHXHYA6BPnT+F7Cc8wqsX30LNkpfh7nUPdC478dQ95v/Cdf2fAeq9vx3aN/3I+g9/Ais5r8B2rwXwVy1F4F+HJiOsyCMZO4kbuJcJu1++eFc2EIFG5urgQiCPajKw4FzWJkiKXRbzX7gus8j2NGoTvjfoD79b9B74gkYjv8VaLJek2o33CHlkYuIB+oXaLz+EnRlv0Zj5FX8PG+BsfoVsNbvRaC/Kyl2O1HsZIuZnJRovQz+0UwENYlxX0VVXgbh29el+PnWTJWkqqMrrXhfgwRynvRNQKiT4RsrBXdfOl678Wj04npQdxRWK9FYrj8K1tYzqNAv4bUdDxQaLcwoXr+4JgSW2iG4poCwaQzC9nmIUHfEqHs9eJe1OGOcU3NXYCrFiP+g1H1tp1HL7pa13eNvGug7MDeb/0Eav4f6ZwX630u90F2ur3CU+Zucw/xDv8P4hM+y8TpnXj3uNcylMnfU5d7FgVbPglzpW2jXMFP1y56J6wbnSKl9szudMnYmcTZZGm9sjxdWao4E1+pPRTe70mOGtiviSs1JcbHyOKzXx6HSvgLugatSKVjvRI20H92O6pZGdc5O1QCrqQJ6GAEvJ8l1CNE+UpgGFW8n2YOeAM7eVAR8Bjh7ksElQxWMsCStVUm/dBuC144/WxGUpJwrUTVcf7JUo92P6lsggEewh8cLIDpZhjCvhggqi8AQiaXj44OpwLafwMVwL6yVvA4bNcfA0HgCXzMRPP254O7PAXqgQIrxk2x8drx8B+j4GD1UIBXCcQ+iYlfm4/vMAkvzBTQucAFEg8QnT9pJtkMFRwwOS8OHUvEaknC3iQplvfwArJJa9BkvgybpeRhP/BUoTj2DivGn0HPiaVF1+VVxMue3scmio9HJiovB2w057GpnpX2tv1mrV8k0Js1Ak2V29JJ9buJZ18eS4f49hf2Z3ON/Yy2BdxLoJr7hmFE+YdH0HjGr29I3lNerl9tyZTO1l8Ynyj5YVhUcNChS33R2J/yaaT39HNd49GfB+oOPhW++93is8d3HYg0HHhO7jyEMLzwLY/G/hLEE/F6SXoSptNdQrb8OK4Vvwtq13yIY90lhHtfND8CNipq6iUrz+n4wV++XChttVL0LU+kvS273NYT5RvmbsFL0Ggyfewra330YWg/8K8iPPw6qCz+XDAdt6QG4k/8qGpVv4GsexTl5Gvi+y7A1TDxLhQj3nWJIJMFzG1VxdOqaVDApOIpAJy5xUsSl9h1wNx3DcRyWM56D6YSfwVzWS7COc82Ihsb69QOwgcN0412pOpyBVJer+S0Yr++FzTrSAIjUdn8L1fm74Gw5gnP2BLiI+11Gst0TwTeSBoKmEIGNUJ8pg+B8JUQWyR70ahDwPUUW6iE4W4vKvVYqB0uUO4cw58ZJuWe8lvC6dvZchs1bJ0FX/S7M5/0GFovQgMbrnFSFdJPrjHRhnGsB/0ofCOujENqchrBjUYxQa9EwbWC3vVZdlHPKYgF3+l2BfQWiwvcA+C/vutt3jy+GOv8EoH/GTOa/3+m2Zv8yyzq+LlDW7/lcpkc4i+5FdvPOAa9+Po7RTmR7V4ZqmEV5p3e2fdAz1TBFjVUvWwav6Td688wWWRZl6U5m9LfOcGv1JwVLZ1rQ1JESXq07GZ0o+G1s9uphcf3mJdHSlSk65bmivScDqIFihGE+eNQV4BmrkirNeccrUfHmSdXhbDJSAz4L3Ahne+dFtOgvgKv7Mjhx2DouSuf7YHeg4rXjIC1WnV0J4OtLAV6ZDCxJKupNgi1VgZQER+AdnSyByHgRhCaKUbXjeTQDF8MM4PsTwNN6DAH7Ni56qJxvnUMlgQsMGheeQXyfCGtSnpZ4EAjQfRMVaJBcRZjnA63MA+9oKTCqncx8SpGLhkASeHqugF+RCnT7WbCQrlP4uqSf+TqCYKPiHdFYdVBcr3xXJKVrl/P3iuOJz4uqS3vEgXO/ELs/+JnYduxnYvv7T8UG41+NqTP2RScKjwRnquK5pZYSSqdoMpnG+xbscyMK5+3JYvfq3H7X6u2H7NrJL/9Z6pyAmyShfXx8hhj3X9t1QVzuZMuba2niEdfC6JvOaeVpi7otW99XUbfaliO73Ziknqo8uzCCUB/M/q1VfuU1qv3cHu7WB08LqNbDNw+hWkeodx57QlRdfE7UJL8kTlx5CdSXX5TGOA7S3W8eIb1c8Droy/dJeRtWBLmDVGtrPASWOlLu9xBY696D1eLXYTH316AtfhW/97dQCb8Dt/Nfh7ErL8BCwV5U/QTye2GpGOFa84GUQ6EveBmoG+8h0E8B13MRBFTf4fEiqcKhgPOYuNmj0xVwd/46REhCGhqlW8QdjnPeWXcIqIbDqO7jwF5/DA0JktSH76/pfSmz3NF+BuwtH4Kr/aQUK3e1kPHBzj50qUELqvKbB/Hn/ZLrfafz2glw954HbigF2AFSopXE0vOlZiq8pkRKiCMJbKGFGxCaJ2q9WlLownS1BHSSHOcl20dHMnBkA4sGCrmGDQ0n4DbCfCThJVgqPSgZ7KRREzt9E/yLMuDXRkAwzUDIvhILU+vhKL3JRlm7aZtzjd4NMOViyHssFvE/CeHwN3fd7bvH3zrMPwIyUdnS+Bwq/SODAJ/Dcdw/BRnb1wKM4zvE7c7aDE/5zGuveQ3LR7zrs5c8y6pC72J/jXe+u9U93TLoGGvQmIdqFszKazpHX77Z1B5v1zV+SBvbEjlTZyq/1nBOWCg/HFTnvBVerjkTNbamxDY70mJOWaZI9ReKLnkequ5UcI+WSVB3orL1kApxCHQLqnEbKmsPKmtKTtqnElBfRKAngKsrHlw9iUD1XsYF5gqq53RpWwyx+F09JMaXKWW1++QJwPXGI9hRTQxngr8/aUfFSAVl0iE6XijtRw8jzEMjqRBQXASm+7wUw6P78DXl6ajKsySQE68BS7LvEeL+SVQOmkrgiAsRVTqpNU/UOzNSKHWK8+DPdF820L0ZUvlL560PcVE/DJbaQ+JG1QHxTsle8U7xG6Kx8h1xo/yAuFq6P7ZSsj82kfKqqDz9rDh0YU+s99QvYl0nn4u1HH8m1nz0qaj83EvhodS3gxMF7/NztVeYO10VVsNwx6pzdkTtWpmqp1fnT9OrS0/5tPPfeHDv+b8H9D9S6Pe3pLlQ4T6Qef5HcP8rhzoBukc7+8+u5akfuZfGn3PO9e23j7WetYzU5+KcrTHISzu1renDi/UX56arP9SNFR00K9PeoLouvcy2nt7Dt3zwbLD52NPhjg+eio4mvhibzXlLXCg6IE6k/UYcubgHRi/9CiZSXgZN2sswnf4S3EZYr1/dC+slvwHjtd+AueptMFXvA/sNBCOqdEP1e6iEj6ICPgjGWlTFCDHjzTNgQqPR3nkZrG3xYG65AFYS4sHz+rX9sFb4CthqDoC37TTO4wScv1cgPFEoFUXiB9IgOJwFIeJ2n69FsFdKDYe2cI7zMrw+br6PRgVpG3wG2K7z4Go+BWY0Dqx4n/UmqdR2UmpdyvRewDl/GtydJySgO1uOgbP5qLQH3dZ4UIqnE7i7u04Dhb/HyC+AH9W51P5UcQn4sSzgx/G6VaYDN3EVIitNEEagB+6BPDBZiYBvAGGmFiFdghBPB5Z4wkYygUODhBnKASte68am07BQ/A4o41+BOzcuADtxHfjFbtjSjUDQNAUh21IsQq0Ht5lNOsa59Hf9tFpytYe4kxAJPrfTQpXfreO+e3xBFPp9oH9Ot/sfPJ9lv0Ti6GGK+ibZjx6gLQ/7HKbnfFbDm97NlWOsfj6BXZ/MZ1aHK91LA830XK/CNdmmdqob52z9RaumzhT9Rmey1diV6dS3XmYWrx/nZsve42dK3wvqbiaEjW0pUVtXatStyI95BktilvbE2EbTedFJksqGisGBUCR70F1KvMgR2g4Eq7s/EzykghtJbkPVTSsIaFMkmNs6ToMVFyya3K/MwEUFF5oBPPenAtUVB/7BNEmV80OZwCsSpRGSXOspEFReRpjnQGgsD0IqVOiDqGz6EsCNSogdyZfid2QfPDNaAl5VMZ6LgEVlzmkqcLGql4DuVeECNVaKBkg+vmfiakdV3pUEDlLytvsKuGXJQOFiZWn4QLQ2HBMN1fvFtWtvi9qSN2IrBa/FFvNfja2Uvh1bKnk7pkp+Kaa89HxMefEFPL8YlZ17Idp15oVw68lfhttP7gnKL70aVKbu58aKPmTmb6Tbdb21Ouu4XEMvjre678wn02uLzzO6pe98PLP94zHwTwX6PZgTiD+4t1za8/0A3D+C+l8A6J8rYQ7fJ6/VftlzZ+HbrvnRR5xTij02Tec+p7r5tH3sVqZVVV++OVDZvC4rUq40p0/NVJ1dHit5Xz+cf9SqzDlCDecd5QazDwijWb8NzxS9G12qOBa7U/uhuFL9vjhb9A6MZ/wGZgvehkVSW7/wbZgvfANWUQVrS98ALUJdR3qc489owEl703WVh8HYcBoszefAgXPC3ZcBbjRgabJNc6RE8uywY2UIuVJUsdk4f+PBVHdMqljoRUXtk10EHmG9PXkVxIU6CeqBgVTwK5Jhe7ocoV4j5YVsKcl+9ARg2lB9Nx4GtvMs0GgQ0O1xCPJjYCF91G+9L8XESfU3VkGS7OKl8qtS5baOk1KlOOvNwwhy/N2b70lQJ6Cne0hVt3PAKhPBi88jme/sEF5jGnJ95OH7L4GtuToQZmvQAC4AZrgIvGgIB+caEOo3pRg6h0a0dyQLmIF08OFzfGP4XFTqLrymzW2JMFV0FKbKzoBj6DrCfBQi1mURQR6LekxBVOXUNudcjvFu+V3BUwoR/hjcDT4L0ej378XOdzut7R5fGJf7n+V2/wOXvcfz33ie/3KQYb5G+qIHGdePSJGZIMl4d1nf5ByGE7xVm+AzLmb7jYuVvo3ZJu/auIy+rRi2q+pmrIMVi/bhSp1Fcc200ZHhXKo7S9+uPsHerjrOa+vPC4a2pKC9Jz3sVuRFXb1ZMUtXaszSg2dZbmyjNUG0yTOBwgXO3ovAJp2aBnOA7s/AkYkLYAqq8SQEepoEcFdPPKqak6huzoNHgSofFzaPklj+OeBGdW5rPQV+Ehsn+1mHMyDQn4jjMirxTAgNpUBoOBkiY9m4MBYg5NMhMIQKHw0EO2mhShZVHNxEuRTz48bLgJS29RK34SSpSV8jLb7k/bEIe+J+l2rP92eDqTkODDfPipamU6KzI0HcbDorGm6cEDdvvC8aUZ1vVL8TM1S/G9OWvxNbrTgQXb/xQXil8kh4MndveOHa0fBKzZnw7eozwalrHwZVeYcFVf4hHId5deH73HTlJWahIdOp7a40bY60LaI6V7hXpoo9usV9vrXl75OCLvAptdr/3TnwANDJ63DmxX8ig9y+D/W/JNA/9755fI+kyA1xu7uXNd/3LE08Qi2OPEvN9e11zctPuueVydRMb7FN1dZoUtbKdD1XR1das+cWb6Zpl2+lmnWtGc61lhRGeyuJ1zVfDq41XQyvNZyLbjRfiuE8FtdvxYv6pnOgvxkHazc+hFVSRKbyPVgqfRuWS94GNNRAW3UIdHUfgAFBrm84K+V7ONHIoxWZqEzzJWNRCt2gEctNXJPgxo/jvEMwE6h7iOHaTZoGXUR1fhl4VMVRVOh356vg7hwqcmKcKlKkUsbbC7WwPVuFqj1dArqv+ww4SfwdoeskBVxaT0ueJwrVupvs9yb12RHiBM6+oSvgx+dxw6ng7buEj50BF15bVPspSZ1vXn8dNmvfkLawUZ2ksttJSamTRire/mRp+1pgshT4yTLwo8FLtps6Fdlg6UxCAzdZCkUJs3X42M5n9KOSZ1UFUhY7uU3+F+4+vMb7yRbVTFiqOQ/alizwLfVD2HFHjNLG8DbroGN+z+pdwdstbnG5YkQ4BLGtJxHm39uF+e7xxQX6J2S6f2agE4WPKp30RQ+x7NejXu93g37mIVLbPeh1PU86sAlu83HeZby05TRmC46Ncr9N28htzHXTK6phz+KABlX7AjXZoTX1VRi0Lenm5YYLzsXaU8ydG+dYY9sVztKdHrR3pQZNrYlha39hmJ6oixrakqPrjedils7kmL0vR3QoMkUSO3f2XkG1exEcpPVixwWwocqgZAk7oxdVjhxVQn8KWvuZuEimojpP24nL4eP2trO4WKUh0HMgMJIOftLIAhVOaCQNwiPJCPEUVDTZEJ4g2cGZkgvR2YWL1EAOLjzVEtQD09W4SFUAP0Xc6xW48KKCQpj7Z+rAh7BnRokbXlLpogdVPT1EQgVXRHPLJXGz4YRoaz4b0zecjmqr348aao9FN6oPRY31x6Obt06HLa0Xw7aO+KCjOznokKUJdlm64OjNFux9ubxdnsfbFcW8WV7ErXflsmtdecy6rJw2KGrtm6oWk2Oqf9W1MDbuXplppNcWzjK6xccD+j8sIvO5wzb4XAJsAu/7ML8/7gP9k1zu/1Vz/HMr9Ht16EkVOkq3+E1KO/099/LETzxrE89612ff9K7NH/GskTDSWD41P1Rjn+xsN480Ko3Ka1P6rpxlQ3e23tSTZ92U5dPm3jx2szuDN3SkBQ1dqWFzT0bUJs/GuZol2vqyRUt3KuibziLUj8Bs4V6YxjGVtxe0dafA2JIA1u50qScBCcu4EXTu/lzJ6yMpcgSgT10MPlUhGo5XQZiukrqVsaOocNGo9eLcdqPxyikSJaN0a/AK3J0uhd/NlcP2BGkDnApbozkI82q4e7seIupc2BpIQvhfADfpwia7AA4J6KcQvmng6UtCKJ+VYE3qqHvwcW9/AvCjGVLmOqu8LNVVp2XnpYIy7jZ8buM7YG/YB1TrUaC7T6NRQOqxn5Jc7j40kAOaq6jS0dhVF+58lokKsMuz8X+Cxk49GgW92ZLR4p8oQ4gXgR+NFnIm105ghoSvKqSQlnsgDyhlAVi6M2GjPQvcU+0iAj0apQ1c1Gs1xHiPQgyxuXfDgQMQFp6ASOQ7AMJXd2G+e3xRY+n/xyeMv/vMbvePQT3MUd+UoM4wDwkPQp22HQm4rXEBlzmdtxuKAzZdTcCia/VtLMp967OjnhX1lF3TtWgaqNXqO/MNa7eSrCsN8U5jexq92ZnGmjvTeVNPNk+pawWXqjJ8p/5cGFV8GIEfdShyY+6hghityBAR5KhyL4jW9jjR3oW3uxNFV3cc2NpOoZI+h7CPk9Q5O4SKZzBdcuMxg2Sf6yWE/wXwkZ7npJIVqg9+CJXLaCqEVAhyVRpCPAMEFSqc0VxgB1IlFz5DFDcusv7JKike7kNF7tfgQjRThSCvwMUX1TrCnWS3E7gTFyM9lC3SgziG8kRckGKWriuirSMxZmg8FVureS9qaU+KbnZcCRtung5vNH4YtLbHB529KYK7Lx1HGo8GBO8ZKeDo/hyOkmexuNgzVH8O4+jPpt0jpRQaPE56qsVKz8hM1Hy/3rMyvurRzU4x+tsKr36p2GdYfZO42uFjWe2fe+7ci53fL+H6oEL/COYPqPO/1Dz/XJ8L3y/5PAG9/iusYfnrXv3Kd/2m1Ye8G2tPejdWX/RurOzzrq+c9eoXUj13porpxeF6x1hzt1lZMbypLJuxDVetOobLDXZlidUxWIrfxzXOPVQi0CMlYVp1Lcqoy6KM6mqMHioSrT2p4joq9uXqo7B8/X1xrgzPNafB1JYMjv4CKdnTM1Iq7YYg/QlICMerujeGs/DnfOARbgLONWJEkrnHosHIIfhJXoiz7TSq9ATYGk6RPEt3p1CpT+ZJBiopYxzVlElAj04WQwTnNoE6K4uTdnkwvfEIboTvYJrU+MSrSJZaohKXu6eXxMIvozrPgIA6Gzh8PS+qdlYRjyocry8Z2WN/Ehw330WlfxjcHR9Ime4uhLqnLx6Bjs9R5QGHMCehLgavOQJupywdTC0XYKP5Ijj7ciTPG4NKnR7IxmsrF2+jQsdryD9XB8HlFgjM3gDvZCXCnXRgrBU94zdivqWB6DZt4rd9TmuMc2lEwVcuKfOPYP5R7/NdmO8eX1iof25X6McMAsn1/lE83ef7xj2o77jfGfdzAuN8Lci4DgZo22neZUnmXaZcP1HrFl2jz7TS6VmfU1DLarVzVjllH29btA/X6izKcoNtqNzqHK5w0qoqyqYsYVH5cMaudF7fkihobyUEzbLssGugIOpVlUQRdlFrR1zM1nE+5panim5Fukj1XhGdnedEe/sZcHYnoHJPQKCTxSkRFyVcuJTpuKhk4GOJkmueHc4DHyp2P1lkcGETcLEKqckWtVTghjLAN5QlxfHcJD6PC41P2laDCy9RC4NZeMbno2ryT1aK7ESZKCl1VBOMulREhS4yqnyRUqTGEOgxerggau/NiG62JUTXbpyIrtefDOvqjgXtRIH3ZQum1kuCpSORd/Vnc25lHksP5rKeoWyGURXQjKqYxr9J4WLvpJV5doS61aXMtbqHik3MWKXBO9WgY+e7Vn2rQwu+9RkNu7Ew6N2YbyUg8m4svcihAv1z1PknKfQHXe733e2Sq/0voMz/w9fDA14H3q79MrO+/jX/xsa3fJvrP/CZtI/w5vVnfKY7r+M44jUsXmC0s9n0kqqcmpU1UVNtcnq6fZyZalpgJmu1nonrJu9EFcVOVDHMWDnHaKoE70RFkCalj0eKoxTOW4ssUwodrTWcFVdvnBLRSBVvV7wPKzWngB4tA+9EpRSaId4dYhCSucWSHgKozgMz14EnhVnQaCQjQObaRKn0GDOUiwbqaUlNCyOpEMY5vD2ehUDPguhYBgI8E7Y1pRAjHc80RWiwkhBSCviUycCRQkn9pI85camnAUdqpQ/uPEaA7u6Jk9Q4yVz3o0oP4Gtxg8n4eALed0Vyx3NDyQh4vMZ6SXe0k+Ds/BANgYuSu51cf268/kj9da9kWBOgl+IZrx9FupTbYpeloUrPwOupGDxDeQj0fFTyJKRVBb6ZRhDuyCC4PoBjUAzqVdGgbjAYXBvgw5tT9LbXaI7x1NzvgmwrRPlLEAnu2XGzS8p8NwFu99g9PhPUUamTrPePQf2hMOd6NOjxPBvyUK8EPM79W27HiYDbdiHgsqJaNxZzto1q1rzW5DUsdzO6hUFqeWLcOd0zZx9vWXaN39S5NU0GeuKG1dpf4jTLcihrby5j6kxlDR0pnKU3R6CGS4IuZV7Q1nMlbO+OD9s6L0ZpZVYULfsoJU9FwJ+LOTrPx6jeJNEluyzSfVfA3XtZdPcmil5lusj0ZyHMM8CLgPbiQkiS6Rg5WdgyYQsVuR8XM2vrKXD0XEZln40qKFfaF0sP5oicplLkxspEaiBb9KoLRQS6iAuvyCG8varCmF9TEcOfY6y6BM/XYu7+jCiqp6h7IDuMQA/betLDhpbEoLb+lLDe8KGgbzzJWzsTOXtPGmeTZbCuvmyaHsyj6MF8J9WX5qQHMu2MqtCKBowZX9fkGys30COFevdwoY4eKdZ61NdW2Ynrix5N7Zx3ummKXehR++6olf71mU5WP1+DML/kNa2+yBvvfPvPVegfh9/Hk+I+gvnf0B70T4M6MVAEo/GrCPNveM16VOvrD/lNa09yJt2LnFG7jzPdOcEal5JZ3XShd1Vd512QdbKzrcPeGfzfT9cveieq9d7xCiujLnfSI0W0sz+HtfVlc6g+BddgUdA+UBS29eWGdU0Xoku1p6Kr9Rdid24mxNBYjVEjZSJ+nyIaAGg4loEHFapXXbQD8MnynYQxzVUcZcBP3QP6WJE0RwMTV6WEUKaPdDtLREWehiDPgtjEzogi3LcnSyEyUQxREkIaTt3JG1EhOEny2UAa8MNZUh9zAmavBOdLEtClHuWdZ8CLapuodH40S3K9c8QFr9oZgjpLAj0/TJ5/CQ2Lc5K73atMkYxpl5RISq4lklOSJ21h80kZ7NlS7gtey3i9XZG2drLqMgQ5KvMJ/NzTdcCv9kHQMAlh66IYcaxGI5Sej9IG57Zbb9im1xdj3s3Ru5yrNRZgsiHM7YMQ/xMIh79xr/nKrjLfPXaPz+V+J1AXfg/1Lc7zwxBLPxxh6adCXvrFsJe0WXUd2qKp0zxlTfJTtmzeZS3jXZt1AYeplbfoZazh9jCzphlnloZn3HPyZddEi86hqjE5BkrNpo5k+3LNCVrbEEcbutJY13ARZ+7N4G09KYK5g7in08II1rBnJC9MKdLD9q5LUUvbmait42zUJUuIeQYzRbc8SaRkl2OoCERU9qKrNyXmlCWJHgQ7RZKQ8D7fIEJakSLaO+JEQ9MZIIqfGUgXUVWI3uFskcTB/VPVogTssdKYDxU5PVyIYL8a8yLAmZG8GC68UVTUUXw87FWXhe1odFg744Oe4aIgNZAnWNoTBUNrPL9+6wK3Uvkeq6s9wphb42hnTwpF9WU73ai6PQP5Zrciy4QLHI5EAzWQpaP607VotCyz6muL7Hj5nHesYoadqJzyTtZp2Jmb4+x8+zC70Kn03e7tZleGm1ntVA1nXCr0m3Rxfuv6y0RxEkX9H1bpUlKc6x8fzG7/S7vZ/3OM1N9vxyNQJy54xrb+NTRAv82ZN37os+of4e36Z3n7xut+s/aQz7B8wb8+nc0uKcvZ2bZmdq5F7pu7NYrfx4x3snrVq0GwT5SbadVVp2ukhHKryhhmoprzjFfxaJAK1p5MQdt4Mahtio9u9qAhOnQ1xqgrovb+vBgqeZFRFYtS0iWqdH6yXOSnq6QtX77x4p3zWKmULMaRbV6kNzgqXuJJIsAlbnNOmfSR612cKoCYJg+BXoLKPRuVe55UV0EgeSMjOaiu0bBFNe4fyUJYZ0plW4mLnSHZ7f0J4EZ1bms5LmW4+4ZS8fcQ5kNka1kK/j0ykvB5+PzRVMmYINvc3NL2NQR7X4LU19zSfBxhnYaGcQ54UJH7SM0HNFQ8wwXgJvktpC0xnskWVE7yeJWTzw2B2ToI6YchbFuEiNsYi3odwjbnst4NuOd+t8XKxZC38W7QVyyGuYS7wcABaa95NPDde7Xad9X57rF7/FlQZ9kvwb3s9zDHSXH1bT/zI4T8IxGWfSbK3QO7jzoSYujTQZZO2mKoXIFxlW15HDU8ZWpC5d7t21xVsroZtWt+YMahaV+wDVUvG7sz9RvtqSZ9R7rZ0JmJqj2PNvVkMjZ5NmuX57AIVY5WZvC0MlNAJSy4epODlCwp6OhJCFP9aVG3MiPq7EmIunqTonR/RsyNMLd3JcZcspSYuy815uy5gucMPCfHDM1nYpbOBHw8KeZWpImo3kVmMAuBjep7ujLGz1ZLMEflhPCujHKTVVFuuibq01wL+wjE0ajwDOcGfZryIDNaIriHCgR6uIj3jl3jbPIs9k7dKWb26rv0+s3z1O2y/fb54tftuhvvm23dl01Uf7bB3Z+toxRZy25l3jLVn7Xg6kuZowdyZtBg0XhG8sdxoVdzE5WDvpl6pX+uWc4ttsn8K/2dvHakmdeO1QcMC9W8fqHUt7GQzZt1CWgsHSNAD1h0D3Nm3TelLPc/0VL0s8Scd1S6648y2r8Yc/p+Jr/rH1kWwe7Sf8XnMn0DDc/v+F2GHwl2w+Ocbe15zri817s+e5xdGkhg5zpzufmOSt9CaxM32yTzzTaMeqfqpnxTNxb8c40630ydgZ2oMvvGK+z0WJmTGiqg7TgXjK2XOf2tS7yp7bLgHCgQ3CNl4c3ulLCpPTFq7UmJeUYKca6VxLwE7qoikVUXIOxKJMh7RnIRemUQmC7fUbIIdr+ahI+IYs4D/3Am+Ejv8L5EiIznwt3pqxCbKpGSPIMI7TCBOt7vHyLudgSx8p5KH8lAWKdKbVD9eNtHgI0/M6QYDb4miZ/7RgjMk/E5SZIb3iu/AJ7eOHxOInAIeU9/Etg6z4Gt44y0bdTUfAIMje+jgZwq7UW3d8aDoy9txwsxXAie0ULwqkm8HMdYPt5PclOK0HgplXaLhO/IIGyZikXpjWDM76LuBjxTd0O+xliYTxYjwpG7UeE1iGw9A9uhn+wmwe0eu8d/HOo47u1xl5LlAl+RtrX5/d+Ksuz3CNhjH4Hd+2LY530z4mMORVjmdJhlEsI+T3rQSxVvue3VAmVu4iz6Tt/mioIkz9ELiinXRNMcNdGybFU16TaVVYZNRZnZLC+wIuidTiWpE59FU4o01t2bzDm6L3Om5jO8vTtBcCPg6cFsAWEfpPvTw97h3DDVlxq2tJ0PW7sSw/bulKijOynqkqdHXT2p0c3WS9GNm6jsOxH+8tQogjyKz43SwzlR31hx1D9dHfZrysPMSEEYwRr0jV8LcxPlQd9kZZAeyhGo/lSeUqTyrr5Uzt2fybkUmawT3xcuzIx7sIDa7Eh0LlYdtavSXzEvVh4yrdYeM2hrj+gsree1TlnKsgsBTitzZuihAg2jLlP7Jq6PsgTemmqlf6Zezi80d3PzzZ3+hY5mflnWyK8o6wM6VY1fr6nk9VOlgmEuP2BazOTN2iS/WReHivIYb9XvDdgMewKoMANm/Xe3zOZ//nOg/nEV+weFZP4GXe1/+rPeq4ZH3PAektFv/qctj/mf/fTGtwSb8fvEOPLbdE/5Dbdf9mknD7Krw6e5NXUypx0pDGiV1fyKvJlb7JbxCy2D3FzjODtdO8dOVi2yE+VaVO16j+qqiVLmWa09qU5D60Xa0BLPOPsLWPfoNc4qz+ItvRkCpcwNuwezw9RAZpQZyYsi0KMsGpWo0EVuokxkVXmif7xUJMlxO/H0Cqk16U7b0nypXSk3lAlU10UEb7LUkyA6VSpBPYQwJ673oCpXyhNhFCkI6GwEdpbUx5zE0aW+5kN4m2Soj+XiyAMeB0cgT6BOlPxAqtRZjVHESwVlXJ2n0Ti4AuxwlpSISnqbG24eB13tIVirOwJ4TQLVewXQ4Aa8NlCVF4JDkSPVlGAnSkCYvw5bZMxVozKvBn6mRhQWW8XwxlAsYl8IxxgTE/M7db8TmE4RYX43tPU6xMKPSgVjSH/zYPBr95Lg/vGzlrXePXaP3eMTXZYPbIt7AOxbW55/Joo9EmC+s81xP4wF2IcjfvYpBPvzUR/zephl90d83iMI9bigz5W65XUVBhlXZcjrbAxS5vaAZVXOGRaGOePiuHdtesY9P7DonOzQ2oev6zYVV02b8hKzqSvTjqrW6exOpBCMtKMnmaH60liEOeuSX2HtnRc4PHPMMHF5XxIMTacEY8t5wdqdHLTL0oKWjgQc8UFD09mgofFM0NGbEvQMZAW9g1lBp/xKkFJmBumBTME3cTWIcBZQXaDqzuM5TTmOCh5VOmftucyaWs4wTnkabemIo+2yK5SxJc6pazhh19V9aNfWnTDrG06Z7lQf0y9Vf6Bbu3lx1dCWvGjpSp5zKnKnPGPV497Jm6PsbMugf+aWnJ9t7g7cbmvnV3ub+Tt9jfyaqj6g1+zAe32yTDDOFQumxfwt80rmllWbLiDEAzbthYDlzkkC8oDdcIC4hwnMSc19vO/HqDa/yzoMXyfJX0SBSuD6XJ3RPqHsK4x+IRfOnc/1h2pdcBu/Kql1l/m7QaLWzauPBzaX9/DWO3sF59qRkHPjbNh5J33LvFQoGKcqBa2y0b/S08kvdsr9C83Dvpn6cW76xgwaaAvuoaJlc0+KbqM13rR+65LV1JVmN8syncQ49ajKGHbsGuvqz+Bw8J6RPIEZzg2yaFSyagL2ohiryo/xmqsxBDlCvUzkCRDJXu/xIhyF4B/NBkoWD5bWOKklKTdSACGE+vZMBUSmrkKY7AcfyQMG1bmHQLY7EbzKDDQE8qR+5j5SrQ2B7lflSCAnryfdj4DfiZ9nSYqdHc6U4uTOzjOwefMYQvwk0KjCSeMUXf0HsHB1P0zlvAKzBb8BfeMJcJHwFv4dsvXTjUB3DhSIjv4c0Tt+VRSWWmJhbXcsutYVi+i6ohFdbzRqGA5G7Qt8jDHQdzmHKcbTGjHoLxO3gwclmBOQ77jXv3QP5H+/C/PdY/f4z4c7XlgIDZINL8XYha+GQuzXIzz/7ajP9/1t3vtjBP2jEb/3yYjP92zUz76CSv5gxI+qnWOTIhyTH+E8CHZHPY7WLbdV5rfpBxn9nJpaGJpyTnbPuWdli/aJllWHqkbvGCgxocVv8qpKzZ7RYrt7INdJD+ZStq6LlL3zPE31pdD2niR2qfIgu1Z3jLO2J3BOWRpn7Uzg1htPcObWc5yl/QJn60pE+Kfynh1lz9tlKbxbmYOKO4NjVEUcrSpmqcE81j2QhYvuVZoZK6MZVSltbIun9DdPOTfbL9kNzeeI+jJttieY1upP6jV5b+nmr76rXW88u7zedGHB1JU151TVaVwTjWpa0zTMLikU/IZGFrQsdYZsq81bmwv1gQ2E9/oowltVKhhnC7dsa/lbzo3MgEOXytt1SYJj41LAborbojZPb7lMJ0LOzWNBl/nglsO4V3BsvhJwGZ8n3fAE1+ajvH3zx0RZ+q0b39qJC98D+mdQ13+4G+JjQP+CwvyPP/dOlUSi1nm7/cuk9PF9tc67zT+J0LanQl7Xi2GvY2/Es3ksRBnPCraV5IBpJhfBXhbQT9Twa8NN/jtyNND6ZdyyfNA71znqVF+fsiiK50zdWcuGzjSttumiwdCeZKIGC62o0J3mjkuUQ55C00M5HD2YxbOjhYJ3NF/gxkqDgclr4cBkSdQ/Xhj1j+XF2KFMkR8rEDl1nshKcepUWL9xGFarj8B6I8K2hVRsywOBtCqdqZVqqPNkb7ciA6F/HpykrWv7eVTmRJ2nS/F0MiTVPkQqMJISyiQeHgeurrNoCFyRgO6Vxk7lRVILwtR6TirTqm86BfPXDsBE5ivQe/ZpUMQ9AzMFe8FKmhgNZgEzQsIIpTHf5PUov9AUFpY7BWFNzgf1Q1zEMMxFTKPMtnmCjjnn7Xc9eoPIWRfvBqjRu4KnSQx7L9yNBPbslHL9KFa+C/HdY/f4r3HHS1bzP/wR3P3+b0mAF9jvSYD3e58gyn2bQ9XuZ09HCdh9bHbE5ykNsu5qwW1r9NuN7T7rupw1rQx6N2ZHvXfGNPScbIaevLXATNQsu0eKVz2qUp1npETvU5UYcPEwefrTze7eZCsuXHZj8xm7vTtRyiAn0HfKSTJaGuXpT6NdsiSakmfQzr4M2jNcwNAD2TStzKFciizK2ZdFORTZTnq4yImP2Z2yJCvVn2HFv2OmBvJMG7cuGBYrD+t1jWd0lp4MrVNZuGztz1/UtybNaRvOzxjaMzW2oSo1pWkcxveqZFeUcn59rJs3zjaHXIb6IGWsCdPW8ojHXoyAyA25zelB10ayYNUmbNl1cSF683SIsZ4IURYC7kNB9+aBLcq8b8u1+aZAbb4ScllelPrTu+zP+N2WJ0jjHL/L9JDPvvkDLypK0iGPuI1JTJi4kH8P9D/ukvYpWxsfqFsw+pnrF3yh5vIfxNZdXwk5HF/H7+vbWx7HD0Os8+GI1/lkkLY9H3JbXiffT4RCuNPms2HanBR2m9JDTl2hYL9THrTp6rZsd5o4rarTM90pt43eGDQrr6mNPXlTNkXenL0/Z9HSlaLVNZwyGFvjTHbZFaujN9lJ9adTOOcYejCb840Vcz51kYAAD3qH0sJuxeUoq8qN+cYKRU6VJ3qHc0Rz61kRDVhUxmdhDpWyHsHulKcj1Gtga+4GBGbqEKxFYO+5Iu1jt7WdlnqOU7JEoPuSpOIxxH1OajhIxWZ642Gj/j1Yr94HtpYTQPVcxN+7DIwyDdx9V6Q+CcbmOFiqOgqqnLdgNP03oEp7FTS5e2E8922YKnwH9M3xolORG/NO1IR9cy18YLmfDm3OWLepNf02pVuNOpYWt12rC9vutZkIvT4e9ZqVsQDdLga5ajHC50LIf/ZuyP+y1AY1FPr6PVW+C/LdY/f4iyid+8qdJNEh3EkiHXHNE8BHA97vErBLLnne93rE7zsU4diTCPlLCPv0bZbJD/uosqDHVbfltjUHnIZOv2VV7jPNK31r46OeuR5UvA0abrZphp2un2MnKhc96rJV90CO1qXI0CKQdY7eDD09kGtgRosNHlWxiVZmmilFhpnqTTE7cVB92VYXGf05Zs8wwlqZY7Z0J5kc8gwTgt3kVGQbyDC3X9CZuxJ0CHOtTZ6+vNmRvLjekbqwKcufcY5UTLlUNRqnql5tGaodNA9WKampFjmnVXcLxrl2AvGAZbE+YF6qDtrulEYYW36EsWcHPbbUIONMCHvtCHDbSYT6ccFlQnhbDmx5bPu2aPubaNS8JlDWlwMu8/MBt/U5CeBO65McKvGAy/oIaZhDWtuSbnhSIhdt/RaL4CEwJ+qSwNxDDKv7MfAHwPzvjM9djOgLa6CSYjT4P+S4ndh6BP/HAa/ruxLYaefDqNSfQNA/G0XVjuPNbZ/rIML+GDHKwpQ5gRhrW25TPr+5XMquqqvpOWW9c6qj2TFc1W1RFCiMnenDG+1J4zhm1m+dXzC1JyzbuxJ1lo6LJldfmpVBg9KrKqJYdQHjVeWxrKqQR9gLPnVh0D9eFKb7U6P0QEbM1nVRNN46I1o6ksSFq+/AdOEbgD8DM5grFUYS5m+Cb/wa0KRbIXG7d+0UZHJ2X0RAJyOw43fqMJAM9HtllUnZ483mk2BHNU/AT/UkSA2RDDdPwur192G19jSs1sfDYn0i3K6LF1eaUsX1ztyYHoe2LSO62VsUdI/V8L4lOSVs3jaEaNNCxGsbjfnpzrs807TNe+rubnmr7wbZ8tgWWyiGfOkQDZwF4mKPhl6Du5FnJZhLXdNw/cD1ZHeV3T12j78e5f6Reidgl7a+Cb7vxwTu0Qh/zxXPcfu2ed8RSbXz3ksRH50Z9FDFCLnqAG2tFyhTk+AwtgsOXXdgc07hXxtR+leUw9xKv5pb7h/3rQxMcUuKGXaxZ84337ngv92zwN2WLfvm25dpVeWye6BolR4q1npUZTp6uETrHr6qpVQVWnaqfpVWl2sd5HFV5ap7sHTZiarbOVi8YJFlLjj6C2eo0WtTLnW1xjPTOu6Zl40yC/JBz7xcydxWyH0r6m5Wp2ll18ab/IbZxoD1To3gNFQGaWtZCCGOi1lm0LWeHHbbLoW8zrMhxnEiSDsOIdj375TQRXh7EN6o+gi8g5T92S3a+aSACpzAmzTG4Sn7j/0uy498dvsPdiDukCBOYr1Bm+1rpEaA1MMeQU6Upet+c57fw/yzAv3v/hZaov6XhZTI/++j2Lr7q8QNTxoWRQnYafsPQl7qxzuqnX4y4qGeJS75EGN/PcjYDyDcj+D3f3LLZYjjLXeSfcbFTGZFne+ebC+3qW7UWQaqmszy0nZzb6Hc2J0xuNmdrja0XJhabzwxt9l6fpkeyNaiOjfgMLPqIqdfU06z6hI2MF3JchNXec9QdpAZzAg7uxOi9u7EGKXIjunqPxRXrx9F1X5edMmuSGVl+ZkbwE/fAIZsHetLBVqRAi55ErgU6eAZInUX8sCnKpLKtZJaDMxAhsgM5YjOvjQRDQzR1h6Hr3da3Gw5I27cPBtba0qMGWVFUcvQjahzsitMzfUG6cWhIL2i4r2roxyzPMTgcPq0owY0aOeijE2xHfDWxUJcrhj2XxBD/HGpytt28ABsh/dBdOt1iAafh1jkSdgO/Rii0R9AJPLte8lvX9rdlrZ77B5/3er9H4hqJ4l092LtPyCKPUZi7byUIf88Av9NBPqRqM8bF2a9yXg7O+RzF4d97vKg11kdoi0IeH2T4NK1Ci5DZ4g2dyMoZUHKrAi6jIMhp2E45N4cDdOm8ZBTq+Y3ZsZRNWsCxhnN1oZmJqBXT/nXRqf8OtUUtzasQSWh4VYGNNydkXFudWicXexXsysDw9yycpBdUSj92hEFp9fIBMtSZ9Cha+cd682CXdcYIG5VylAdps1lIbcFjQ9r/hZtzRSICmeJCnfFhVjHSQT5sQjjOIjqbp/gdr4m0PYXA27Hc1se+zMSvCn74wGP9RHe7fgJgXfQ5frRlsPxQ4T99wWK+gjgxKUeuqfESfLWp0L8T4D8we/kU76j/9/C/BPm7keZ8CzLfomo9Y/A7nN9I0LT38Lv9TuCz/190sAoxLp/Embsj5PaDBHG/Rx+9y+HafubxDUvOI3HArY7J32GhQvs+nSyd20cAT+aT8/1lLsmm+uosfomU19Rp779imK9+fywqePyuFOeOceoihe5yQotN1Gu52drrMJcnZ2fqqZ841dZ70guz47mCd6h3CCCOUwPFkQ9w8Ux90CuSA/mil51sciOXxMDczdF/3SVyI2Xir4xvE9dInJj1/CxSpGdvCEGFppEv6Y6xk1W4bgeZTU1Ue9kfZhSVQZdg8UCPZQv0CNlvFt9g6dnOlkWoc3qJmi/6TYl2NesW84NMxrc+iBl0m5RpoUtelONho0syrmrYwJ7f9vZKzFSqjUUeFhS39vbP5TgTaq9SdvQSJEYaSvalx8A+d/vwnz32D3++uG+45L/WKxdcsf7/T+KBXyPSEl0Pt9rER9zMMLec8nvwD0zxFK5EdZbGPYyZWHWXRnmPNVhlq4Jed31IYZqCjPO5ojX1Y6KqRPVUmfQbe7GhVcW8thlYdqmCNMWBd4n36I25AH7mjxgWZIR5S84N7qDbmMnLkytW05jc9htbtpymxoR2ghuYw2q5kpcoMuDHkeppL699kyEdXqYdSaFmfsAdyHA3ceDDFHhzv1bXtebgod6JUi7ng+iipMA7rE9GqCdDyMEHiIgIGqPwJu4dKUe9BK8qW/6XK5vEIA/qMLvu9QJxD9yq38GNf5JIP9T39HubH3Q00T+tztgJ16m+3An3wcxrD4CvMf+bUm9++gfkO+WuOYFr+MJYriRuLvgsb6CBt+bJLwSojaP4Zw6HbStXxIsi6lbpvlcv36qlF0eqHRPtda7xupb3WPX5Z6JGqVvul7tn6mb4udvLfLzjVr/TL3eO1Ft9k0j3OebKP9cE+u/3cEJK918YKVX8C/1BP2328L+uUYcDUFhtScY1MqEwGKbwC92CPiYEFjuFgTdUFBYV+NQBQNrQ3xgfYDbWh9htowaZ8gybw5a5gxbphl9wDClDRhmVrcsS4tB58ZCiLLOBGmrZouxqdHAVoZ8lCzC0a1Rnq6L8N6y6JYvG8KBC3fDwQN3SY/yWOjhnTKtJB4udUT78r3xT/fg/d8+lr2+m/y2e+wef4Mu+X94MNYu7W0P3tvbjspdypDnmD14+/Vtv+9gxOc9Rva1E+W+A3g6KezzpEa8DIF8Niqk/JDPUxz2UmVBFtU846oMeqkaHHXSIHF5xo7Qd9WT21J2Pf68RZvxMRv+jqMmzLoqceBzbWUhL1WMr1kYwdeNsM5s/Dkz7HUnh/+/9s4uNIoriuNQpEiRUvpUSvFBShEJRSQUkSBBQgghhCIhLCEEkeBDKBKCBJHgi5RQJIgPUkrpU/HJpzzUkooFESsiFKNErY0mm83u7My9d76/Z8P2/O/sxN18aIQWbDsXDjNzd+KGeLm/8z/33HOFAnifo+884xuVcShwCXBWGXX56ojLykME8QEcYiMhzgHxylGfFLjJVtolwEl5WwSAFngLgjfBwdW0jwBwwFsC3ADAhQT4TpV4DuY3ix7tOMKUOVBLjZoMjXV2yyp9mKp31qreyVFL1fvq4UCrdGDt3dNKaXheLxcCbeWEpy6P+Wx5ItCKZ8mhvOCWHn/jLD24LLcvYivjwi/XrIfXZ82HP83ZD6/ftJ/+ett7/tt9//nd+XD594Vg5cGfwcr8UlCaL4blJ6VAeVoOyk8U78V9xV28CziXwtVHRepbCpRnS37l6ZJfflwMlWdFv7pYDKqLz0N16Q9ffTHvK4t3A7Z8I9HLs5FRuRbplasxOctQ26Fe/S422bexpV+JHXE5to2ZyDG/TjxrKvHtCanEA/dELfIH6knY0wih76/XW/aO794A7hzgecvbf2gyfZkh35QlL0Pytv1ZmkDHu9I97XohNvhILMSoLFqj8zFfsHGfsTPY4x5w7ZwsYkOg97h2gZTytM/VFPZMmXGlVWCXXAZIkwMAoz75Dt6VVpkmGF/wGClvozpFED9HKmRyXX1zZQzrpDKJDQqclQuOttoAeKnXFeVuh5U6AXGE0b0NEAfApfJmL5W3DJ8TGDJ4wwDvTQDfkOSWj6S/bTnona2OZ91mV0ATiBrKvQF3/L8B7jilEI4ZnDQJ94Z6j6DeTVLvQj0SGEonOYrdISv30/gbJEd0hJzJUZlcJ1YJ8MtTyMHwK09mvNXHV7zio++90sIPEXvxY8SL1xJenI300lwsyjdDUboVitXbsaHeiS31Xmyq9wjI9wJeukPfcQvvRHp1LrK0uchmP0emOkdwvhHp2lxisdnY5FdrUNe2uJg4fGrNNcbXHPNUzTVGaq41VPOdwYYVpEV0HzkDpMD7k9DtridBp6ziFseHpBqXCW1SjX/QpL7zMZu3vP1P1PqulkS6LIEOJWYdvc23xRFseUMlOqnaDX48EtqAr7MCqtIFnNNkqJ1EiN7j6pjPta8AXwI2gD9BMD/jcmXSJTAToM+6ZD6eyVCm1oXaBrBFZdzh5dNNqvtUGjpXSHlXhzDxQl0R7PszeMswOgEcYXSrWj2McCuyoQnWbS0QF+n6dwbvTHXL0HkG7h2ug+ftn4P6q/7er9kh8O5G9V6XgLck4HEWQqrg9b2hqcolJgCewNoeW9XDgaEdpf7u0K72oYxyZLGh2Gajsa6MhUb1dEhjM7bE+JorJhKbTyaOOJ+4+nRi6xdjW8yQar5EfZcJzFdguE+oP7HNaWwPTSzjfOIYUwA2XeX9mm1OSnA7eiFxrR4sd2HZq27b++uhua8e6HtlghoMW8gAahR6QeIaDM/ykBTAu2UN/L1873je8pZPqi8nSEyKNBn6QnwCtS4T6Gjyo2c5+QUG6ww57wqF1kMg7wsZ6/c4/9IH6IU2SCAvBFwddrk64moKqWnlhCeqJ3HvaekVfag/76Y2LMPlUNwEbgfghuqW8FZS5c2rxwJS3oFe6UAS1Hbr4BshnoXQW0LnrdDelUP7LRt/rwH6jhzTDO5NgJdbOclZrTsEQBrbdQl4cx8qLcqCTIZxkKDaDrgSfI8lluipWVpvzdJ7E9PsTlyzC9earffVHON4zRGDADJ9DhuqWdYwXYdrjlWoOeZAzbb7qa9XAttt/DzMMToxhnEmgwQ3fif8fnVtzytC47sbsN7TZFuF0vNxnLe85W3DBNkoMSvLy2Lis7RPMQFJuBvaQdSQ9zn/QoYwda1Dgp4B9GoXso1dgj2OeZXGWB/OcSfrb1jfutHnrqb1uPgZrHkTuHHuO8LmtpbCG9uUJLwz9S2UA83wxjo4wuiZrSexGem+8PXweX0hL1359gJ913ZO1k6U+xb/ZvPWzc2Qb6rVsA55j30MJ1aWU8ZOECh5RxyA4Rnwr8PIyaX3qd9pQxQrcvXPYbFLDgGZ7MepZCG9B7VNFgQGKWoyqG2XVDW+F3ksbxAS3+JvlcM7b3nL2w6h3lhbR+gSWfHZaW9pFbp1wLchfAnD0a70ziGc257CnmCsqkcAfVwDTeuwYXSfmXxHhstZe8MI3FoK7g3wbk5kS5PYUgXeDPBNEF/IIf6vAfr6kseWEZRNENsK8m9QxKcBezh626j5DPa44hn9Ukk3fZ4Z3stMwhqFWcT7GxR1c1Z5Ph7z9ta0vwCyOmhC8LyFTwAAAABJRU5ErkJggg==" - }, - { - "file_name": "BunnyJPEG.jpg", - "encoded_file": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4REyRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAISgEQAAIAAAAOAAAIUIdpAAQAAAABAAAIXuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENhbm9uAENhbm9uIEVPUyAzMEQAAAqCmgAFAAAAAQAAEOiCnQAFAAAAAQAAEPCIJwADAAAAAgMgAACQAwACAAAAFAAAEPiQBAACAAAAFAAAEQySCQADAAAAAgAQAACSCgAFAAAAAQAAESCSkQACAAAAAzAwAACSkgACAAAAAzAwAADqHAAHAAAIDAAACNwAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA+gAAABwAAAAKMjAxMjowNDoxOSAyMzoxMjo1OAAyMDEyOjA0OjE5IDIzOjEyOjU4AAAAADwAAAABAAD/4QmcaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyI+PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTItMDQtMTlUMjM6MTI6NTg8L3htcDpDcmVhdGVEYXRlPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMAAwICAwICAwMCAwMDAwMEBwUEBAQECQYHBQcKCQsLCgkKCgwNEQ4MDBAMCgoOFA8QERITExMLDhQWFBIWERITEv/bAEMBAwMDBAQECAUFCBIMCgwSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEv/AABEIAasCgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX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" - } - ] -} diff --git a/api-mobile/test/activity.sh b/api-mobile/test/activity.sh deleted file mode 100644 index e559f4e58..000000000 --- a/api-mobile/test/activity.sh +++ /dev/null @@ -1,10 +0,0 @@ -# TODO replace `{1}` with a valid JWT token string - -# local dev: localhost:3002/api/activity -# local dev using docker: localhost/api-mobile/activity - -curl -X POST \ - -d @activity-with-files.json \ - 'localhost/api-mobile/activity/' \ - --header "Content-Type: application/json" \ - --header 'Authorization: Bearer {1}' \ diff --git a/api-mobile/test/context-databc.sh b/api-mobile/test/context-databc.sh deleted file mode 100755 index 4e6b21a7d..000000000 --- a/api-mobile/test/context-databc.sh +++ /dev/null @@ -1,4 +0,0 @@ -# Request private land -curl -X GET "localhost:3002/api/context/databc/WHSE_CADASTRE.CBM_CADASTRAL_FABRIC_PUB_SVW?lon=-125.05596&lat=49.28648" \ ---header "Content-Type: application/json" \ ---header 'Authorization: Bearer '${1} diff --git a/api-mobile/test/context-elevation.sh b/api-mobile/test/context-elevation.sh deleted file mode 100755 index 9b70cc683..000000000 --- a/api-mobile/test/context-elevation.sh +++ /dev/null @@ -1,4 +0,0 @@ -# Request an elevation value from Mt Arthur Evans (Vancouver Island) -curl -X GET "localhost:3002/api/context/elevation?lon=-125.37806&lat=49.54147" \ ---header "Content-Type: application/json" \ ---header 'Authorization: Bearer '${1} \ diff --git a/api-mobile/test/context-internal.sh b/api-mobile/test/context-internal.sh deleted file mode 100755 index 8141f9081..000000000 --- a/api-mobile/test/context-internal.sh +++ /dev/null @@ -1,19 +0,0 @@ -# Request which IPMA region this point is in. -# curl -X GET "localhost:3002/api/context/internal/ipma?lon=-125.848&lat=53.643" \ -# --header "Content-Type: application/json" \ -# --header 'Authorization: Bearer '${1} - -# Request which RISO region this point is in. -# curl -X GET "localhost:3002/api/context/internal/riso?lon=-125.848&lat=53.643" \ -# --header "Content-Type: application/json" \ -# --header 'Authorization: Bearer '${1} - -# Request utm zone -# curl -X GET "localhost:3002/api/context/internal/utm?lon=-125.848&lat=53.643" \ -# --header "Content-Type: application/json" \ -# --header 'Authorization: Bearer '${1} - -# Request utm zone -curl -X GET "localhost:3002/api/context/transform?lon=-125.848&lat=53.643&epsg=3005" \ ---header "Content-Type: application/json" \ ---header 'Authorization: Bearer '${1} diff --git a/api-mobile/test/observation-point.json b/api-mobile/test/observation-point.json deleted file mode 100644 index 4a490b7db..000000000 --- a/api-mobile/test/observation-point.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "activity_type": "Observation", - "activity_subtype": "Terrestrial Invasive Plant", - "date": "2019-04-12", - "deviceRequestUID": "string", - "geometry": [ - { - "type": "Point", - "coordinates": [ - -125.6, - 48.3 - ] - } - ], - "locationAndGeometry": { - "anchorPointY": 48.3, - "anchorPointX": -125.6, - "area": 0, - "jurisdiction": "string", - "agency": "string", - "observer1FirstName": "string", - "observer1LastName": "string", - "locationComment": "string", - "generalComment": "string", - "photoTaken": true - }, - "activity_data": { - "species_id": 123 - }, - "activity_type_data": { - "negative_observation_ind": false, - "aquatic_observation_ind": false, - "primary_user_last_name": "mike", - "secondary_user_first_name": "mike", - "secondary_user_last_name": "mike", - "species": "banana", - "primary_file_id": "test", - "secondary_file_id": "test", - "location_comment": "test", - "general_observation_comment": "general comment", - "sample_taken_ind": true, - "sample_label_number": "string" - }, - "activity_subtype_data": { - "species": "banana", - "distribution": 123, - "density": 123, - "soil_texture": 1, - "slope": 123, - "aspect": 123, - "flowering": true, - "specific_use": 123, - "proposed_action": 123, - "seed_stage": 123, - "plant_health": 123, - "plant_life_stage": 123, - "early_detection": 1, - "research": true, - "well_on_site_ind": true, - "special_care_ind": true, - "biological_care_ind": true, - "legacy_site_ind": true, - "range_unit": "Canyon" - } -} diff --git a/api-mobile/test/observation-polygon.json b/api-mobile/test/observation-polygon.json deleted file mode 100644 index dd0c7d046..000000000 --- a/api-mobile/test/observation-polygon.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "activity_type": "Observation", - "activity_subtype": "Terrestrial Invasive Plant", - "date": "2019-04-12", - "deviceRequestUID": "string", - "geometry": [ - { - "type": "Polygon", - "coordinates": [ - [ - [ - -125.6, - 48.3 - ], - [ - -126.6, - 48.3 - ], - [ - -126.6, - 49.3 - ], - [ - -125.6, - 48.3 - ] - ] - ] - } - ], - "locationAndGeometry": { - "anchorPointY": 48.3, - "anchorPointX": -125.6, - "area": 0, - "jurisdiction": "string", - "agency": "string", - "observer1FirstName": "string", - "observer1LastName": "string", - "locationComment": "string", - "generalComment": "string", - "photoTaken": true - }, - "activity_data": { - "species_id": 123 - }, - "activity_type_data": { - "negative_observation_ind": false, - "aquatic_observation_ind": false, - "primary_user_last_name": "mike", - "secondary_user_first_name": "mike", - "secondary_user_last_name": "mike", - "species": "banana", - "primary_file_id": "test", - "secondary_file_id": "test", - "location_comment": "test", - "general_observation_comment": "general comment", - "sample_taken_ind": true, - "sample_label_number": "string" - }, - "activity_subtype_data": { - "species": "banana", - "distribution": 123, - "density": 123, - "soil_texture": 1, - "slope": 123, - "aspect": 123, - "flowering": true, - "specific_use": 123, - "proposed_action": 123, - "seed_stage": 123, - "plant_health": 123, - "plant_life_stage": 123, - "early_detection": 1, - "research": true, - "well_on_site_ind": true, - "special_care_ind": true, - "biological_care_ind": true, - "legacy_site_ind": true, - "range_unit": "Canyon" - } -} diff --git a/api-mobile/test/observation.sh b/api-mobile/test/observation.sh deleted file mode 100755 index 625e73407..000000000 --- a/api-mobile/test/observation.sh +++ /dev/null @@ -1,4 +0,0 @@ -# TODO: Assign DB environment variables -curl -X POST -d @./observation-polygon.json "localhost:3002/api/activity" \ ---header "Content-Type: application/json" \ ---header 'Authorization: Bearer '${1} \ diff --git a/api-mobile/tsconfig.json b/api-mobile/tsconfig.json deleted file mode 100644 index 098a0a3ed..000000000 --- a/api-mobile/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "outDir": "dist", - "module": "commonjs", - "target": "es5", - "lib": ["es2018"], - "sourceMap": true, - "allowJs": false, - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "noImplicitAny": false, - "suppressImplicitAnyIndexErrors": true, - "noUnusedLocals": false, - "esModuleInterop": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "skipLibCheck": true, - "resolveJsonModule": true, - "typeRoots": ["node_modules/@types"] - }, - "include": ["src/**/*"], - "exclude": ["**/*.spec.ts", "**/node_modules", "dist"] -} diff --git a/api/.docker/db/Dockerfile b/api/.docker/db/Dockerfile index e2994bd7c..cc28a08b5 100644 --- a/api/.docker/db/Dockerfile +++ b/api/.docker/db/Dockerfile @@ -94,8 +94,8 @@ VOLUME ["/var/lib/pgsql/data", "/var/run/postgresql"] # install the Oracle dependencies./tmp/oracle_fdw-ORACLE_FDW_2_0_0/oracle_fdw.control RUN mkdir -p /tmp/oraclelibs && cd /tmp/oraclelibs && \ - wget -nv https://www.pathfinder.gov.bc.ca/filestore/oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm && \ - wget -nv https://www.pathfinder.gov.bc.ca/filestore/oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm && \ + wget -nv https://www.apps.silver.devops.gov.bc.ca/filestore/oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm && \ + wget -nv https://www.apps.silver.devops.gov.bc.ca/filestore/oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm && \ rpm -Uvh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm && \ rpm -Uvh oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm diff --git a/api/.pipeline/lib/config.js b/api/.pipeline/lib/config.js index f88d42bf2..bdc6e61a4 100644 --- a/api/.pipeline/lib/config.js +++ b/api/.pipeline/lib/config.js @@ -15,7 +15,7 @@ const isStaticDeployment = () => { const deployChangeId = isStaticDeployment() ? 'deploy' : changeId; const isProduction = () => false; -const defaultHost = 'invasivebc-8ecbmv-api.pathfinder.gov.bc.ca'; +const defaultHost = 'invasivebc-7068ad-api.apps.silver.devops.gov.bc.ca'; const branch = isStaticDeployment() && !isProduction() ? options.branch : undefined; const tag = isStaticDeployment() && !isProduction() ? `build-${version}-${changeId}-${branch}` : `build-${version}-${changeId}`; @@ -42,7 +42,7 @@ options = processOptions(options); const phases = { build: { - namespace:'8ecbmv-tools', + namespace:'7068ad-tools', name: `${name}`, phase: 'build', changeId: changeId, @@ -53,7 +53,7 @@ const phases = { branch: branch }, dev: { - namespace:'8ecbmv-dev', + namespace:'7068ad-dev', name: `${name}`, phase: 'dev', changeId: deployChangeId, @@ -61,7 +61,7 @@ const phases = { instance: `${name}-dev-${deployChangeId}` , version:`${deployChangeId}-${changeId}`, tag:`dev-${version}-${deployChangeId}`, - host: isStaticDeployment() ? (staticUrlsAPI['dev'] || defaultHost) : `${name}-${changeId}-8ecbmv-dev.pathfinder.gov.bc.ca`, + host: isStaticDeployment() ? (staticUrlsAPI['dev'] || defaultHost) : `${name}-${changeId}-7068ad-dev.apps.silver.devops.gov.bc.ca`, env: 'dev', certificateURL: config.certificateURL.dev, migrationInfo: config.migrationInfo.dev, @@ -69,7 +69,7 @@ const phases = { maxReplicas: 2 }, test: { - namespace:'8ecbmv-test', + namespace:'7068ad-test', name: `${name}`, phase: 'test', changeId: deployChangeId, @@ -86,7 +86,7 @@ const phases = { maxReplicas: 5 }, prod: { - namespace:'8ecbmv-prod' , + namespace:'7068ad-prod' , name: `${name}`, phase: 'prod' , changeId:deployChangeId, diff --git a/api/.pipeline/lib/deploy.db.backup.js b/api/.pipeline/lib/deploy.db.backup.js index 2f7349f39..62d67f26e 100644 --- a/api/.pipeline/lib/deploy.db.backup.js +++ b/api/.pipeline/lib/deploy.db.backup.js @@ -36,9 +36,9 @@ module.exports = (settings) => { const name = `${phases[phase].name}-backup`; delete options.git; const dbIdentifiers = { - 'dev': 'bk-8ecbmv-dev-s8nuyo61qmct', - 'prod': 'bk-8ecbmv-prod-rt7kpgp8p2a2', - 'test': 'bk-8ecbmv-test-1d2ol2h3lcy5' + 'dev': 'bk-7068ad-dev-s8nuyo61qmct', + 'prod': 'bk-7068ad-prod-rt7kpgp8p2a2', + 'test': 'bk-7068ad-test-1d2ol2h3lcy5' }; // The deployment of your cool app goes here ▼▼▼ objects.push(...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/db.backup.dc.yaml`, { diff --git a/api/.pipeline/lib/deploy.schemaspy.js b/api/.pipeline/lib/deploy.schemaspy.js index e52d7f85a..f3219c145 100644 --- a/api/.pipeline/lib/deploy.schemaspy.js +++ b/api/.pipeline/lib/deploy.schemaspy.js @@ -34,7 +34,7 @@ module.exports = (settings) => { var objects = []; const instance = phases[phase].instance; const name = `${phases[phase].name}-schemaspy`; - const host = `invasivebc-schemaspy-${changeId}-${phases[phase].namespace}.pathfinder.gov.bc.ca`; + const host = `invasivebc-schemaspy-${changeId}-${phases[phase].namespace}.apps.silver.devops.gov.bc.ca`; // The deployment of your cool app goes here ▼▼▼ objects.push(...oc.processDeploymentTemplate(`${templatesLocalBaseUrl}/schemaspy.dc.yaml`, { 'param':{ diff --git a/api/.pipeline/package-lock.json b/api/.pipeline/package-lock.json index 39413b554..0189c1e9d 100644 --- a/api/.pipeline/package-lock.json +++ b/api/.pipeline/package-lock.json @@ -5,13 +5,18 @@ "requires": true, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, "lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", @@ -33,7 +38,7 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "pipeline-cli": { - "version": "git+https://github.com/BCDevOps/pipeline-cli.git#2d2c46e6fbd54ad2c39537508f54b1c9b20da24a", + "version": "git+https://github.com/BCDevOps/pipeline-cli.git#c7261fb33dec80a9aff4399aab49e7f0c6744efe", "from": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", "requires": { "debug": "^4.1.0", diff --git a/api/.pipeline/package.json b/api/.pipeline/package.json index 973e05866..af93f6ba8 100644 --- a/api/.pipeline/package.json +++ b/api/.pipeline/package.json @@ -17,7 +17,7 @@ "deploy-tools": "node deploytools.js", "deploy-db-backup": "node deploy.db.backup.js", "test": "node test.js", - "backup":"node backup.db.js", + "backup": "node backup.db.js", "version": "echo \"node@$(node --version) ($(which node))\" && echo \"npm@$(npm --version) ($(which npm))\" && npm ls" }, "repository": { @@ -27,6 +27,11 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1" + "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", + "debug": "^4.2.0", + "lodash.isempty": "^4.0.1", + "lodash.isfunction": "^3.0.9", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1" } } diff --git a/api/openshift/bc.yaml b/api/openshift/bc.yaml index 9b80716ce..97dc78bdb 100644 --- a/api/openshift/bc.yaml +++ b/api/openshift/bc.yaml @@ -31,7 +31,7 @@ metadata: labels: app: ${} name: ${SUFFIX} - namespace: 8ecbmv-dev + namespace: 7068ad-dev spec: failedBuildsHistoryLimit: 5 nodeSelector: null diff --git a/api/openshift/db.bc.yaml b/api/openshift/db.bc.yaml index ba6167f7f..c6ec55e98 100644 --- a/api/openshift/db.bc.yaml +++ b/api/openshift/db.bc.yaml @@ -32,7 +32,7 @@ objects: from: kind: ImageStreamTag name: postgresql-9.6-oracle-fdw:v1-stable - namespace: bcgov + namespace: 7068ad-tools generation: 1 importPolicy: {} referencePolicy: diff --git a/api/openshift/route.yaml b/api/openshift/route.yaml index 02fe36827..43d345963 100644 --- a/api/openshift/route.yaml +++ b/api/openshift/route.yaml @@ -9,7 +9,7 @@ items: labels: app: lucy-api-test name: lucy-api-test - selfLink: /api/v1/namespaces/8ecbmv-dev/services/lucy-api-test + selfLink: /api/v1/namespaces/7068ad-dev/services/lucy-api-test spec: ports: - name: 3001-tcp @@ -35,9 +35,9 @@ items: labels: app: lucy-api-test name: lucy-api-test-route - selfLink: /apis/route.openshift.io/v1/namespaces/8ecbmv-dev/routes/lucy-api-test-route + selfLink: /apis/route.openshift.io/v1/namespaces/7068ad-dev/routes/lucy-api-test-route spec: - host: lucy-api-test-route-8ecbmv-dev.pathfinder.gov.bc.ca + host: lucy-api-test-route-7068ad-dev.apps.silver.devops.gov.bc.ca port: targetPort: 3001-tcp to: diff --git a/api/openshift/tools/db.backup.dc.yaml b/api/openshift/tools/db.backup.dc.yaml index a9617f47e..1d64e2605 100644 --- a/api/openshift/tools/db.backup.dc.yaml +++ b/api/openshift/tools/db.backup.dc.yaml @@ -157,7 +157,7 @@ parameters: - name: NFS_VOLUME_IDENTIFIER description: Generated identifier of the NFS volume required: true - value: bk-8ecbmv-prod-rt7kpgp8p2a2 + value: bk-7068ad-prod-rt7kpgp8p2a2 - name: ENVIRONMENT_NAME displayName: Environment Name (Environment Id) description: The name or Id of the environment. This variable is used by the webhook diff --git a/api/openshift/tools/metabase/metabase.dc.yaml b/api/openshift/tools/metabase/metabase.dc.yaml index c8aff4d58..c671d7c45 100644 --- a/api/openshift/tools/metabase/metabase.dc.yaml +++ b/api/openshift/tools/metabase/metabase.dc.yaml @@ -67,7 +67,7 @@ objects: metadata: name: "${NAME}" spec: - host: "${NAME}-${NAMESPACE}.pathfinder.gov.bc.ca" + host: "${NAME}-${NAMESPACE}.apps.silver.devops.gov.bc.ca" tls: insecureEdgeTerminationPolicy: Redirect termination: edge diff --git a/api/openshift/tools/schemaspy.dc.yaml b/api/openshift/tools/schemaspy.dc.yaml index 80e5b5b24..58c55ed96 100644 --- a/api/openshift/tools/schemaspy.dc.yaml +++ b/api/openshift/tools/schemaspy.dc.yaml @@ -184,7 +184,7 @@ parameters: displayName: Application Hostname description: The exposed hostname that will route to the service, if left blank a value will be defaulted. - value: 'seism.schemaspy.pathfinder.gov.bc.ca' + value: 'seism.schemaspy.apps.silver.devops.gov.bc.ca' - name: DATABASE_SCHEMA description: Application Schema name value: invasivesbc diff --git a/app/.pipeline/lib/config.js b/app/.pipeline/lib/config.js index 1d85213cd..c8c372798 100644 --- a/app/.pipeline/lib/config.js +++ b/app/.pipeline/lib/config.js @@ -17,8 +17,8 @@ const isStaticDeployment = () => { const isProduction = () => false; const deployChangeId = isStaticDeployment() ? 'deploy' : changeId; -const defaultHost = 'invasivebc-8ecbmv-dev.pathfinder.gov.bc.ca'; -const defaultHostAPI = 'invasivebc-8ecbmv-api.dev.pathfinder.gov.bc.ca' +const defaultHost = 'invasivebc-7068ad-dev.apps.silver.devops.gov.bc.ca'; +const defaultHostAPI = 'invasivebc-7068ad-api.dev.apps.silver.devops.gov.bc.ca' // Get SSO_Info const sso = config.sso; @@ -49,7 +49,7 @@ options = processOptions(options); const phases = { build: { - namespace:'8ecbmv-tools' , + namespace:'7068ad-tools' , name: `${name}`, phase: 'build' , changeId:changeId, @@ -61,7 +61,7 @@ const phases = { branch: branch }, dev: { - namespace:'8ecbmv-dev' , + namespace:'7068ad-dev' , name: `${name}`, phase: 'dev' , changeId:deployChangeId, @@ -69,15 +69,15 @@ const phases = { instance: `${name}-dev-${deployChangeId}` , version:`${version}-${deployChangeId}`, tag:`dev-${version}-${deployChangeId}`, - host: isStaticDeployment() ? staticUrls['dev'] || defaultHost : `${name}-${changeId}-8ecbmv-dev.pathfinder.gov.bc.ca`, - apiHost: isStaticDeployment() ? staticUrlsAPI['dev'] || defaultHostAPI : `${apiName}-${changeId}-8ecbmv-dev.pathfinder.gov.bc.ca`, + host: isStaticDeployment() ? staticUrls['dev'] || defaultHost : `${name}-${changeId}-7068ad-dev.apps.silver.devops.gov.bc.ca`, + apiHost: isStaticDeployment() ? staticUrlsAPI['dev'] || defaultHostAPI : `${apiName}-${changeId}-7068ad-dev.apps.silver.devops.gov.bc.ca`, env: 'dev', sso: sso.dev, replicas: 1, maxReplicas: 3 }, test: { - namespace:'8ecbmv-test' , + namespace:'7068ad-test' , name: `${name}`, phase: 'test' , changeId: deployChangeId, @@ -93,7 +93,7 @@ const phases = { maxReplicas: 5 }, prod: { - namespace:'8ecbmv-prod' , + namespace:'7068ad-prod' , name: `${name}`, phase: 'prod' , changeId: deployChangeId, diff --git a/app/.pipeline/package-lock.json b/app/.pipeline/package-lock.json index cd85b2fc3..0189c1e9d 100644 --- a/app/.pipeline/package-lock.json +++ b/app/.pipeline/package-lock.json @@ -5,13 +5,18 @@ "requires": true, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, "lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", @@ -28,12 +33,12 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "pipeline-cli": { - "version": "git+https://github.com/BCDevOps/pipeline-cli.git#2d2c46e6fbd54ad2c39537508f54b1c9b20da24a", + "version": "git+https://github.com/BCDevOps/pipeline-cli.git#c7261fb33dec80a9aff4399aab49e7f0c6744efe", "from": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", "requires": { "debug": "^4.1.0", diff --git a/app/.pipeline/package.json b/app/.pipeline/package.json index 0ca51bbfc..1585261de 100644 --- a/app/.pipeline/package.json +++ b/app/.pipeline/package.json @@ -18,6 +18,11 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1" + "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", + "debug": "^4.2.0", + "lodash.isempty": "^4.0.1", + "lodash.isfunction": "^3.0.9", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1" } } diff --git a/app/cypress-e2e/cypress/plugins/index.ts b/app/cypress-e2e/cypress/plugins/index.ts index 0c4e43aea..51d906caf 100644 --- a/app/cypress-e2e/cypress/plugins/index.ts +++ b/app/cypress-e2e/cypress/plugins/index.ts @@ -22,7 +22,7 @@ module.exports = (on, config) => { config.defaultCommandTimeout = 10000; // TODO: add logic to use the urls based on the current environment - // https://dev-invasivesbc.pathfinder.gov.bc.ca + // https://dev-invasivesbc.apps.silver.devops.gov.bc.ca config.baseUrl = process.env.host || "http://localhost:3033"; config.env.ENVIRONMENT = 'dev'; diff --git a/app/openshift/temp.bc.json b/app/openshift/temp.bc.json index 56327fb83..d188bcd18 100644 --- a/app/openshift/temp.bc.json +++ b/app/openshift/temp.bc.json @@ -10,7 +10,7 @@ "build": "lucy-app-test" }, "name": "lucy-app-test", - "selfLink": "/apis/build.openshift.io/v1/namespaces/8ecbmv-tools/buildconfigs/lucy-app-test" + "selfLink": "/apis/build.openshift.io/v1/namespaces/7068ad-tools/buildconfigs/lucy-app-test" }, "spec": { "failedBuildsHistoryLimit": 5, diff --git a/loadTest/.pipeline/lib/config.js b/loadTest/.pipeline/lib/config.js index e2415c7d4..05bc9802e 100644 --- a/loadTest/.pipeline/lib/config.js +++ b/loadTest/.pipeline/lib/config.js @@ -8,7 +8,7 @@ const tag = `build-${version}-${branch}`; const phases = { build: { - namespace:'8ecbmv-tools' , + namespace:'7068ad-tools' , name: `${name}`, phase: 'build' , changeId:changeId, @@ -20,7 +20,7 @@ const phases = { branch: branch }, dev: { - namespace:'8ecbmv-tools' , + namespace:'7068ad-tools' , name: `${name}`, phase: 'dev' , changeId: changeId, diff --git a/loadTest/.pipeline/package-lock.json b/loadTest/.pipeline/package-lock.json index cd85b2fc3..0189c1e9d 100644 --- a/loadTest/.pipeline/package-lock.json +++ b/loadTest/.pipeline/package-lock.json @@ -5,13 +5,18 @@ "requires": true, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, "lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", @@ -28,12 +33,12 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "pipeline-cli": { - "version": "git+https://github.com/BCDevOps/pipeline-cli.git#2d2c46e6fbd54ad2c39537508f54b1c9b20da24a", + "version": "git+https://github.com/BCDevOps/pipeline-cli.git#c7261fb33dec80a9aff4399aab49e7f0c6744efe", "from": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", "requires": { "debug": "^4.1.0", diff --git a/loadTest/.pipeline/package.json b/loadTest/.pipeline/package.json index e4acec7ea..0070b925f 100644 --- a/loadTest/.pipeline/package.json +++ b/loadTest/.pipeline/package.json @@ -19,6 +19,11 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1" + "pipeline-cli": "git+https://github.com/BCDevOps/pipeline-cli.git#v1.1", + "debug": "^4.2.0", + "lodash.isempty": "^4.0.1", + "lodash.isfunction": "^3.0.9", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1" } } diff --git a/loadTest/Makefile b/loadTest/Makefile index fccaeaa10..798974ab5 100644 --- a/loadTest/Makefile +++ b/loadTest/Makefile @@ -9,7 +9,7 @@ build-remote: @echo "+\n Building Image for Load Testing app with Branch = $$BRANCH ....\n++" @cd ./.pipeline && DEBUG=* npm run build -- --env=build --pr=0 --branch=$$BRANCH load-app: - @echo "+\n Shell into remote load test app pod in project (env, 8ecbmv-tools, 8ecbmv-dev) $$PROJECT" + @echo "+\n Shell into remote load test app pod in project (env, 7068ad-tools, 7068ad-dev) $$PROJECT" @oc project $$PROJECT && oc rsh invasivesbc-load-test deploy-job: @echo "+\n Deploying Load Test job in Env = $$ENV and Branch = $$BRANCH ....\n+" diff --git a/loadTest/README.md b/loadTest/README.md index fda142cfc..1b86006e2 100644 --- a/loadTest/README.md +++ b/loadTest/README.md @@ -50,7 +50,7 @@ The __/loadTest__ directory under root contains all resources and source code fi **__ make deploy-remote ENV=#OpenShift Env (build, dev, test) BRANCH=#GIT BUILD BRANCH NAME __** 3. Shell into pod - **__ make load-app PROJECT=#PROJECT/env NAME(8ecbmv-tools, 8ecbmv-dev) __** + **__ make load-app PROJECT=#PROJECT/env NAME(7068ad-tools, 7068ad-dev) __** 4. Deploy job **__ make deploy-job ENV=#OpenShift Project env (build, dev) BRANCH=#GIT BUILD BRANCH NAME __** diff --git a/loadTest/app/Makefile b/loadTest/app/Makefile index 7bcd7ef13..f0e89f306 100644 --- a/loadTest/app/Makefile +++ b/loadTest/app/Makefile @@ -4,4 +4,4 @@ load-test-api-read: @npx artillery run --overrides '{"config": {"phases": [{"duration": ${D}, "arrivalRate": ${R} }]}}' -v '{"url": "${TEST_URL}"}' ./tests/api.yml load-test-app: @echo "+\n Load test app or web app front end with DURATION = D = $$D, RATE = R = $$R TEST_URL= $$TEST_URL ...\n+" - @npx artillery quick -d $$D -r $$R -k https://test-invasivesbc.pathfinder.gov.bc.ca + @npx artillery quick -d $$D -r $$R -k https://test-invasivesbc.apps.silver.devops.gov.bc.ca diff --git a/loadTest/app/tests/api.yml b/loadTest/app/tests/api.yml index bbff46f53..ec6cc5bd0 100644 --- a/loadTest/app/tests/api.yml +++ b/loadTest/app/tests/api.yml @@ -1,5 +1,5 @@ config: - target: 'https://api-test-invasivesbc.pathfinder.gov.bc.ca/api' + target: 'https://api-test-invasivesbc.apps.silver.devops.gov.bc.ca/api' phases: - duration: 1 arrivalRate: 10 diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json index 4eb0805ad..df4a18ec2 100644 --- a/testing/integration/postman/DEV.postman_environment.json +++ b/testing/integration/postman/DEV.postman_environment.json @@ -9,7 +9,7 @@ }, { "key": "baseUrl", - "value": "https://api-dev-invasivesbc.pathfinder.gov.bc.ca/api", + "value": "https://api-dev-invasivesbc.apps.silver.devops.gov.bc.ca/api", "enabled": true }, { From db57c1670514678c93a87618c47e7bce5f2bb1e9 Mon Sep 17 00:00:00 2001 From: Roland Stens Date: Wed, 23 Dec 2020 16:17:23 -0800 Subject: [PATCH 112/194] Update README.md (#979) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4a83af2a5..c06102c97 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ https://bcdevexchange.org/projects/prj-invasive-species ## Introduction Invasive species are non-native plants and animals whose introduction and spread in British Columbia cause significant economic, social or environmental damage. This application tracks the observation, treatment, and monitoring of invasive species in the Province of British Columbia. - This project is part of the Species and Ecosystems Information System Modernization (SEISM) program. ## Table of Contents From cf62d40b6a7a8ed262e8a9f8cfe18efd15c93609 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jan 2021 11:42:26 -0800 Subject: [PATCH 113/194] Bump axios from 0.19.2 to 0.21.1 in /loadTest/app (#981) Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- loadTest/app/package-lock.json | 32 +++++++------------------------- loadTest/app/package.json | 2 +- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/loadTest/app/package-lock.json b/loadTest/app/package-lock.json index ef8e4c808..be79a1e5d 100644 --- a/loadTest/app/package-lock.json +++ b/loadTest/app/package-lock.json @@ -179,11 +179,11 @@ "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { - "follow-redirects": "1.5.10" + "follow-redirects": "^1.10.0" } }, "backo2": { @@ -734,27 +734,9 @@ "integrity": "sha1-mAddUY8GjE9Yt7WJoifZi9n2OV0=" }, "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" }, "forever-agent": { "version": "0.6.1", diff --git a/loadTest/app/package.json b/loadTest/app/package.json index bde79e625..5a119830e 100644 --- a/loadTest/app/package.json +++ b/loadTest/app/package.json @@ -27,6 +27,6 @@ "dependencies": { "dotenv": "^8.2.0", "artillery": "^1.6.0", - "axios": "^0.19.2" + "axios": "^0.21.1" } } From 2b45e8a13e6fa02fe66c3a14d19a02da434a0489 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jan 2021 11:42:42 -0800 Subject: [PATCH 114/194] Bump axios from 0.19.0 to 0.21.1 in /api/api_sources (#980) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- api/api_sources/package-lock.json | 35 +++++++------------------------ api/api_sources/package.json | 2 +- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index 17a35a3a3..d1c2d06ab 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -975,19 +975,11 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "axios": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" - } + "follow-redirects": "^1.10.0" } }, "bach": { @@ -3373,22 +3365,9 @@ } }, "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" }, "for-in": { "version": "1.0.2", diff --git a/api/api_sources/package.json b/api/api_sources/package.json index 6c66e1fe6..3adf131f6 100644 --- a/api/api_sources/package.json +++ b/api/api_sources/package.json @@ -79,7 +79,7 @@ }, "dependencies": { "@bcgov/nodejs-common-utils": "0.0.16", - "axios": "^0.19.0", + "axios": "^0.21.1", "bcryptjs": "^2.4.3", "body-parser": "^1.19.0", "chai": "^4.2.0", From 55f8c18981e3cf1c03a284773cf0b3b84e3a964e Mon Sep 17 00:00:00 2001 From: Nick Phura Date: Mon, 25 Jan 2021 13:27:21 -0800 Subject: [PATCH 115/194] Tweak replica numbers to save space in openshift (#982) * Tweak replica numbers to save space in openshift --- api/.pipeline/lib/config.js | 10 +++++----- app/.pipeline/lib/config.js | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/api/.pipeline/lib/config.js b/api/.pipeline/lib/config.js index bdc6e61a4..8dc6a1f44 100644 --- a/api/.pipeline/lib/config.js +++ b/api/.pipeline/lib/config.js @@ -66,7 +66,7 @@ const phases = { certificateURL: config.certificateURL.dev, migrationInfo: config.migrationInfo.dev, replicas: 1, - maxReplicas: 2 + maxReplicas: 1 }, test: { namespace:'7068ad-test', @@ -82,8 +82,8 @@ const phases = { env: 'test', certificateURL: config.certificateURL.test, migrationInfo: config.migrationInfo.test, - replicas: 3, - maxReplicas: 5 + replicas: 1, + maxReplicas: 1 }, prod: { namespace:'7068ad-prod' , @@ -99,8 +99,8 @@ const phases = { env: 'prod', certificateURL: config.certificateURL.prod, migrationInfo: config.migrationInfo.prod, - replicas: 3, - maxReplicas: 6 + replicas: 1, + maxReplicas: 3 } }; diff --git a/app/.pipeline/lib/config.js b/app/.pipeline/lib/config.js index c8c372798..0626abca6 100644 --- a/app/.pipeline/lib/config.js +++ b/app/.pipeline/lib/config.js @@ -74,7 +74,7 @@ const phases = { env: 'dev', sso: sso.dev, replicas: 1, - maxReplicas: 3 + maxReplicas: 1 }, test: { namespace:'7068ad-test' , @@ -89,8 +89,8 @@ const phases = { apiHost: staticUrlsAPI['staging'] || defaultHostAPI, env: 'test', sso: sso.test, - replicas: 3, - maxReplicas: 5 + replicas: 1, + maxReplicas: 1 }, prod: { namespace:'7068ad-prod' , @@ -105,8 +105,8 @@ const phases = { apiHost: staticUrlsAPI['prod'] || defaultHostAPI, env: 'prod', sso: sso.prod, - replicas: 3, - maxReplicas: 8 + replicas: 1, + maxReplicas: 3 } }; From 375dae6a33ec54ba6108eaa32372121143d7fb79 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Wed, 17 Mar 2021 20:52:47 -0700 Subject: [PATCH 116/194] Add Major City Table Schema and JSONS (#984) (#985) * Add Major City Table Schema and JSONS (#984) * Add major cities schema, days out of water json and decontamination order reason json, update endpoints * Add JSONS and major cities * Add major cities controller, update schema, add route * Add SQL for table changes, change days out from int to string * fix lint errors * change days out name * add columns to high risk assessment * Add major city to controllers and schema * fix naming bug Co-authored-by: Sam Warren --- .../jsons/musselsApp/DaysOutOfWater.json | 20 +++ .../DecontaminationOrderReasons.json | 17 +++ .../musselsApp/MusselOtherInspections.json | 3 + .../highRiskAssessment.schema.yaml | 9 ++ .../schema-files/majorCities.schema.yaml | 92 +++++++++++ .../watercraftJourney.schema.yaml | 2 +- .../watercraftRiskAssessment.schema.yaml | 8 + .../MajorCitySchema/MajorCitySchema.sql | 55 +++++++ .../WaterBodySchema-march2021.sql | 127 ++++++++++++++++ .../WatercraftJourneySchema.sql | 2 +- .../database-schema/musselApp.schema.ts | 13 ++ .../controllers/majorCity.controller.ts | 19 +++ .../watercraftRiskAssessment.controller.ts | 6 +- .../database/models/highRiskAssessment.ts | 18 +++ .../sources/database/models/index.ts | 2 + .../sources/database/models/majorCity.ts | 143 ++++++++++++++++++ .../database/models/watercraftJourney.ts | 6 +- .../models/watercraftRiskAssessment.ts | 18 +++ .../sources/server/initializers/routes.ts | 4 + .../constantData/mussels.code.route.ts | 6 + .../modules/watercraftObservation/index.ts | 1 + .../majorCities/majorCities.route.ts | 30 ++++ 22 files changed, 595 insertions(+), 6 deletions(-) create mode 100644 api/api_sources/resources/jsons/musselsApp/DaysOutOfWater.json create mode 100644 api/api_sources/resources/jsons/musselsApp/DecontaminationOrderReasons.json create mode 100644 api/api_sources/schema-files/majorCities.schema.yaml create mode 100644 api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql create mode 100644 api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-march2021.sql create mode 100644 api/api_sources/sources/database/models/controllers/majorCity.controller.ts create mode 100644 api/api_sources/sources/database/models/majorCity.ts create mode 100644 api/api_sources/sources/server/modules/watercraftObservation/majorCities/majorCities.route.ts diff --git a/api/api_sources/resources/jsons/musselsApp/DaysOutOfWater.json b/api/api_sources/resources/jsons/musselsApp/DaysOutOfWater.json new file mode 100644 index 000000000..5abaecbc1 --- /dev/null +++ b/api/api_sources/resources/jsons/musselsApp/DaysOutOfWater.json @@ -0,0 +1,20 @@ +[ + { + "Days_Out_Of_Water": "0-10 days" + }, + { + "Days_Out_Of_Water": "11-20 days" + }, + { + "Days_Out_Of_Water": "21-30 days" + }, + { + "Days_Out_Of_Water": "30 days to 6 months" + }, + { + "Days_Out_Of_Water": "6 months to 1 year" + }, + { + "Days_Out_Of_Water": "> 1 year" + } +] \ No newline at end of file diff --git a/api/api_sources/resources/jsons/musselsApp/DecontaminationOrderReasons.json b/api/api_sources/resources/jsons/musselsApp/DecontaminationOrderReasons.json new file mode 100644 index 000000000..62d6fa965 --- /dev/null +++ b/api/api_sources/resources/jsons/musselsApp/DecontaminationOrderReasons.json @@ -0,0 +1,17 @@ +[ + { + "Decontamination_Order_Reasons": "Inspection/decontamination could not be performed (e.g. commercially hauled)" + }, + { + "Decontamination_Order_Reasons": "Partial decontamination only" + }, + { + "Decontamination_Order_Reasons": "No decontamination - pressure washer not working" + }, + { + "Decontamination_Order_Reasons": "No decontamination - watercraft too complex" + }, + { + "Decontamination_Order_Reasons": "No decontamination - non-compliant refusing decontamination" + } +] diff --git a/api/api_sources/resources/jsons/musselsApp/MusselOtherInspections.json b/api/api_sources/resources/jsons/musselsApp/MusselOtherInspections.json index 8c57bc206..2dadd3ed8 100644 --- a/api/api_sources/resources/jsons/musselsApp/MusselOtherInspections.json +++ b/api/api_sources/resources/jsons/musselsApp/MusselOtherInspections.json @@ -19,5 +19,8 @@ }, { "Other_Inspections": "Other unidentified species" + }, + { + "Other_Inspections": "Dirty hull or bilge" } ] \ No newline at end of file diff --git a/api/api_sources/schema-files/highRiskAssessment.schema.yaml b/api/api_sources/schema-files/highRiskAssessment.schema.yaml index ffb413706..614be56e5 100644 --- a/api/api_sources/schema-files/highRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/highRiskAssessment.schema.yaml @@ -48,6 +48,10 @@ schemas: name: seal_issued_ind comment: 'Status flag to check seal was issued or not' definition: BOOLEAN NOT NULL DEFAULT FALSE + dreissenidMusselsFoundPrevious: + name: dreissenid_mussels_found_previous + comment: 'Status flag to check if dreissenid mussels were found on the previous inspection or not' + definition: BOOLEAN NOT NULL DEFAULT FALSE # Number watercraftRegistration: name: watercraft_registration @@ -63,6 +67,11 @@ schemas: comment: 'Decontamination order number' definition: INT NULL required: false + decontaminationOrderReason: + name: decontamination_order_reason + comment: 'Decontamination order reason' + definition: VARCHAR(100) NULL + required: false sealNumber: name: seal_number comment: 'Seal number' diff --git a/api/api_sources/schema-files/majorCities.schema.yaml b/api/api_sources/schema-files/majorCities.schema.yaml new file mode 100644 index 000000000..6f626f00c --- /dev/null +++ b/api/api_sources/schema-files/majorCities.schema.yaml @@ -0,0 +1,92 @@ +# Code Tables yaml +version: '1.0' +includes: [] +externalTables: + - name: country + schema: CountrySchema + description: Country code table + - name: country_province + schema: CountryProvinceSchema + description: Country province table +schemas: + ## -- MajorCitiesSchema + MajorCitiesSchema: + name: major_city + description: 'The table to store all major city information. Watercraft observation require information regarding its source and destination.' + baseSchema: RecordSchema + meta: + resource: true + api: /mussels/major-cities + base: api + displayLayout: + displayLabel: '#(name)' + header: + key: MajorCitiesSchema + default: 'Major City' + layout: {} + computedFields: {} + columns: + id: + name: 'major_city_id' + comment: 'Auto generated primary key' + definition: SERIAL PRIMARY KEY + composite: + name: 'composite' + comment: 'Composite name of major city and country' + definition: VARCHAR(100) NOT NULL + city_name: + name: city_name + comment: Common or popular name of the major-city + definition: VARCHAR(100) NOT NULL + city_longitude: + name: 'city_latitude' + comment: 'Latitude of city location' + definition: NUMERIC(10, 7) NOT NULL + city_latitude: + name: 'city_longitude' + comment: 'Longitude of city location' + definition: NUMERIC(10, 7) NOT NULL + meta: {} + country_code: + name: country + comment: Country of the city location. Joint foreign key reference to country_province table country_code column along with province_code. + definition: VARCHAR(3) NULL + province: + name: province + comment: Province of the major_city location. Joint foreign key reference to country_province table province_code column along with country code. + definition: VARCHAR(2) NULL + location_abbreviation: + name: location_abbreviation + comment: Province of the major city location. Joint foreign key reference to country_province table province_code column along with country code. + definition: VARCHAR(2) NULL + closest_water_body: + name: closest_water_body + comment: Nearest city/landmark from the major city + definition: VARCHAR(100) NOT NULL + distance: + name: distance + comment: Distance from closest water body in kilometer + definition: NUMERIC(10, 5) + active: + name: active_ind + comment: Boolean flag to check, the record is active or not. + definition: BOOLEAN NOT NULL DEFAULT TRUE + # ## -- columns + # imports: + # init: + # fileName: MajorCities.csv + # allColumnsExcept: + # - active + # ocean: + # fileName: WaterBodyOcean.csv + # allColumnsExcept: + # - active + # june2020: + # fileName: WaterBodiesJune2020.csv + # allColumnsExcept: + # - active + # ## -- + + + + \ No newline at end of file diff --git a/api/api_sources/schema-files/watercraftJourney.schema.yaml b/api/api_sources/schema-files/watercraftJourney.schema.yaml index 9054e961c..3aecd7029 100644 --- a/api/api_sources/schema-files/watercraftJourney.schema.yaml +++ b/api/api_sources/schema-files/watercraftJourney.schema.yaml @@ -29,7 +29,7 @@ schemas: numberOfDaysOut: name: number_of_days_out comment: 'Number of days out of water' - definition: INT NULL + definition: VARCHAR(25) NULL required: false # Other Details otherWaterBody: diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index 314659abe..00279a07b 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -105,6 +105,14 @@ schemas: name: destination_dry_storage_ind comment: Boolean indicator that watercraft''s destination water body is Dry Storage definition: BOOLEAN NOT NULL DEFAULT FALSE + previousMajorCity: + name: previous_major_city + comment: The closest major city to previous water body + definition: VARCHAR(100) NULL + destinationMajorCity: + name: destination_major_city + comment: The closest major city to destination water body + definition: VARCHAR(100) NULL unknownPreviousWaterBody: name: unknown_previous_water_body_ind comment: Boolean indicate that watercraft''s previous water body is unknown diff --git a/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql b/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql new file mode 100644 index 000000000..8c9b0d52d --- /dev/null +++ b/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql @@ -0,0 +1,55 @@ +CREATE TABLE invasivesbc.major_city ( + composite character varying(1024), + city_name character varying(1024), + city_longitude numeric, + city_latitude numeric, + country_code character varying(3), + province character varying(1024), + location_abbreviation character varying(1024), + closest_water_body character varying(1024), + distance numeric, + major_city_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + created_by_user_id character varying(100), + updated_by_user_id character varying(100), + active_ind boolean +); + + +ALTER TABLE invasivesbc.major_city OWNER TO invasivebc; + +-- +-- Name: major_city_major_city_id_seq; Type: SEQUENCE; Schema: invasivesbc; Owner: invasivebc +-- + +CREATE SEQUENCE invasivesbc.major_city_major_city_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE invasivesbc.major_city_major_city_id_seq OWNER TO invasivebc; + +-- +-- Name: major_city_major_city_id_seq; Type: SEQUENCE OWNED BY; Schema: invasivesbc; Owner: invasivebc +-- + +ALTER SEQUENCE invasivesbc.major_city_major_city_id_seq OWNED BY invasivesbc.major_city.major_city_id; + + +-- +-- Name: major_city major_city_id; Type: DEFAULT; Schema: invasivesbc; Owner: invasivebc +-- + +ALTER TABLE ONLY invasivesbc.major_city ALTER COLUMN major_city_id SET DEFAULT nextval('invasivesbc.major_city_major_city_id_seq'::regclass); + + +-- +-- Name: major_city major_city_pkey; Type: CONSTRAINT; Schema: invasivesbc; Owner: invasivebc +-- + +ALTER TABLE ONLY invasivesbc.major_city + ADD CONSTRAINT major_city_pkey PRIMARY KEY (major_city_id); \ No newline at end of file diff --git a/api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-march2021.sql b/api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-march2021.sql new file mode 100644 index 000000000..f6814a3a0 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-march2021.sql @@ -0,0 +1,127 @@ +CREATE TABLE invasivesbc.water_body_2 ( + water_body_id integer NOT NULL, + water_body_name character varying(100), + water_body_longitude numeric, + water_body_latitude numeric, + country_code character varying(3), + province_code character varying(2), + location_abbreviation character varying(100), + closest_city character varying(100), + distance numeric, + district character varying(100), + district_code character varying(10), + region character varying(100), + region_code character varying(10) +); + + +ALTER TABLE invasivesbc.water_body_2 OWNER TO invasivebc; + +-- +-- Name: water_body_2_water_body_id_seq; Type: SEQUENCE; Schema: invasivesbc; Owner: invasivebc +-- + +CREATE SEQUENCE invasivesbc.water_body_2_water_body_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE invasivesbc.water_body_2_water_body_id_seq OWNER TO invasivebc; + +-- +-- Name: water_body_2_water_body_id_seq; Type: SEQUENCE OWNED BY; Schema: invasivesbc; Owner: invasivebc +-- + +ALTER SEQUENCE invasivesbc.water_body_2_water_body_id_seq OWNED BY invasivesbc.water_body_2.water_body_id; + + +-- +-- Name: water_body_2 water_body_id; Type: DEFAULT; Schema: invasivesbc; Owner: invasivebc +-- + +ALTER TABLE ONLY invasivesbc.water_body_2 ALTER COLUMN water_body_id SET DEFAULT nextval('invasivesbc.water_body_2_water_body_id_seq'::regclass); + + +-- +-- Name: water_body_2 water_body_2_pkey; Type: CONSTRAINT; Schema: invasivesbc; Owner: invasivebc +-- + +ALTER TABLE ONLY invasivesbc.water_body_2 + ADD CONSTRAINT water_body_2_pkey PRIMARY KEY (water_body_id); + + + +-- Merging water body 1 with water body 2 -- + +-- REGION -- + +alter table invasivesbc.water_body add column region varchar + +update invasivesbc.water_body as wb1 + +set region = wb2.region + +from + +invasivesbc.water_body_2 wb2 where + +wb1.water_body_id = wb2.water_body_id + +-- REGION CODE -- + +alter table invasivesbc.water_body add column region_code varchar + +update invasivesbc.water_body as wb1 + +set region_code = wb2.region_code + +from + +invasivesbc.water_body_2 wb2 where + +wb1.water_body_id = wb2.water_body_id + +-- DISTRICT -- + +alter table invasivesbc.water_body add column district varchar + +update invasivesbc.water_body as wb1 + +set district = wb2.district + +from + +invasivesbc.water_body_2 wb2 where + +wb1.water_body_id = wb2.water_body_id + +-- DISTRICT CODE -- + +alter table invasivesbc.water_body add column district_code varchar + +update invasivesbc.water_body as wb1 + +set district_code = wb2.district_code + +from + +invasivesbc.water_body_2 wb2 where + +wb1.water_body_id = wb2.water_body_id + +-- LOCATION ABBREVIATION -- + +alter table invasivesbc.water_body add column location_abbreviation varchar + +update invasivesbc.water_body as wb1 + +set location_abbreviation = wb2.location_abbreviation + +from + +invasivesbc.water_body_2 wb2 where + +wb1.water_body_id = wb2.water_body_id diff --git a/api/api_sources/schema-migration-sql/WatercraftJourneySchema/WatercraftJourneySchema.sql b/api/api_sources/schema-migration-sql/WatercraftJourneySchema/WatercraftJourneySchema.sql index b64927adb..b1d2d5a69 100644 --- a/api/api_sources/schema-migration-sql/WatercraftJourneySchema/WatercraftJourneySchema.sql +++ b/api/api_sources/schema-migration-sql/WatercraftJourneySchema/WatercraftJourneySchema.sql @@ -4,7 +4,7 @@ CREATE TABLE watercraft_journey (); ALTER TABLE watercraft_journey ADD COLUMN watercraft_journey_id SERIAL PRIMARY KEY; ALTER TABLE watercraft_journey ADD COLUMN journey_type INT NOT NULL DEFAULT 0; -ALTER TABLE watercraft_journey ADD COLUMN number_of_days_out INT NULL; +ALTER TABLE watercraft_journey ADD COLUMN number_of_days_out VARCHAR(25) NULL; ALTER TABLE watercraft_journey ADD COLUMN other_water_body_detail VARCHAR(300) NULL; ALTER TABLE watercraft_journey ADD COLUMN watercraft_risk_assessment_id INT NULL REFERENCES watercraft_risk_assessment(watercraft_risk_assessment_id) ON DELETE SET NULL; ALTER TABLE watercraft_journey ADD COLUMN water_body_id INT NULL REFERENCES water_body(water_body_id) ON DELETE SET NULL; diff --git a/api/api_sources/sources/database/database-schema/musselApp.schema.ts b/api/api_sources/sources/database/database-schema/musselApp.schema.ts index 03babf68c..1c68cb36c 100644 --- a/api/api_sources/sources/database/database-schema/musselApp.schema.ts +++ b/api/api_sources/sources/database/database-schema/musselApp.schema.ts @@ -49,6 +49,19 @@ export class WaterBodySchema extends RecordTableSchema { } } +/** + * @description Schema Class for MajorCitySchema + */ + export class MajorCitySchema extends RecordTableSchema { + get schemaFilePath(): string { + return getYAMLFilePath('majorCities.schema.yaml'); + } + + get hasDefaultValues(): boolean { + return true; + } +} + /** * @description Schema Class for ObserverWorkflowSchema */ diff --git a/api/api_sources/sources/database/models/controllers/majorCity.controller.ts b/api/api_sources/sources/database/models/controllers/majorCity.controller.ts new file mode 100644 index 000000000..f5a8bc415 --- /dev/null +++ b/api/api_sources/sources/database/models/controllers/majorCity.controller.ts @@ -0,0 +1,19 @@ +// ** MajorCityController ** // + +import { RecordController } from '../generic.data.models'; +import { MajorCity } from '../majorCity'; +import { MajorCitySchema } from '../../database-schema'; + + +/** + * @description Data Model Controller Class for MajorCitySchema and MajorCity + */ +export class MajorCityController extends RecordController { + /** + * @description Getter for shared instance + */ + public static get shared(): MajorCityController { + return this.sharedInstance(MajorCity, MajorCitySchema) as MajorCityController; + } +} +// ---------------- diff --git a/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts b/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts index 0cbe0a88d..a4d1d3236 100644 --- a/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts +++ b/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts @@ -69,10 +69,12 @@ export class WatercraftRiskAssessmentController extends RecordController 0) { + if (item.numberOfDaysOut && item.numberOfDaysOut !== '') { details.numberOfDaysOut = `${item.numberOfDaysOut}`; } else { details.numberOfDaysOut = `NA`; diff --git a/api/api_sources/sources/database/models/highRiskAssessment.ts b/api/api_sources/sources/database/models/highRiskAssessment.ts index 20efeb989..650f11785 100644 --- a/api/api_sources/sources/database/models/highRiskAssessment.ts +++ b/api/api_sources/sources/database/models/highRiskAssessment.ts @@ -20,9 +20,11 @@ export interface HighRiskAssessmentSpec { decontaminationPerformed: boolean; decontaminationOrderIssued: boolean; sealIssued: boolean; + dreissenidMusselsFoundPrevious: boolean; watercraftRegistration: string; decontaminationReference: string; decontaminationOrderNumber: number; + decontaminationOrderReason: string; sealNumber: number; standingWaterLocation: object; adultDreissenidaeMusselDetail: object; @@ -44,9 +46,11 @@ export interface HighRiskAssessmentUpdateSpec { decontaminationPerformed?: boolean; decontaminationOrderIssued?: boolean; sealIssued?: boolean; + dreissenidMusselsFoundPrevious?: boolean; watercraftRegistration?: string; decontaminationReference?: string; decontaminationOrderNumber?: number; + decontaminationOrderReason?: string; sealNumber?: number; standingWaterLocation?: object; adultDreissenidaeMusselDetail?: object; @@ -126,6 +130,13 @@ export class HighRiskAssessment extends Record implements HighRiskAssessmentSpec @ModelProperty({type: PropertyType.boolean}) sealIssued: boolean; + /** + * @description Getter/Setter property for column {dreissenid_mussels_found_previous} + */ + @Column({ name: HighRiskAssessmentSchema.columns.dreissenidMusselsFoundPrevious}) + @ModelProperty({type: PropertyType.boolean}) + dreissenidMusselsFoundPrevious: boolean; + /** * @description Getter/Setter property for column {watercraft_registration} */ @@ -147,6 +158,13 @@ export class HighRiskAssessment extends Record implements HighRiskAssessmentSpec @ModelProperty({type: PropertyType.number}) decontaminationOrderNumber: number; + /** + * @description Getter/Setter property for column {decontamination_order_reason} + */ + @Column({name: HighRiskAssessmentSchema.columns.decontaminationOrderReason, transformer: new IntTransformer()}) + @ModelProperty({type: PropertyType.string}) + decontaminationOrderReason: string; + /** * @description Getter/Setter property for column {seal_number} */ diff --git a/api/api_sources/sources/database/models/index.ts b/api/api_sources/sources/database/models/index.ts index d253f46f3..1419ac24b 100644 --- a/api/api_sources/sources/database/models/index.ts +++ b/api/api_sources/sources/database/models/index.ts @@ -76,6 +76,7 @@ export * from './lifeStageCode'; export * from './behaviourCode'; export * from './animalSpecies'; export * from './animalObservation'; +export * from './majorCity'; /** * Controllers @@ -105,4 +106,5 @@ export * from './controllers/highRiskAssessment.controller'; export * from './controllers/watercraftJourney.controller'; export * from './controllers/seed.controller'; export * from './controllers/animalObservation.controller'; +export * from './controllers/majorCity.controller'; // ---------------------------------------------------------------------------------------------------------------- diff --git a/api/api_sources/sources/database/models/majorCity.ts b/api/api_sources/sources/database/models/majorCity.ts new file mode 100644 index 000000000..f415f7cdb --- /dev/null +++ b/api/api_sources/sources/database/models/majorCity.ts @@ -0,0 +1,143 @@ +// ** Model: MajorCity from schema MajorCitiesSchema ** + +import { Column, Entity, PrimaryGeneratedColumn} from 'typeorm'; +import { MajorCitySchema } from '../database-schema'; +import { +} from '../database-schema'; + +import { ModelProperty, PropertyType, ModelDescription } from '../../libs/core-model'; +import { NumericTransformer } from '../../libs/transformer'; +import { +} from '../models'; + +import { Record } from './generic.data.models'; + +/** Interface **/ +/** + * @description MajorCity create interface + */ +export interface MajorCitySpec { + city_name: string; + composite: string; + city_latitude: number; + city_longitude: number; + country_code: string; + province: string; + location_abbreviation: string; + closest_water_body: string; + distance: number; +} +// -- End: MajorCitySpec -- + + +/** Interface **/ +/** + * @description MajorCity update interface + */ +export interface MajorCityUpdateSpec { + city_name?: string; + composite?: string; + city_latitude?: number; + city_longitude?: number; + country_code?: string; + province?: string; + location_abbreviation?: string; + closest_water_body?: string; + distance?: number; +} +// -- End: MajorCityUpdateSpec -- + +/** + * @description Data Model Class for MajorCitySchema + */ +@ModelDescription({ + description: 'Data Model Class for MajorCitySchema', + schema: MajorCitySchema, + apiResource: false +}) +@Entity( { name: MajorCitySchema.dbTable} ) +export class MajorCity extends Record implements MajorCitySpec { + + /** + * Class Properties + */ + + /** + * @description Getter/Setter property for column {major_city_id} + */ + @PrimaryGeneratedColumn() + @ModelProperty({type: PropertyType.number}) + major_city_id: number; + + /** + * @description Getter/Setter property for column {composite} + */ + @Column({ name: MajorCitySchema.columns.composite}) + @ModelProperty({type: PropertyType.string}) + composite: string; + + /** + * @description Getter/Setter property for column {city_name} + */ + @Column({ name: MajorCitySchema.columns.city_name}) + @ModelProperty({type: PropertyType.string}) + city_name: string; + + /** + * @description Getter/Setter property for column {city_longitude} + */ + @Column({name: MajorCitySchema.columns.city_longitude, transformer: new NumericTransformer()}) + @ModelProperty({type: PropertyType.number}) + city_longitude: number; + + /** + * @description Getter/Setter property for column {city_latitude} + */ + @Column({name: MajorCitySchema.columns.city_latitude, transformer: new NumericTransformer()}) + @ModelProperty({type: PropertyType.number}) + city_latitude: number; + + /** + * @description Getter/Setter property for column {country_code} + */ + @Column({ name: MajorCitySchema.columns.country_code}) + @ModelProperty({type: PropertyType.string}) + country_code: string; + + /** + * @description Getter/Setter property for column {province_code} + */ + @Column({ name: MajorCitySchema.columns.province}) + @ModelProperty({type: PropertyType.string}) + province: string; + + /** + * @description Getter/Setter property for column {location_abbreviation} + */ + @Column({ name: MajorCitySchema.columns.location_abbreviation}) + @ModelProperty({type: PropertyType.string}) + location_abbreviation: string; + + /** + * @description Getter/Setter property for column {closest_water_body} + */ + @Column({ name: MajorCitySchema.columns.closest_water_body}) + @ModelProperty({type: PropertyType.string}) + closest_water_body: string; + + /** + * @description Getter/Setter property for column {distance} + */ + @Column({name: MajorCitySchema.columns.distance, transformer: new NumericTransformer()}) + @ModelProperty({type: PropertyType.number}) + distance: number; + + /** + * @description Getter/Setter property for column {active_ind} + */ + @Column({ name: MajorCitySchema.columns.active}) + @ModelProperty({type: PropertyType.boolean}) + active: boolean; +} + +// ------------------------------------- diff --git a/api/api_sources/sources/database/models/watercraftJourney.ts b/api/api_sources/sources/database/models/watercraftJourney.ts index 796e7b2af..fd38c396a 100644 --- a/api/api_sources/sources/database/models/watercraftJourney.ts +++ b/api/api_sources/sources/database/models/watercraftJourney.ts @@ -22,7 +22,7 @@ import { Record } from './generic.data.models'; */ export interface WatercraftJourneySpec { journeyType: number; - numberOfDaysOut: number; + numberOfDaysOut: string; otherWaterBody: string; watercraftAssessment: WatercraftRiskAssessment; waterBody: WaterBody; @@ -36,7 +36,7 @@ export interface WatercraftJourneySpec { */ export interface WatercraftJourneyUpdateSpec { journeyType?: number; - numberOfDaysOut?: number; + numberOfDaysOut?: string; otherWaterBody?: string; watercraftAssessment?: WatercraftRiskAssessment; waterBody?: WaterBody; @@ -77,7 +77,7 @@ export class WatercraftJourney extends Record implements WatercraftJourneySpec { */ @Column({name: WatercraftJourneySchema.columns.numberOfDaysOut, transformer: new IntTransformer()}) @ModelProperty({type: PropertyType.number}) - numberOfDaysOut: number; + numberOfDaysOut: string; /** * @description Getter/Setter property for column {other_water_body_detail} diff --git a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts index a5c8b0174..4b20e54eb 100644 --- a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts +++ b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts @@ -65,6 +65,8 @@ export interface WatercraftRiskAssessmentSpec { highRiskAIS: boolean; previousDryStorage: boolean; destinationDryStorage: boolean; + previousMajorCity: string; + destinationMajorCity: string; unknownPreviousWaterBody: boolean; unknownDestinationWaterBody: boolean; commercialManufacturerAsPreviousWaterBody: boolean; @@ -109,6 +111,8 @@ export interface WatercraftRiskAssessmentUpdateSpec { highRiskAIS?: boolean; previousDryStorage?: boolean; destinationDryStorage?: boolean; + previousMajorCity?: string; + destinationMajorCity?: string; unknownPreviousWaterBody?: boolean; unknownDestinationWaterBody?: boolean; commercialManufacturerAsPreviousWaterBody?: boolean; @@ -265,6 +269,20 @@ export class WatercraftRiskAssessment extends Record implements WatercraftRiskAs @ModelProperty({type: PropertyType.boolean}) destinationDryStorage: boolean; + /** + * @description Getter/Setter property for column {previous_major_city} + */ + @Column({ name: WatercraftRiskAssessmentSchema.columns.previousMajorCity}) + @ModelProperty({type: PropertyType.string}) + previousMajorCity: string; + + /** + * @description Getter/Setter property for column {destination_major_city} + */ + @Column({ name: WatercraftRiskAssessmentSchema.columns.destinationMajorCity}) + @ModelProperty({type: PropertyType.string}) + destinationMajorCity: string; + /** * @description Getter/Setter property for column {unknown_previous_water_body_ind} */ diff --git a/api/api_sources/sources/server/initializers/routes.ts b/api/api_sources/sources/server/initializers/routes.ts index b1c7b192c..41b12a4a4 100644 --- a/api/api_sources/sources/server/initializers/routes.ts +++ b/api/api_sources/sources/server/initializers/routes.ts @@ -33,6 +33,7 @@ import { accountRoute, mechanicalMonitorRoute, UploadRouteController, animalObservationRoute, + MajorCitiesRouteController, } from '../modules'; import { LocationRouteController } from '../modules/location'; import { BCGeoDataRouteController } from '../modules/bcGeoData'; @@ -73,6 +74,9 @@ export const routes = (app: Application) => { // Water body app.use('/api/mussels/water-body', WaterBodyRouteController.shared.router); + // Major Cities + app.use('/api/mussels/major-cities', MajorCitiesRouteController.shared.router); + // Observer Workflow app.use('/api/mussels/workflow', ObserverWorkflowRouteController.shared.router); diff --git a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts index edfb581ca..3b2d99c61 100644 --- a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts +++ b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts @@ -15,6 +15,8 @@ const InspectorList = require('../../../../../resources/jsons/musselsApp/MusselI const OtherInspections = require('../../../../../resources/jsons/musselsApp/MusselOtherInspections.json'); const Stations = require('../../../../../resources/jsons/musselsApp/MusselStationNames.json'); const WatercraftList = require('../../../../../resources/jsons/musselsApp/MusselWatercrafts.json'); +const DecontaminationOrderReasons = require('../../../../../resources/jsons/musselsApp/DecontaminationOrderReasons.json'); +const DaysOutOfWater = require('../../../../../resources/jsons/musselsApp/DaysOutOfWater.json'); /** * @description Route Controller for Mussel app constants @@ -37,6 +39,8 @@ export class MusselsAppCodesRouteController extends SecureRouteController { const otherInspection: any[] = this.processList(OtherInspections as any[], 'Other_Inspections'); const stations: any[] = this.processList(Stations as any[], 'Station_Name'); const watercraftList: any[] = this.processList(WatercraftList as any[], 'Watercraft'); + const decontaminationOrderReasonList: any[] = this.processList(DecontaminationOrderReasons as any[], 'Decontamination_Order_Reasons'); + const daysOutOfWaterList: any[] = this.processList(DaysOutOfWater as any[], 'Days_Out_Of_Water'); // Code tables const adultMusselsLocation: any[] = await AdultMusselsLocationController.shared.all(); @@ -48,6 +52,8 @@ export class MusselsAppCodesRouteController extends SecureRouteController { otherObservations: otherInspection, stations: stations, watercraftList: watercraftList, + decontaminationOrderReasons: decontaminationOrderReasonList, + daysOutOfWater: daysOutOfWaterList, adultMusselsLocation, previousAISKnowledgeSource, previousInspectionSource, diff --git a/api/api_sources/sources/server/modules/watercraftObservation/index.ts b/api/api_sources/sources/server/modules/watercraftObservation/index.ts index fce918dda..eea5f9531 100644 --- a/api/api_sources/sources/server/modules/watercraftObservation/index.ts +++ b/api/api_sources/sources/server/modules/watercraftObservation/index.ts @@ -21,5 +21,6 @@ * ----- */ export * from './waterBody/waterBody.route'; +export * from './majorCities/majorCities.route'; export * from './constantData/mussels.code.route'; // -------------- diff --git a/api/api_sources/sources/server/modules/watercraftObservation/majorCities/majorCities.route.ts b/api/api_sources/sources/server/modules/watercraftObservation/majorCities/majorCities.route.ts new file mode 100644 index 000000000..44fa9c032 --- /dev/null +++ b/api/api_sources/sources/server/modules/watercraftObservation/majorCities/majorCities.route.ts @@ -0,0 +1,30 @@ +/** + * Imports + */ +import { + // SecureRouteController, + ResourceRoute, + CreateMiddleware, + ResourceRouteController, + writerOnlyRoute, + UpdateMiddleware, +} from '../../../core'; +import { + MajorCityController, + MajorCitySpec, +} from '../../../../database/models'; +@ResourceRoute({ + dataController: MajorCityController.shared, + secure: true, +}) +@CreateMiddleware(() => [writerOnlyRoute()]) +@UpdateMiddleware(() => [writerOnlyRoute()]) +export class MajorCitiesRouteController extends ResourceRouteController< + MajorCityController, + MajorCitySpec, + any +> { + static get shared(): MajorCitiesRouteController { + return this.sharedInstance() as MajorCitiesRouteController; + } +} From ef002973ad8880e6ce55f7b4ac2c5471249f1dbe Mon Sep 17 00:00:00 2001 From: Sam Warren Date: Fri, 19 Mar 2021 13:25:46 -0700 Subject: [PATCH 117/194] Changed name of column to "Active" (#987) --- api/api_sources/schema-files/majorCities.schema.yaml | 2 +- api/api_sources/sources/database/models/majorCity.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/api_sources/schema-files/majorCities.schema.yaml b/api/api_sources/schema-files/majorCities.schema.yaml index 6f626f00c..dbed00933 100644 --- a/api/api_sources/schema-files/majorCities.schema.yaml +++ b/api/api_sources/schema-files/majorCities.schema.yaml @@ -68,7 +68,7 @@ schemas: comment: Distance from closest water body in kilometer definition: NUMERIC(10, 5) active: - name: active_ind + name: active comment: Boolean flag to check, the record is active or not. definition: BOOLEAN NOT NULL DEFAULT TRUE # ## -- columns diff --git a/api/api_sources/sources/database/models/majorCity.ts b/api/api_sources/sources/database/models/majorCity.ts index f415f7cdb..4aa835bb0 100644 --- a/api/api_sources/sources/database/models/majorCity.ts +++ b/api/api_sources/sources/database/models/majorCity.ts @@ -133,7 +133,7 @@ export class MajorCity extends Record implements MajorCitySpec { distance: number; /** - * @description Getter/Setter property for column {active_ind} + * @description Getter/Setter property for column {active} */ @Column({ name: MajorCitySchema.columns.active}) @ModelProperty({type: PropertyType.boolean}) From fddff7bb8167a0c54d4784d78259115f33ee0706 Mon Sep 17 00:00:00 2001 From: Sam Warren Date: Tue, 23 Mar 2021 10:55:25 -0700 Subject: [PATCH 118/194] update station name JSON (#988) --- .../jsons/musselsApp/MusselStationNames.json | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json b/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json index 39272a41c..1a0d6f9d8 100644 --- a/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json +++ b/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json @@ -1,68 +1,68 @@ [ { - "Station_Name": "Other" + "Station_Name": "Cascade" }, { - "Station_Name": "Cascade / Grand Forks" + "Station_Name": "Cutts (Hwy 93)" }, { "Station_Name": "Dawson Creek" }, { - "Station_Name": "Cutts Hwy 93" + "Station_Name": "Fraser Valley Roving" }, { "Station_Name": "Golden" }, { - "Station_Name": "Laidlaw / Chilliwack" + "Station_Name": "Keremeos (Hwy 3)" }, { - "Station_Name": "Mt. Robson" + "Station_Name": "Midway" }, { - "Station_Name": "Olsen Hwy 3" + "Station_Name": "Mt. Robson" }, { - "Station_Name": "Osoyoos" + "Station_Name": "Olsen (Hwy 3)" }, { - "Station_Name": "Pacific / Surrey" + "Station_Name": "Osoyoos" }, { - "Station_Name": "Radium" + "Station_Name": "Other" }, { - "Station_Name": "Salmo" + "Station_Name": "Pacific Border" }, { - "Station_Name": "Calemount" + "Station_Name": "Penticton Roving" }, { - "Station_Name": "Yahk" + "Station_Name": "Radium" }, { - "Station_Name": "Fraser Valley Roving" + "Station_Name": "Scheduled Inspection (AB notification)" }, { - "Station_Name": "Sumas border" + "Station_Name": "Scheduled Inspection (CBSA notification)" }, { - "Station_Name": "Aldergrove border" + "Station_Name": "Scheduled Inspection (New boat)" }, { - "Station_Name": "Scheduled inspection (RAPP notification)" + "Station_Name": "Scheduled Inspection (other notification)" }, { - "Station_Name": "Scheduled inspection (CBSA referral)" + "Station_Name": "Scheduled Inspection (RAPP notification)" }, { - "Station_Name": "Scheduled inspection (AB notification)" + "Station_Name": "Sumas Border" }, { - "Station_Name": "Scheduled inspection (other notification)" + "Station_Name": "Valemount" }, { - "Station_Name": "Scheduled inspection (new boat)" + "Station_Name": "Yahk" } ] \ No newline at end of file From 650cc0bbce290bb58c212aa017bb94e916f73656 Mon Sep 17 00:00:00 2001 From: Sam Warren Date: Tue, 30 Mar 2021 15:29:11 -0700 Subject: [PATCH 119/194] add new passport issued field (#993) --- .../schema-files/watercraftRiskAssessment.schema.yaml | 4 ++++ .../controllers/watercraftRiskAssessment.controller.ts | 1 + .../sources/database/models/watercraftRiskAssessment.ts | 8 ++++++++ 3 files changed, 13 insertions(+) diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index 00279a07b..122ca4fc8 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -49,6 +49,10 @@ schemas: name: 'passport_holder_ind' comment: 'Indicator to show that inspected boat has previously issued passport' definition: BOOLEAN NOT NULL DEFAULT FALSE + isNewPassportIssued: + name: 'is_new_passport_issued' + comment: 'Indicator to show that inspected boat was issued a new passport' + definition: BOOLEAN NOT NULL DEFAULT FALSE k9Inspection: name: k9_inspection_ind comment: 'Indicator to show that inspection type is K9' diff --git a/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts b/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts index a4d1d3236..022c0ea9b 100644 --- a/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts +++ b/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts @@ -49,6 +49,7 @@ export class WatercraftRiskAssessmentController extends RecordController Date: Fri, 9 Jul 2021 09:45:16 -0700 Subject: [PATCH 120/194] Add waterCraftRiskAssessment.inspection_time column (#1011) * Add waterCraftRiskAssessment.inspection_time column + migrations * Update string validation check * Fix migration id * Improve regex validation check --- .../watercraftRiskAssessment.schema.yaml | 12 +++++++++ ...entSchema-inspectionTime-20210706.down.sql | 7 +++++ ...smentSchema-inspectionTime-20210706.up.sql | 12 +++++++++ ...craftRiskAssessmentUpdateInspectionTime.ts | 27 +++++++++++++++++++ .../models/watercraftRiskAssessment.ts | 9 +++++++ .../sources/server/core/schema.validation.ts | 17 ++++++++---- 6 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.down.sql create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.up.sql create mode 100644 api/api_sources/sources/database/migrations/1587918551000-WatercraftRiskAssessmentUpdateInspectionTime.ts diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index 122ca4fc8..173a668f6 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -253,6 +253,18 @@ schemas: required: false meta: {} ## -- end: numberOfPeopleInParty + ## -- version: inspectionTime + - name: 'inspectionTime' + id: '20210706' + info: 'Adding new column inspectionTime' + columns: + inspectionTime: + name: inspection_time + comment: The time of the inspection + definition: VARCHAR(100) NULL + required: false + meta: {} + ## -- end: inspectionTime ## -- end version ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.down.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.down.sql new file mode 100644 index 000000000..e6a9bb360 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.down.sql @@ -0,0 +1,7 @@ +-- ## Reverting table: watercraft_risk_assessment +-- ## Version: inspectionTime +-- ## Info: Adding new column inspectionTime +-- ## Removing New Columns ## -- +ALTER TABLE watercraft_risk_assessment DROP COLUMN IF EXISTS inspection_time; + +-- ## Updating watercraft_risk_assessment ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.up.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.up.sql new file mode 100644 index 000000000..40cd9c838 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-inspectionTime-20210706.up.sql @@ -0,0 +1,12 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: inspectionTime +-- ## Info: Adding new column inspectionTime +-- ## Adding New Columns ## -- + +-- ## Adding Column inspection_time on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ADD COLUMN inspection_time VARCHAR(100) NULL; +COMMENT ON COLUMN watercraft_risk_assessment.inspection_time IS 'The time of the inspection'; +-- ## -- + + +-- ## Updating watercraft_risk_assessment ## -- diff --git a/api/api_sources/sources/database/migrations/1587918551000-WatercraftRiskAssessmentUpdateInspectionTime.ts b/api/api_sources/sources/database/migrations/1587918551000-WatercraftRiskAssessmentUpdateInspectionTime.ts new file mode 100644 index 000000000..199d84eb3 --- /dev/null +++ b/api/api_sources/sources/database/migrations/1587918551000-WatercraftRiskAssessmentUpdateInspectionTime.ts @@ -0,0 +1,27 @@ +import {MigrationInterface, QueryRunner} from 'typeorm'; +import { AppDBMigrator } from '../applicationSchemaInterface'; +import { WatercraftRiskAssessmentSchema } from '../database-schema'; + +export class WatercraftRiskAssessmentUpdateInspectionTime1625599791000 extends AppDBMigrator implements MigrationInterface { + watercraftRiskAssessment: WatercraftRiskAssessmentSchema; + + setup() { + this.watercraftRiskAssessment = new WatercraftRiskAssessmentSchema(); + this.addSchemaVersion(this.watercraftRiskAssessment, 'inspectionTime'); + } + + public async up(queryRunner: QueryRunner): Promise { + // Start Log + this.log('[START]', 'UP'); + // Running all up migration files + await this.runQuerySqlFiles(this.upMigrations(), queryRunner); + this.log('[END]', 'UP'); + } + + public async down(queryRunner: QueryRunner): Promise { + this.log('[STAR]', 'DOWN'); + await this.runQuerySqlFiles(this.downMigrations(), queryRunner); + this.log('[END]', 'DOWN'); + } + +} diff --git a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts index 9cb410df5..6984b36a8 100644 --- a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts +++ b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts @@ -51,6 +51,7 @@ import { WatercraftJourney } from './watercraftJourney'; export interface WatercraftRiskAssessmentSpec { timestamp: string; passportHolder: boolean; + inspectionTime: string; isNewPassportIssued: boolean; k9Inspection: boolean; marineSpeciesFound: boolean; @@ -98,6 +99,7 @@ export interface WatercraftRiskAssessmentSpec { export interface WatercraftRiskAssessmentUpdateSpec { timestamp?: string; passportHolder?: boolean; + inspectionTime: string; k9Inspection?: boolean; marineSpeciesFound?: boolean; aquaticPlantsFound?: boolean; @@ -172,6 +174,13 @@ export class WatercraftRiskAssessment extends Record implements WatercraftRiskAs @ModelProperty({type: PropertyType.boolean}) passportHolder: boolean; + /** + * @description Getter/Setter property for column {inspection_time} + */ + @Column({ name: WatercraftRiskAssessmentSchema.columns.inspectionTime}) + @ModelProperty({type: PropertyType.string}) + inspectionTime: string; + /** * @description Getter/Setter property for column {is_new_passport_issued} */ diff --git a/api/api_sources/sources/server/core/schema.validation.ts b/api/api_sources/sources/server/core/schema.validation.ts index 5008f11fb..4d45046ef 100644 --- a/api/api_sources/sources/server/core/schema.validation.ts +++ b/api/api_sources/sources/server/core/schema.validation.ts @@ -142,14 +142,21 @@ export class SchemaValidator { } else { info = { validate: validate => validate.isString().custom(async (value: string, {req}) => { - // 1. Check Size - assert(value, `${printKey}: Value must be defined`); - assert(value.length <= typeInfo.size, `${printKey}: Exceed maximum size ${typeInfo.size}`); - // 2. Regx check + if (field.required) { + // 1. Check Null + assert(value, `${printKey}: Value must be defined`); + } + + if (value) { + // 2. Check Size + assert(value.length <= typeInfo.size, `${printKey}: Exceed maximum size ${typeInfo.size}`); + } + + // 3. Regx check const verification = field.fieldVerification() || {}; if (verification.regx) { const regx = new RegExp(verification.regx.re, verification.regx.flag || 'gm'); - assert(value.match(regx), `${printKey}: should match regx: ${regx}`); + assert(regx.test(value), `${printKey}: should match regx: ${regx}`); } }), message: 'should be string', From cc0295a89ef919d8211fbf034b1b5fcbeda9dcfa Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 2 Feb 2022 10:21:53 -0800 Subject: [PATCH 121/194] Specified npm version for Node 10. Added Days Since Previous Inspection (#1024) --- api/api_sources/.build/Dockerfile.local | 2 +- api/api_sources/.build/Dockerfile.npm | 2 +- api/api_sources/.build/Dockerfile.test | 2 +- .../musselsApp/DaysSincePreviousInspection.json | 14 ++++++++++++++ .../constantData/mussels.code.route.ts | 3 +++ app/lucy/.build/Dockerfile.npm | 2 +- 6 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 api/api_sources/resources/jsons/musselsApp/DaysSincePreviousInspection.json diff --git a/api/api_sources/.build/Dockerfile.local b/api/api_sources/.build/Dockerfile.local index f4e8285e7..c82639ef6 100755 --- a/api/api_sources/.build/Dockerfile.local +++ b/api/api_sources/.build/Dockerfile.local @@ -2,7 +2,7 @@ FROM node:10 RUN apt-get update RUN apt-get install -y curl -RUN npm install -g npm +RUN npm install -g npm@6.14.12 # Create app directory diff --git a/api/api_sources/.build/Dockerfile.npm b/api/api_sources/.build/Dockerfile.npm index 5bdc9cc59..6401c3dd4 100644 --- a/api/api_sources/.build/Dockerfile.npm +++ b/api/api_sources/.build/Dockerfile.npm @@ -1,7 +1,7 @@ FROM node:10 RUN apt-get update -RUN npm install -g npm +RUN npm install -g npm@6.14.12 # Create app directory diff --git a/api/api_sources/.build/Dockerfile.test b/api/api_sources/.build/Dockerfile.test index e7137b0bd..5684bd704 100644 --- a/api/api_sources/.build/Dockerfile.test +++ b/api/api_sources/.build/Dockerfile.test @@ -1,7 +1,7 @@ FROM node:10 RUN apt-get update -RUN npm install -g npm +RUN npm install -g npm@6.14.12 # Create app directory diff --git a/api/api_sources/resources/jsons/musselsApp/DaysSincePreviousInspection.json b/api/api_sources/resources/jsons/musselsApp/DaysSincePreviousInspection.json new file mode 100644 index 000000000..d32d86f36 --- /dev/null +++ b/api/api_sources/resources/jsons/musselsApp/DaysSincePreviousInspection.json @@ -0,0 +1,14 @@ +[ + { + "Days_Since_Previous_Inspection": "Same day" + }, + { + "Days_Since_Previous_Inspection": "< 30 days" + }, + { + "Days_Since_Previous_Inspection": "> 30 days" + }, + { + "Days_Since_Previous_Inspection": "> 1 year" + } +] \ No newline at end of file diff --git a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts index 3b2d99c61..766b4c3d0 100644 --- a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts +++ b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts @@ -17,6 +17,7 @@ const Stations = require('../../../../../resources/jsons/musselsApp/MusselStatio const WatercraftList = require('../../../../../resources/jsons/musselsApp/MusselWatercrafts.json'); const DecontaminationOrderReasons = require('../../../../../resources/jsons/musselsApp/DecontaminationOrderReasons.json'); const DaysOutOfWater = require('../../../../../resources/jsons/musselsApp/DaysOutOfWater.json'); +const DaysSincePreviousInspection = require('../../../../../resources/jsons/musselsApp/DaysSincePreviousInspection.json'); /** * @description Route Controller for Mussel app constants @@ -41,6 +42,7 @@ export class MusselsAppCodesRouteController extends SecureRouteController { const watercraftList: any[] = this.processList(WatercraftList as any[], 'Watercraft'); const decontaminationOrderReasonList: any[] = this.processList(DecontaminationOrderReasons as any[], 'Decontamination_Order_Reasons'); const daysOutOfWaterList: any[] = this.processList(DaysOutOfWater as any[], 'Days_Out_Of_Water'); + const daysSincePreviousInspectionList: any[] = this.processList(DaysSincePreviousInspection as any[], 'Days_Since_Previous_Inspection'); // Code tables const adultMusselsLocation: any[] = await AdultMusselsLocationController.shared.all(); @@ -54,6 +56,7 @@ export class MusselsAppCodesRouteController extends SecureRouteController { watercraftList: watercraftList, decontaminationOrderReasons: decontaminationOrderReasonList, daysOutOfWater: daysOutOfWaterList, + daysSincePreviousInspection: daysSincePreviousInspectionList, adultMusselsLocation, previousAISKnowledgeSource, previousInspectionSource, diff --git a/app/lucy/.build/Dockerfile.npm b/app/lucy/.build/Dockerfile.npm index c492c2848..47f5bf087 100644 --- a/app/lucy/.build/Dockerfile.npm +++ b/app/lucy/.build/Dockerfile.npm @@ -1,7 +1,7 @@ FROM node:10 RUN apt-get -qq update -RUN npm install -g npm +RUN npm install -g npm@6.14.12 # Create app directory ENV HOME_ROOT=/opt/app-root/src From 4b7a8c7e514b397196888011f911463afabc15c4 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 3 Feb 2022 09:16:56 -0800 Subject: [PATCH 122/194] Dropdowns additional options (#1025) * Specified npm version for Node 10. Added Days Since Previous Inspection * Added Parks Canada to Previous Knowledge Source Code and various parks to Previous Inspection Source Code --- api/.pipeline/lib/deploy.db.js | 2 +- .../csv/PreviousAISKnowledgeSourceCode.csv | 1 + .../csv/PreviousInspectionSourceCode.csv | 5 ++++ .../PreviousAISKnowledgeSourceSchema-init.sql | 5 ++++ .../PreviousInspectionSourceSchema-init.sql | 25 +++++++++++++++++++ 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/api/.pipeline/lib/deploy.db.js b/api/.pipeline/lib/deploy.db.js index 979f2810e..4f73e7d8c 100644 --- a/api/.pipeline/lib/deploy.db.js +++ b/api/.pipeline/lib/deploy.db.js @@ -44,7 +44,7 @@ module.exports = (settings) => { 'IMAGE_STREAM_VERSION': phases.build.tag, 'POSTGRESQL_DATABASE': 'InvasiveBC', 'IMAGE_STREAM_NAMESPACE': phases.build.namespace, - 'VOLUME_CAPACITY': (`${phases[phase].name}-postgresql${phases[phase].suffix}` == 'invasivesbc-api-postgresql-dev-deploy') ? "20Gi" : "3Gi" + 'VOLUME_CAPACITY': (`${phases[phase].name}-postgresql${phases[phase].suffix}` == 'invasivesbc-api-postgresql-dev-deploy') ? "2Gi" : "3Gi" } })) diff --git a/api/api_sources/resources/csv/PreviousAISKnowledgeSourceCode.csv b/api/api_sources/resources/csv/PreviousAISKnowledgeSourceCode.csv index 305e4f54f..58d7c1fa2 100644 --- a/api/api_sources/resources/csv/PreviousAISKnowledgeSourceCode.csv +++ b/api/api_sources/resources/csv/PreviousAISKnowledgeSourceCode.csv @@ -19,3 +19,4 @@ Previous Inspection in BC Previous Inspection in AB Previous Inspection (other) US/Canada Border Inspection +Parks Canada diff --git a/api/api_sources/resources/csv/PreviousInspectionSourceCode.csv b/api/api_sources/resources/csv/PreviousInspectionSourceCode.csv index 2b089d408..5472f92a7 100644 --- a/api/api_sources/resources/csv/PreviousInspectionSourceCode.csv +++ b/api/api_sources/resources/csv/PreviousInspectionSourceCode.csv @@ -89,3 +89,8 @@ Washington West Virginia* Wisconsin* Wyoming +Jasper National Park +Kootenay National Park +Lake Minnewanka (Banff National Park) +Waterton Lakes National Park +Yoho National Park diff --git a/api/api_sources/schema-migration-sql/PreviousAISKnowledgeSourceSchema/PreviousAISKnowledgeSourceSchema-init.sql b/api/api_sources/schema-migration-sql/PreviousAISKnowledgeSourceSchema/PreviousAISKnowledgeSourceSchema-init.sql index 633adcc7d..9d79104b4 100644 --- a/api/api_sources/schema-migration-sql/PreviousAISKnowledgeSourceSchema/PreviousAISKnowledgeSourceSchema-init.sql +++ b/api/api_sources/schema-migration-sql/PreviousAISKnowledgeSourceSchema/PreviousAISKnowledgeSourceSchema-init.sql @@ -99,3 +99,8 @@ INSERT INTO previous_ais_knowledge_source_code(description) VALUES ('US/Canada Border Inspection'); -- ## End of item: 19 ## -- +-- ## Inserting Item: 20 ## -- +INSERT INTO previous_ais_knowledge_source_code(description) +VALUES +('Parks Canada'); +-- ## End of item: 20 ## -- \ No newline at end of file diff --git a/api/api_sources/schema-migration-sql/PreviousInspectionSourceSchema/PreviousInspectionSourceSchema-init.sql b/api/api_sources/schema-migration-sql/PreviousInspectionSourceSchema/PreviousInspectionSourceSchema-init.sql index 3513fc593..1ad0fbfd6 100644 --- a/api/api_sources/schema-migration-sql/PreviousInspectionSourceSchema/PreviousInspectionSourceSchema-init.sql +++ b/api/api_sources/schema-migration-sql/PreviousInspectionSourceSchema/PreviousInspectionSourceSchema-init.sql @@ -449,3 +449,28 @@ INSERT INTO previous_inspection_source_code(description) VALUES ('Wyoming'); -- ## End of item: 89 ## -- +-- ## Inserting Item: 90 ## -- +INSERT INTO previous_inspection_source_code(description) +VALUES +('Jasper National Park'); +-- ## End of item: 90 ## -- +-- ## Inserting Item: 91 ## -- +INSERT INTO previous_inspection_source_code(description) +VALUES +('Kootenay National Park'); +-- ## End of item: 91 ## -- +-- ## Inserting Item: 92 ## -- +INSERT INTO previous_inspection_source_code(description) +VALUES +('Lake Minnewanka (Banff National Park)'); +-- ## End of item: 92 ## -- +-- ## Inserting Item: 93 ## -- +INSERT INTO previous_inspection_source_code(description) +VALUES +('Waterton Lakes National Park'); +-- ## End of item: 93 ## -- +-- ## Inserting Item: 94 ## -- +INSERT INTO previous_inspection_source_code(description) +VALUES +('Yoho National Park'); +-- ## End of item: 94 ## -- From f6578ff6ac312d04a151f0d3dab5912d6043ec36 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 3 Feb 2022 12:00:43 -0800 Subject: [PATCH 123/194] disable pr specific deployments --- .github/workflows/deploy.yml | 167 ----------------------------------- 1 file changed, 167 deletions(-) delete mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 9cf7a6a5f..000000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,167 +0,0 @@ -# PR Based Deploy On OpensShift -# Builds and Deploys unmerged PR's to temporary pods/services/routes/etc in the OpenShift Dev environment. -name: Deploy on OpensShift - -on: - pull_request: - types: [opened, reopened, synchronize] - -jobs: - # Print variables for logging and debugging purposes - checkEnv: - name: Check Env variables - runs-on: ubuntu-latest - steps: - - name: Print Env Vars - run: | - echo Git Base Ref: ${{ github.base_ref }} - echo Git Build ID: ${{ github.event.number }} - echo Git Pull Request Ref: ${{ github.event.pull_request.head.sha }} - echo OC CLI Version: $(oc version) - - # Build the API - buildAPI: - name: Build API - runs-on: ubuntu-latest - if: ${{ github.event.pull_request.merged == false}} - env: - BUILD_ID: ${{ github.event.number }} - steps: - # Checkout the PR branch - - name: Checkout Target Branch - uses: actions/checkout@v2 - - # Install Node - for `node` and `npm` commands - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: 10.16 - - # Log in to OpenShift. - # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. - # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - - name: Log in to OpenShift - run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 - - # Build the api images - - name: Build API Images - working-directory: "./api/.pipeline/" - run: | - npm ci - DEBUG=* npm run build -- --pr=$BUILD_ID - - # Build the web frontend app - buildAPP: - name: Build App - runs-on: ubuntu-latest - if: ${{ github.event.pull_request.merged == false}} - env: - BUILD_ID: ${{ github.event.number }} - steps: - # Checkout the PR branch - - name: Checkout Target Branch - uses: actions/checkout@v2 - - # Install Node - for `node` and `npm` commands - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: 10.16 - - # Log in to OpenShift. - # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. - # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - - name: Log in to OpenShift - run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 - - # Build the app images - - name: Build APP Images - working-directory: "./app/.pipeline/" - run: | - npm ci - DEBUG=* npm run build -- --pr=$BUILD_ID - - # Deploy App, API images - deploy: - name: Deploy App, API - runs-on: ubuntu-latest - if: ${{ github.event.pull_request.merged == false}} - env: - BUILD_ID: ${{ github.event.number }} - needs: - - buildAPI - - buildAPP - steps: - # Checkout the PR branch - - name: Checkout Target Branch - uses: actions/checkout@v2 - - # Install Node - for `node` and `npm` commands - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: 10.16 - - # Log in to OpenShift. - # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. - # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - - name: Log in to OpenShift - run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 - - # Deploy the api - - name: Deploy API - working-directory: "./api/.pipeline/" - run: | - npm ci - DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev - DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev - DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev - - # Deploy the app - - name: Deploy App - working-directory: "./app/.pipeline" - run: | - npm ci - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev - - # Deploy App, API images and related build/deployment artifacts - clean: - name: Clean Deployment Artifacts for App, API - runs-on: ubuntu-latest - if: ${{ github.event.pull_request.merged == true && (github.base_ref != 'dev' && github.base_ref != 'prod') }} - env: - BUILD_ID: ${{ github.event.number }} - steps: - # Checkout the PR branch - - name: Checkout Target Branch - uses: actions/checkout@v2 - - # Install Node - for `node` and `npm` commands - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: 10.16 - - # Log in to OpenShift. - # Note: The secrets needed to log in are NOT available if the PR comes from a FORK. - # PR's must originate from a branch off the original repo or else all openshift `oc` commands will fail. - - name: Log in to OpenShift - run: oc login --token=${{ secrets.TOOLS_SA_TOKEN }} --server=https://api.silver.devops.gov.bc.ca:6443 - - # Clean the api deployment artifacts - - name: Clean API Deployment - working-directory: "./api/.pipeline/" - run: | - npm ci - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev - - # Clean the app deployment artifacts - - name: Clean APP Deployment - working-directory: "./app/.pipeline/" - run: | - npm ci - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=build - DEBUG=* npm run clean -- --pr=$BUILD_ID --env=dev From 93c70fde574b57307e2481b48519e40d0426dfaf Mon Sep 17 00:00:00 2001 From: Richard Date: Fri, 4 Feb 2022 12:41:45 -0800 Subject: [PATCH 124/194] Added migrations and changed PreviousInspectionDays to a string (#1027) --- .../schema-files/watercraftRiskAssessment.schema.yaml | 2 +- ...mentSchema-previousInspectionDays-20220204.down.sql | 8 ++++++++ ...ssmentSchema-previousInspectionDays-20220204.up.sql | 8 ++++++++ .../database/models/watercraftRiskAssessment.ts | 10 +++++----- 4 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.down.sql create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.up.sql diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index 173a668f6..6624eb3ad 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -153,7 +153,7 @@ schemas: previousInspectionDays: name: 'previous_inspection_days_count' comment: 'Counter for number of very complex boats in the inspection' - definition: INT NULL + definition: VARCHAR(100) NULL # Strings generalComment: name: general_comment diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.down.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.down.sql new file mode 100644 index 000000000..475c0d40c --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.down.sql @@ -0,0 +1,8 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: previousInspectionDays +-- ## Info: Reverting column previous_inspection_days_count to its previous state +-- ## Adding New Columns ## -- + +-- ## Updating Column previous_inspection_days_count on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ALTER COLUMN previous_inspection_days_count TYPE INT USING previous_inspection_days_count::integer; +-- ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.up.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.up.sql new file mode 100644 index 000000000..b38a824c1 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220204.up.sql @@ -0,0 +1,8 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: previousInspectionDays +-- ## Info: Updating column previous_inspection_days_count +-- ## Adding New Columns ## -- + +-- ## Updating Column previous_inspection_days_count on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ALTER COLUMN previous_inspection_days_count TYPE VARCHAR(100); +-- ## -- diff --git a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts index 6984b36a8..9962df3ec 100644 --- a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts +++ b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts @@ -77,7 +77,7 @@ export interface WatercraftRiskAssessmentSpec { simple: number; complex: number; veryComplex: number; - previousInspectionDays: number; + previousInspectionDays: string; generalComment: string; passportNumber: string; decontaminationReference: string; @@ -124,7 +124,7 @@ export interface WatercraftRiskAssessmentUpdateSpec { simple?: number; complex?: number; veryComplex?: number; - previousInspectionDays?: number; + previousInspectionDays?: string; generalComment?: string; passportNumber?: string; decontaminationReference?: string; @@ -359,9 +359,9 @@ export class WatercraftRiskAssessment extends Record implements WatercraftRiskAs /** * @description Getter/Setter property for column {previous_inspection_days_count} */ - @Column({name: WatercraftRiskAssessmentSchema.columns.previousInspectionDays, transformer: new IntTransformer()}) - @ModelProperty({type: PropertyType.number}) - previousInspectionDays: number; + @Column({name: WatercraftRiskAssessmentSchema.columns.previousInspectionDays}) + @ModelProperty({type: PropertyType.string}) + previousInspectionDays: string; /** * @description Getter/Setter property for column {general_comment} From d680167fcb82072ceb041881e37f6ac4982b2b12 Mon Sep 17 00:00:00 2001 From: Richard Date: Mon, 7 Feb 2022 10:00:27 -0800 Subject: [PATCH 125/194] Added clean drain dry for watercraft inspection model (#1028) --- .../schema-files/watercraftRiskAssessment.schema.yaml | 4 ++++ ...Schema-cleanDrainDryAfterInspection-20220204.down.sql | 7 +++++++ ...ntSchema-cleanDrainDryAfterInspection-20220204.up.sql | 8 ++++++++ .../sources/database/models/watercraftRiskAssessment.ts | 9 +++++++++ 4 files changed, 28 insertions(+) create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.down.sql create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.up.sql diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index 6624eb3ad..f3f76d592 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -133,6 +133,10 @@ schemas: name: commercial_manufacturer_as_destination_water_body_ind comment: Boolean indicate that watercraft''s destination water body is commercial manufacturer definition: BOOLEAN NOT NULL DEFAULT FALSE + cleanDrainDryAfterInspection: + name: clean_drain_dry_after_inspection_ind + comment: 'Indicator is to show, watercraft was cleaned, drained and dried after inspection' + definition: BOOLEAN NOT NULL DEFAULT FALSE # Counter nonMotorized: name: 'non_motorized_counter' diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.down.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.down.sql new file mode 100644 index 000000000..15608e3e5 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.down.sql @@ -0,0 +1,7 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: previousInspectionDays +-- ## Info: Removing column CleanDrainDryAfterInspection + +-- ## Removing New Columns ## -- +ALTER TABLE watercraft_risk_assessment DROP COLUMN IF EXISTS clean_drain_dry_after_inspection_ind; +-- ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.up.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.up.sql new file mode 100644 index 000000000..cc13a09c5 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-cleanDrainDryAfterInspection-20220204.up.sql @@ -0,0 +1,8 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: previousInspectionDays +-- ## Info: Adding column CleanDrainDryAfterInspection +-- ## Adding New Columns ## -- + +-- ## Adding Column clean_drain_dry_after_inspection_ind on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ADD COLUMN clean_drain_dry_after_inspection_ind BOOLEAN NOT NULL DEFAULT FALSE; +-- ## -- diff --git a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts index 9962df3ec..0fbcbd199 100644 --- a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts +++ b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts @@ -73,6 +73,7 @@ export interface WatercraftRiskAssessmentSpec { unknownDestinationWaterBody: boolean; commercialManufacturerAsPreviousWaterBody: boolean; commercialManufacturerAsDestinationWaterBody: boolean; + cleanDrainDryAfterInspection: boolean; nonMotorized: number; simple: number; complex: number; @@ -120,6 +121,7 @@ export interface WatercraftRiskAssessmentUpdateSpec { unknownDestinationWaterBody?: boolean; commercialManufacturerAsPreviousWaterBody?: boolean; commercialManufacturerAsDestinationWaterBody?: boolean; + cleanDrainDryAfterInspection: boolean; nonMotorized?: number; simple?: number; complex?: number; @@ -328,6 +330,13 @@ export class WatercraftRiskAssessment extends Record implements WatercraftRiskAs @ModelProperty({type: PropertyType.boolean}) commercialManufacturerAsDestinationWaterBody: boolean; + /** + * @description Getter/Setter property for column {clean_drain_dry_after_inspection_ind} + */ + @Column({ name: WatercraftRiskAssessmentSchema.columns.cleanDrainDryAfterInspection}) + @ModelProperty({type: PropertyType.boolean}) + cleanDrainDryAfterInspection: boolean; + /** * @description Getter/Setter property for column {non_motorized_counter} */ From ee5833bd99e33509be82498c0267e58dfaf543ff Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 10 Feb 2022 10:57:27 -0800 Subject: [PATCH 126/194] Add St Lawrence QC to list of waterbodies (#1029) --- api/api_sources/resources/csv/WaterBodyFebruary2022.csv | 2 ++ .../WaterBodySchema/WaterBodySchema-february2022.sql | 6 ++++++ 2 files changed, 8 insertions(+) create mode 100644 api/api_sources/resources/csv/WaterBodyFebruary2022.csv create mode 100644 api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-february2022.sql diff --git a/api/api_sources/resources/csv/WaterBodyFebruary2022.csv b/api/api_sources/resources/csv/WaterBodyFebruary2022.csv new file mode 100644 index 000000000..9f1f2fbe9 --- /dev/null +++ b/api/api_sources/resources/csv/WaterBodyFebruary2022.csv @@ -0,0 +1,2 @@ +water_body_name,water_body_longitude,water_body_latitude,country_code,province_code,closest_city,distance +St. Lawrence River,-69.716553,47.68725,CAN,QC,Quebec City,150 diff --git a/api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-february2022.sql b/api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-february2022.sql new file mode 100644 index 000000000..00c530787 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WaterBodySchema/WaterBodySchema-february2022.sql @@ -0,0 +1,6 @@ +-- ## Inserting into table: water_body ## -- +-- ## Inserting Item: 2158 ## -- +INSERT INTO water_body(water_body_name,water_body_latitude,water_body_longitude,country_code,province_code,closest_city,distance) +VALUES +('St. Lawrence River','-69.716553','47.68725','CAN','QC','Quebec City','150'); +-- ## End of item: 2158 ## -- From d9c6c566f8b36b7850041d46de22d036a9e5d063 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 3 Mar 2022 11:12:11 -0800 Subject: [PATCH 127/194] Made the previous inspection days count nullable (#1043) * Made the previous inspection days count nullable * Made previousInspectionDays optional --- .../schema-files/watercraftRiskAssessment.schema.yaml | 3 ++- ...essmentSchema-previousInspectionDays-20220303.down.sql | 8 ++++++++ ...ssessmentSchema-previousInspectionDays-20220303.up.sql | 8 ++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.down.sql create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.up.sql diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index f3f76d592..8e10c560d 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -156,8 +156,9 @@ schemas: definition: INT NULL previousInspectionDays: name: 'previous_inspection_days_count' - comment: 'Counter for number of very complex boats in the inspection' + comment: 'Number of days the previous inspection was conducted' definition: VARCHAR(100) NULL + required: false # Strings generalComment: name: general_comment diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.down.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.down.sql new file mode 100644 index 000000000..de3a6d4f5 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.down.sql @@ -0,0 +1,8 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: previousInspectionDays +-- ## Info: Updating column previous_inspection_days_count +-- ## Adding New Columns ## -- + +-- ## Updating Column previous_inspection_days_count on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ALTER COLUMN previous_inspection_days_count SET NOT NULL; +-- ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.up.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.up.sql new file mode 100644 index 000000000..5bc923377 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-previousInspectionDays-20220303.up.sql @@ -0,0 +1,8 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: previousInspectionDays +-- ## Info: Updating column previous_inspection_days_count +-- ## Adding New Columns ## -- + +-- ## Updating Column previous_inspection_days_count on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ALTER COLUMN previous_inspection_days_count DROP NOT NULL; +-- ## -- From 72797d41b2f66b4e3a408837fd2fef002d37e803 Mon Sep 17 00:00:00 2001 From: Richard Date: Fri, 4 Mar 2022 11:38:45 -0800 Subject: [PATCH 128/194] Watercraft dreissenid previous (#1044) * Made the previous inspection days count nullable * Made previousInspectionDays optional * Moved dreissenidMusselsFoundPrevious from high risk to the base form * Reduced dev-deploy-postgres back to 2gb --- .../schema-files/watercraftRiskAssessment.schema.yaml | 6 +++--- ...ma-dreissenidMusselsFoundPrevious-20220304.down.sql | 7 +++++++ ...hema-dreissenidMusselsFoundPrevious-20220304.up.sql | 8 ++++++++ .../database/models/watercraftRiskAssessment.ts | 10 +++++----- 4 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.down.sql create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.up.sql diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index 8e10c560d..071d6a4ed 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -133,9 +133,9 @@ schemas: name: commercial_manufacturer_as_destination_water_body_ind comment: Boolean indicate that watercraft''s destination water body is commercial manufacturer definition: BOOLEAN NOT NULL DEFAULT FALSE - cleanDrainDryAfterInspection: - name: clean_drain_dry_after_inspection_ind - comment: 'Indicator is to show, watercraft was cleaned, drained and dried after inspection' + dreissenidMusselsFoundPrevious: + name: dreissenid_mussels_found_previous + comment: 'Status flag to check if dreissenid mussels were found on the previous inspection or not' definition: BOOLEAN NOT NULL DEFAULT FALSE # Counter nonMotorized: diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.down.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.down.sql new file mode 100644 index 000000000..124be696d --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.down.sql @@ -0,0 +1,7 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: dreissenidMusselsFoundPrevious +-- ## Info: Removing column DreissenidMusselsFoundPrevious + +-- ## Removing New Columns ## -- +ALTER TABLE watercraft_risk_assessment DROP COLUMN IF EXISTS dreissenid_mussels_found_previous; +-- ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.up.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.up.sql new file mode 100644 index 000000000..c1a0f73d5 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-dreissenidMusselsFoundPrevious-20220304.up.sql @@ -0,0 +1,8 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: dreissenidMusselsFoundPrevious +-- ## Info: Adding column DreissenidMusselsFoundPrevious +-- ## Adding New Columns ## -- + +-- ## Adding Column dreissenid_mussels_found_previous on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ADD COLUMN dreissenid_mussels_found_previous BOOLEAN NOT NULL DEFAULT FALSE; +-- ## -- diff --git a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts index 0fbcbd199..902b36cb4 100644 --- a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts +++ b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts @@ -73,7 +73,7 @@ export interface WatercraftRiskAssessmentSpec { unknownDestinationWaterBody: boolean; commercialManufacturerAsPreviousWaterBody: boolean; commercialManufacturerAsDestinationWaterBody: boolean; - cleanDrainDryAfterInspection: boolean; + dreissenidMusselsFoundPrevious: boolean; nonMotorized: number; simple: number; complex: number; @@ -121,7 +121,7 @@ export interface WatercraftRiskAssessmentUpdateSpec { unknownDestinationWaterBody?: boolean; commercialManufacturerAsPreviousWaterBody?: boolean; commercialManufacturerAsDestinationWaterBody?: boolean; - cleanDrainDryAfterInspection: boolean; + dreissenidMusselsFoundPrevious: boolean; nonMotorized?: number; simple?: number; complex?: number; @@ -331,11 +331,11 @@ export class WatercraftRiskAssessment extends Record implements WatercraftRiskAs commercialManufacturerAsDestinationWaterBody: boolean; /** - * @description Getter/Setter property for column {clean_drain_dry_after_inspection_ind} + * @description Getter/Setter property for column {dreissenid_mussels_found_previous} */ - @Column({ name: WatercraftRiskAssessmentSchema.columns.cleanDrainDryAfterInspection}) + @Column({ name: WatercraftRiskAssessmentSchema.columns.dreissenidMusselsFoundPrevious}) @ModelProperty({type: PropertyType.boolean}) - cleanDrainDryAfterInspection: boolean; + dreissenidMusselsFoundPrevious: boolean; /** * @description Getter/Setter property for column {non_motorized_counter} From 6eb78cc577ee238cd57ced17e6f3bd5f4d32a9ed Mon Sep 17 00:00:00 2001 From: Richard Date: Fri, 1 Apr 2022 08:32:43 -0700 Subject: [PATCH 129/194] Added Bilge (#1049) --- api/api_sources/resources/csv/AdultMusselsLocationCode.csv | 1 + .../AdultMusselsLocationSchema-init.sql | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/api/api_sources/resources/csv/AdultMusselsLocationCode.csv b/api/api_sources/resources/csv/AdultMusselsLocationCode.csv index 7228fd715..2cfffb0d6 100644 --- a/api/api_sources/resources/csv/AdultMusselsLocationCode.csv +++ b/api/api_sources/resources/csv/AdultMusselsLocationCode.csv @@ -14,3 +14,4 @@ Trailer Anchor/Ropes/Chains/fenders Equipment lockers Other +Bilge \ No newline at end of file diff --git a/api/api_sources/schema-migration-sql/AdultMusselsLocationSchema/AdultMusselsLocationSchema-init.sql b/api/api_sources/schema-migration-sql/AdultMusselsLocationSchema/AdultMusselsLocationSchema-init.sql index 181656460..28e2a0b37 100644 --- a/api/api_sources/schema-migration-sql/AdultMusselsLocationSchema/AdultMusselsLocationSchema-init.sql +++ b/api/api_sources/schema-migration-sql/AdultMusselsLocationSchema/AdultMusselsLocationSchema-init.sql @@ -74,3 +74,8 @@ INSERT INTO adult_mussels_location_code(description) VALUES ('Other'); -- ## End of item: 14 ## -- +-- ## Inserting Item: 15 ## -- +INSERT INTO adult_mussels_location_code(description) +VALUES +('Bilge'); +-- ## End of item: 15 ## -- \ No newline at end of file From fb4b45e6716180fb61ef7d342275b5ac51952d19 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 26 May 2022 13:40:20 -0700 Subject: [PATCH 130/194] build bump - no change (#1054) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c06102c97..0e349423d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Invasive Species BC + [![img](https://img.shields.io/badge/Lifecycle-Dormant-ff7f2a)](https://github.com/bcgov/repomountie/blob/master/doc/lifecycle-badges.md) Note: In progress of being deprecated by /bcgov/invasivesbc. API still supports /bcgov/mussels-ios From 1acd2049d8dbc392e088ec3ac98b9b3511414254 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 31 Jan 2023 14:30:47 -0800 Subject: [PATCH 131/194] no change - build bump to test pipeline (#1094) --- api/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/api/Makefile b/api/Makefile index e7a111bd7..2e5265163 100755 --- a/api/Makefile +++ b/api/Makefile @@ -1,5 +1,6 @@ #!make # ------------------------------------------------------------------------------ + # Makefile -- SEISM API # ------------------------------------------------------------------------------ From a312def83f44af570083622dc4d9866f87770c24 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 31 Jan 2023 14:33:29 -0800 Subject: [PATCH 132/194] update yaml api version in dbbc yaml --- api/openshift/db.bc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/db.bc.yaml b/api/openshift/db.bc.yaml index c6ec55e98..41826b0d7 100644 --- a/api/openshift/db.bc.yaml +++ b/api/openshift/db.bc.yaml @@ -1,6 +1,6 @@ --- kind: Template -apiVersion: v1 +apiVersion: build.openshift.io/v1 metadata: name: postgresql creationTimestamp: null From efc54676755d4c8f8306fa9834fc4d5c3aa429db Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 31 Jan 2023 14:35:11 -0800 Subject: [PATCH 133/194] allow for deployments on push as well as pr --- .github/workflows/deployStatic.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index 386c943a9..e432c4983 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -8,6 +8,10 @@ on: branches: - dev - prod + push: + branches: + - dev + - prod jobs: # Print variables for logging and debugging purposes From 003b2cc3a3e6954c31f3b989e668e07ebad836ff Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 31 Jan 2023 14:36:36 -0800 Subject: [PATCH 134/194] another build bump (#1096) --- api/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/api/README.md b/api/README.md index 1dc95c10a..a53ae4ac0 100755 --- a/api/README.md +++ b/api/README.md @@ -1,5 +1,6 @@ # invasives BC - Invasive species management tools (ISMT) - API + This is the application source code for the Restful API of the invasive species database. ----- From 0671209e5519d064123eedb8bb23b8ffb59ea4ee Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 31 Jan 2023 14:42:44 -0800 Subject: [PATCH 135/194] change template version to match oc --- api/openshift/db.bc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/db.bc.yaml b/api/openshift/db.bc.yaml index 41826b0d7..77d0981c4 100644 --- a/api/openshift/db.bc.yaml +++ b/api/openshift/db.bc.yaml @@ -1,6 +1,6 @@ --- kind: Template -apiVersion: build.openshift.io/v1 +apiVersion: template.openshift.io/v1 metadata: name: postgresql creationTimestamp: null From ae7d9655ceb4cab9be8a40e39e583b67fa9d9a3c Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 31 Jan 2023 14:44:24 -0800 Subject: [PATCH 136/194] build bump (#1099) --- api/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/api/README.md b/api/README.md index a53ae4ac0..d1870417c 100755 --- a/api/README.md +++ b/api/README.md @@ -1,6 +1,7 @@ # invasives BC - Invasive species management tools (ISMT) - API + This is the application source code for the Restful API of the invasive species database. ----- From d8abe5327d5f6fa85b8aee2fa8916e2d5d625361 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 31 Jan 2023 14:52:29 -0800 Subject: [PATCH 137/194] Update api.bc.yaml --- api/openshift/api.bc.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/openshift/api.bc.yaml b/api/openshift/api.bc.yaml index e0960b293..560252bd0 100644 --- a/api/openshift/api.bc.yaml +++ b/api/openshift/api.bc.yaml @@ -1,4 +1,4 @@ -apiVersion: v1 +apiVersion: template.openshift.io/v1 kind: Template metadata: creationTimestamp: null @@ -111,4 +111,4 @@ objects: - type: ConfigChange - type: ImageChange status: - lastVersion: 7 \ No newline at end of file + lastVersion: 7 From 8c3a6a6051d356803659412c136f2b178a139e52 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:41:19 -0800 Subject: [PATCH 138/194] update yaml files for oc (#1101) --- README.md | 1 + api/openshift/api.bc.yaml | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0e349423d..4f81fc402 100644 --- a/README.md +++ b/README.md @@ -165,3 +165,4 @@ To run a subset of the application contains, refer to the `README` and `Makefile WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + diff --git a/api/openshift/api.bc.yaml b/api/openshift/api.bc.yaml index 560252bd0..9680af97c 100644 --- a/api/openshift/api.bc.yaml +++ b/api/openshift/api.bc.yaml @@ -3,14 +3,14 @@ kind: Template metadata: creationTimestamp: null labels: - build: invasivebc-api - name: invasivebc-api + build: invasivesbc-api + name: invasivesbc-api parameters: - name: NAME displayName: Name description: A suffix appended to all objects required: true - value: invasivebc-api + value: invasivesbc-api - name: SUFFIX displayName: Name Suffix description: A suffix appended to all objects From d678e5e5055c7037edab9069ed757e9fddbfa256 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 1 Feb 2023 16:54:48 -0800 Subject: [PATCH 139/194] update app yaml for oc (#1102) --- README.md | 1 - app/openshift/app.bc.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 4f81fc402..0e349423d 100644 --- a/README.md +++ b/README.md @@ -165,4 +165,3 @@ To run a subset of the application contains, refer to the `README` and `Makefile WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - diff --git a/app/openshift/app.bc.json b/app/openshift/app.bc.json index b991ceb6e..531529b37 100644 --- a/app/openshift/app.bc.json +++ b/app/openshift/app.bc.json @@ -1,5 +1,5 @@ { - "apiVersion": "v1", + "apiVersion": "template.openshift.io/v1", "kind": "Template", "metadata": { "creationTimestamp": null, From cc75ff6d8a1c2572656b8da71d3ee811f3316bc1 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 2 Feb 2023 10:39:24 -0800 Subject: [PATCH 140/194] update yaml files for oc (#1105) * update app yaml for oc * update app yaml for oc --- api/openshift/api.bc.yaml | 6 +++--- app/openshift/app.bc.yaml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/api/openshift/api.bc.yaml b/api/openshift/api.bc.yaml index 9680af97c..560252bd0 100644 --- a/api/openshift/api.bc.yaml +++ b/api/openshift/api.bc.yaml @@ -3,14 +3,14 @@ kind: Template metadata: creationTimestamp: null labels: - build: invasivesbc-api - name: invasivesbc-api + build: invasivebc-api + name: invasivebc-api parameters: - name: NAME displayName: Name description: A suffix appended to all objects required: true - value: invasivesbc-api + value: invasivebc-api - name: SUFFIX displayName: Name Suffix description: A suffix appended to all objects diff --git a/app/openshift/app.bc.yaml b/app/openshift/app.bc.yaml index 4c181f97a..379a2307b 100644 --- a/app/openshift/app.bc.yaml +++ b/app/openshift/app.bc.yaml @@ -1,4 +1,4 @@ -apiVersion: v1 +apiVersion: template.openshift.io/v1 kind: Template metadata: creationTimestamp: null From b8558db79a90ffc51b09f1f5223a39309aedbea6 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 2 Feb 2023 16:41:47 -0800 Subject: [PATCH 141/194] Inspect197 add new locations (#1100) * update to postgresql docker image to 14.6 * Add three new stations, add test to confirm * temp remove dockerfile updates --------- Co-authored-by: Micheal Wells --- .../jsons/musselsApp/MusselStationNames.json | 9 ++++++++ .../constantData/mussels.code.route.spec.ts | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json b/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json index 1a0d6f9d8..8f388502b 100644 --- a/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json +++ b/api/api_sources/resources/jsons/musselsApp/MusselStationNames.json @@ -17,6 +17,9 @@ { "Station_Name": "Keremeos (Hwy 3)" }, + { + "Station_Name": "Kootenay Sgt" + }, { "Station_Name": "Midway" }, @@ -26,6 +29,9 @@ { "Station_Name": "Olsen (Hwy 3)" }, + { + "Station_Name": "Okanagan Sgt" + }, { "Station_Name": "Osoyoos" }, @@ -41,6 +47,9 @@ { "Station_Name": "Radium" }, + { + "Station_Name": "Rocky Mountain Sgt" + }, { "Station_Name": "Scheduled Inspection (AB notification)" }, diff --git a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.spec.ts b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.spec.ts index 22f4b5dba..e5fb7bd17 100644 --- a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.spec.ts +++ b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.spec.ts @@ -75,4 +75,25 @@ describe(`Test for ${resourceName}`, () => { }); }); }); + + // Ticket #197: Additional stations fields + it('should return additional stations (#197)', async () => { + await testRequest(SharedExpressApp.app, { + type: HttpMethodType.get, + url: '/api/mussels/codes', + expect: 200, + auth: AuthType.viewer + }).then(async resp => { + await verifySuccessBody(resp.body, async (data: any) => { + should().exist(data.stations); + const stations: string[] = data.stations as string[]; + const filter = stations.filter( item => ( + item === 'Kootenay Sgt' || + item === 'Okanagan Sgt' || + item === 'Rocky Mountain Sgt') + ); + expect(filter.length).to.be.equal(3); + }); + }); + }); }); From 73ed2c9f2aa880e9a28a4296952a6392d9ecd0c9 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 3 Mar 2023 10:17:42 -0800 Subject: [PATCH 142/194] increase timeout limit (#1109) --- api/.pipeline/lib/wait.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/.pipeline/lib/wait.js b/api/.pipeline/lib/wait.js index 74f0f5ba1..62809dc92 100644 --- a/api/.pipeline/lib/wait.js +++ b/api/.pipeline/lib/wait.js @@ -110,5 +110,5 @@ module.exports = (resourceName, settings, countArg, timeoutArg) => { }; - setTimeout(check, (timeout + 10000)); + setTimeout(check, (timeout + 30000)); }; \ No newline at end of file From 4b0fff1dda42cfd1b5200c05df000dee6804c94d Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 3 Mar 2023 15:11:51 -0800 Subject: [PATCH 143/194] Inspect fix pipeline issues 2 (#1110) * increase timeout limit * change invasivesbc param name back --- api/openshift/api.bc.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/openshift/api.bc.yaml b/api/openshift/api.bc.yaml index 560252bd0..9680af97c 100644 --- a/api/openshift/api.bc.yaml +++ b/api/openshift/api.bc.yaml @@ -3,14 +3,14 @@ kind: Template metadata: creationTimestamp: null labels: - build: invasivebc-api - name: invasivebc-api + build: invasivesbc-api + name: invasivesbc-api parameters: - name: NAME displayName: Name description: A suffix appended to all objects required: true - value: invasivebc-api + value: invasivesbc-api - name: SUFFIX displayName: Name Suffix description: A suffix appended to all objects From fe7e4943d355de944302e4f2178d056eb1b0bb7e Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 7 Mar 2023 14:46:05 -0800 Subject: [PATCH 144/194] temp disable db build in oc --- api/.pipeline/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/.pipeline/build.js b/api/.pipeline/build.js index e44d512ed..29fa46916 100755 --- a/api/.pipeline/build.js +++ b/api/.pipeline/build.js @@ -3,6 +3,6 @@ const task = require('./lib/build.js'); const taskDBBuild = require('./lib/build.db.js'); const settings = require('./lib/config.js'); // Building DB Image -taskDBBuild(Object.assign(settings, { phase: 'build'})); +//taskDBBuild(Object.assign(settings, { phase: 'build'})); // Building App Image task(Object.assign(settings, { phase: 'build'})); From 31eb3319e02248f34be1f49e02bfb950164d10a3 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Tue, 7 Mar 2023 14:47:59 -0800 Subject: [PATCH 145/194] build bump for api to test pipeline (#1113) * readme edit * api build bump --- README.md | 3 +++ api/README.md | 1 + 2 files changed, 4 insertions(+) diff --git a/README.md b/README.md index 0e349423d..2540d4472 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Invasive Species BC + + + [![img](https://img.shields.io/badge/Lifecycle-Dormant-ff7f2a)](https://github.com/bcgov/repomountie/blob/master/doc/lifecycle-badges.md) Note: In progress of being deprecated by /bcgov/invasivesbc. API still supports /bcgov/mussels-ios diff --git a/api/README.md b/api/README.md index d1870417c..9c77f0221 100755 --- a/api/README.md +++ b/api/README.md @@ -2,6 +2,7 @@ + This is the application source code for the Restful API of the invasive species database. ----- From 6e0e9f8c58ea6e70460433a469fb0d7970688bf3 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 8 Mar 2023 14:00:55 -0800 Subject: [PATCH 146/194] fix to apiVersion in db.dc.yaml (#1114) --- api/openshift/db.dc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/db.dc.yaml b/api/openshift/db.dc.yaml index da029c083..3f91fe5ef 100644 --- a/api/openshift/db.dc.yaml +++ b/api/openshift/db.dc.yaml @@ -1,4 +1,4 @@ -apiVersion: v1 +apiVersion: template.openshift.io/v1 kind: Template labels: template: postgresql-persistent-template From d0a5964fe62840fa8917943ff7ec59cc3347cc5a Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 8 Mar 2023 14:47:54 -0800 Subject: [PATCH 147/194] Inspect fix pipeline 2 (#1115) * fix to apiVersion in db.dc.yaml * Hardcode build ID for deploying API --- .github/workflows/deployStatic.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index e432c4983..e18570045 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -121,11 +121,11 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run seed -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App From acceda4d062ab200e22013491053fc2c0e1bd525 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 8 Mar 2023 15:09:56 -0800 Subject: [PATCH 148/194] Hardcode build ID for deploying API (#1116) --- .github/workflows/deployStatic.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index e18570045..8f5577d52 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -211,10 +211,10 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App From 0b0cf91bb71f44c7efc5e2fce59bea554caee5a7 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 8 Mar 2023 15:50:24 -0800 Subject: [PATCH 149/194] change to how build and deploy api (#1117) --- .github/workflows/deployStatic.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index 8f5577d52..559590a47 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true}} env: - BUILD_ID: ${{ github.event.number }} + BUILD_ID: 1054 steps: # Checkout the PR branch - name: Checkout Target Branch @@ -95,7 +95,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: - BUILD_ID: ${{ github.event.number }} + BUILD_ID: 1054 needs: - buildAPI - buildAPP @@ -121,11 +121,11 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run seed -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App @@ -140,7 +140,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: - BUILD_ID: ${{ github.event.number }} + BUILD_ID: 1054 needs: - buildAPI - buildAPP @@ -185,7 +185,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'prod'}} env: - BUILD_ID: ${{ github.event.number }} + BUILD_ID: 1054 needs: - buildAPI - buildAPP @@ -211,10 +211,10 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App From 8494c463f443789f2b79b2e80f35258a2c1aec7f Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:40:13 -0800 Subject: [PATCH 150/194] temp disable db deploy --- api/.pipeline/pre.deploy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/.pipeline/pre.deploy.js b/api/.pipeline/pre.deploy.js index dfbe20162..ced12e9a9 100644 --- a/api/.pipeline/pre.deploy.js +++ b/api/.pipeline/pre.deploy.js @@ -26,4 +26,4 @@ const settings = require('./lib/config.js'); const taskDeployDB = require('./lib/deploy.db.js'); // Deploying DB -taskDeployDB(Object.assign(settings, { phase: settings.options.env})); +//taskDeployDB(Object.assign(settings, { phase: settings.options.env})); From d1c4113fa878fa26e4f2675cc83d6a6c70f8b804 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:41:58 -0800 Subject: [PATCH 151/194] test deploy without db step (#1118) --- api/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/api/README.md b/api/README.md index 9c77f0221..f3b1cc07f 100755 --- a/api/README.md +++ b/api/README.md @@ -3,6 +3,7 @@ + This is the application source code for the Restful API of the invasive species database. ----- From bf02021ce4a3bbb84d6c76bb35f2b67253615e40 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:54:10 -0800 Subject: [PATCH 152/194] Update test.pod.yaml --- api/openshift/test.pod.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/test.pod.yaml b/api/openshift/test.pod.yaml index 1adb01446..17eaebea9 100644 --- a/api/openshift/test.pod.yaml +++ b/api/openshift/test.pod.yaml @@ -1,5 +1,5 @@ kind: Template -apiVersion: v1 +apiVersion: template.openshift.io/v1 metadata: name: test creationTimestamp: null From 6b93e7a56fe3a92c2c1860a2dfbc871506f9dba0 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:54:22 -0800 Subject: [PATCH 153/194] Update setup.pod.yaml --- api/openshift/setup.pod.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/setup.pod.yaml b/api/openshift/setup.pod.yaml index 5e9936f60..70207c0e1 100644 --- a/api/openshift/setup.pod.yaml +++ b/api/openshift/setup.pod.yaml @@ -1,5 +1,5 @@ kind: Template -apiVersion: v1 +apiVersion: template.openshift.io/v1 metadata: name: migration creationTimestamp: null From 2376dc42cdf07b0dbe78494a5afbc349838b814b Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:55:18 -0800 Subject: [PATCH 154/194] Update seed.pod.yaml --- api/openshift/seed.pod.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/seed.pod.yaml b/api/openshift/seed.pod.yaml index fb374c739..77562a0ab 100644 --- a/api/openshift/seed.pod.yaml +++ b/api/openshift/seed.pod.yaml @@ -1,5 +1,5 @@ kind: Template -apiVersion: v1 +apiVersion: template.openshift.io/v1 metadata: name: seed creationTimestamp: null From 37d25f3f9517950b755faab9205bf25f5a781a9d Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:56:00 -0800 Subject: [PATCH 155/194] Update is.api.yaml --- api/openshift/is.api.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/is.api.yaml b/api/openshift/is.api.yaml index d2cdb855a..a3d2d7f15 100644 --- a/api/openshift/is.api.yaml +++ b/api/openshift/is.api.yaml @@ -1,4 +1,4 @@ -apiVersion: v1 +apiVersion: template.openshift.io/v1 parameters: - name: NAME value: invasivesbc-api-setup From 02b21b89bae731cb819104c0ec75d83d51b9374a Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:56:20 -0800 Subject: [PATCH 156/194] Update dc.yaml --- api/openshift/dc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/dc.yaml b/api/openshift/dc.yaml index 3709e4cd4..0a08ced3f 100644 --- a/api/openshift/dc.yaml +++ b/api/openshift/dc.yaml @@ -1,4 +1,4 @@ -apiVersion: v1 +apiVersion: template.openshift.io/v1 objects: - apiVersion: image.openshift.io/v1 kind: ImageStream From c5b85c408387dd8bebd6df3e8558101f9cae7332 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:56:35 -0800 Subject: [PATCH 157/194] Update bc.yaml --- api/openshift/bc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/bc.yaml b/api/openshift/bc.yaml index 97dc78bdb..2cae8b07e 100644 --- a/api/openshift/bc.yaml +++ b/api/openshift/bc.yaml @@ -1,4 +1,4 @@ -apiVersion: v1 +apiVersion: template.openshift.io/v1 kind: Template parameters: - suffix: From 2bd69859dcfbda953015176490fc444c99cce1d6 Mon Sep 17 00:00:00 2001 From: "Micheal W. Wells" Date: Thu, 9 Mar 2023 11:57:32 -0800 Subject: [PATCH 158/194] bump (#1119) --- api/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/api/README.md b/api/README.md index f3b1cc07f..9c77f0221 100755 --- a/api/README.md +++ b/api/README.md @@ -3,7 +3,6 @@ - This is the application source code for the Restful API of the invasive species database. ----- From 6d7240c10901489ef597c34057a9f735bc024aa3 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 9 Mar 2023 16:55:17 -0800 Subject: [PATCH 159/194] Update schemaspy.dc.yaml (#1120) --- api/openshift/tools/schemaspy.dc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/openshift/tools/schemaspy.dc.yaml b/api/openshift/tools/schemaspy.dc.yaml index 58c55ed96..dbeb6985f 100644 --- a/api/openshift/tools/schemaspy.dc.yaml +++ b/api/openshift/tools/schemaspy.dc.yaml @@ -1,5 +1,5 @@ kind: Template -apiVersion: v1 +apiVersion: template.openshift.io/v1 metadata: name: "${NAME}-dc" annotations: From 93ad8eb89ba7db0e29d68fd4d5746be69802a6e8 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 10 Mar 2023 09:47:23 -0800 Subject: [PATCH 160/194] temp disable db deploy tools (#1121) --- api/.pipeline/deploytools.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/.pipeline/deploytools.js b/api/.pipeline/deploytools.js index 585ef6f82..34dc51c0c 100644 --- a/api/.pipeline/deploytools.js +++ b/api/.pipeline/deploytools.js @@ -2,4 +2,4 @@ const settings = require('./lib/config.js') const task = require('./lib/deploy.schemaspy.js') -task(Object.assign(settings, { phase: settings.options.env})); \ No newline at end of file +// task(Object.assign(settings, { phase: settings.options.env})); \ No newline at end of file From ea1fade90378974d8e4300af669560aa71556c81 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 10 Mar 2023 10:19:26 -0800 Subject: [PATCH 161/194] update to app.dc.yaml (#1122) --- app/openshift/app.dc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/openshift/app.dc.yaml b/app/openshift/app.dc.yaml index ead73c703..7de14c641 100644 --- a/app/openshift/app.dc.yaml +++ b/app/openshift/app.dc.yaml @@ -1,4 +1,4 @@ -apiVersion: v1 +apiVersion: template.openshift.io/v1 objects: - apiVersion: image.openshift.io/v1 kind: ImageStream From 1939cf54934d5abb84b0ad63e602ee89e80ada1f Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 10 Mar 2023 10:43:51 -0800 Subject: [PATCH 162/194] update to deployStatic to point to db image 1054 (#1123) --- .github/workflows/deployStatic.yml | 36 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index 559590a47..8a1435f9c 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true}} env: - BUILD_ID: 1054 + BUILD_ID: ${{ github.event.number }} steps: # Checkout the PR branch - name: Checkout Target Branch @@ -95,7 +95,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: - BUILD_ID: 1054 + BUILD_ID: ${{ github.event.number }} needs: - buildAPI - buildAPP @@ -121,11 +121,11 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run seed -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App @@ -140,7 +140,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref != 'prod'}} env: - BUILD_ID: 1054 + BUILD_ID: ${{ github.event.number }} needs: - buildAPI - buildAPP @@ -166,11 +166,11 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run seed -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=test --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=1054 --env=test --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=1054 --env=test --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run seed -- --pr=1054 --env=test --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=1054 --env=test --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=1054 --env=test --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App @@ -185,7 +185,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.pull_request.merged == true && github.base_ref == 'prod'}} env: - BUILD_ID: 1054 + BUILD_ID: ${{ github.event.number }} needs: - buildAPI - buildAPP @@ -211,10 +211,10 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App From 0121a59fe40538a93ad81ec26e87ab5105f2704a Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:09:34 -0700 Subject: [PATCH 163/194] Inspect 2.5 backend changes (#1129) * Add WatercraftRiskAssessment.inspectionTime column (#1013) * Add waterCraftRiskAssessment.inspection_time column + migrations * Moving the change to PROD (#1045) * Adding the keycloak local user postman to the initial database seed, so that we can run postman against the API * Removing trailing whitespace * 628: api-mobile setup - Swagger spec + routes - Route controllers - User authentication + route authorization - Database connection * 781, 776: misc api-mobile updates - add base sql for activity common fields view - add base sql for observation common fields view - add base sql for terrestrial plant specific fields view - make db default creds consistent between new api and existing db container for dev - comment invalid docker compose line for naming local network - make Nick's staging table query/insert work with Jamie's staging table schema- - add example curl command for testing new endpoint - add testing instructions to readme for new endpoint/api - add knex and boilerplate migration * 628: New observation migration for original api - Testing data - Testing script * 776: update knex migrations - add sample .env and command to set up new and old api with db creds that will work - Move knex to new api dir and get ActivityIncoming sql into a knex migration. Add new sample .env and shell script to automate synching up the different api dirs to play nice - add location and geometry inputs to create activity interface * 776: update test curl command and add doc * 776: update migrations, update views, add swagger object validation - clean up knex in wrong dir and update activity request spec yaml - add correct search path to staging table migration - adjust char length of activity type and subtype, fix rolback - change activity_id to be serial not unique so it auto increments if none provided - stop using swagger-tools for request validation and use swagger-object-validator instead * 792: Update swagger request object validation - Update knexfile.js and migrations/*.js files from .js to .ts files - Run `npm run lint-fix` * 776: update migrations, models, activity endpoint + validation, test scripts - api-mobile updates change activity endpoint params to accept obj for parent and child record types, and make names in db and api consiistent - fix migration - make swagger and database and ts queries all sync up - log whole activity post body - updated curl test file for activity endpoint - allow for swagger validation config to ignore additional properties (WIP) - make activity-query fields line up with db changes - update model - add migrations for common activity fields view and observation common fields view - minor activity view changes * 776: add spatial fields to api-mobile - update test data - add Geojson to postgis logic - set srid - add geo projection * 792: Update swagger object validator ignoreErrors config * 778: api-mobile pipeline/openshift support - add .pipeline and openshift files - add Dockerfile (used in pipeline build) - update github workflows to run api-mobile build/deploy/etc - update knexfile.ts - update package.json - add misc/version route for readiness/liveness probe * Postman POC Commit * Tweak null handling of `branch` variable. * Fix PVC Settings, volume size * Fix * 779: Dockerize api-mobile - Add docker files for api-mobile - Add root level docker files to run both all applications * 779: Commit missed files * 779: Code review updates - Fixed readme typos - Updated readme postgres version - Update dockerfile node versions from 11 to 10 in some places - Updated auth issuer handling in api-mobile * change activity controller to have its own log * Update migrations * update api-mobile activity sql, test, swagger. * 779: Fix api-mobile /.pipeline/lib/clean.js logic * Done't follow this file anymore * Turn off spatial * Add Apache License 2.0 * Swagger deserves git * env.local back * Switching to generic geometry column * Regular data inserting without spatial * Polygon is being entered * Point is being entered * Back to passing parameters to postgres * Removing test code * Cleaning up tests * Update Sonar Config settings * Activating PR based SonarCloud Checking * Point to base_ref * New github workflow file for deleting closed PR artifacts in dev and tools * Dummy * add missing geom column to insert * Forcing 2D for now * disable geometry insert * address linter error * trailing comma blocking insert * Update to workflow * Put test file back and clean up dummy file * Change all the v1 to v2 * 841: S3 file upload - Update api-mobile from [openapi 2.0 + swagger-tools] to [openapi 3.0 + express-openapi] - add file upload to activity endpoint - update npm packages - add new s3 env vars to env files - add SQL template string support - other misc updates * 841: Code review updates - Update `test/activity.sh` - update base64 parsing regex - increase accepted request size * Bump markdown-to-jsx from 6.11.1 to 6.11.4 in /app/lucy Bumps [markdown-to-jsx](https://github.com/probablyup/markdown-to-jsx) from 6.11.1 to 6.11.4. - [Release notes](https://github.com/probablyup/markdown-to-jsx/releases) - [Commits](https://github.com/probablyup/markdown-to-jsx/compare/6.11.1...6.11.4) Signed-off-by: dependabot[bot] * Bump decompress from 4.2.0 to 4.2.1 in /api/api_sources Bumps [decompress](https://github.com/kevva/decompress) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/kevva/decompress/releases) - [Commits](https://github.com/kevva/decompress/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] * Bump handlebars from 4.3.0 to 4.7.6 in /api/api_sources Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.3.0 to 4.7.6. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.3.0...v4.7.6) Signed-off-by: dependabot[bot] * Bump tree-kill from 1.2.1 to 1.2.2 in /api/api_sources Bumps [tree-kill](https://github.com/pkrumins/node-tree-kill) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/pkrumins/node-tree-kill/releases) - [Commits](https://github.com/pkrumins/node-tree-kill/compare/v1.2.1...v1.2.2) Signed-off-by: dependabot[bot] * New geog column * 629: get activities - Add GET activity endpoint to fetch multiple activity records based on some initial simple filter criteria - Add GET activity/{id} endpoint to fetch a single activity record and any S3 media it has - media is returned as base64 encoded string, in the same object format as it was originally sent to the api for upload * comment out failing test for at present unused form * Bump http-proxy from 1.18.0 to 1.18.1 in /app/lucy Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1. - [Release notes](https://github.com/http-party/node-http-proxy/releases) - [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md) - [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1) Signed-off-by: dependabot[bot] * 629: WIP * 629: Add endpoint for preSigned media url * 629: Remove console.log * Bump node-fetch from 2.6.0 to 2.6.1 in /app/lucy Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. - [Release notes](https://github.com/bitinn/node-fetch/releases) - [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1) Signed-off-by: dependabot[bot] * Misc updates: - Include rolands latest yaml - Update activities sql to have geometry be optional * Update geometry query * yaml specs ready for activityData, activityTypeData, activitySubTypeData * field validations in progress * validations done for activity yamly specs * geometry specs added * minor edits * edits * minor edit * geometry specs finalized * corrections to correct broken build * moved titles to the object root * Geometry spec updated * 899: Update api to use new api spec - Flatten api-spec and convert to json-schema * 10: Add security filter to dynamically populate api spec enums * 30: adhoc populate api spec enums * 30: Add more dropdown support to api-doc.json - sort api dropdowns * Remove duplicate connection.release() call. * Trivial fixes * Minor readme update * Fix distribution dropdown * 47: Update the Geometry schema - Remove unused swagger dependencies * 61: Initial activity search endpoint * Update api-mobile read * 61: Update activity search and media endpoints * Add missing error logging * photos storing to DB and S3 * photos storing to DB and S3 (#943) * removed unneccesary file * adjust logger level * code cleanup * General cleanup and fixes. (#945) * 61: add spatial support to activity search (#946) * Change the SSO url to *.oidc.gov.bc.ca (#948) * Move Get endpoint in activity.ts to Post endpoint in activities.ts (#952) * Update /activities search to use a feature instead of a polygon (#954) * Parse geometry from feature in /activities endpoint (#955) * Elevation api (#953) * Here is the file * The elevation test * https over http * fixing paths to dependencies * Elevation being returned * Cleaning up and Swagger * more debugging * Shema adjustments * doc * IPMA end point * Indent * RISO layer * Spelling * utm test * epsg end point working * Point of interest endpoint (#956) * add migration for point of interest data * add point of interest model * add schema for iapp site * migration tweaks and fully flush out spec for iapp site schema * add point of interest queries * expose point of interest route * Databc api (#961) * Generic databc end point * Updated some documentation * 111: Search endpoint updates (#962) - update limit/offset logic - support column name filtering - support order by filter * add endpoint missed in last pr for bulk point of interest fetch (#960) * 62: Add PUT activity endpoint to support updates (#963) 62: Edit Single Activity + Misc Updates - Add PUT activity endpoint - Update enum doc population logic (to use new code tables) - Update auth logic (to use new code tables) * Bump dot-prop from 4.2.0 to 4.2.1 in /api/api_sources (#958) Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/sindresorhus/dot-prop/releases) - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump dot-prop from 4.2.0 to 4.2.1 in /loadTest/app (#957) Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/sindresorhus/dot-prop/releases) - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * remove build/deploy for the api mobile from the Pipeline (#968) * remove build in the api mobile from the Pipeline * Removing all reference to the mobile api * Update README.md * Prepare for OCP4 (#977) * Prepare for OCP4 * Pointing to OCP4 * YAML Formatting * Point to the right image * Update README.md (#979) * Bump axios from 0.19.2 to 0.21.1 in /loadTest/app (#981) Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump axios from 0.19.0 to 0.21.1 in /api/api_sources (#980) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Tweak replica numbers to save space in openshift (#982) * Tweak replica numbers to save space in openshift * Add Major City Table Schema and JSONS (#984) (#985) * Add Major City Table Schema and JSONS (#984) * Add major cities schema, days out of water json and decontamination order reason json, update endpoints * Add JSONS and major cities * Add major cities controller, update schema, add route * Add SQL for table changes, change days out from int to string * fix lint errors * change days out name * add columns to high risk assessment * Add major city to controllers and schema * fix naming bug Co-authored-by: Sam Warren * Changed name of column to "Active" (#987) * update station name JSON (#988) * add new passport issued field (#993) * Add waterCraftRiskAssessment.inspection_time column (#1011) * Add waterCraftRiskAssessment.inspection_time column + migrations * Update string validation check * Fix migration id * Improve regex validation check * Specified npm version for Node 10. Added Days Since Previous Inspection (#1024) * Dropdowns additional options (#1025) * Specified npm version for Node 10. Added Days Since Previous Inspection * Added Parks Canada to Previous Knowledge Source Code and various parks to Previous Inspection Source Code * disable pr specific deployments * Added migrations and changed PreviousInspectionDays to a string (#1027) * Added clean drain dry for watercraft inspection model (#1028) * Add St Lawrence QC to list of waterbodies (#1029) * Made the previous inspection days count nullable (#1043) * Made the previous inspection days count nullable * Made previousInspectionDays optional * Watercraft dreissenid previous (#1044) * Made the previous inspection days count nullable * Made previousInspectionDays optional * Moved dreissenidMusselsFoundPrevious from high risk to the base form * Reduced dev-deploy-postgres back to 2gb Co-authored-by: Roland Stens Co-authored-by: Nick Phura Co-authored-by: Mike Wells Co-authored-by: Jamie Popkin Co-authored-by: Mike Wells Co-authored-by: Nick Phura Co-authored-by: Nancy Mac Air Co-authored-by: repo-mountie[bot] <44246292+repo-mountie[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Anissa Agahchen Co-authored-by: Sam Warren * Inspect pipeline fix new locations (#1125) * update deployStatic to work run on push, update to look at 1054 db image * avoid deploying db in pipeline - to be fixed in the future * add Bilge to adult mussels location code * add new station locations * add new station locations test * update yaml and json files to new apiVersion name * update template naming for api.bc.yaml (#1126) * update deployStatic to not point to specific image (#1127) * increase timeout to allow images to build (#1128) * add k9 inspection results api and endpoint * add migrations for k9 inspection results * update postgres docker image * migration for multiple location columns * fix migration typos * update yaml file so k9 inspection results isn't required --------- Co-authored-by: Nick Phura Co-authored-by: Richard Co-authored-by: Roland Stens Co-authored-by: Nick Phura Co-authored-by: Mike Wells Co-authored-by: Jamie Popkin Co-authored-by: Mike Wells Co-authored-by: Nancy Mac Air Co-authored-by: repo-mountie[bot] <44246292+repo-mountie[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Anissa Agahchen Co-authored-by: Sam Warren --- api/.docker/db/Dockerfile.local | 7 +- api/.pipeline/build.js | 2 +- api/.pipeline/pre.deploy.js | 2 +- .../jsons/musselsApp/K9InspectionResults.json | 8 ++ .../highRiskAssessment.schema.yaml | 62 +++++++++++++- .../watercraftRiskAssessment.schema.yaml | 11 +++ ...ema-addMultipleLocations-20230407.down.sql | 12 +++ ...chema-addMultipleLocations-20230407.up.sql | 42 ++++++++++ ...hema-k9InspectionResults-20230330.down.sql | 7 ++ ...Schema-k9InspectionResults-20230330.up.sql | 12 +++ .../1680217166599-K9InspectionResults.ts | 27 +++++++ .../1681165022709-AddMultipleLocations.ts | 28 +++++++ .../database/models/highRiskAssessment.ts | 80 ++++++++++++++++--- .../models/watercraftRiskAssessment.ts | 9 +++ .../constantData/mussels.code.route.ts | 3 + 15 files changed, 294 insertions(+), 18 deletions(-) create mode 100644 api/api_sources/resources/jsons/musselsApp/K9InspectionResults.json create mode 100644 api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.down.sql create mode 100644 api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.up.sql create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.down.sql create mode 100644 api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.up.sql create mode 100644 api/api_sources/sources/database/migrations/1680217166599-K9InspectionResults.ts create mode 100644 api/api_sources/sources/database/migrations/1681165022709-AddMultipleLocations.ts diff --git a/api/.docker/db/Dockerfile.local b/api/.docker/db/Dockerfile.local index 085a465ed..606514eba 100644 --- a/api/.docker/db/Dockerfile.local +++ b/api/.docker/db/Dockerfile.local @@ -1,7 +1,6 @@ -FROM postgres:9.5 +FROM postgres:14.6 - -ENV POSTGISV 2.5 +ENV POSTGISV 3 ENV TZ America/New_York ENV PORT 5432 @@ -20,8 +19,6 @@ RUN apt-get update \ # set time zone RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - - # add init script RUN mkdir -p /docker-entrypoint-initdb.d COPY ./create_postgis.sql /docker-entrypoint-initdb.d/postgis.sql diff --git a/api/.pipeline/build.js b/api/.pipeline/build.js index 29fa46916..ab7c619da 100755 --- a/api/.pipeline/build.js +++ b/api/.pipeline/build.js @@ -3,6 +3,6 @@ const task = require('./lib/build.js'); const taskDBBuild = require('./lib/build.db.js'); const settings = require('./lib/config.js'); // Building DB Image -//taskDBBuild(Object.assign(settings, { phase: 'build'})); +// taskDBBuild(Object.assign(settings, { phase: 'build'})); // Building App Image task(Object.assign(settings, { phase: 'build'})); diff --git a/api/.pipeline/pre.deploy.js b/api/.pipeline/pre.deploy.js index ced12e9a9..558727783 100644 --- a/api/.pipeline/pre.deploy.js +++ b/api/.pipeline/pre.deploy.js @@ -26,4 +26,4 @@ const settings = require('./lib/config.js'); const taskDeployDB = require('./lib/deploy.db.js'); // Deploying DB -//taskDeployDB(Object.assign(settings, { phase: settings.options.env})); +// taskDeployDB(Object.assign(settings, { phase: settings.options.env})); diff --git a/api/api_sources/resources/jsons/musselsApp/K9InspectionResults.json b/api/api_sources/resources/jsons/musselsApp/K9InspectionResults.json new file mode 100644 index 000000000..cb71ef380 --- /dev/null +++ b/api/api_sources/resources/jsons/musselsApp/K9InspectionResults.json @@ -0,0 +1,8 @@ +[ + { + "K9_Inspection_Results": "k9 detected/indicated" + }, + { + "K9_Inspection_Results": "k9 did not indicate" + } +] \ No newline at end of file diff --git a/api/api_sources/schema-files/highRiskAssessment.schema.yaml b/api/api_sources/schema-files/highRiskAssessment.schema.yaml index 614be56e5..276a4a553 100644 --- a/api/api_sources/schema-files/highRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/highRiskAssessment.schema.yaml @@ -104,5 +104,65 @@ schemas: deleteCascade: false required: false meta: {} - versions: [] + versions: + ## -- version: multiple locations + - name: 'addMultipleLocations' + id: '20230407' + info: 'Adding multiple locations' + columns: + standingWaterLocation1: + name: standing_water_location_code_id_1 + comment: Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations of standing water + definition: INT NULL + foreignTable: adult_mussels_location_code + refColumn: adult_mussels_location_code_id + deleteCascade: false + required: false + meta: {} + standingWaterLocation2: + name: standing_water_location_code_id_2 + comment: Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations of standing water + definition: INT NULL + foreignTable: adult_mussels_location_code + refColumn: adult_mussels_location_code_id + deleteCascade: false + required: false + meta: {} + standingWaterLocation3: + name: standing_water_location_code_id_3 + comment: Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations of standing water + definition: INT NULL + foreignTable: adult_mussels_location_code + refColumn: adult_mussels_location_code_id + deleteCascade: false + required: false + meta: {} + adultDreissenidaeMusselDetail1: + name: adult_mussels_location_code_id_1 + comment: Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations where adult mussels were found on the watercraft + definition: INT NULL + foreignTable: adult_mussels_location_code + refColumn: adult_mussels_location_code_id + deleteCascade: false + required: false + meta: {} + adultDreissenidaeMusselDetail2: + name: adult_mussels_location_code_id_2 + comment: Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations where adult mussels were found on the watercraft + definition: INT NULL + foreignTable: adult_mussels_location_code + refColumn: adult_mussels_location_code_id + deleteCascade: false + required: false + meta: {} + adultDreissenidaeMusselDetail3: + name: adult_mussels_location_code_id_3 + comment: Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations where adult mussels were found on the watercraft + definition: INT NULL + foreignTable: adult_mussels_location_code + refColumn: adult_mussels_location_code_id + deleteCascade: false + required: false + meta: {} + ## -- end: multiple locations fields: {} diff --git a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml index 071d6a4ed..3b729969f 100644 --- a/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml +++ b/api/api_sources/schema-files/watercraftRiskAssessment.schema.yaml @@ -270,6 +270,17 @@ schemas: required: false meta: {} ## -- end: inspectionTime + ## -- version: k9InspectionResults + - name: 'k9InspectionResults' + id: '20230330' + info: 'Adding new column k9InspectionResults' + columns: + k9InspectionResults: + name: k9_inspection_results + comment: 'result of k9 inspection' + definition: VARCHAR(100) NULL + required: false + ## -- end: k9InspectionResults ## -- end version ## -- diff --git a/api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.down.sql b/api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.down.sql new file mode 100644 index 000000000..dbfffa4c9 --- /dev/null +++ b/api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.down.sql @@ -0,0 +1,12 @@ +-- ## Reverting table: high_risk_assessment +-- ## Version: addMultipleLocations +-- ## Info: Adding addMultipleLocations +-- ## Removing New Columns ## -- +ALTER TABLE high_risk_assessment DROP COLUMN IF EXISTS standing_water_location_code_id_1; +ALTER TABLE high_risk_assessment DROP COLUMN IF EXISTS standing_water_location_code_id_2; +ALTER TABLE high_risk_assessment DROP COLUMN IF EXISTS standing_water_location_code_id_3; +ALTER TABLE high_risk_assessment DROP COLUMN IF EXISTS adult_mussels_location_code_id_1; +ALTER TABLE high_risk_assessment DROP COLUMN IF EXISTS adult_mussels_location_code_id_2; +ALTER TABLE high_risk_assessment DROP COLUMN IF EXISTS adult_mussels_location_code_id_3; + +-- ## Updating high_risk_assessment ## -- diff --git a/api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.up.sql b/api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.up.sql new file mode 100644 index 000000000..175b304af --- /dev/null +++ b/api/api_sources/schema-migration-sql/HighRiskAssessmentSchema/HighRiskAssessmentSchema-addMultipleLocations-20230407.up.sql @@ -0,0 +1,42 @@ +-- ## Changing table: high_risk_assessment +-- ## Version: addMultipleLocations +-- ## Info: Adding addMultipleLocations +-- ## Adding New Columns ## -- + +-- ## Adding Column standing_water_location_code_id_1 on table high_risk_assessment +ALTER TABLE high_risk_assessment ADD COLUMN standing_water_location_code_id_1 INT NULL REFERENCES adult_mussels_location_code(adult_mussels_location_code_id) ON DELETE SET NULL; +COMMENT ON COLUMN high_risk_assessment.standing_water_location_code_id_1 IS 'Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations of standing water'; +-- ## -- + + +-- ## Adding Column standing_water_location_code_id_2 on table high_risk_assessment +ALTER TABLE high_risk_assessment ADD COLUMN standing_water_location_code_id_2 INT NULL REFERENCES adult_mussels_location_code(adult_mussels_location_code_id) ON DELETE SET NULL; +COMMENT ON COLUMN high_risk_assessment.standing_water_location_code_id_2 IS 'Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations of standing water'; +-- ## -- + + +-- ## Adding Column standing_water_location_code_id_3 on table high_risk_assessment +ALTER TABLE high_risk_assessment ADD COLUMN standing_water_location_code_id_3 INT NULL REFERENCES adult_mussels_location_code(adult_mussels_location_code_id) ON DELETE SET NULL; +COMMENT ON COLUMN high_risk_assessment.standing_water_location_code_id_3 IS 'Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations of standing water'; +-- ## -- + + +-- ## Adding Column adult_mussels_location_code_id_1 on table high_risk_assessment +ALTER TABLE high_risk_assessment ADD COLUMN adult_mussels_location_code_id_1 INT NULL REFERENCES adult_mussels_location_code(adult_mussels_location_code_id) ON DELETE SET NULL; +COMMENT ON COLUMN high_risk_assessment.adult_mussels_location_code_id_1 IS 'Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations where adult mussels were found on the watercraft'; +-- ## -- + + +-- ## Adding Column adult_mussels_location_code_id_2 on table high_risk_assessment +ALTER TABLE high_risk_assessment ADD COLUMN adult_mussels_location_code_id_2 INT NULL REFERENCES adult_mussels_location_code(adult_mussels_location_code_id) ON DELETE SET NULL; +COMMENT ON COLUMN high_risk_assessment.adult_mussels_location_code_id_2 IS 'Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations where adult mussels were found on the watercraft'; +-- ## -- + + +-- ## Adding Column adult_mussels_location_code_id_3 on table high_risk_assessment +ALTER TABLE high_risk_assessment ADD COLUMN adult_mussels_location_code_id_3 INT NULL REFERENCES adult_mussels_location_code(adult_mussels_location_code_id) ON DELETE SET NULL; +COMMENT ON COLUMN high_risk_assessment.adult_mussels_location_code_id_3 IS 'Foreign key reference to code table (named adult_mussels_location_code) of possible locations on watercraft where standing water or adult mussels may be found. This field is specifically for locations where adult mussels were found on the watercraft'; +-- ## -- + + +-- ## Updating high_risk_assessment ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.down.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.down.sql new file mode 100644 index 000000000..919e267af --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.down.sql @@ -0,0 +1,7 @@ +-- ## Reverting table: watercraft_risk_assessment +-- ## Version: k9InspectionResults +-- ## Info: Adding new column inspectionTime +-- ## Removing New Columns ## -- +ALTER TABLE watercraft_risk_assessment DROP COLUMN IF EXISTS k9_inspection_results; + +-- ## Updating watercraft_risk_assessment ## -- diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.up.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.up.sql new file mode 100644 index 000000000..202da6ce1 --- /dev/null +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema-k9InspectionResults-20230330.up.sql @@ -0,0 +1,12 @@ +-- ## Changing table: watercraft_risk_assessment +-- ## Version: k9InspectionResults +-- ## Info: Adding new column inspectionTime +-- ## Adding New Columns ## -- + +-- ## Adding Column inspection_time on table watercraft_risk_assessment +ALTER TABLE watercraft_risk_assessment ADD COLUMN k9_inspection_results VARCHAR(100) NULL; +COMMENT ON COLUMN watercraft_risk_assessment.inspection_time IS 'result of the k9 inspection'; +-- ## -- + + +-- ## Updating watercraft_risk_assessment ## -- diff --git a/api/api_sources/sources/database/migrations/1680217166599-K9InspectionResults.ts b/api/api_sources/sources/database/migrations/1680217166599-K9InspectionResults.ts new file mode 100644 index 000000000..915bdd3a5 --- /dev/null +++ b/api/api_sources/sources/database/migrations/1680217166599-K9InspectionResults.ts @@ -0,0 +1,27 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; +import { AppDBMigrator } from '../applicationSchemaInterface'; +import { WatercraftRiskAssessmentSchema } from '../database-schema'; + +export class K9InspectionResults1680217166599 extends AppDBMigrator implements MigrationInterface { + watercraftRiskAssessment: WatercraftRiskAssessmentSchema; + + setup() { + this.watercraftRiskAssessment = new WatercraftRiskAssessmentSchema(); + this.addSchemaVersion(this.watercraftRiskAssessment, 'k9InspectionResults'); + } + + public async up(queryRunner: QueryRunner): Promise { + // Start Log + this.log('[START]', 'UP'); + // Running all up migration files + await this.runQuerySqlFiles(this.upMigrations(), queryRunner); + this.log('[END]', 'UP'); + } + + public async down(queryRunner: QueryRunner): Promise { + this.log('[STAR]', 'DOWN'); + await this.runQuerySqlFiles(this.downMigrations(), queryRunner); + this.log('[END]', 'DOWN'); + } + +} diff --git a/api/api_sources/sources/database/migrations/1681165022709-AddMultipleLocations.ts b/api/api_sources/sources/database/migrations/1681165022709-AddMultipleLocations.ts new file mode 100644 index 000000000..fddcf9076 --- /dev/null +++ b/api/api_sources/sources/database/migrations/1681165022709-AddMultipleLocations.ts @@ -0,0 +1,28 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; +import { AppDBMigrator } from '../applicationSchemaInterface'; +import { HighRiskAssessmentSchema } from '../database-schema'; + + +export class AddMultipleLocations1681165022709 extends AppDBMigrator implements MigrationInterface { + highRiskAssessment: HighRiskAssessmentSchema; + + setup() { + this.highRiskAssessment = new HighRiskAssessmentSchema(); + this.addSchemaVersion(this.highRiskAssessment, 'addMultipleLocations'); + } + + public async up(queryRunner: QueryRunner): Promise { + // Start Log + this.log('[START]', 'UP'); + // Running all up migration files + await this.runQuerySqlFiles(this.upMigrations(), queryRunner); + this.log('[END]', 'UP'); + } + + public async down(queryRunner: QueryRunner): Promise { + this.log('[STAR]', 'DOWN'); + await this.runQuerySqlFiles(this.downMigrations(), queryRunner); + this.log('[END]', 'DOWN'); + } + +} diff --git a/api/api_sources/sources/database/models/highRiskAssessment.ts b/api/api_sources/sources/database/models/highRiskAssessment.ts index 650f11785..1c75b16a9 100644 --- a/api/api_sources/sources/database/models/highRiskAssessment.ts +++ b/api/api_sources/sources/database/models/highRiskAssessment.ts @@ -26,10 +26,16 @@ export interface HighRiskAssessmentSpec { decontaminationOrderNumber: number; decontaminationOrderReason: string; sealNumber: number; - standingWaterLocation: object; - adultDreissenidaeMusselDetail: object; otherInspectionFindings: string; generalComments: string; + standingWaterLocation: object; + adultDreissenidaeMusselDetail: object; + standingWaterLocation1: object; + standingWaterLocation2: object; + standingWaterLocation3: object; + adultDreissenidaeMusselDetail1: object; + adultDreissenidaeMusselDetail2: object; + adultDreissenidaeMusselDetail3: object; } // -- End: HighRiskAssessmentSpec -- @@ -52,10 +58,16 @@ export interface HighRiskAssessmentUpdateSpec { decontaminationOrderNumber?: number; decontaminationOrderReason?: string; sealNumber?: number; - standingWaterLocation?: object; - adultDreissenidaeMusselDetail?: object; otherInspectionFindings?: string; generalComments?: string; + standingWaterLocation?: object; + adultDreissenidaeMusselDetail?: object; + standingWaterLocation1?: object; + standingWaterLocation2?: object; + standingWaterLocation3?: object; + adultDreissenidaeMusselDetail1?: object; + adultDreissenidaeMusselDetail2?: object; + adultDreissenidaeMusselDetail3?: object; } // -- End: HighRiskAssessmentUpdateSpec -- @@ -133,9 +145,9 @@ export class HighRiskAssessment extends Record implements HighRiskAssessmentSpec /** * @description Getter/Setter property for column {dreissenid_mussels_found_previous} */ - @Column({ name: HighRiskAssessmentSchema.columns.dreissenidMusselsFoundPrevious}) - @ModelProperty({type: PropertyType.boolean}) - dreissenidMusselsFoundPrevious: boolean; + @Column({ name: HighRiskAssessmentSchema.columns.dreissenidMusselsFoundPrevious}) + @ModelProperty({type: PropertyType.boolean}) + dreissenidMusselsFoundPrevious: boolean; /** * @description Getter/Setter property for column {watercraft_registration} @@ -161,9 +173,9 @@ export class HighRiskAssessment extends Record implements HighRiskAssessmentSpec /** * @description Getter/Setter property for column {decontamination_order_reason} */ - @Column({name: HighRiskAssessmentSchema.columns.decontaminationOrderReason, transformer: new IntTransformer()}) - @ModelProperty({type: PropertyType.string}) - decontaminationOrderReason: string; + @Column({name: HighRiskAssessmentSchema.columns.decontaminationOrderReason, transformer: new IntTransformer()}) + @ModelProperty({type: PropertyType.string}) + decontaminationOrderReason: string; /** * @description Getter/Setter property for column {seal_number} @@ -202,6 +214,54 @@ export class HighRiskAssessment extends Record implements HighRiskAssessmentSpec @ModelProperty({type: PropertyType.object}) adultDreissenidaeMusselDetail: AdultMusselsLocation; + /** + * @description Getter/Setter property for column {standing_water_location_code_id_1} + */ + @ManyToOne( type => AdultMusselsLocation, { eager: true}) + @JoinColumn({ name: HighRiskAssessmentSchema.columns.standingWaterLocation1, referencedColumnName: AdultMusselsLocationSchema.pk}) + @ModelProperty({type: PropertyType.object}) + standingWaterLocation1: AdultMusselsLocation; + + /** + * @description Getter/Setter property for column {standing_water_location_code_id_2} + */ + @ManyToOne( type => AdultMusselsLocation, { eager: true}) + @JoinColumn({ name: HighRiskAssessmentSchema.columns.standingWaterLocation2, referencedColumnName: AdultMusselsLocationSchema.pk}) + @ModelProperty({type: PropertyType.object}) + standingWaterLocation2: AdultMusselsLocation; + + /** + * @description Getter/Setter property for column {standing_water_location_code_id_3} + */ + @ManyToOne( type => AdultMusselsLocation, { eager: true}) + @JoinColumn({ name: HighRiskAssessmentSchema.columns.standingWaterLocation3, referencedColumnName: AdultMusselsLocationSchema.pk}) + @ModelProperty({type: PropertyType.object}) + standingWaterLocation3: AdultMusselsLocation; + + /** + * @description Getter/Setter property for column {adult_mussels_location_code_id_1} + */ + @ManyToOne( type => AdultMusselsLocation, { eager: true}) + @JoinColumn({ name: HighRiskAssessmentSchema.columns.adultDreissenidaeMusselDetail1, referencedColumnName: AdultMusselsLocationSchema.pk}) + @ModelProperty({type: PropertyType.object}) + adultDreissenidaeMusselDetail1: AdultMusselsLocation; + + /** + * @description Getter/Setter property for column {adult_mussels_location_code_id_2} + */ + @ManyToOne( type => AdultMusselsLocation, { eager: true}) + @JoinColumn({ name: HighRiskAssessmentSchema.columns.adultDreissenidaeMusselDetail2, referencedColumnName: AdultMusselsLocationSchema.pk}) + @ModelProperty({type: PropertyType.object}) + adultDreissenidaeMusselDetail2: AdultMusselsLocation; + + /** + * @description Getter/Setter property for column {adult_mussels_location_code_id_3} + */ + @ManyToOne( type => AdultMusselsLocation, { eager: true}) + @JoinColumn({ name: HighRiskAssessmentSchema.columns.adultDreissenidaeMusselDetail3, referencedColumnName: AdultMusselsLocationSchema.pk}) + @ModelProperty({type: PropertyType.object}) + adultDreissenidaeMusselDetail3: AdultMusselsLocation; + } // ------------------------------------- diff --git a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts index 902b36cb4..e51353a71 100644 --- a/api/api_sources/sources/database/models/watercraftRiskAssessment.ts +++ b/api/api_sources/sources/database/models/watercraftRiskAssessment.ts @@ -54,6 +54,7 @@ export interface WatercraftRiskAssessmentSpec { inspectionTime: string; isNewPassportIssued: boolean; k9Inspection: boolean; + k9InspectionResults: string; marineSpeciesFound: boolean; aquaticPlantsFound: boolean; previousAISKnowledge: boolean; @@ -102,6 +103,7 @@ export interface WatercraftRiskAssessmentUpdateSpec { passportHolder?: boolean; inspectionTime: string; k9Inspection?: boolean; + k9InspectionResults?: string; marineSpeciesFound?: boolean; aquaticPlantsFound?: boolean; previousAISKnowledge?: boolean; @@ -197,6 +199,13 @@ export class WatercraftRiskAssessment extends Record implements WatercraftRiskAs @ModelProperty({type: PropertyType.boolean}) k9Inspection: boolean; + /** + * @description Getter/Setter property for column {inspection_time} + */ + @Column({ name: WatercraftRiskAssessmentSchema.columns.k9InspectionResults}) + @ModelProperty({type: PropertyType.string}) + k9InspectionResults: string; + /** * @description Getter/Setter property for column {marine_species_found_ind} */ diff --git a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts index 766b4c3d0..f3d85b802 100644 --- a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts +++ b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts @@ -17,6 +17,7 @@ const Stations = require('../../../../../resources/jsons/musselsApp/MusselStatio const WatercraftList = require('../../../../../resources/jsons/musselsApp/MusselWatercrafts.json'); const DecontaminationOrderReasons = require('../../../../../resources/jsons/musselsApp/DecontaminationOrderReasons.json'); const DaysOutOfWater = require('../../../../../resources/jsons/musselsApp/DaysOutOfWater.json'); +const K9InspectionResults = require('../../../../../resources/jsons/musselsApp/K9InspectionResults.json'); const DaysSincePreviousInspection = require('../../../../../resources/jsons/musselsApp/DaysSincePreviousInspection.json'); /** @@ -42,6 +43,7 @@ export class MusselsAppCodesRouteController extends SecureRouteController { const watercraftList: any[] = this.processList(WatercraftList as any[], 'Watercraft'); const decontaminationOrderReasonList: any[] = this.processList(DecontaminationOrderReasons as any[], 'Decontamination_Order_Reasons'); const daysOutOfWaterList: any[] = this.processList(DaysOutOfWater as any[], 'Days_Out_Of_Water'); + const k9InspectionResults: any[] = this.processList(K9InspectionResults as any[], 'K9_Inspection_Results'); const daysSincePreviousInspectionList: any[] = this.processList(DaysSincePreviousInspection as any[], 'Days_Since_Previous_Inspection'); // Code tables @@ -56,6 +58,7 @@ export class MusselsAppCodesRouteController extends SecureRouteController { watercraftList: watercraftList, decontaminationOrderReasons: decontaminationOrderReasonList, daysOutOfWater: daysOutOfWaterList, + k9InspectionResults: k9InspectionResults, daysSincePreviousInspection: daysSincePreviousInspectionList, adultMusselsLocation, previousAISKnowledgeSource, From 8988843ef6d23f6249851e7c1e208a4b64148639 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 13 Apr 2023 12:12:31 -0700 Subject: [PATCH 164/194] Dev rebuild (#1130) * Add WatercraftRiskAssessment.inspectionTime column (#1013) * Add waterCraftRiskAssessment.inspection_time column + migrations * Moving the change to PROD (#1045) * Adding the keycloak local user postman to the initial database seed, so that we can run postman against the API * Removing trailing whitespace * 628: api-mobile setup - Swagger spec + routes - Route controllers - User authentication + route authorization - Database connection * 781, 776: misc api-mobile updates - add base sql for activity common fields view - add base sql for observation common fields view - add base sql for terrestrial plant specific fields view - make db default creds consistent between new api and existing db container for dev - comment invalid docker compose line for naming local network - make Nick's staging table query/insert work with Jamie's staging table schema- - add example curl command for testing new endpoint - add testing instructions to readme for new endpoint/api - add knex and boilerplate migration * 628: New observation migration for original api - Testing data - Testing script * 776: update knex migrations - add sample .env and command to set up new and old api with db creds that will work - Move knex to new api dir and get ActivityIncoming sql into a knex migration. Add new sample .env and shell script to automate synching up the different api dirs to play nice - add location and geometry inputs to create activity interface * 776: update test curl command and add doc * 776: update migrations, update views, add swagger object validation - clean up knex in wrong dir and update activity request spec yaml - add correct search path to staging table migration - adjust char length of activity type and subtype, fix rolback - change activity_id to be serial not unique so it auto increments if none provided - stop using swagger-tools for request validation and use swagger-object-validator instead * 792: Update swagger request object validation - Update knexfile.js and migrations/*.js files from .js to .ts files - Run `npm run lint-fix` * 776: update migrations, models, activity endpoint + validation, test scripts - api-mobile updates change activity endpoint params to accept obj for parent and child record types, and make names in db and api consiistent - fix migration - make swagger and database and ts queries all sync up - log whole activity post body - updated curl test file for activity endpoint - allow for swagger validation config to ignore additional properties (WIP) - make activity-query fields line up with db changes - update model - add migrations for common activity fields view and observation common fields view - minor activity view changes * 776: add spatial fields to api-mobile - update test data - add Geojson to postgis logic - set srid - add geo projection * 792: Update swagger object validator ignoreErrors config * 778: api-mobile pipeline/openshift support - add .pipeline and openshift files - add Dockerfile (used in pipeline build) - update github workflows to run api-mobile build/deploy/etc - update knexfile.ts - update package.json - add misc/version route for readiness/liveness probe * Postman POC Commit * Tweak null handling of `branch` variable. * Fix PVC Settings, volume size * Fix * 779: Dockerize api-mobile - Add docker files for api-mobile - Add root level docker files to run both all applications * 779: Commit missed files * 779: Code review updates - Fixed readme typos - Updated readme postgres version - Update dockerfile node versions from 11 to 10 in some places - Updated auth issuer handling in api-mobile * change activity controller to have its own log * Update migrations * update api-mobile activity sql, test, swagger. * 779: Fix api-mobile /.pipeline/lib/clean.js logic * Done't follow this file anymore * Turn off spatial * Add Apache License 2.0 * Swagger deserves git * env.local back * Switching to generic geometry column * Regular data inserting without spatial * Polygon is being entered * Point is being entered * Back to passing parameters to postgres * Removing test code * Cleaning up tests * Update Sonar Config settings * Activating PR based SonarCloud Checking * Point to base_ref * New github workflow file for deleting closed PR artifacts in dev and tools * Dummy * add missing geom column to insert * Forcing 2D for now * disable geometry insert * address linter error * trailing comma blocking insert * Update to workflow * Put test file back and clean up dummy file * Change all the v1 to v2 * 841: S3 file upload - Update api-mobile from [openapi 2.0 + swagger-tools] to [openapi 3.0 + express-openapi] - add file upload to activity endpoint - update npm packages - add new s3 env vars to env files - add SQL template string support - other misc updates * 841: Code review updates - Update `test/activity.sh` - update base64 parsing regex - increase accepted request size * Bump markdown-to-jsx from 6.11.1 to 6.11.4 in /app/lucy Bumps [markdown-to-jsx](https://github.com/probablyup/markdown-to-jsx) from 6.11.1 to 6.11.4. - [Release notes](https://github.com/probablyup/markdown-to-jsx/releases) - [Commits](https://github.com/probablyup/markdown-to-jsx/compare/6.11.1...6.11.4) Signed-off-by: dependabot[bot] * Bump decompress from 4.2.0 to 4.2.1 in /api/api_sources Bumps [decompress](https://github.com/kevva/decompress) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/kevva/decompress/releases) - [Commits](https://github.com/kevva/decompress/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] * Bump handlebars from 4.3.0 to 4.7.6 in /api/api_sources Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.3.0 to 4.7.6. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.3.0...v4.7.6) Signed-off-by: dependabot[bot] * Bump tree-kill from 1.2.1 to 1.2.2 in /api/api_sources Bumps [tree-kill](https://github.com/pkrumins/node-tree-kill) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/pkrumins/node-tree-kill/releases) - [Commits](https://github.com/pkrumins/node-tree-kill/compare/v1.2.1...v1.2.2) Signed-off-by: dependabot[bot] * New geog column * 629: get activities - Add GET activity endpoint to fetch multiple activity records based on some initial simple filter criteria - Add GET activity/{id} endpoint to fetch a single activity record and any S3 media it has - media is returned as base64 encoded string, in the same object format as it was originally sent to the api for upload * comment out failing test for at present unused form * Bump http-proxy from 1.18.0 to 1.18.1 in /app/lucy Bumps [http-proxy](https://github.com/http-party/node-http-proxy) from 1.18.0 to 1.18.1. - [Release notes](https://github.com/http-party/node-http-proxy/releases) - [Changelog](https://github.com/http-party/node-http-proxy/blob/master/CHANGELOG.md) - [Commits](https://github.com/http-party/node-http-proxy/compare/1.18.0...1.18.1) Signed-off-by: dependabot[bot] * 629: WIP * 629: Add endpoint for preSigned media url * 629: Remove console.log * Bump node-fetch from 2.6.0 to 2.6.1 in /app/lucy Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. - [Release notes](https://github.com/bitinn/node-fetch/releases) - [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1) Signed-off-by: dependabot[bot] * Misc updates: - Include rolands latest yaml - Update activities sql to have geometry be optional * Update geometry query * yaml specs ready for activityData, activityTypeData, activitySubTypeData * field validations in progress * validations done for activity yamly specs * geometry specs added * minor edits * edits * minor edit * geometry specs finalized * corrections to correct broken build * moved titles to the object root * Geometry spec updated * 899: Update api to use new api spec - Flatten api-spec and convert to json-schema * 10: Add security filter to dynamically populate api spec enums * 30: adhoc populate api spec enums * 30: Add more dropdown support to api-doc.json - sort api dropdowns * Remove duplicate connection.release() call. * Trivial fixes * Minor readme update * Fix distribution dropdown * 47: Update the Geometry schema - Remove unused swagger dependencies * 61: Initial activity search endpoint * Update api-mobile read * 61: Update activity search and media endpoints * Add missing error logging * photos storing to DB and S3 * photos storing to DB and S3 (#943) * removed unneccesary file * adjust logger level * code cleanup * General cleanup and fixes. (#945) * 61: add spatial support to activity search (#946) * Change the SSO url to *.oidc.gov.bc.ca (#948) * Move Get endpoint in activity.ts to Post endpoint in activities.ts (#952) * Update /activities search to use a feature instead of a polygon (#954) * Parse geometry from feature in /activities endpoint (#955) * Elevation api (#953) * Here is the file * The elevation test * https over http * fixing paths to dependencies * Elevation being returned * Cleaning up and Swagger * more debugging * Shema adjustments * doc * IPMA end point * Indent * RISO layer * Spelling * utm test * epsg end point working * Point of interest endpoint (#956) * add migration for point of interest data * add point of interest model * add schema for iapp site * migration tweaks and fully flush out spec for iapp site schema * add point of interest queries * expose point of interest route * Databc api (#961) * Generic databc end point * Updated some documentation * 111: Search endpoint updates (#962) - update limit/offset logic - support column name filtering - support order by filter * add endpoint missed in last pr for bulk point of interest fetch (#960) * 62: Add PUT activity endpoint to support updates (#963) 62: Edit Single Activity + Misc Updates - Add PUT activity endpoint - Update enum doc population logic (to use new code tables) - Update auth logic (to use new code tables) * Bump dot-prop from 4.2.0 to 4.2.1 in /api/api_sources (#958) Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/sindresorhus/dot-prop/releases) - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump dot-prop from 4.2.0 to 4.2.1 in /loadTest/app (#957) Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/sindresorhus/dot-prop/releases) - [Commits](https://github.com/sindresorhus/dot-prop/compare/v4.2.0...v4.2.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * remove build/deploy for the api mobile from the Pipeline (#968) * remove build in the api mobile from the Pipeline * Removing all reference to the mobile api * Update README.md * Prepare for OCP4 (#977) * Prepare for OCP4 * Pointing to OCP4 * YAML Formatting * Point to the right image * Update README.md (#979) * Bump axios from 0.19.2 to 0.21.1 in /loadTest/app (#981) Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump axios from 0.19.0 to 0.21.1 in /api/api_sources (#980) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Tweak replica numbers to save space in openshift (#982) * Tweak replica numbers to save space in openshift * Add Major City Table Schema and JSONS (#984) (#985) * Add Major City Table Schema and JSONS (#984) * Add major cities schema, days out of water json and decontamination order reason json, update endpoints * Add JSONS and major cities * Add major cities controller, update schema, add route * Add SQL for table changes, change days out from int to string * fix lint errors * change days out name * add columns to high risk assessment * Add major city to controllers and schema * fix naming bug Co-authored-by: Sam Warren * Changed name of column to "Active" (#987) * update station name JSON (#988) * add new passport issued field (#993) * Add waterCraftRiskAssessment.inspection_time column (#1011) * Add waterCraftRiskAssessment.inspection_time column + migrations * Update string validation check * Fix migration id * Improve regex validation check * Specified npm version for Node 10. Added Days Since Previous Inspection (#1024) * Dropdowns additional options (#1025) * Specified npm version for Node 10. Added Days Since Previous Inspection * Added Parks Canada to Previous Knowledge Source Code and various parks to Previous Inspection Source Code * disable pr specific deployments * Added migrations and changed PreviousInspectionDays to a string (#1027) * Added clean drain dry for watercraft inspection model (#1028) * Add St Lawrence QC to list of waterbodies (#1029) * Made the previous inspection days count nullable (#1043) * Made the previous inspection days count nullable * Made previousInspectionDays optional * Watercraft dreissenid previous (#1044) * Made the previous inspection days count nullable * Made previousInspectionDays optional * Moved dreissenidMusselsFoundPrevious from high risk to the base form * Reduced dev-deploy-postgres back to 2gb Co-authored-by: Roland Stens Co-authored-by: Nick Phura Co-authored-by: Mike Wells Co-authored-by: Jamie Popkin Co-authored-by: Mike Wells Co-authored-by: Nick Phura Co-authored-by: Nancy Mac Air Co-authored-by: repo-mountie[bot] <44246292+repo-mountie[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Anissa Agahchen Co-authored-by: Sam Warren * Inspect pipeline fix new locations (#1125) * update deployStatic to work run on push, update to look at 1054 db image * avoid deploying db in pipeline - to be fixed in the future * add Bilge to adult mussels location code * add new station locations * add new station locations test * update yaml and json files to new apiVersion name * update template naming for api.bc.yaml (#1126) * update deployStatic to not point to specific image (#1127) * increase timeout to allow images to build (#1128) * remove duplicate json, update deployStatic for dev --------- Co-authored-by: Nick Phura Co-authored-by: Richard Co-authored-by: Roland Stens Co-authored-by: Nick Phura Co-authored-by: Mike Wells Co-authored-by: Jamie Popkin Co-authored-by: Mike Wells Co-authored-by: Nancy Mac Air Co-authored-by: repo-mountie[bot] <44246292+repo-mountie[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Anissa Agahchen Co-authored-by: Sam Warren --- .github/workflows/deployStatic.yml | 18 +++++++++--------- .../constantData/mussels.code.route.ts | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index 8a1435f9c..b57533105 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -121,11 +121,11 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run seed -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App @@ -211,10 +211,10 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=1054 --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=prod --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App diff --git a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts index f3d85b802..e3a8adab7 100644 --- a/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts +++ b/api/api_sources/sources/server/modules/watercraftObservation/constantData/mussels.code.route.ts @@ -58,8 +58,8 @@ export class MusselsAppCodesRouteController extends SecureRouteController { watercraftList: watercraftList, decontaminationOrderReasons: decontaminationOrderReasonList, daysOutOfWater: daysOutOfWaterList, - k9InspectionResults: k9InspectionResults, daysSincePreviousInspection: daysSincePreviousInspectionList, + k9InspectionResults: k9InspectionResults, adultMusselsLocation, previousAISKnowledgeSource, previousInspectionSource, From d702de6c1a5c91d0b35b09fe5417acb01e913d24 Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Fri, 12 May 2023 09:45:36 -0700 Subject: [PATCH 165/194] Migration to gold (#1132) * Migration to gold Testing works locally. Moving to dev for initial round. * Updating endpoints for OC Updated required SSO endpoints and realm name for openshift deployment. * Removing additional text Removing additional text noticed in urls. Changed to proper endpoints for Keycloak * Update env.docker remove `dev.` for keycloak urls in env.docker * Update env.example add `dev.` environment to example env file --------- Co-authored-by: David <62899351+davidclaveau@users.noreply.github.com> --- .config/config.json | 24 +++++++++---------- .github/workflows/e2e.bkp | 2 +- api/.gitignore | 2 +- api/.pipeline/lib/test.api.js | 2 +- api/docs/user.info.json | 2 +- api/openshift/dc.yaml | 2 +- api/openshift/seed.pod.yaml | 2 +- api/openshift/setup.pod.yaml | 2 +- api/openshift/test.pod.yaml | 2 +- app/cypress-e2e/sample.cypress.env.json | 4 ++-- app/lucy/src/app/constants/app-constants.ts | 6 ++--- app/openshift/app.dc.yaml | 4 ++-- env_config/env.docker | 4 ++-- loadTest/README.md | 6 ++--- loadTest/app/env.example | 6 ++--- loadTest/openshift/job.yml | 4 ++-- loadTest/openshift/pod.yml | 4 ++-- .../postman/DEV.postman_environment.json | 4 ++-- .../lucy-api-mobile.postman_collection.json | 12 +++++----- 19 files changed, 47 insertions(+), 47 deletions(-) diff --git a/.config/config.json b/.config/config.json index 563e0964b..78b0c206a 100644 --- a/.config/config.json +++ b/.config/config.json @@ -26,25 +26,25 @@ "prod": "api-invasivesbc.apps.silver.devops.gov.bc.ca" }, "certificateURL": { - "dev": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", - "test": "https://test.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs", - "prod": "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + "dev": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "test": "https://test.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "prod": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" }, "sso": { "dev": { - "url": "https://dev.oidc.gov.bc.ca", - "clientId": "invasives-bc", - "realm": "dfmlcg7z" + "url": "https://dev.loginproxy.gov.bc.ca", + "clientId": "inspect-bc-mussels-4817", + "realm": "standard" }, "test": { - "url": "https://test.oidc.gov.bc.ca", - "clientId": "invasives-bc", - "realm": "dfmlcg7z" + "url": "https://test.loginproxy.gov.bc.ca", + "clientId": "inspect-bc-mussels-4817", + "realm": "standard" }, "prod": { - "url": "https://oidc.gov.bc.ca", - "clientId": "invasives-bc", - "realm": "dfmlcg7z" + "url": "https://loginproxy.gov.bc.ca", + "clientId": "inspect-bc-mussels-4817", + "realm": "standard" } }, "migrationInfo" : { diff --git a/.github/workflows/e2e.bkp b/.github/workflows/e2e.bkp index d9f107f73..73a059878 100644 --- a/.github/workflows/e2e.bkp +++ b/.github/workflows/e2e.bkp @@ -59,6 +59,6 @@ jobs: env: host: 'http://localhost:3033' with: - env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=dfmlcg7z,authClientId=invasives-bc,authUrl=https://dev.oidc.gov.bc.ca/auth' + env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://dev.loginproxy.gov.bc.ca/auth' working-directory: './app/cypress-e2e' record: true \ No newline at end of file diff --git a/api/.gitignore b/api/.gitignore index 255e0d849..bca658483 100755 --- a/api/.gitignore +++ b/api/.gitignore @@ -44,7 +44,7 @@ app_api/npm-debug.log app_api/dist-server app_api/_app_data - +*.vscode-server/ # NPM Dir node_modules/ # Logs diff --git a/api/.pipeline/lib/test.api.js b/api/.pipeline/lib/test.api.js index 3b5b4dc41..c535f4ff7 100644 --- a/api/.pipeline/lib/test.api.js +++ b/api/.pipeline/lib/test.api.js @@ -35,7 +35,7 @@ module.exports = (settings) => { 'ENVIRONMENT': phases[phase].env || 'dev', 'DB_SERVICE_NAME': `${phases[phase].name}-postgresql${phases[phase].suffix}`, 'IMAGE': imageStream.image.dockerImageReference, - 'CERTIFICATE_URL': 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs', + 'CERTIFICATE_URL': 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', 'DB_MIGRATION_TYPE': phases[phase].migrationInfo.type, 'DB_CLEAN_UP': phases[phase].migrationInfo.cleanup, 'DB_SEED': phases[phase].migrationInfo.dbSeed diff --git a/api/docs/user.info.json b/api/docs/user.info.json index e30fa5ef0..c58f7fdde 100644 --- a/api/docs/user.info.json +++ b/api/docs/user.info.json @@ -3,7 +3,7 @@ "exp": 1557947030, "nbf": 0, "iat": 1557946730, - "iss": "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z", + "iss": "https://loginproxy.gov.bc.ca/auth/realms/standard", "aud": "lucy", "sub": "32e33e03-9d12-43a5-88e6-ce031fc36be8", "typ": "Bearer", diff --git a/api/openshift/dc.yaml b/api/openshift/dc.yaml index 0a08ced3f..5012ee3ac 100644 --- a/api/openshift/dc.yaml +++ b/api/openshift/dc.yaml @@ -270,7 +270,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/api/openshift/seed.pod.yaml b/api/openshift/seed.pod.yaml index 77562a0ab..6f8cd4d37 100644 --- a/api/openshift/seed.pod.yaml +++ b/api/openshift/seed.pod.yaml @@ -28,7 +28,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/api/openshift/setup.pod.yaml b/api/openshift/setup.pod.yaml index 70207c0e1..eab274a79 100644 --- a/api/openshift/setup.pod.yaml +++ b/api/openshift/setup.pod.yaml @@ -28,7 +28,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/api/openshift/test.pod.yaml b/api/openshift/test.pod.yaml index 17eaebea9..45c5d28fa 100644 --- a/api/openshift/test.pod.yaml +++ b/api/openshift/test.pod.yaml @@ -28,7 +28,7 @@ parameters: - name: CERTIFICATE_URL description: Authentication certificate urls required: true - value: "https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs" + value: "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" - name: CPU_REQ value: '500m' - name: CPU_LIMIT diff --git a/app/cypress-e2e/sample.cypress.env.json b/app/cypress-e2e/sample.cypress.env.json index 5fe263805..67768ede6 100644 --- a/app/cypress-e2e/sample.cypress.env.json +++ b/app/cypress-e2e/sample.cypress.env.json @@ -1,8 +1,8 @@ { "username": "cypress", "password": "PASSWORD", - "authRealm": "dfmlcg7z", - "authClientId": "invasives-bc", + "authRealm": "standard", + "authClientId": "inspect-bc-mussels-4817", "host": "http://localhost:3033", "authUrl": "VALUE" } \ No newline at end of file diff --git a/app/lucy/src/app/constants/app-constants.ts b/app/lucy/src/app/constants/app-constants.ts index 3f1412c26..b96503a44 100755 --- a/app/lucy/src/app/constants/app-constants.ts +++ b/app/lucy/src/app/constants/app-constants.ts @@ -65,9 +65,9 @@ export class AppConstants { // SSO static SSOConstants = { - SSO_CLIENT_ID : `invasives-bc`, - SSO_BASE_URL : `https://dev.oidc.gov.bc.ca`, - SSO_REALM_NAME : `dfmlcg7z`, + SSO_CLIENT_ID : `inspect-bc-mussels-4817`, + SSO_BASE_URL : `https://dev.loginproxy.gov.bc.ca`, + SSO_REALM_NAME : `standard`, SSO_LOGIN_REDIRECT_URI : `http://${window.location.host}`, }; diff --git a/app/openshift/app.dc.yaml b/app/openshift/app.dc.yaml index 7de14c641..1ac6c2390 100644 --- a/app/openshift/app.dc.yaml +++ b/app/openshift/app.dc.yaml @@ -233,13 +233,13 @@ parameters: value: '2Gi' - name: SSO_URL description: Key clock login url - value: 'https://oidc.gov.bc.ca' + value: 'https://loginproxy.gov.bc' - name: SSO_CLIENT_ID description: Client Id for application value: "lucy" - name: SSO_REALM description: Realm identifier or name - value: dfmlcg7z + value: standard - name: REPLICAS value: '1' - name: REPLICA_MAX diff --git a/env_config/env.docker b/env_config/env.docker index d5c705060..4bc1a24d9 100644 --- a/env_config/env.docker +++ b/env_config/env.docker @@ -44,8 +44,8 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs # ------------------------------------------------------------------------------ # Mailer Config diff --git a/loadTest/README.md b/loadTest/README.md index 1b86006e2..b1da36d66 100644 --- a/loadTest/README.md +++ b/loadTest/README.md @@ -25,9 +25,9 @@ The __/loadTest__ directory under root contains all resources and source code fi TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details - AUTH_URL=https://dev.oidc.gov.bc.ca/auth/realms - REALM=dfmlcg7z - CLIENT_ID=invasives-bc + AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms + REALM=standard + CLIENT_ID=inspect-bc-mussels-4817 ``` ## Run test locally diff --git a/loadTest/app/env.example b/loadTest/app/env.example index b61ddc5fe..9c3875799 100644 --- a/loadTest/app/env.example +++ b/loadTest/app/env.example @@ -2,6 +2,6 @@ TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details -AUTH_URL=https://dev.oidc.gov.bc.ca/auth/realms -REALM=dfmlcg7z -CLIENT_ID=invasives-bc \ No newline at end of file +AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms +REALM=standard +CLIENT_ID=inspect-bc-mussels-4817 diff --git a/loadTest/openshift/job.yml b/loadTest/openshift/job.yml index 013d733dc..0f8185dea 100644 --- a/loadTest/openshift/job.yml +++ b/loadTest/openshift/job.yml @@ -20,10 +20,10 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://test.oidc.gov.bc.ca/auth/realms" + value: "https://test.loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm - value: dfmlcg7z + value: standard - name: TEST_USER_SECRET description: Secret of test user profile value: invasivesbc-load-test-user diff --git a/loadTest/openshift/pod.yml b/loadTest/openshift/pod.yml index 79df70398..37c67d486 100644 --- a/loadTest/openshift/pod.yml +++ b/loadTest/openshift/pod.yml @@ -19,10 +19,10 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://test.oidc.gov.bc.ca/auth/realms" + value: "https://test.loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm - value: dfmlcg7z + value: standard - name: TEST_USER_SECRET description: Secret of test user profile value: invasivesbc-load-test-user diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json index df4a18ec2..9a0626c34 100644 --- a/testing/integration/postman/DEV.postman_environment.json +++ b/testing/integration/postman/DEV.postman_environment.json @@ -4,7 +4,7 @@ "values": [ { "key": "auth_host", - "value": "https://dev.oidc.gov.bc.ca", + "value": "https://dev.loginproxy.gov.bc.ca", "enabled": true }, { @@ -39,7 +39,7 @@ }, { "key": "KEYCLOAK_URL", - "value": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "value": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "enabled": true }, { diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index f9b2bc57c..b32e193e5 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -1014,7 +1014,7 @@ "protocolProfileBehavior": {} }, { - "name": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "name": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "event": [ { "listen": "test", @@ -1051,7 +1051,7 @@ }, { "key": "client_id", - "value": "invasives-bc", + "value": "inspect-bc-mussels-4817", "type": "text" }, { @@ -1072,7 +1072,7 @@ ] }, "url": { - "raw": "https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token", + "raw": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "protocol": "https", "host": [ "sso-dev", @@ -1084,7 +1084,7 @@ "path": [ "auth", "realms", - "dfmlcg7z", + "standard", "protocol", "openid-connect", "token" @@ -1112,7 +1112,7 @@ "type": "text/javascript", "exec": [ "const echoPostRequest = {", - " url: 'https://dev.oidc.gov.bc.ca/auth/realms/dfmlcg7z/protocol/openid-connect/token',", + " url: 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", " method: 'POST',", " header: 'Content-Type:application/x-www-form-urlencoded',", " body: {", @@ -1121,7 +1121,7 @@ " {key:'username', value:'istest1@idir'}, ", " {key:'password', value:pm.environment.get('postman_pw')}, ", " {key:'scope', value:'openid'}, ", - " {key:'client_id', value:'invasives-bc'}, ", + " {key:'client_id', value:'inspect-bc-mussels-4817'}, ", " {key:'grant_type', value:'password'}", " ]", " }", From 98bfac520ade2552adec3fff337867d7ce1c3b41 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 18 May 2023 10:29:51 -0700 Subject: [PATCH 166/194] Inspect 2.6 bug fix keycloak 3 (#1139) Changing dev to be a clone of the prod environment for 2.6 changes, testing Keycloak Gold realm --- .config/config.json | 10 ++++++---- .github/workflows/e2e.bkp | 2 +- api/.pipeline/lib/test.api.js | 2 +- app/lucy/src/app/constants/app-constants.ts | 2 +- app/openshift/app.dc.yaml | 6 +++--- env_config/env.docker | 2 +- loadTest/README.md | 2 +- loadTest/app/env.example | 2 +- loadTest/openshift/job.yml | 2 +- loadTest/openshift/pod.yml | 2 +- .../integration/postman/DEV.postman_environment.json | 4 ++-- .../postman/lucy-api-mobile.postman_collection.json | 6 +++--- 12 files changed, 22 insertions(+), 20 deletions(-) diff --git a/.config/config.json b/.config/config.json index 78b0c206a..a7b0a5a91 100644 --- a/.config/config.json +++ b/.config/config.json @@ -26,18 +26,20 @@ "prod": "api-invasivesbc.apps.silver.devops.gov.bc.ca" }, "certificateURL": { - "dev": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", - "test": "https://test.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "dev": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "test": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", "prod": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" }, "sso": { "dev": { - "url": "https://dev.loginproxy.gov.bc.ca", + "url": "https://loginproxy.gov.bc.ca", + "clientId": "inspect-bc-mussels-4817", "realm": "standard" }, "test": { - "url": "https://test.loginproxy.gov.bc.ca", + "url": "https://loginproxy.gov.bc.ca", + "clientId": "inspect-bc-mussels-4817", "realm": "standard" }, diff --git a/.github/workflows/e2e.bkp b/.github/workflows/e2e.bkp index 73a059878..212f5f8ce 100644 --- a/.github/workflows/e2e.bkp +++ b/.github/workflows/e2e.bkp @@ -59,6 +59,6 @@ jobs: env: host: 'http://localhost:3033' with: - env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://dev.loginproxy.gov.bc.ca/auth' + env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://loginproxy.gov.bc.ca/auth' working-directory: './app/cypress-e2e' record: true \ No newline at end of file diff --git a/api/.pipeline/lib/test.api.js b/api/.pipeline/lib/test.api.js index c535f4ff7..aedf51cda 100644 --- a/api/.pipeline/lib/test.api.js +++ b/api/.pipeline/lib/test.api.js @@ -35,7 +35,7 @@ module.exports = (settings) => { 'ENVIRONMENT': phases[phase].env || 'dev', 'DB_SERVICE_NAME': `${phases[phase].name}-postgresql${phases[phase].suffix}`, 'IMAGE': imageStream.image.dockerImageReference, - 'CERTIFICATE_URL': 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', + 'CERTIFICATE_URL': 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', 'DB_MIGRATION_TYPE': phases[phase].migrationInfo.type, 'DB_CLEAN_UP': phases[phase].migrationInfo.cleanup, 'DB_SEED': phases[phase].migrationInfo.dbSeed diff --git a/app/lucy/src/app/constants/app-constants.ts b/app/lucy/src/app/constants/app-constants.ts index b96503a44..e1e030ab9 100755 --- a/app/lucy/src/app/constants/app-constants.ts +++ b/app/lucy/src/app/constants/app-constants.ts @@ -66,7 +66,7 @@ export class AppConstants { // SSO static SSOConstants = { SSO_CLIENT_ID : `inspect-bc-mussels-4817`, - SSO_BASE_URL : `https://dev.loginproxy.gov.bc.ca`, + SSO_BASE_URL : `https://loginproxy.gov.bc.ca`, SSO_REALM_NAME : `standard`, SSO_LOGIN_REDIRECT_URI : `http://${window.location.host}`, }; diff --git a/app/openshift/app.dc.yaml b/app/openshift/app.dc.yaml index 1ac6c2390..ccd247d27 100644 --- a/app/openshift/app.dc.yaml +++ b/app/openshift/app.dc.yaml @@ -233,10 +233,10 @@ parameters: value: '2Gi' - name: SSO_URL description: Key clock login url - value: 'https://loginproxy.gov.bc' + value: 'https://loginproxy.gov.bc.ca' - name: SSO_CLIENT_ID description: Client Id for application - value: "lucy" + value: "inspect-bc-mussels-4817" - name: SSO_REALM description: Realm identifier or name value: standard @@ -244,4 +244,4 @@ parameters: value: '1' - name: REPLICA_MAX required: true - value: '1' \ No newline at end of file + value: '1' diff --git a/env_config/env.docker b/env_config/env.docker index 4bc1a24d9..e7374676e 100644 --- a/env_config/env.docker +++ b/env_config/env.docker @@ -44,7 +44,7 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs APP_CERTIFICATE_URL_TEST=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs # ------------------------------------------------------------------------------ diff --git a/loadTest/README.md b/loadTest/README.md index b1da36d66..edf86213a 100644 --- a/loadTest/README.md +++ b/loadTest/README.md @@ -25,7 +25,7 @@ The __/loadTest__ directory under root contains all resources and source code fi TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details - AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms + AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 ``` diff --git a/loadTest/app/env.example b/loadTest/app/env.example index 9c3875799..4a841b541 100644 --- a/loadTest/app/env.example +++ b/loadTest/app/env.example @@ -2,6 +2,6 @@ TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details -AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms +AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 diff --git a/loadTest/openshift/job.yml b/loadTest/openshift/job.yml index 0f8185dea..3f80f8af0 100644 --- a/loadTest/openshift/job.yml +++ b/loadTest/openshift/job.yml @@ -20,7 +20,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://test.loginproxy.gov.bc.ca/auth/realms" + value: "https://loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/loadTest/openshift/pod.yml b/loadTest/openshift/pod.yml index 37c67d486..45ea98de5 100644 --- a/loadTest/openshift/pod.yml +++ b/loadTest/openshift/pod.yml @@ -19,7 +19,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://test.loginproxy.gov.bc.ca/auth/realms" + value: "https://loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json index 9a0626c34..41933feb7 100644 --- a/testing/integration/postman/DEV.postman_environment.json +++ b/testing/integration/postman/DEV.postman_environment.json @@ -4,7 +4,7 @@ "values": [ { "key": "auth_host", - "value": "https://dev.loginproxy.gov.bc.ca", + "value": "https://loginproxy.gov.bc.ca", "enabled": true }, { @@ -39,7 +39,7 @@ }, { "key": "KEYCLOAK_URL", - "value": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "value": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "enabled": true }, { diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index b32e193e5..2d3dd2b59 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -1014,7 +1014,7 @@ "protocolProfileBehavior": {} }, { - "name": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "name": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "event": [ { "listen": "test", @@ -1072,7 +1072,7 @@ ] }, "url": { - "raw": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "raw": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "protocol": "https", "host": [ "sso-dev", @@ -1112,7 +1112,7 @@ "type": "text/javascript", "exec": [ "const echoPostRequest = {", - " url: 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", + " url: 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", " method: 'POST',", " header: 'Content-Type:application/x-www-form-urlencoded',", " body: {", From 431767bd60e1806b9a83760d27c3d7d131bf9642 Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Fri, 19 May 2023 13:23:39 -0700 Subject: [PATCH 167/194] Logic Update to Handle Dev or Prod (#1140) * Logic Update to Handle Dev or Prod Updated the logic to check certificate depending on Prod or Dev Reverted endpoints to Dev where needed * Update config.json Added missing . for dev endpoint * Update bc.helpers.ts Removing debugging output --- .config/config.json | 10 +-- .github/workflows/e2e.bkp | 2 +- api/.pipeline/lib/test.api.js | 2 +- api/api_sources/package.json | 2 +- .../sources/libs/utilities/bc.helpers.ts | 61 +++++++++++++++++-- api/api_sources/tsconfig.json | 3 +- .../typings-custom/rsa-pem-from-mod-exp.d.ts | 1 + api/package-lock.json | 3 + app/lucy/src/app/constants/app-constants.ts | 2 +- env_config/env.docker | 4 +- loadTest/README.md | 2 +- loadTest/app/env.example | 2 +- loadTest/openshift/job.yml | 2 +- loadTest/openshift/pod.yml | 2 +- package-lock.json | 3 + .../postman/DEV.postman_environment.json | 4 +- .../lucy-api-mobile.postman_collection.json | 6 +- 17 files changed, 86 insertions(+), 25 deletions(-) create mode 100644 api/api_sources/typings-custom/rsa-pem-from-mod-exp.d.ts create mode 100644 api/package-lock.json create mode 100644 package-lock.json diff --git a/.config/config.json b/.config/config.json index a7b0a5a91..87aafbd03 100644 --- a/.config/config.json +++ b/.config/config.json @@ -26,19 +26,19 @@ "prod": "api-invasivesbc.apps.silver.devops.gov.bc.ca" }, "certificateURL": { - "dev": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", - "test": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "dev": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "test": "https://test.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", "prod": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" }, "sso": { "dev": { - "url": "https://loginproxy.gov.bc.ca", + "url": "https://dev.loginproxy.gov.bc.ca", "clientId": "inspect-bc-mussels-4817", "realm": "standard" }, "test": { - "url": "https://loginproxy.gov.bc.ca", + "url": "https://test.loginproxy.gov.bc.ca", "clientId": "inspect-bc-mussels-4817", "realm": "standard" @@ -66,4 +66,4 @@ "dbSeed": "yes" } } -} \ No newline at end of file +} diff --git a/.github/workflows/e2e.bkp b/.github/workflows/e2e.bkp index 212f5f8ce..73a059878 100644 --- a/.github/workflows/e2e.bkp +++ b/.github/workflows/e2e.bkp @@ -59,6 +59,6 @@ jobs: env: host: 'http://localhost:3033' with: - env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://loginproxy.gov.bc.ca/auth' + env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://dev.loginproxy.gov.bc.ca/auth' working-directory: './app/cypress-e2e' record: true \ No newline at end of file diff --git a/api/.pipeline/lib/test.api.js b/api/.pipeline/lib/test.api.js index aedf51cda..c535f4ff7 100644 --- a/api/.pipeline/lib/test.api.js +++ b/api/.pipeline/lib/test.api.js @@ -35,7 +35,7 @@ module.exports = (settings) => { 'ENVIRONMENT': phases[phase].env || 'dev', 'DB_SERVICE_NAME': `${phases[phase].name}-postgresql${phases[phase].suffix}`, 'IMAGE': imageStream.image.dockerImageReference, - 'CERTIFICATE_URL': 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', + 'CERTIFICATE_URL': 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', 'DB_MIGRATION_TYPE': phases[phase].migrationInfo.type, 'DB_CLEAN_UP': phases[phase].migrationInfo.cleanup, 'DB_SEED': phases[phase].migrationInfo.dbSeed diff --git a/api/api_sources/package.json b/api/api_sources/package.json index 3adf131f6..a3cbed911 100644 --- a/api/api_sources/package.json +++ b/api/api_sources/package.json @@ -98,7 +98,7 @@ "moment": "^2.24.0", "multer": "^1.4.2", "nodemailer": "^5.1.1", - "passport": "^0.4.0", + "passport": "^0.6.0", "passport-jwt": "^4.0.0", "passport-mock-strategy": "^2.0.0", "pg": "^7.11.0", diff --git a/api/api_sources/sources/libs/utilities/bc.helpers.ts b/api/api_sources/sources/libs/utilities/bc.helpers.ts index ba3b4080f..9bf99a1a0 100644 --- a/api/api_sources/sources/libs/utilities/bc.helpers.ts +++ b/api/api_sources/sources/libs/utilities/bc.helpers.ts @@ -21,7 +21,8 @@ */ import * as assert from 'assert'; import AppConfig from '../../AppConfig'; - +import axios from 'axios'; +const getPem = require('rsa-pem-from-mod-exp'); /** * @description Require common utility module as any */ @@ -38,9 +39,61 @@ export class BCHelperLib { * @returns Promise<{algorithm: any, certificate: any}> */ static async getCertificate(): Promise { - const { getJwtCertificate} = commonUtility; - assert(getJwtCertificate, 'No getJwtCertificate lib'); - const { algorithm, certificate } = await getJwtCertificate(AppConfig.certificateURL); + + interface CertificateResult { + algorithm: string; + certificate: string; + } + + const ssoCertificateUrl = AppConfig.certificateURL; + + // Assign algorith and certificate with the values from the parsed data from certificate + const { algorithm, certificate } = await new Promise(async (resolve, reject) => { + if (!ssoCertificateUrl) { + reject(new Error('No certificate URL provided')); + return; + } + try { + const response = await axios.get(ssoCertificateUrl); + if (response.data.keys && response.data.keys.length === 0) { + reject(new Error('No keys in certificate body')); + return; + } + // If enc is the use type of response.data.keys[0] you are in production and need to use the next key. + let certsJson = response.data.keys[0]; + if (certsJson.use === 'enc') { + certsJson = response.data.keys[1]; + } + const modulus = certsJson.n; + const exponent = certsJson.e; + const alg = certsJson.alg; + // Verify required fields were found in Certificate + if (!modulus) { + reject(new Error('No modulus')); + return; + } + if (!exponent) { + reject(new Error('No exponent')); + return; + } + if (!alg) { + reject(new Error('No algorithm')); + return; + } + // build a certificate + const pem = getPem(modulus, exponent); + resolve({ + certificate: pem, + algorithm: alg, + }); + } catch (error) { + const message = 'Unable to parse certificate(s)'; + console.log(`${message}, error = ${error.message}`); + reject(new Error(message)); + } + }); + assert(certificate, 'No getJwtCertificate'); + assert(algorithm, 'No algorithm'); return {algorithm, certificate}; } diff --git a/api/api_sources/tsconfig.json b/api/api_sources/tsconfig.json index 8540cbaa3..fcac1e41f 100755 --- a/api/api_sources/tsconfig.json +++ b/api/api_sources/tsconfig.json @@ -40,6 +40,7 @@ "./node_modules/@types/mocha/index.d.ts", "./node_modules/@types/node/index.d.ts", "./node_modules/@types/jest/index.d.ts", - "./typings-custom/@bcgov/nodejs-common-utils.d.ts" + "./typings-custom/@bcgov/nodejs-common-utils.d.ts", + "./typings-custom/rsa-pem-from-mod-exp.d.ts" ] } diff --git a/api/api_sources/typings-custom/rsa-pem-from-mod-exp.d.ts b/api/api_sources/typings-custom/rsa-pem-from-mod-exp.d.ts new file mode 100644 index 000000000..b5849a2bf --- /dev/null +++ b/api/api_sources/typings-custom/rsa-pem-from-mod-exp.d.ts @@ -0,0 +1 @@ +declare module 'rsa-pem-from-mod-exp' \ No newline at end of file diff --git a/api/package-lock.json b/api/package-lock.json new file mode 100644 index 000000000..48e341a09 --- /dev/null +++ b/api/package-lock.json @@ -0,0 +1,3 @@ +{ + "lockfileVersion": 1 +} diff --git a/app/lucy/src/app/constants/app-constants.ts b/app/lucy/src/app/constants/app-constants.ts index e1e030ab9..b96503a44 100755 --- a/app/lucy/src/app/constants/app-constants.ts +++ b/app/lucy/src/app/constants/app-constants.ts @@ -66,7 +66,7 @@ export class AppConstants { // SSO static SSOConstants = { SSO_CLIENT_ID : `inspect-bc-mussels-4817`, - SSO_BASE_URL : `https://loginproxy.gov.bc.ca`, + SSO_BASE_URL : `https://dev.loginproxy.gov.bc.ca`, SSO_REALM_NAME : `standard`, SSO_LOGIN_REDIRECT_URI : `http://${window.location.host}`, }; diff --git a/env_config/env.docker b/env_config/env.docker index e7374676e..4deddd36e 100644 --- a/env_config/env.docker +++ b/env_config/env.docker @@ -44,8 +44,8 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs # ------------------------------------------------------------------------------ # Mailer Config diff --git a/loadTest/README.md b/loadTest/README.md index edf86213a..b1da36d66 100644 --- a/loadTest/README.md +++ b/loadTest/README.md @@ -25,7 +25,7 @@ The __/loadTest__ directory under root contains all resources and source code fi TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details - AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms + AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 ``` diff --git a/loadTest/app/env.example b/loadTest/app/env.example index 4a841b541..9c3875799 100644 --- a/loadTest/app/env.example +++ b/loadTest/app/env.example @@ -2,6 +2,6 @@ TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details -AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms +AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 diff --git a/loadTest/openshift/job.yml b/loadTest/openshift/job.yml index 3f80f8af0..4e00381c3 100644 --- a/loadTest/openshift/job.yml +++ b/loadTest/openshift/job.yml @@ -20,7 +20,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://loginproxy.gov.bc.ca/auth/realms" + value: "https://dev.loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/loadTest/openshift/pod.yml b/loadTest/openshift/pod.yml index 45ea98de5..f6758eaa7 100644 --- a/loadTest/openshift/pod.yml +++ b/loadTest/openshift/pod.yml @@ -19,7 +19,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://loginproxy.gov.bc.ca/auth/realms" + value: "https://dev.loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..48e341a09 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3 @@ +{ + "lockfileVersion": 1 +} diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json index 41933feb7..9a0626c34 100644 --- a/testing/integration/postman/DEV.postman_environment.json +++ b/testing/integration/postman/DEV.postman_environment.json @@ -4,7 +4,7 @@ "values": [ { "key": "auth_host", - "value": "https://loginproxy.gov.bc.ca", + "value": "https://dev.loginproxy.gov.bc.ca", "enabled": true }, { @@ -39,7 +39,7 @@ }, { "key": "KEYCLOAK_URL", - "value": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "value": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "enabled": true }, { diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index 2d3dd2b59..b32e193e5 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -1014,7 +1014,7 @@ "protocolProfileBehavior": {} }, { - "name": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "name": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "event": [ { "listen": "test", @@ -1072,7 +1072,7 @@ ] }, "url": { - "raw": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "raw": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "protocol": "https", "host": [ "sso-dev", @@ -1112,7 +1112,7 @@ "type": "text/javascript", "exec": [ "const echoPostRequest = {", - " url: 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", + " url: 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", " method: 'POST',", " header: 'Content-Type:application/x-www-form-urlencoded',", " body: {", From 6f38684aaec2ba0b96f796d3c2a129720af3827a Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Fri, 19 May 2023 13:40:32 -0700 Subject: [PATCH 168/194] Inspect 2.6 keycloak fix (#1141) * Logic Update to Handle Dev or Prod Updated the logic to check certificate depending on Prod or Dev Reverted endpoints to Dev where needed * Update config.json Added missing . for dev endpoint * Update bc.helpers.ts Removing debugging output * Update deployStatic.yml Update deploy static to rebuild off old 1054 pod. Following previous dev deployment strategy. --- .github/workflows/deployStatic.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index b57533105..49ef39387 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -121,11 +121,11 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run seed -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App From b11024b22e4b75ae199bb5f56908019e8e6785e1 Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Fri, 19 May 2023 14:00:19 -0700 Subject: [PATCH 169/194] Inspect 2.6 keycloak fix (#1142) * Logic Update to Handle Dev or Prod Updated the logic to check certificate depending on Prod or Dev Reverted endpoints to Dev where needed * Update config.json Added missing . for dev endpoint * Update bc.helpers.ts Removing debugging output * Update deployStatic.yml Update deploy static to rebuild off old 1054 pod. Following previous dev deployment strategy. * Reverting passport update Reverting passport update From 07065646a60d9bd90cbafa0eee4a84836a65f958 Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Fri, 19 May 2023 14:30:55 -0700 Subject: [PATCH 170/194] Inspect 2.6 keycloak fix (#1143) * Logic Update to Handle Dev or Prod Updated the logic to check certificate depending on Prod or Dev Reverted endpoints to Dev where needed * Update config.json Added missing . for dev endpoint * Update bc.helpers.ts Removing debugging output * Update deployStatic.yml Update deploy static to rebuild off old 1054 pod. Following previous dev deployment strategy. * Reverting passport update Reverting passport update * Update package-lock.json Update pack-lock.json --- api/api_sources/package-lock.json | 243 +++++++++++++++++++++++------- 1 file changed, 192 insertions(+), 51 deletions(-) diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index d1c2d06ab..4b86943d8 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -144,30 +144,52 @@ } }, "@gulp-sourcemaps/identity-map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", - "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", + "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", "dev": true, "requires": { - "acorn": "^5.0.3", - "css": "^2.2.1", - "normalize-path": "^2.1.1", + "acorn": "^6.4.1", + "normalize-path": "^3.0.0", + "postcss": "^7.0.16", "source-map": "^0.6.0", - "through2": "^2.0.3" + "through2": "^3.0.1" }, "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } } } }, "@gulp-sourcemaps/map-sources": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==", "dev": true, "requires": { "normalize-path": "^2.0.1", @@ -556,9 +578,9 @@ } }, "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, "agent-base": { @@ -2105,22 +2127,37 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, "requires": { - "inherits": "^2.0.3", + "inherits": "^2.0.4", "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" + "source-map-resolve": "^0.6.0" }, "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } } } }, @@ -2192,18 +2229,18 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -2510,7 +2547,7 @@ "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", "dev": true }, "diagnostics": { @@ -2928,7 +2965,7 @@ "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, "requires": { "d": "1", @@ -3042,6 +3079,23 @@ "validator": "^11.0.0" } }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + } + } + }, "ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", @@ -3866,22 +3920,22 @@ } }, "gulp-sourcemaps": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz", - "integrity": "sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", + "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", "dev": true, "requires": { - "@gulp-sourcemaps/identity-map": "1.X", - "@gulp-sourcemaps/map-sources": "1.X", - "acorn": "5.X", - "convert-source-map": "1.X", - "css": "2.X", - "debug-fabulous": "1.X", - "detect-newline": "2.X", - "graceful-fs": "4.X", - "source-map": "~0.6.0", - "strip-bom-string": "1.X", - "through2": "2.X" + "@gulp-sourcemaps/identity-map": "^2.0.1", + "@gulp-sourcemaps/map-sources": "^1.0.0", + "acorn": "^6.4.1", + "convert-source-map": "^1.0.0", + "css": "^3.0.0", + "debug-fabulous": "^1.0.0", + "detect-newline": "^2.0.0", + "graceful-fs": "^4.0.0", + "source-map": "^0.6.0", + "strip-bom-string": "^1.0.0", + "through2": "^2.0.0" }, "dependencies": { "source-map": { @@ -5477,7 +5531,7 @@ "lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "dev": true, "requires": { "es5-ext": "~0.10.2" @@ -5589,19 +5643,76 @@ } }, "memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "dependencies": { + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + } } }, "memory-fs": { @@ -7029,6 +7140,12 @@ "split": "^1.0.0" } }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -7087,6 +7204,24 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -8739,7 +8874,7 @@ "strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", "dev": true }, "strip-dirs": { @@ -9326,6 +9461,12 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", From 1bc29d71fd5ac30c88c0816c84dbe41c96a7ca6f Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 19 May 2023 14:37:55 -0700 Subject: [PATCH 171/194] passport version revert (#1144) --- api/api_sources/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/api_sources/package.json b/api/api_sources/package.json index a3cbed911..3adf131f6 100644 --- a/api/api_sources/package.json +++ b/api/api_sources/package.json @@ -98,7 +98,7 @@ "moment": "^2.24.0", "multer": "^1.4.2", "nodemailer": "^5.1.1", - "passport": "^0.6.0", + "passport": "^0.4.0", "passport-jwt": "^4.0.0", "passport-mock-strategy": "^2.0.0", "pg": "^7.11.0", From 638d169fa04edd5ed8d88993d27707564bc494f5 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 19 May 2023 15:57:18 -0700 Subject: [PATCH 172/194] console logs because local works but dev does not (#1145) --- api/api_sources/sources/AppConfig/app.config.ts | 1 + api/api_sources/sources/libs/utilities/bc.helpers.ts | 2 ++ api/api_sources/sources/server/core/base.route.controller.ts | 2 ++ 3 files changed, 5 insertions(+) diff --git a/api/api_sources/sources/AppConfig/app.config.ts b/api/api_sources/sources/AppConfig/app.config.ts index bcfefec56..32c637e4c 100644 --- a/api/api_sources/sources/AppConfig/app.config.ts +++ b/api/api_sources/sources/AppConfig/app.config.ts @@ -112,6 +112,7 @@ class AppConfiguration { */ public get certificateURL(): string { assert(process.env.APP_CERTIFICATE_URL, `No App Certificate url`); + console.log('APP_CERTIFICATE_URL ~~~~~~~ ', process.env.APP_CERTIFICATE_URL); return process.env.APP_CERTIFICATE_URL; } diff --git a/api/api_sources/sources/libs/utilities/bc.helpers.ts b/api/api_sources/sources/libs/utilities/bc.helpers.ts index 9bf99a1a0..35773099e 100644 --- a/api/api_sources/sources/libs/utilities/bc.helpers.ts +++ b/api/api_sources/sources/libs/utilities/bc.helpers.ts @@ -94,6 +94,8 @@ export class BCHelperLib { }); assert(certificate, 'No getJwtCertificate'); assert(algorithm, 'No algorithm'); + console.log(`Certificate: ~~~~~~~~ ${certificate}`); + console.log(`Algorithm: ~~~~~~~~ ${algorithm}`); return {algorithm, certificate}; } diff --git a/api/api_sources/sources/server/core/base.route.controller.ts b/api/api_sources/sources/server/core/base.route.controller.ts index c9072e92b..29d027e59 100755 --- a/api/api_sources/sources/server/core/base.route.controller.ts +++ b/api/api_sources/sources/server/core/base.route.controller.ts @@ -361,6 +361,8 @@ export class RouteController { const tag = `authHandler-(${this.apiName(req)})`; try { passport.authenticate('jwt', {session: false}, (err, user) => { + console.log('user ~~~~~~~~ ', user); + console.log('err ~~~~~~~~', err); if (err) { const msg = `Authorization fail with error ${err}`; this.commonError(401, tag, err, resp, msg); From ae47a49ac7ea0231e3831f7204c3083db3f28677 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 19 May 2023 16:52:59 -0700 Subject: [PATCH 173/194] Inspect 2.6 remove dev kc url (#1146) * console logs because local works but dev does not * remove all references to dev.loginproxy * Update app.config.ts remove console log * Update bc.helpers.ts remove console logs --- .config/config.json | 4 ++-- .github/workflows/e2e.bkp | 2 +- api/.pipeline/lib/test.api.js | 2 +- api/api_sources/sources/libs/utilities/bc.helpers.ts | 1 - app/lucy/src/app/constants/app-constants.ts | 2 +- env_config/env.docker | 4 ++-- loadTest/README.md | 2 +- loadTest/app/env.example | 2 +- loadTest/openshift/job.yml | 2 +- loadTest/openshift/pod.yml | 2 +- testing/integration/postman/DEV.postman_environment.json | 4 ++-- .../postman/lucy-api-mobile.postman_collection.json | 6 +++--- 12 files changed, 16 insertions(+), 17 deletions(-) diff --git a/.config/config.json b/.config/config.json index 87aafbd03..7f5cbf6f8 100644 --- a/.config/config.json +++ b/.config/config.json @@ -26,13 +26,13 @@ "prod": "api-invasivesbc.apps.silver.devops.gov.bc.ca" }, "certificateURL": { - "dev": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "dev": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", "test": "https://test.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", "prod": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" }, "sso": { "dev": { - "url": "https://dev.loginproxy.gov.bc.ca", + "url": "https://loginproxy.gov.bc.ca", "clientId": "inspect-bc-mussels-4817", "realm": "standard" diff --git a/.github/workflows/e2e.bkp b/.github/workflows/e2e.bkp index 73a059878..212f5f8ce 100644 --- a/.github/workflows/e2e.bkp +++ b/.github/workflows/e2e.bkp @@ -59,6 +59,6 @@ jobs: env: host: 'http://localhost:3033' with: - env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://dev.loginproxy.gov.bc.ca/auth' + env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://loginproxy.gov.bc.ca/auth' working-directory: './app/cypress-e2e' record: true \ No newline at end of file diff --git a/api/.pipeline/lib/test.api.js b/api/.pipeline/lib/test.api.js index c535f4ff7..aedf51cda 100644 --- a/api/.pipeline/lib/test.api.js +++ b/api/.pipeline/lib/test.api.js @@ -35,7 +35,7 @@ module.exports = (settings) => { 'ENVIRONMENT': phases[phase].env || 'dev', 'DB_SERVICE_NAME': `${phases[phase].name}-postgresql${phases[phase].suffix}`, 'IMAGE': imageStream.image.dockerImageReference, - 'CERTIFICATE_URL': 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', + 'CERTIFICATE_URL': 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', 'DB_MIGRATION_TYPE': phases[phase].migrationInfo.type, 'DB_CLEAN_UP': phases[phase].migrationInfo.cleanup, 'DB_SEED': phases[phase].migrationInfo.dbSeed diff --git a/api/api_sources/sources/libs/utilities/bc.helpers.ts b/api/api_sources/sources/libs/utilities/bc.helpers.ts index 35773099e..a60f9823f 100644 --- a/api/api_sources/sources/libs/utilities/bc.helpers.ts +++ b/api/api_sources/sources/libs/utilities/bc.helpers.ts @@ -88,7 +88,6 @@ export class BCHelperLib { }); } catch (error) { const message = 'Unable to parse certificate(s)'; - console.log(`${message}, error = ${error.message}`); reject(new Error(message)); } }); diff --git a/app/lucy/src/app/constants/app-constants.ts b/app/lucy/src/app/constants/app-constants.ts index b96503a44..e1e030ab9 100755 --- a/app/lucy/src/app/constants/app-constants.ts +++ b/app/lucy/src/app/constants/app-constants.ts @@ -66,7 +66,7 @@ export class AppConstants { // SSO static SSOConstants = { SSO_CLIENT_ID : `inspect-bc-mussels-4817`, - SSO_BASE_URL : `https://dev.loginproxy.gov.bc.ca`, + SSO_BASE_URL : `https://loginproxy.gov.bc.ca`, SSO_REALM_NAME : `standard`, SSO_LOGIN_REDIRECT_URI : `http://${window.location.host}`, }; diff --git a/env_config/env.docker b/env_config/env.docker index 4deddd36e..e7374676e 100644 --- a/env_config/env.docker +++ b/env_config/env.docker @@ -44,8 +44,8 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs # ------------------------------------------------------------------------------ # Mailer Config diff --git a/loadTest/README.md b/loadTest/README.md index b1da36d66..edf86213a 100644 --- a/loadTest/README.md +++ b/loadTest/README.md @@ -25,7 +25,7 @@ The __/loadTest__ directory under root contains all resources and source code fi TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details - AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms + AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 ``` diff --git a/loadTest/app/env.example b/loadTest/app/env.example index 9c3875799..4a841b541 100644 --- a/loadTest/app/env.example +++ b/loadTest/app/env.example @@ -2,6 +2,6 @@ TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details -AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms +AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 diff --git a/loadTest/openshift/job.yml b/loadTest/openshift/job.yml index 4e00381c3..3f80f8af0 100644 --- a/loadTest/openshift/job.yml +++ b/loadTest/openshift/job.yml @@ -20,7 +20,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://dev.loginproxy.gov.bc.ca/auth/realms" + value: "https://loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/loadTest/openshift/pod.yml b/loadTest/openshift/pod.yml index f6758eaa7..45ea98de5 100644 --- a/loadTest/openshift/pod.yml +++ b/loadTest/openshift/pod.yml @@ -19,7 +19,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://dev.loginproxy.gov.bc.ca/auth/realms" + value: "https://loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json index 9a0626c34..41933feb7 100644 --- a/testing/integration/postman/DEV.postman_environment.json +++ b/testing/integration/postman/DEV.postman_environment.json @@ -4,7 +4,7 @@ "values": [ { "key": "auth_host", - "value": "https://dev.loginproxy.gov.bc.ca", + "value": "https://loginproxy.gov.bc.ca", "enabled": true }, { @@ -39,7 +39,7 @@ }, { "key": "KEYCLOAK_URL", - "value": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "value": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "enabled": true }, { diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index b32e193e5..2d3dd2b59 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -1014,7 +1014,7 @@ "protocolProfileBehavior": {} }, { - "name": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "name": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "event": [ { "listen": "test", @@ -1072,7 +1072,7 @@ ] }, "url": { - "raw": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "raw": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "protocol": "https", "host": [ "sso-dev", @@ -1112,7 +1112,7 @@ "type": "text/javascript", "exec": [ "const echoPostRequest = {", - " url: 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", + " url: 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", " method: 'POST',", " header: 'Content-Type:application/x-www-form-urlencoded',", " body: {", From 4832027ec49f1c748036f65995ecb38b5be39a8c Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Tue, 23 May 2023 09:54:41 -0700 Subject: [PATCH 174/194] add error logging to debug kc gold (#1147) --- api/api_sources/sources/AppConfig/app.config.ts | 4 +++- api/api_sources/sources/libs/utilities/bc.helpers.ts | 7 +++++-- .../sources/server/core/base.route.controller.ts | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/api/api_sources/sources/AppConfig/app.config.ts b/api/api_sources/sources/AppConfig/app.config.ts index 32c637e4c..fcda940c8 100644 --- a/api/api_sources/sources/AppConfig/app.config.ts +++ b/api/api_sources/sources/AppConfig/app.config.ts @@ -3,6 +3,7 @@ */ import * as path from 'path'; import * as assert from 'assert'; +import { Logger } from '../../../api_sources/sources/server/logger'; declare const process: any; declare const __dirname: any; @@ -10,6 +11,7 @@ declare const __dirname: any; * @description Application configuration class */ class AppConfiguration { + logger: Logger; // Shared instance private static instance: AppConfiguration; @@ -112,7 +114,7 @@ class AppConfiguration { */ public get certificateURL(): string { assert(process.env.APP_CERTIFICATE_URL, `No App Certificate url`); - console.log('APP_CERTIFICATE_URL ~~~~~~~ ', process.env.APP_CERTIFICATE_URL); + this.logger.error('APP_CERTIFICATE_URL exception ', process.env.APP_CERTIFICATE_URL); return process.env.APP_CERTIFICATE_URL; } diff --git a/api/api_sources/sources/libs/utilities/bc.helpers.ts b/api/api_sources/sources/libs/utilities/bc.helpers.ts index a60f9823f..32b2e4493 100644 --- a/api/api_sources/sources/libs/utilities/bc.helpers.ts +++ b/api/api_sources/sources/libs/utilities/bc.helpers.ts @@ -23,6 +23,8 @@ import * as assert from 'assert'; import AppConfig from '../../AppConfig'; import axios from 'axios'; const getPem = require('rsa-pem-from-mod-exp'); +import { Logger } from '../../../../api_sources/sources/server/logger'; + /** * @description Require common utility module as any */ @@ -33,6 +35,7 @@ const commonUtility = require('@bcgov/nodejs-common-utils'); * @export class BCHelperLib */ export class BCHelperLib { + logger: Logger; /** * @description Get certificate for JWT token validation @@ -93,8 +96,8 @@ export class BCHelperLib { }); assert(certificate, 'No getJwtCertificate'); assert(algorithm, 'No algorithm'); - console.log(`Certificate: ~~~~~~~~ ${certificate}`); - console.log(`Algorithm: ~~~~~~~~ ${algorithm}`); + this.logger.error('certificate exception ', certificate); + this.logger.error('algorithm exception ', algorithm); return {algorithm, certificate}; } diff --git a/api/api_sources/sources/server/core/base.route.controller.ts b/api/api_sources/sources/server/core/base.route.controller.ts index 29d027e59..6177f7702 100755 --- a/api/api_sources/sources/server/core/base.route.controller.ts +++ b/api/api_sources/sources/server/core/base.route.controller.ts @@ -361,8 +361,8 @@ export class RouteController { const tag = `authHandler-(${this.apiName(req)})`; try { passport.authenticate('jwt', {session: false}, (err, user) => { - console.log('user ~~~~~~~~ ', user); - console.log('err ~~~~~~~~', err); + this.logger.error('user exception ', user); + this.logger.error('error exception', err); if (err) { const msg = `Authorization fail with error ${err}`; this.commonError(401, tag, err, resp, msg); From dea0ca5124712d55762312c6cb6960cc20bbeff1 Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Tue, 23 May 2023 10:42:41 -0700 Subject: [PATCH 175/194] Inspect 2.6 logger additions 2 (#1148) * add error logging to debug kc gold * construct logger before calling it * tweak logger construction, add error to passport.auth --- api/api_sources/sources/AppConfig/app.config.ts | 5 ++++- .../sources/libs/utilities/bc.helpers.ts | 16 +++++++++++----- .../sources/server/core/base.route.controller.ts | 3 ++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/api/api_sources/sources/AppConfig/app.config.ts b/api/api_sources/sources/AppConfig/app.config.ts index fcda940c8..95df7431b 100644 --- a/api/api_sources/sources/AppConfig/app.config.ts +++ b/api/api_sources/sources/AppConfig/app.config.ts @@ -3,7 +3,7 @@ */ import * as path from 'path'; import * as assert from 'assert'; -import { Logger } from '../../../api_sources/sources/server/logger'; +import { Logger } from '../server/logger'; declare const process: any; declare const __dirname: any; @@ -22,6 +22,8 @@ class AppConfiguration { public appName: string = process.env.PROJECT_NAME || 'lucy'; public dbs: string[] = ['templateDB']; + logger: Logger; + /** * @description Getter for shard instance * @return AppConfiguration @@ -34,6 +36,7 @@ class AppConfiguration { * @description Constructing */ constructor() { + this.logger = new Logger(this.constructor.name); this.port = (process.env.PORT || 3001); this.host = process.env.HOST || '127.0.0.1'; } diff --git a/api/api_sources/sources/libs/utilities/bc.helpers.ts b/api/api_sources/sources/libs/utilities/bc.helpers.ts index 32b2e4493..740a9f0d8 100644 --- a/api/api_sources/sources/libs/utilities/bc.helpers.ts +++ b/api/api_sources/sources/libs/utilities/bc.helpers.ts @@ -23,7 +23,7 @@ import * as assert from 'assert'; import AppConfig from '../../AppConfig'; import axios from 'axios'; const getPem = require('rsa-pem-from-mod-exp'); -import { Logger } from '../../../../api_sources/sources/server/logger'; +import { Logger } from '../../server/logger'; /** * @description Require common utility module as any @@ -35,7 +35,14 @@ const commonUtility = require('@bcgov/nodejs-common-utils'); * @export class BCHelperLib */ export class BCHelperLib { - logger: Logger; + static logger: Logger; + + /** + * @description Constructing + */ + constructor() { + BCHelperLib.logger = new Logger(this.constructor.name); + } /** * @description Get certificate for JWT token validation @@ -91,14 +98,13 @@ export class BCHelperLib { }); } catch (error) { const message = 'Unable to parse certificate(s)'; + this.logger.error('algorithm exception ', algorithm); + this.logger.error('certificate exception ', certificate); reject(new Error(message)); } }); assert(certificate, 'No getJwtCertificate'); assert(algorithm, 'No algorithm'); - this.logger.error('certificate exception ', certificate); - this.logger.error('algorithm exception ', algorithm); - return {algorithm, certificate}; } /** diff --git a/api/api_sources/sources/server/core/base.route.controller.ts b/api/api_sources/sources/server/core/base.route.controller.ts index 6177f7702..b7924fd69 100755 --- a/api/api_sources/sources/server/core/base.route.controller.ts +++ b/api/api_sources/sources/server/core/base.route.controller.ts @@ -360,9 +360,10 @@ export class RouteController { return async (req: express.Request, resp: express.Response, next: any) => { const tag = `authHandler-(${this.apiName(req)})`; try { - passport.authenticate('jwt', {session: false}, (err, user) => { + passport.authenticate('jwt', {session: false}, (err, user, errorAlpha) => { this.logger.error('user exception ', user); this.logger.error('error exception', err); + this.logger.error('errorAlpha exception', errorAlpha); if (err) { const msg = `Authorization fail with error ${err}`; this.commonError(401, tag, err, resp, msg); From 97925ac7553d25f7072c213eb2be6bd95ab3f3cf Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Tue, 23 May 2023 11:37:54 -0700 Subject: [PATCH 176/194] Changing logger responses (#1149) Removed previous logger output Added new logger output to view in kibanna Added more details to response to iOS when authentication fails. --- api/api_sources/sources/AppConfig/app.config.ts | 7 ------- api/api_sources/sources/libs/utilities/bc.helpers.ts | 8 -------- api/api_sources/sources/server/core/auth.middleware.ts | 1 + .../sources/server/core/base.route.controller.ts | 8 +++----- 4 files changed, 4 insertions(+), 20 deletions(-) diff --git a/api/api_sources/sources/AppConfig/app.config.ts b/api/api_sources/sources/AppConfig/app.config.ts index 95df7431b..f16029ab5 100644 --- a/api/api_sources/sources/AppConfig/app.config.ts +++ b/api/api_sources/sources/AppConfig/app.config.ts @@ -3,7 +3,6 @@ */ import * as path from 'path'; import * as assert from 'assert'; -import { Logger } from '../server/logger'; declare const process: any; declare const __dirname: any; @@ -11,10 +10,8 @@ declare const __dirname: any; * @description Application configuration class */ class AppConfiguration { - logger: Logger; // Shared instance private static instance: AppConfiguration; - // Instance variables public port = 0; public host = '127.0.0.1'; @@ -22,8 +19,6 @@ class AppConfiguration { public appName: string = process.env.PROJECT_NAME || 'lucy'; public dbs: string[] = ['templateDB']; - logger: Logger; - /** * @description Getter for shard instance * @return AppConfiguration @@ -36,7 +31,6 @@ class AppConfiguration { * @description Constructing */ constructor() { - this.logger = new Logger(this.constructor.name); this.port = (process.env.PORT || 3001); this.host = process.env.HOST || '127.0.0.1'; } @@ -117,7 +111,6 @@ class AppConfiguration { */ public get certificateURL(): string { assert(process.env.APP_CERTIFICATE_URL, `No App Certificate url`); - this.logger.error('APP_CERTIFICATE_URL exception ', process.env.APP_CERTIFICATE_URL); return process.env.APP_CERTIFICATE_URL; } diff --git a/api/api_sources/sources/libs/utilities/bc.helpers.ts b/api/api_sources/sources/libs/utilities/bc.helpers.ts index 740a9f0d8..f4f1156d1 100644 --- a/api/api_sources/sources/libs/utilities/bc.helpers.ts +++ b/api/api_sources/sources/libs/utilities/bc.helpers.ts @@ -23,7 +23,6 @@ import * as assert from 'assert'; import AppConfig from '../../AppConfig'; import axios from 'axios'; const getPem = require('rsa-pem-from-mod-exp'); -import { Logger } from '../../server/logger'; /** * @description Require common utility module as any @@ -35,14 +34,9 @@ const commonUtility = require('@bcgov/nodejs-common-utils'); * @export class BCHelperLib */ export class BCHelperLib { - static logger: Logger; - /** * @description Constructing */ - constructor() { - BCHelperLib.logger = new Logger(this.constructor.name); - } /** * @description Get certificate for JWT token validation @@ -98,8 +92,6 @@ export class BCHelperLib { }); } catch (error) { const message = 'Unable to parse certificate(s)'; - this.logger.error('algorithm exception ', algorithm); - this.logger.error('certificate exception ', certificate); reject(new Error(message)); } }); diff --git a/api/api_sources/sources/server/core/auth.middleware.ts b/api/api_sources/sources/server/core/auth.middleware.ts index 8623b5710..44324a3cd 100644 --- a/api/api_sources/sources/server/core/auth.middleware.ts +++ b/api/api_sources/sources/server/core/auth.middleware.ts @@ -66,6 +66,7 @@ export class ApplicationAuthMiddleware extends LoggerBase { this.app.use(passport.session()); // Get algorithm and public key const { algorithm, certificate } = await BCHelperLib.getCertificate(); + ApplicationAuthMiddleware.logger.info(`algorithm: ${algorithm}, \n certificate: ${certificate}`); const options: StrategyOptions = { jwtFromRequest : ExtractJwt.fromAuthHeaderAsBearerToken(), algorithms: [algorithm], diff --git a/api/api_sources/sources/server/core/base.route.controller.ts b/api/api_sources/sources/server/core/base.route.controller.ts index b7924fd69..230eb214e 100755 --- a/api/api_sources/sources/server/core/base.route.controller.ts +++ b/api/api_sources/sources/server/core/base.route.controller.ts @@ -360,15 +360,13 @@ export class RouteController { return async (req: express.Request, resp: express.Response, next: any) => { const tag = `authHandler-(${this.apiName(req)})`; try { - passport.authenticate('jwt', {session: false}, (err, user, errorAlpha) => { - this.logger.error('user exception ', user); - this.logger.error('error exception', err); - this.logger.error('errorAlpha exception', errorAlpha); + passport.authenticate('jwt', {session: false}, (err, user, err2) => { if (err) { const msg = `Authorization fail with error ${err}`; this.commonError(401, tag, err, resp, msg); } else if (!user) { - this.commonError(401, tag, 'Un-authorize access', resp, 'Un-authorize access (No User) check auth provider url'); + this.commonError(401, tag, 'Un-authorize access', resp, `Un-authorize access (No User) check auth provider url`); + this.logger.info(`err = ${err}, user = ${user}, second error? = ${err2}`); } else { req.user = user; next(); From 7e4ce05444911497a025c66b78fa2fae45867fe0 Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Tue, 23 May 2023 12:30:40 -0700 Subject: [PATCH 177/194] Inspect 2.6 logger additions 4 (#1150) * Changing logger responses Removed previous logger output Added new logger output to view in kibanna Added more details to response to iOS when authentication fails. * Reverting change to deployment Changed this to build off old deployment. Reverting to have updated pod. --- .github/workflows/deployStatic.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deployStatic.yml b/.github/workflows/deployStatic.yml index 49ef39387..b57533105 100644 --- a/.github/workflows/deployStatic.yml +++ b/.github/workflows/deployStatic.yml @@ -121,11 +121,11 @@ jobs: working-directory: "./api/.pipeline/" run: | npm ci - DEBUG=* npm run pre-deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run setup -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run seed -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} - DEBUG=* npm run deploy-tools -- --pr=1054 --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run pre-deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run setup -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run seed -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} + DEBUG=* npm run deploy-tools -- --pr=$BUILD_ID --env=dev --type=static --branch=${{ github.base_ref }} # Deploy the app - name: Deploy App From 4c10cccc63987184b64b909ecfe15755ec3262ab Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Tue, 23 May 2023 12:48:20 -0700 Subject: [PATCH 178/194] Inspect 2.6 logger additions 4 (#1151) * Changing logger responses Removed previous logger output Added new logger output to view in kibanna Added more details to response to iOS when authentication fails. * Reverting change to deployment Changed this to build off old deployment. Reverting to have updated pod. * Removing debug Calling ApplicationAuthMiddleware.logger caused a crash when deploying on openshift. Removing that line to assure pipeline is functioning properly. From 2523d6d680da8fc3f8ecff60a53aa66c9ed12d45 Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Tue, 23 May 2023 15:00:52 -0700 Subject: [PATCH 179/194] Inspect 2.6 logger additions 5 (#1152) * Changing logger responses Removed previous logger output Added new logger output to view in kibanna Added more details to response to iOS when authentication fails. * Reverting change to deployment Changed this to build off old deployment. Reverting to have updated pod. * Removing debug Calling ApplicationAuthMiddleware.logger caused a crash when deploying on openshift. Removing that line to assure pipeline is functioning properly. * Build Bump Added whitespace to bump build and refresh dev environment. --- api/api_sources/sources/AppConfig/app.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/api_sources/sources/AppConfig/app.config.ts b/api/api_sources/sources/AppConfig/app.config.ts index f16029ab5..feb1de1b5 100644 --- a/api/api_sources/sources/AppConfig/app.config.ts +++ b/api/api_sources/sources/AppConfig/app.config.ts @@ -1,5 +1,5 @@ /** - * Application Configuration + * Application Configuration */ import * as path from 'path'; import * as assert from 'assert'; From 117b058b623a3dd66f992add0caa3c0a3bdcb2c7 Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Tue, 23 May 2023 15:08:51 -0700 Subject: [PATCH 180/194] Inspect 2.6 logger additions 5 (#1153) * Changing logger responses Removed previous logger output Added new logger output to view in kibanna Added more details to response to iOS when authentication fails. * Reverting change to deployment Changed this to build off old deployment. Reverting to have updated pod. * Removing debug Calling ApplicationAuthMiddleware.logger caused a crash when deploying on openshift. Removing that line to assure pipeline is functioning properly. * Build Bump Added whitespace to bump build and refresh dev environment. * Removing whitespace from build bump Removing whitespace from build bump. Linter flagged as error. From cf2e5b1794bf2567229524d361a43561db67506b Mon Sep 17 00:00:00 2001 From: Christopher-walsh22 <106549296+Christopher-walsh22@users.noreply.github.com> Date: Tue, 23 May 2023 15:46:53 -0700 Subject: [PATCH 181/194] Added missing return (#1154) Added missing return from bc.helpers get certificate Updated logging output to match naming convention Removed whitespace causing linting errors --- api/api_sources/sources/AppConfig/app.config.ts | 2 +- api/api_sources/sources/libs/utilities/bc.helpers.ts | 1 + api/api_sources/sources/server/core/base.route.controller.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/api/api_sources/sources/AppConfig/app.config.ts b/api/api_sources/sources/AppConfig/app.config.ts index feb1de1b5..f16029ab5 100644 --- a/api/api_sources/sources/AppConfig/app.config.ts +++ b/api/api_sources/sources/AppConfig/app.config.ts @@ -1,5 +1,5 @@ /** - * Application Configuration + * Application Configuration */ import * as path from 'path'; import * as assert from 'assert'; diff --git a/api/api_sources/sources/libs/utilities/bc.helpers.ts b/api/api_sources/sources/libs/utilities/bc.helpers.ts index f4f1156d1..1f3600eda 100644 --- a/api/api_sources/sources/libs/utilities/bc.helpers.ts +++ b/api/api_sources/sources/libs/utilities/bc.helpers.ts @@ -97,6 +97,7 @@ export class BCHelperLib { }); assert(certificate, 'No getJwtCertificate'); assert(algorithm, 'No algorithm'); + return { algorithm, certificate }; } /** diff --git a/api/api_sources/sources/server/core/base.route.controller.ts b/api/api_sources/sources/server/core/base.route.controller.ts index 230eb214e..830148a1f 100755 --- a/api/api_sources/sources/server/core/base.route.controller.ts +++ b/api/api_sources/sources/server/core/base.route.controller.ts @@ -366,7 +366,7 @@ export class RouteController { this.commonError(401, tag, err, resp, msg); } else if (!user) { this.commonError(401, tag, 'Un-authorize access', resp, `Un-authorize access (No User) check auth provider url`); - this.logger.info(`err = ${err}, user = ${user}, second error? = ${err2}`); + this.logger.info(`err = ${err}, user = ${user}, err2 = ${err2}`); } else { req.user = user; next(); From 8dcc86f43ea37ef508aa6ec9234e4e9a8f7e163d Mon Sep 17 00:00:00 2001 From: David <62899351+davidclaveau@users.noreply.github.com> Date: Wed, 24 May 2023 10:28:13 -0700 Subject: [PATCH 182/194] Inspect 2.6 keycloak final (#1155) * add dev kc urls back * remove logging, add dev kc urls --- .config/config.json | 4 ++-- .github/workflows/e2e.bkp | 2 +- api/.pipeline/lib/test.api.js | 2 +- api/api_sources/sources/server/core/auth.middleware.ts | 1 - .../sources/server/core/base.route.controller.ts | 3 +-- app/lucy/src/app/constants/app-constants.ts | 2 +- env_config/env.docker | 4 ++-- loadTest/README.md | 2 +- loadTest/app/env.example | 2 +- loadTest/openshift/job.yml | 2 +- loadTest/openshift/pod.yml | 2 +- testing/integration/postman/DEV.postman_environment.json | 4 ++-- .../postman/lucy-api-mobile.postman_collection.json | 6 +++--- 13 files changed, 17 insertions(+), 19 deletions(-) diff --git a/.config/config.json b/.config/config.json index 7f5cbf6f8..87aafbd03 100644 --- a/.config/config.json +++ b/.config/config.json @@ -26,13 +26,13 @@ "prod": "api-invasivesbc.apps.silver.devops.gov.bc.ca" }, "certificateURL": { - "dev": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", + "dev": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", "test": "https://test.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs", "prod": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs" }, "sso": { "dev": { - "url": "https://loginproxy.gov.bc.ca", + "url": "https://dev.loginproxy.gov.bc.ca", "clientId": "inspect-bc-mussels-4817", "realm": "standard" diff --git a/.github/workflows/e2e.bkp b/.github/workflows/e2e.bkp index 212f5f8ce..73a059878 100644 --- a/.github/workflows/e2e.bkp +++ b/.github/workflows/e2e.bkp @@ -59,6 +59,6 @@ jobs: env: host: 'http://localhost:3033' with: - env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://loginproxy.gov.bc.ca/auth' + env: 'username=cypress,password=${{ secrets.CYPRESS_TEST_PASSWORD }},authRealm=standard,authClientId=inspect-bc-mussels-4817,authUrl=https://dev.loginproxy.gov.bc.ca/auth' working-directory: './app/cypress-e2e' record: true \ No newline at end of file diff --git a/api/.pipeline/lib/test.api.js b/api/.pipeline/lib/test.api.js index aedf51cda..c535f4ff7 100644 --- a/api/.pipeline/lib/test.api.js +++ b/api/.pipeline/lib/test.api.js @@ -35,7 +35,7 @@ module.exports = (settings) => { 'ENVIRONMENT': phases[phase].env || 'dev', 'DB_SERVICE_NAME': `${phases[phase].name}-postgresql${phases[phase].suffix}`, 'IMAGE': imageStream.image.dockerImageReference, - 'CERTIFICATE_URL': 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', + 'CERTIFICATE_URL': 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs', 'DB_MIGRATION_TYPE': phases[phase].migrationInfo.type, 'DB_CLEAN_UP': phases[phase].migrationInfo.cleanup, 'DB_SEED': phases[phase].migrationInfo.dbSeed diff --git a/api/api_sources/sources/server/core/auth.middleware.ts b/api/api_sources/sources/server/core/auth.middleware.ts index 44324a3cd..8623b5710 100644 --- a/api/api_sources/sources/server/core/auth.middleware.ts +++ b/api/api_sources/sources/server/core/auth.middleware.ts @@ -66,7 +66,6 @@ export class ApplicationAuthMiddleware extends LoggerBase { this.app.use(passport.session()); // Get algorithm and public key const { algorithm, certificate } = await BCHelperLib.getCertificate(); - ApplicationAuthMiddleware.logger.info(`algorithm: ${algorithm}, \n certificate: ${certificate}`); const options: StrategyOptions = { jwtFromRequest : ExtractJwt.fromAuthHeaderAsBearerToken(), algorithms: [algorithm], diff --git a/api/api_sources/sources/server/core/base.route.controller.ts b/api/api_sources/sources/server/core/base.route.controller.ts index 830148a1f..d44c9b5f7 100755 --- a/api/api_sources/sources/server/core/base.route.controller.ts +++ b/api/api_sources/sources/server/core/base.route.controller.ts @@ -360,13 +360,12 @@ export class RouteController { return async (req: express.Request, resp: express.Response, next: any) => { const tag = `authHandler-(${this.apiName(req)})`; try { - passport.authenticate('jwt', {session: false}, (err, user, err2) => { + passport.authenticate('jwt', {session: false}, (err, user) => { if (err) { const msg = `Authorization fail with error ${err}`; this.commonError(401, tag, err, resp, msg); } else if (!user) { this.commonError(401, tag, 'Un-authorize access', resp, `Un-authorize access (No User) check auth provider url`); - this.logger.info(`err = ${err}, user = ${user}, err2 = ${err2}`); } else { req.user = user; next(); diff --git a/app/lucy/src/app/constants/app-constants.ts b/app/lucy/src/app/constants/app-constants.ts index e1e030ab9..b96503a44 100755 --- a/app/lucy/src/app/constants/app-constants.ts +++ b/app/lucy/src/app/constants/app-constants.ts @@ -66,7 +66,7 @@ export class AppConstants { // SSO static SSOConstants = { SSO_CLIENT_ID : `inspect-bc-mussels-4817`, - SSO_BASE_URL : `https://loginproxy.gov.bc.ca`, + SSO_BASE_URL : `https://dev.loginproxy.gov.bc.ca`, SSO_REALM_NAME : `standard`, SSO_LOGIN_REDIRECT_URI : `http://${window.location.host}`, }; diff --git a/env_config/env.docker b/env_config/env.docker index e7374676e..4deddd36e 100644 --- a/env_config/env.docker +++ b/env_config/env.docker @@ -44,8 +44,8 @@ DB_SCHEMA=invasivesbc # ------------------------------------------------------------------------------ # KeyClock URLS # ------------------------------------------------------------------------------ -APP_CERTIFICATE_URL=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs -APP_CERTIFICATE_URL_TEST=https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs +APP_CERTIFICATE_URL_TEST=https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/certs # ------------------------------------------------------------------------------ # Mailer Config diff --git a/loadTest/README.md b/loadTest/README.md index edf86213a..b1da36d66 100644 --- a/loadTest/README.md +++ b/loadTest/README.md @@ -25,7 +25,7 @@ The __/loadTest__ directory under root contains all resources and source code fi TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details - AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms + AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 ``` diff --git a/loadTest/app/env.example b/loadTest/app/env.example index 4a841b541..9c3875799 100644 --- a/loadTest/app/env.example +++ b/loadTest/app/env.example @@ -2,6 +2,6 @@ TEST_USER=#NAME PASSWORD=#PWD # Keycloak auth details -AUTH_URL=https://loginproxy.gov.bc.ca/auth/realms +AUTH_URL=https://dev.loginproxy.gov.bc.ca/auth/realms REALM=standard CLIENT_ID=inspect-bc-mussels-4817 diff --git a/loadTest/openshift/job.yml b/loadTest/openshift/job.yml index 3f80f8af0..4e00381c3 100644 --- a/loadTest/openshift/job.yml +++ b/loadTest/openshift/job.yml @@ -20,7 +20,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://loginproxy.gov.bc.ca/auth/realms" + value: "https://dev.loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/loadTest/openshift/pod.yml b/loadTest/openshift/pod.yml index 45ea98de5..f6758eaa7 100644 --- a/loadTest/openshift/pod.yml +++ b/loadTest/openshift/pod.yml @@ -19,7 +19,7 @@ parameters: value: "0" - name: AUTH_URL description: Auth URL - value: "https://loginproxy.gov.bc.ca/auth/realms" + value: "https://dev.loginproxy.gov.bc.ca/auth/realms" - name: REALM description: Auth Realm value: standard diff --git a/testing/integration/postman/DEV.postman_environment.json b/testing/integration/postman/DEV.postman_environment.json index 41933feb7..9a0626c34 100644 --- a/testing/integration/postman/DEV.postman_environment.json +++ b/testing/integration/postman/DEV.postman_environment.json @@ -4,7 +4,7 @@ "values": [ { "key": "auth_host", - "value": "https://loginproxy.gov.bc.ca", + "value": "https://dev.loginproxy.gov.bc.ca", "enabled": true }, { @@ -39,7 +39,7 @@ }, { "key": "KEYCLOAK_URL", - "value": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "value": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "enabled": true }, { diff --git a/testing/integration/postman/lucy-api-mobile.postman_collection.json b/testing/integration/postman/lucy-api-mobile.postman_collection.json index 2d3dd2b59..b32e193e5 100644 --- a/testing/integration/postman/lucy-api-mobile.postman_collection.json +++ b/testing/integration/postman/lucy-api-mobile.postman_collection.json @@ -1014,7 +1014,7 @@ "protocolProfileBehavior": {} }, { - "name": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "name": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "event": [ { "listen": "test", @@ -1072,7 +1072,7 @@ ] }, "url": { - "raw": "https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", + "raw": "https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token", "protocol": "https", "host": [ "sso-dev", @@ -1112,7 +1112,7 @@ "type": "text/javascript", "exec": [ "const echoPostRequest = {", - " url: 'https://loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", + " url: 'https://dev.loginproxy.gov.bc.ca/auth/realms/standard/protocol/openid-connect/token',", " method: 'POST',", " header: 'Content-Type:application/x-www-form-urlencoded',", " body: {", From 8f4f9091405dd355a5279b5a01e1bdd50bca1c08 Mon Sep 17 00:00:00 2001 From: Matthew Logan <62873746+LocalNewsTV@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:20:37 -0800 Subject: [PATCH 183/194] [LUCY-255] FIX+FEATURE** Fix local docker files, add PR Template / Labeller (#1158) * update dockerfiles * Add Labeller actions and PR Template * create dev docker compose --- .github/PULL_REQUEST_TEMPLATE.md | 12 +++ .github/labeller.yml | 24 ++++++ .github/workflows/pr-labeller.yml | 15 ++++ api/api_sources/.build/Dockerfile.local | 1 + api/api_sources/.build/Dockerfile.npm | 3 +- api/api_sources/.build/Dockerfile.test | 3 +- api/docker-compose.dev.yml | 107 ++++++++++++++++++++++++ 7 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/labeller.yml create mode 100644 .github/workflows/pr-labeller.yml create mode 100644 api/docker-compose.dev.yml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..81b52effe --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,12 @@ +## Pull Request Standards + +- [ ] The title of the PR is accurate +- [ ] The title includes the type of change [`HOTFIX`, `FEATURE`, `etc`] +- [ ] The PR title includes the ticket number in format of `[LUCY-###]` +- [ ] Documentation is updated to reflect change + +# Description + +This PR includes the following proposed change(s): + +- { List all the changes made } diff --git a/.github/labeller.yml b/.github/labeller.yml new file mode 100644 index 000000000..d527297b0 --- /dev/null +++ b/.github/labeller.yml @@ -0,0 +1,24 @@ +# Auto Label Git Action Config +# 'label_name' +# - path_of_diff/where/code_lives/to_base_label_upon + +# Any change to any file in .github/workflows +'GitHub Actions': + - .github/workflows/* + +# Any change to the docker-compose file or any dockerfile in the repo +'Docker': + - '**/Dockerfile' + - '**/docker-compose*' + +# Any changes to file or subfolders in /api +'Backend': + - api/**/* + +# Any changes to file or subfolders in /app +'Frontend': + - app/**/* + +# Any change to any file in any directory with a .env in name +'Environment Variables': + - '**/*.env*' diff --git a/.github/workflows/pr-labeller.yml b/.github/workflows/pr-labeller.yml new file mode 100644 index 000000000..9c7ee682e --- /dev/null +++ b/.github/workflows/pr-labeller.yml @@ -0,0 +1,15 @@ +name: "Pull Request Labeler" +on: +- pull_request_target + +jobs: + triage: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v4 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + configuration-path: .github/labeller.yml diff --git a/api/api_sources/.build/Dockerfile.local b/api/api_sources/.build/Dockerfile.local index c82639ef6..2f1c5bb6c 100755 --- a/api/api_sources/.build/Dockerfile.local +++ b/api/api_sources/.build/Dockerfile.local @@ -1,5 +1,6 @@ FROM node:10 +RUN echo "deb http://archive.debian.org/debian stretch main" > /etc/apt/sources.list RUN apt-get update RUN apt-get install -y curl RUN npm install -g npm@6.14.12 diff --git a/api/api_sources/.build/Dockerfile.npm b/api/api_sources/.build/Dockerfile.npm index 6401c3dd4..e92a7577f 100644 --- a/api/api_sources/.build/Dockerfile.npm +++ b/api/api_sources/.build/Dockerfile.npm @@ -1,5 +1,6 @@ FROM node:10 +RUN echo "deb http://archive.debian.org/debian stretch main" > /etc/apt/sources.list RUN apt-get update RUN npm install -g npm@6.14.12 @@ -24,4 +25,4 @@ COPY ./package*.json ./ RUN npm set progress=false && npm ci VOLUME ${HOME}/node_modules -ENTRYPOINT /usr/bin/tail -f /dev/null \ No newline at end of file +ENTRYPOINT /usr/bin/tail -f /dev/null diff --git a/api/api_sources/.build/Dockerfile.test b/api/api_sources/.build/Dockerfile.test index 5684bd704..0df03c2e4 100644 --- a/api/api_sources/.build/Dockerfile.test +++ b/api/api_sources/.build/Dockerfile.test @@ -1,5 +1,6 @@ FROM node:10 +RUN echo "deb http://archive.debian.org/debian stretch main" > /etc/apt/sources.list RUN apt-get update RUN npm install -g npm@6.14.12 @@ -48,5 +49,3 @@ RUN npm run build # Entrypoint CMD [ "npm", "run", "git:run" ] - - diff --git a/api/docker-compose.dev.yml b/api/docker-compose.dev.yml new file mode 100644 index 000000000..ac2eeccc8 --- /dev/null +++ b/api/docker-compose.dev.yml @@ -0,0 +1,107 @@ +version: "3.7" +services: + ############################################################ + # Database # + ############################################################ + db: + image: ${PROJECT_NAME}-${TAG}-postgress-img + container_name: ${PROJECT_NAME}-${TAG}-db + build: + context: ./.docker/db + dockerfile: Dockerfile.local + ports: + - ${DB_PORT}:${DB_PORT} + environment: + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASS} + - POSTGRES_DB=${DB_DATABASE} + - PORT=${DB_PORT} + networks: + - local-network + volumes: + - postgres:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-h", "localhost", "-p", "5432", "-U", "postgres"] + interval: 10s + timeout: 5s + retries: 3 + ############################################################ + # API # + ############################################################ + app_api: + platform: linux/x86_64 + image: ${PROJECT_NAME}-${TAG}-api-img + container_name: ${PROJECT_NAME}-${TAG}-api + build: + context: ./api_sources + dockerfile: .build/Dockerfile.local + ports: + - ${API_PORT}:${API_PORT} + environment: + - PORT=${API_PORT} + - DB_HOST=${DB_HOST} + - DB_USER=${DB_USER} + - DB_PASS=${DB_PASS} + - DB_PORT=${DB_PORT} + - DB_DATABASE=${DB_DATABASE} + - APP_CERTIFICATE_URL=${APP_CERTIFICATE_URL} + - APP_CERTIFICATE_URL_TEST=${APP_CERTIFICATE_URL_TEST} + - VERSION=${VERSION} + - ENVIRONMENT=local + - DB_MIGRATION_TYPE=normal + - DB_SEED=yes + - DB_CLEAN_UP=none + - APP_EMAIL_SENDER=${APP_EMAIL_SENDER} + - APP_EMAIL_SENDER_PWD=${APP_EMAIL_SENDER_PWD} + - APP_EMAIL_TEST_RECEIVER=${APP_EMAIL_TEST_RECEIVER} + - APP_REPORT_RECEIVER=${APP_REPORT_RECEIVER} + volumes: + - ./api_sources:/opt/app-root/src + - npmcache:/opt/app-root/src/node_modules + networks: + - local-network + depends_on: + db: + condition: service_healthy + command: ["npm", "run", "hotload"] + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:${API_PORT}/api/misc/version"] + interval: 30s + timeout: 10s + retries: 5 + + app_dependency: + image: ${PROJECT_NAME}-${TAG}-api-dep-img + container_name: ${PROJECT_NAME}-${TAG}-api-dep + build: + context: ./api_sources + dockerfile: .build/Dockerfile.npm + volumes: + - npmcache:/opt/app-root/src/node_modules + ############################################################ + # PGAdmin # + ############################################################ + pgadmin: + container_name: pgadmin + image: dpage/pgadmin4 + ports: + - 5050:80 + environment: + PGADMIN_DEFAULT_PASSWORD: admin + PGADMIN_DEFAULT_EMAIL: admin@invasives.com + networks: + - local-network + + +############################################################ +# Network/Volumes # +############################################################ +networks: + local-network: + driver: bridge + +volumes: + postgres: + name: ${PROJECT_NAME}-${TAG}-vol-postgres + npmcache: + name: ${PROJECT_NAME}-${TAG}-vol-npmcache From b3ff4a8180444c2b027bb432cb9c323d34a63abc Mon Sep 17 00:00:00 2001 From: Dave <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 15 Dec 2023 09:42:55 -0800 Subject: [PATCH 184/194] update init migration to add major_cities, seed data (#1159) --- .../schema-files/majorCities.schema.yaml | 16 +- .../MajorCitySchema/MajorCitySchema-init.sql | 1980 +++++++++++++++++ .../MajorCitySchema/MajorCitySchema.sql | 19 +- .../1572894977602-MusselAppDatabase.ts | 11 +- 4 files changed, 1998 insertions(+), 28 deletions(-) create mode 100644 api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema-init.sql diff --git a/api/api_sources/schema-files/majorCities.schema.yaml b/api/api_sources/schema-files/majorCities.schema.yaml index dbed00933..56a9c387d 100644 --- a/api/api_sources/schema-files/majorCities.schema.yaml +++ b/api/api_sources/schema-files/majorCities.schema.yaml @@ -71,21 +71,7 @@ schemas: name: active comment: Boolean flag to check, the record is active or not. definition: BOOLEAN NOT NULL DEFAULT TRUE - # ## -- columns - # imports: - # init: - # fileName: MajorCities.csv - # allColumnsExcept: - # - active - # ocean: - # fileName: WaterBodyOcean.csv - # allColumnsExcept: - # - active - # june2020: - # fileName: WaterBodiesJune2020.csv - # allColumnsExcept: - # - active - # ## -- + ## -- diff --git a/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema-init.sql b/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema-init.sql new file mode 100644 index 000000000..5972c6589 --- /dev/null +++ b/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema-init.sql @@ -0,0 +1,1980 @@ +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Airdrie (Alberta CAN)','Airdrie',-114.009030,51.289940,'CAN','Alberta',' CA-AB ',' Highwood River ',85.8,NULL,NULL,'','',true), + ('Athabasca (Alberta CAN)','Athabasca',-113.310190,54.696150,'CAN','Alberta',' CA-AB ',' Calling River ',54.7,NULL,NULL,'','',true), + ('Banff (Alberta CAN)','Banff',-115.558710,51.288700,'CAN','Alberta',' CA-AB ',' Rock Isle Lake ',29.6,NULL,NULL,'','',true), + ('Barrhead (Alberta CAN)','Barrhead',-114.366340,54.158350,'CAN','Alberta',' CA-AB ',' Lac Ste Anne ',49.7,NULL,NULL,'','',true), + ('Bonnyville (Alberta CAN)','Bonnyville',-110.781010,54.283500,'CAN','Alberta',' CA-AB ',' Frog Lake ',50.2,NULL,NULL,'','',true), + ('Brooks (Alberta CAN)','Brooks',-111.879560,50.522690,'CAN','Alberta',' CA-AB ',' Berry Creek ',84.6,NULL,NULL,'','',true), + ('Calgary (Alberta CAN)','Calgary',-114.126670,51.039460,'CAN','Alberta',' CA-AB ',' Highwood River ',56.8,NULL,NULL,'','',true), + ('Camrose (Alberta CAN)','Camrose',-112.843210,53.027650,'CAN','Alberta',' CA-AB ',' North Saskatchewan ',33.0,NULL,NULL,'','',true), + ('Cardston (Alberta CAN)','Cardston',-113.292820,49.172960,'CAN','Alberta',' CA-AB ',' St Mary Reservoir ',16.8,NULL,NULL,'','',true), + ('Claresholm (Alberta CAN)','Claresholm',-113.618440,50.025120,'CAN','Alberta',' CA-AB ',' Oldman River ',34.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Cold Lake (Alberta CAN)','Cold Lake',-110.155820,54.428340,'CAN','Alberta',' CA-AB ',' Beaver ',26.0,NULL,NULL,'','',true), + ('Crowsnest Pass (Alberta CAN)','Crowsnest Pass',-114.624590,49.622690,'CAN','Alberta',' CA-AB ',' Phillipps Lake ',3.5,NULL,NULL,'','',true), + ('Drayton Valley (Alberta CAN)','Drayton Valley',-114.972770,53.308780,'CAN','Alberta',' CA-AB ',' Lobstick River ',38.1,NULL,NULL,'','',true), + ('Drumheller (Alberta CAN)','Drumheller',-112.708590,51.480330,'CAN','Alberta',' CA-AB ',' Sullivan Lake ',79.6,NULL,NULL,'','',true), + ('Edmonton (Alberta CAN)','Edmonton',-113.520980,53.584690,'CAN','Alberta',' CA-AB ',' Beaverhill Creek ',57.8,NULL,NULL,'','',true), + ('Edson (Alberta CAN)','Edson',-116.384110,53.620460,'CAN','Alberta',' CA-AB ',' McLeod River ',28.6,NULL,NULL,'','',true), + ('Fairview (Alberta CAN)','Fairview',-118.333170,56.060480,'CAN','Alberta',' CA-AB ',' Notikewin River ',103.6,NULL,NULL,'','',true), + ('Fort Chipewyan (Alberta CAN)','Fort Chipewyan',-111.080500,58.775460,'CAN','Alberta',' CA-AB ',' Slave River ',22.4,NULL,NULL,'','',true), + ('Fort Macleod (Alberta CAN)','Fort Macleod',-113.404710,49.712310,'CAN','Alberta',' CA-AB ',' Oldman River ',11.7,NULL,NULL,'','',true), + ('Fort McMurray (Alberta CAN)','Fort McMurray',-111.389750,56.700010,'CAN','Alberta',' CA-AB ',' Loon River ',39.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Fort Vermilion (Alberta CAN)','Fort Vermilion',-116.064040,58.399760,'CAN','Alberta',' CA-AB ',' Ponton River ',39.5,NULL,NULL,'','',true), + ('Fox Creek (Alberta CAN)','Fox Creek',-116.794730,54.390940,'CAN','Alberta',' CA-AB ',' Little Smoky River ',52.2,NULL,NULL,'','',true), + ('Fox Lake (Alberta CAN)','Fox Lake',-114.517080,58.473750,'CAN','Alberta',' CA-AB ',' Wentzel Lake ',63.1,NULL,NULL,'','',true), + ('Grande Cache (Alberta CAN)','Grande Cache',-119.117360,53.858980,'CAN','Alberta',' CA-AB ',' Kakwa River ',49.7,NULL,NULL,'','',true), + ('Grande Prairie (Alberta CAN)','Grande Prairie',-118.830320,55.218790,'CAN','Alberta',' CA-AB ',' Smoky River ',50.8,NULL,NULL,'','',true), + ('Hanna (Alberta CAN)','Hanna',-111.999770,51.700070,'CAN','Alberta',' CA-AB ',' Sullivan Lake ',36.7,NULL,NULL,'','',true), + ('High Level (Alberta CAN)','High Level',-117.226720,58.587710,'CAN','Alberta',' CA-AB ',' Ponton River ',68.1,NULL,NULL,'','',true), + ('High Prairie (Alberta CAN)','High Prairie',-116.474970,55.436070,'CAN','Alberta',' CA-AB ',' Snipe Lake ',38.1,NULL,NULL,'','',true), + ('High River (Alberta CAN)','High River',-113.868330,50.619550,'CAN','Alberta',' CA-AB ',' Highwood River ',35.4,NULL,NULL,'','',true), + ('Hinton (Alberta CAN)','Hinton',-117.635720,53.334430,'CAN','Alberta',' CA-AB ',' McLeod River ',62.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Innisfail (Alberta CAN)','Innisfail',-113.845750,52.062990,'CAN','Alberta',' CA-AB ',' Blindman River ',39.8,NULL,NULL,'','',true), + ('Jasper (Alberta CAN)','Jasper',-118.130300,52.917620,'CAN','Alberta',' CA-AB ',' Portal Lake ',22.0,NULL,NULL,'','',true), + ('La Crete (Alberta CAN)','La Crete',-116.477880,58.233150,'CAN','Alberta',' CA-AB ',' Ponton River ',62.1,NULL,NULL,'','',true), + ('Lac La Biche (Alberta CAN)','Lac La Biche',-111.986580,54.775110,'CAN','Alberta',' CA-AB ',' Lac la Biche ',10.2,NULL,NULL,'','',true), + ('Lacombe (Alberta CAN)','Lacombe',-113.697820,52.527410,'CAN','Alberta',' CA-AB ',' Clearwater River ',19.7,NULL,NULL,'','',true), + ('Leduc (Alberta CAN)','Leduc',-113.529430,53.306880,'CAN','Alberta',' CA-AB ',' Beaverhill Creek ',72.8,NULL,NULL,'','',true), + ('Lethbridge (Alberta CAN)','Lethbridge',-112.769910,49.709840,'CAN','Alberta',' CA-AB ',' Oldman River ',39.6,NULL,NULL,'','',true), + ('Lloydminster (Alberta CAN)','Lloydminster',-110.050420,53.286570,'CAN','Alberta',' CA-AB ',' Frog Lake ',72.9,NULL,NULL,'','',true), + ('Manning (Alberta CAN)','Manning',-117.667900,56.908700,'CAN','Alberta',' CA-AB ',' Notikewin River ',42.2,NULL,NULL,'','',true), + ('Medicine Hat (Alberta CAN)','Medicine Hat',-110.650860,50.025400,'CAN','Alberta',' CA-AB ',' Pakowki Lake ',82.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Milk River (Alberta CAN)','Milk River',-112.081950,49.112940,'CAN','Alberta',' CA-AB ',' Cut Bank Creek ',60.5,NULL,NULL,'','',true), + ('Oyen (Alberta CAN)','Oyen',-110.502590,51.338270,'CAN','Alberta',' CA-AB ',' South Saskatchewan ',39.7,NULL,NULL,'','',true), + ('Peace River (Alberta CAN)','Peace River',-117.270870,56.242360,'CAN','Alberta',' CA-AB ',' Cadotte River ',46.6,NULL,NULL,'','',true), + ('Pincher Creek (Alberta CAN)','Pincher Creek',-113.892320,49.466820,'CAN','Alberta',' CA-AB ',' Belly River ',34.8,NULL,NULL,'','',true), + ('Ponoka (Alberta CAN)','Ponoka',-113.548380,52.746080,'CAN','Alberta',' CA-AB ',' Clearwater River ',12.1,NULL,NULL,'','',true), + ('Provost (Alberta CAN)','Provost',-110.144910,52.360830,'CAN','Alberta',' CA-AB ',' Ribstone Creek ',46.4,NULL,NULL,'','',true), + ('Rainbow Lake (Alberta CAN)','Rainbow Lake',-119.364900,58.498040,'CAN','Alberta',' CA-AB ',' Little Hay River ',39.9,NULL,NULL,'','',true), + ('Red Deer (Alberta CAN)','Red Deer',-113.786280,52.271540,'CAN','Alberta',' CA-AB ',' Blindman River ',20.2,NULL,NULL,'','',true), + ('Rocky Mountain House (Alberta CAN)','Rocky Mountain House',-114.875980,52.421060,'CAN','Alberta',' CA-AB ',' Medicine River ',30.1,NULL,NULL,'','',true), + ('Slave Lake (Alberta CAN)','Slave Lake',-114.681180,55.266040,'CAN','Alberta',' CA-AB ',' Athabasca ',53.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('St Paul (Alberta CAN)','St Paul',-111.260500,54.081630,'CAN','Alberta',' CA-AB ',' Frog Lake ',64.0,NULL,NULL,'','',true), + ('Stettler (Alberta CAN)','Stettler',-112.719880,52.350600,'CAN','Alberta',' CA-AB ',' Buffalo Lake ',19.8,NULL,NULL,'','',true), + ('Swan Hills (Alberta CAN)','Swan Hills',-115.437120,54.762950,'CAN','Alberta',' CA-AB ',' Lesser Slave Lake ',76.6,NULL,NULL,'','',true), + ('Taber (Alberta CAN)','Taber',-112.106690,49.783290,'CAN','Alberta',' CA-AB ',' St Mary River ',82.4,NULL,NULL,'','',true), + ('Valleyview (Alberta CAN)','Valleyview',-117.372210,55.036980,'CAN','Alberta',' CA-AB ',' Little Smoky River ',34.2,NULL,NULL,'','',true), + ('Vegreville (Alberta CAN)','Vegreville',-112.044480,53.507760,'CAN','Alberta',' CA-AB ',' Beaverhill Creek ',47.7,NULL,NULL,'','',true), + ('Vermilion (Alberta CAN)','Vermilion',-110.921180,53.337770,'CAN','Alberta',' CA-AB ',' Battle River ',68.9,NULL,NULL,'','',true), + ('Wabasca (Alberta CAN)','Wabasca',-113.809660,55.991610,'CAN','Alberta',' CA-AB ',' North Wabasca Lake ',9.5,NULL,NULL,'','',true), + ('Wainwright (Alberta CAN)','Wainwright',-110.835470,52.800640,'CAN','Alberta',' CA-AB ',' Ribstone Creek ',29.0,NULL,NULL,'','',true), + ('Westlock (Alberta CAN)','Westlock',-113.843110,54.151400,'CAN','Alberta',' CA-AB ',' Lac Ste Anne ',60.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Wetaskiwin (Alberta CAN)','Wetaskiwin',-113.414860,52.988060,'CAN','Alberta',' CA-AB ',' Clearwater River ',38.4,NULL,NULL,'','',true), + ('Whitecourt (Alberta CAN)','Whitecourt',-115.630170,54.137190,'CAN','Alberta',' CA-AB ',' Chip Lake ',57.7,NULL,NULL,'','',true), + ('100 Mile House (British Columbia CAN)','100 Mile House',-121.295560,51.642780,'CAN','British Columbia',' CA-BC ',' Mud Lake ',1.9,NULL,NULL,'','',true), + ('Abbotsford (British Columbia CAN)','Abbotsford',-122.329170,49.052220,'CAN','British Columbia',' CA-BC ',' Mill Lake ',1.6,NULL,NULL,'','',true), + ('Alert Bay (British Columbia CAN)','Alert Bay',-126.927780,50.583890,'CAN','British Columbia',' CA-BC ',' Nimpkish River ',4.3,NULL,NULL,'','',true), + ('Anmore (British Columbia CAN)','Anmore',-122.856390,49.314440,'CAN','British Columbia',' CA-BC ',' Buntzen Lake ',1.8,NULL,NULL,'','',true), + ('Armstrong (British Columbia CAN)','Armstrong',-119.196670,50.448330,'CAN','British Columbia',' CA-BC ',' Otter Lake ',6.0,NULL,NULL,'','',true), + ('Ashcroft (British Columbia CAN)','Ashcroft',-121.283610,50.721390,'CAN','British Columbia',' CA-BC ',' Bonaparte River ',2.6,NULL,NULL,'','',true), + ('Barriere (British Columbia CAN)','Barriere',-120.123610,51.179720,'CAN','British Columbia',' CA-BC ',' Barriere River ',1.2,NULL,NULL,'','',true), + ('Belcarra (British Columbia CAN)','Belcarra',-122.915000,49.313610,'CAN','British Columbia',' CA-BC ',' Sasamat Lake ',2.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Bowen Island (British Columbia CAN)','Bowen Island',-123.344170,49.379720,'CAN','British Columbia',' CA-BC ',' Killarney Lake ',1.6,NULL,NULL,'','',true), + ('Burnaby (British Columbia CAN)','Burnaby',-122.972780,49.242780,'CAN','British Columbia',' CA-BC ',' Deer Lake ',0.7,NULL,NULL,'','',true), + ('Burns Lake (British Columbia CAN)','Burns Lake',-125.764440,54.230280,'CAN','British Columbia',' CA-BC ',' Lomond Loch ',1.6,NULL,NULL,'','',true), + ('Cache Creek (British Columbia CAN)','Cache Creek',-121.323330,50.811940,'CAN','British Columbia',' CA-BC ',' McLean Lake ',6.7,NULL,NULL,'','',true), + ('Campbell River (British Columbia CAN)','Campbell River',-125.243610,50.023060,'CAN','British Columbia',' CA-BC ',' Campbell River ',3.0,NULL,NULL,'','',true), + ('Canal Flats (British Columbia CAN)','Canal Flats',-115.808890,50.160280,'CAN','British Columbia',' CA-BC ',' Sun Lake ',4.9,NULL,NULL,'','',true), + ('Castlegar (British Columbia CAN)','Castlegar',-117.666940,49.324440,'CAN','British Columbia',' CA-BC ',' Kootenay River ',1.5,NULL,NULL,'','',true), + ('Central Saanich (British Columbia CAN)','Central Saanich',-123.420830,48.594440,'CAN','British Columbia',' CA-BC ',' Quarry Lake ',4.5,NULL,NULL,'','',true), + ('Chase (British Columbia CAN)','Chase',-119.686110,50.819170,'CAN','British Columbia',' CA-BC ',' Kosta Lake ',3.6,NULL,NULL,'','',true), + ('Chetwynd (British Columbia CAN)','Chetwynd',-121.638330,55.695830,'CAN','British Columbia',' CA-BC ',' Sukunka River ',9.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Chilliwack (British Columbia CAN)','Chilliwack',-121.950830,49.157780,'CAN','British Columbia',' CA-BC ',' Little Chilliwack River ',2.1,NULL,NULL,'','',true), + ('Clearwater (British Columbia CAN)','Clearwater',-120.032500,51.645560,'CAN','British Columbia',' CA-BC ',' Dutch Lake ',1.8,NULL,NULL,'','',true), + ('Clinton (British Columbia CAN)','Clinton',-121.586670,51.091670,'CAN','British Columbia',' CA-BC ',' Duck Lakes ',1.7,NULL,NULL,'','',true), + ('Coldstream (British Columbia CAN)','Coldstream',-119.230000,50.223890,'CAN','British Columbia',' CA-BC ',' Deep Lake ',2.7,NULL,NULL,'','',true), + ('Colwood (British Columbia CAN)','Colwood',-123.493330,48.423610,'CAN','British Columbia',' CA-BC ',' Colwood Lake ',2.1,NULL,NULL,'','',true), + ('Comox (British Columbia CAN)','Comox',-124.927780,49.672780,'CAN','British Columbia',' CA-BC ',' Trent River ',3.2,NULL,NULL,'','',true), + ('Coquitlam (British Columbia CAN)','Coquitlam',-122.793610,49.284170,'CAN','British Columbia',' CA-BC ',' Lafarge Lake ',0.5,NULL,NULL,'','',true), + ('Courtenay (British Columbia CAN)','Courtenay',-124.995830,49.689440,'CAN','British Columbia',' CA-BC ',' Puntledge River ',0.7,NULL,NULL,'','',true), + ('Cranbrook (British Columbia CAN)','Cranbrook',-115.746940,49.508060,'CAN','British Columbia',' CA-BC ',' Sylvan Lake ',2.0,NULL,NULL,'','',true), + ('Creston (British Columbia CAN)','Creston',-116.513060,49.097500,'CAN','British Columbia',' CA-BC ',' Goat River ',3.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Cumberland (British Columbia CAN)','Cumberland',-125.032500,49.618610,'CAN','British Columbia',' CA-BC ',' Teal Lake ',1.8,NULL,NULL,'','',true), + ('Dawson Creek (British Columbia CAN)','Dawson Creek',-120.235560,55.760560,'CAN','British Columbia',' CA-BC ',' McWaters Lake ',16.3,NULL,NULL,'','',true), + ('Digby (Nova Scotia CAN)','Digby',-65.776980,44.600200,'CAN','Nova Scotia',' CA-NS ',' Lake Rossignol ',69.1,NULL,NULL,'','',true), + ('Delta (British Columbia CAN)','Delta',-123.058610,49.084720,'CAN','British Columbia',' CA-BC ',' Fraser River ',10.3,NULL,NULL,'','',true), + ('Duncan (British Columbia CAN)','Duncan',-123.708060,48.778610,'CAN','British Columbia',' CA-BC ',' Somenos Lake ',2.5,NULL,NULL,'','',true), + ('Elkford (British Columbia CAN)','Elkford',-114.921670,50.024440,'CAN','British Columbia',' CA-BC ',' Fording River ',16.1,NULL,NULL,'','',true), + ('Enderby (British Columbia CAN)','Enderby',-119.139440,50.550560,'CAN','British Columbia',' CA-BC ',' Willshore Lake ',6.1,NULL,NULL,'','',true), + ('Esquimalt (British Columbia CAN)','Esquimalt',-123.414440,48.429720,'CAN','British Columbia',' CA-BC ',' Colquitz River ',3.3,NULL,NULL,'','',true), + ('Fernie (British Columbia CAN)','Fernie',-115.062780,49.504170,'CAN','British Columbia',' CA-BC ',' Island Lake ',8.3,NULL,NULL,'','',true), + ('Fort St James (British Columbia CAN)','Fort St James',-124.259170,54.444440,'CAN','British Columbia',' CA-BC ',' Necoslie River ',1.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Fort St John (British Columbia CAN)','Fort St John',-120.846670,56.252500,'CAN','British Columbia',' CA-BC ',' Moberly River ',7.7,NULL,NULL,'','',true), + ('Fraser Lake (British Columbia CAN)','Fraser Lake',-124.843890,54.060280,'CAN','British Columbia',' CA-BC ',' Mudhole Lake ',2.5,NULL,NULL,'','',true), + ('Fruitvale (British Columbia CAN)','Fruitvale',-117.542780,49.115000,'CAN','British Columbia',' CA-BC ',' Kearns Lake ',8.6,NULL,NULL,'','',true), + ('Gibsons (British Columbia CAN)','Gibsons',-123.508890,49.400280,'CAN','British Columbia',' CA-BC ',' Josephine Lake ',10.4,NULL,NULL,'','',true), + ('Gold River (British Columbia CAN)','Gold River',-126.046940,49.781390,'CAN','British Columbia',' CA-BC ',' Heber River ',0.9,NULL,NULL,'','',true), + ('Golden (British Columbia CAN)','Golden',-116.964720,51.297780,'CAN','British Columbia',' CA-BC ',' Kicking Horse River ',1.9,NULL,NULL,'','',true), + ('Grand Forks (British Columbia CAN)','Grand Forks',-118.439170,49.031110,'CAN','British Columbia',' CA-BC ',' Granby River ',0.5,NULL,NULL,'','',true), + ('Granisle (British Columbia CAN)','Granisle',-126.206670,54.884720,'CAN','British Columbia',' CA-BC ',' Fulton River ',8.7,NULL,NULL,'','',true), + ('Greenwood (British Columbia CAN)','Greenwood',-118.676390,49.088330,'CAN','British Columbia',' CA-BC ',' Marshall Lake ',5.9,NULL,NULL,'','',true), + ('Harrison Hot Springs (British Columbia CAN)','Harrison Hot Springs',-121.784440,49.298890,'CAN','British Columbia',' CA-BC ',' Campbell Lake ',2.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Hazelton (British Columbia CAN)','Hazelton',-127.675560,55.255830,'CAN','British Columbia',' CA-BC ',' Bulkley River ',1.1,NULL,NULL,'','',true), + ('Highlands (British Columbia CAN)','Highlands',-123.511940,48.480560,'CAN','British Columbia',' CA-BC ',' Matson Lake ',0.7,NULL,NULL,'','',true), + ('Hope (British Columbia CAN)','Hope',-121.441390,49.380000,'CAN','British Columbia',' CA-BC ',' Coquihalla River ',1.5,NULL,NULL,'','',true), + ('Houston (British Columbia CAN)','Houston',-126.648330,54.398330,'CAN','British Columbia',' CA-BC ',' Mathews Lake ',6.1,NULL,NULL,'','',true), + ('Hudsons Hope (British Columbia CAN)','Hudsons Hope',-121.913610,56.025830,'CAN','British Columbia',' CA-BC ',' Rene Lake ',10.2,NULL,NULL,'','',true), + ('Invermere (British Columbia CAN)','Invermere',-116.030560,50.505830,'CAN','British Columbia',' CA-BC ',' Dorothy Lake ',0.9,NULL,NULL,'','',true), + ('Kamloops (British Columbia CAN)','Kamloops',-120.339440,50.675830,'CAN','British Columbia',' CA-BC ',' South Thompson River ',0.5,NULL,NULL,'','',true), + ('Kaslo (British Columbia CAN)','Kaslo',-116.905000,49.910560,'CAN','British Columbia',' CA-BC ',' Kaslo River ',0.7,NULL,NULL,'','',true), + ('Kelowna (British Columbia CAN)','Kelowna',-119.495560,49.888060,'CAN','British Columbia',' CA-BC ',' Okanagan Lake ',3.7,NULL,NULL,'','',true), + ('Kent (British Columbia CAN)','Kent',-121.762500,49.238060,'CAN','British Columbia',' CA-BC ',' Cheam Lake ',5.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Keremeos (British Columbia CAN)','Keremeos',-119.829720,49.204720,'CAN','British Columbia',' CA-BC ',' Ashnola River ',10.6,NULL,NULL,'','',true), + ('Kimberley (British Columbia CAN)','Kimberley',-115.981670,49.685000,'CAN','British Columbia',' CA-BC ',' Elmer Lake ',2.0,NULL,NULL,'','',true), + ('Kitimat (British Columbia CAN)','Kitimat',-128.652220,54.053330,'CAN','British Columbia',' CA-BC ',' Kitimat River ',4.8,NULL,NULL,'','',true), + ('Ladysmith (British Columbia CAN)','Ladysmith',-123.815560,48.993330,'CAN','British Columbia',' CA-BC ',' Heart Lake ',2.9,NULL,NULL,'','',true), + ('Lake Country (British Columbia CAN)','Lake Country',-119.402500,50.030280,'CAN','British Columbia',' CA-BC ',' Ellison Lake ',4.2,NULL,NULL,'','',true), + ('Lake Cowichan (British Columbia CAN)','Lake Cowichan',-124.056390,48.825830,'CAN','British Columbia',' CA-BC ',' Kwassin Lake ',1.5,NULL,NULL,'','',true), + ('Langford (British Columbia CAN)','Langford',-123.504440,48.449720,'CAN','British Columbia',' CA-BC ',' Florence Lake ',1.2,NULL,NULL,'','',true), + ('Langley (British Columbia CAN)','Langley',-122.658060,49.102500,'CAN','British Columbia',' CA-BC ',' Salmon River ',9.8,NULL,NULL,'','',true), + ('Langley (British Columbia CAN)','Langley',-122.659720,49.120280,'CAN','British Columbia',' CA-BC ',' Salmon River ',8.3,NULL,NULL,'','',true), + ('Lantzville (British Columbia CAN)','Lantzville',-124.074440,49.250560,'CAN','British Columbia',' CA-BC ',' Green Lake ',2.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Lillooet (British Columbia CAN)','Lillooet',-121.933610,50.693890,'CAN','British Columbia',' CA-BC ',' Seton River ',1.5,NULL,NULL,'','',true), + ('Lions Bay (British Columbia CAN)','Lions Bay',-123.235280,49.458610,'CAN','British Columbia',' CA-BC ',' Enchantment Lake ',4.9,NULL,NULL,'','',true), + ('Logan Lake (British Columbia CAN)','Logan Lake',-120.813330,50.494440,'CAN','British Columbia',' CA-BC ',' Logan Lake ',0.5,NULL,NULL,'','',true), + ('Lumby (British Columbia CAN)','Lumby',-118.961940,50.250830,'CAN','British Columbia',' CA-BC ',' Rawlings Lake ',6.6,NULL,NULL,'','',true), + ('Lytton (British Columbia CAN)','Lytton',-121.581390,50.231110,'CAN','British Columbia',' CA-BC ',' Thompson River ',0.5,NULL,NULL,'','',true), + ('Mackenzie (British Columbia CAN)','Mackenzie',-123.092780,55.324440,'CAN','British Columbia',' CA-BC ',' Tom and Eunice Lakes ',2.6,NULL,NULL,'','',true), + ('Maple Ridge (British Columbia CAN)','Maple Ridge',-122.598890,49.220000,'CAN','British Columbia',' CA-BC ',' Salmon River ',4.9,NULL,NULL,'','',true), + ('Masset (British Columbia CAN)','Masset',-132.146670,54.011110,'CAN','British Columbia',' CA-BC ',' Hancock River ',4.1,NULL,NULL,'','',true), + ('McBride (British Columbia CAN)','McBride',-120.163890,53.304170,'CAN','British Columbia',' CA-BC ',' Horseshoe Lake ',2.0,NULL,NULL,'','',true), + ('Merritt (British Columbia CAN)','Merritt',-120.788330,50.112500,'CAN','British Columbia',' CA-BC ',' Coldwater River ',1.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Metchosin (British Columbia CAN)','Metchosin',-123.535830,48.379170,'CAN','British Columbia',' CA-BC ',' Blinkhorn Lake ',3.1,NULL,NULL,'','',true), + ('Midway (British Columbia CAN)','Midway',-118.778330,49.008330,'CAN','British Columbia',' CA-BC ',' Davis Lake ',12.9,NULL,NULL,'','',true), + ('Mission (British Columbia CAN)','Mission',-122.283890,49.159170,'CAN','British Columbia',' CA-BC ',' Hatzic Lake ',3.2,NULL,NULL,'','',true), + ('Montrose (British Columbia CAN)','Montrose',-117.594170,49.078890,'CAN','British Columbia',' CA-BC ',' Pend dOreille River ',8.5,NULL,NULL,'','',true), + ('Nakusp (British Columbia CAN)','Nakusp',-117.797500,50.239170,'CAN','British Columbia',' CA-BC ',' Twin Lakes ',2.3,NULL,NULL,'','',true), + ('Nanaimo (British Columbia CAN)','Nanaimo',-123.938060,49.163890,'CAN','British Columbia',' CA-BC ',' Millstone River ',1.0,NULL,NULL,'','',true), + ('Nelson (British Columbia CAN)','Nelson',-117.295830,49.493330,'CAN','British Columbia',' CA-BC ',' Cottonwood Lake ',7.8,NULL,NULL,'','',true), + ('New Denver (British Columbia CAN)','New Denver',-117.377220,49.991390,'CAN','British Columbia',' CA-BC ',' Hoben Lakes ',9.0,NULL,NULL,'','',true), + ('New Hazelton (British Columbia CAN)','New Hazelton',-127.586940,55.243330,'CAN','British Columbia',' CA-BC ',' Ross Lake ',4.5,NULL,NULL,'','',true), + ('New Westminster (British Columbia CAN)','New Westminster',-122.910560,49.206670,'CAN','British Columbia',' CA-BC ',' Brunette River ',2.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('North Cowichan (British Columbia CAN)','North Cowichan',-123.719720,48.824720,'CAN','British Columbia',' CA-BC ',' Sollys Lake ',2.8,NULL,NULL,'','',true), + ('North Saanich (British Columbia CAN)','North Saanich',-123.432220,48.656390,'CAN','British Columbia',' CA-BC ',' Hutchinson Lake ',10.5,NULL,NULL,'','',true), + ('North Vancouver (British Columbia CAN)','North Vancouver',-123.073890,49.320560,'CAN','British Columbia',' CA-BC ',' Seymour River ',4.1,NULL,NULL,'','',true), + ('North Vancouver (British Columbia CAN)','North Vancouver',-123.078060,49.336110,'CAN','British Columbia',' CA-BC ',' Capilano River ',4.7,NULL,NULL,'','',true), + ('Northern Rockies Regional Municipality (British Columbia CAN)','Northern Rockies Regional Municipality',-122.706670,58.803890,'CAN','British Columbia',' CA-BC ',' Prophet River ',5.0,NULL,NULL,'','',true), + ('Oak Bay (British Columbia CAN)','Oak Bay',-123.318060,48.425830,'CAN','British Columbia',' CA-BC ',' Goodacre Lake ',3.7,NULL,NULL,'','',true), + ('Oliver (British Columbia CAN)','Oliver',-119.550830,49.182500,'CAN','British Columbia',' CA-BC ',' Tugulnuit Lake ',1.9,NULL,NULL,'','',true), + ('Osoyoos (British Columbia CAN)','Osoyoos',-119.468330,49.032500,'CAN','British Columbia',' CA-BC ',' Peanut Lake ',0.3,NULL,NULL,'','',true), + ('Parksville (British Columbia CAN)','Parksville',-124.311390,49.318060,'CAN','British Columbia',' CA-BC ',' Englishman River ',1.7,NULL,NULL,'','',true), + ('Peachland (British Columbia CAN)','Peachland',-119.736390,49.773890,'CAN','British Columbia',' CA-BC ',' McCall Lakes ',3.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Pemberton (British Columbia CAN)','Pemberton',-122.807780,50.320560,'CAN','British Columbia',' CA-BC ',' One Mile Lake ',1.1,NULL,NULL,'','',true), + ('Penticton (British Columbia CAN)','Penticton',-119.593890,49.500830,'CAN','British Columbia',' CA-BC ',' Madeline Lake ',3.9,NULL,NULL,'','',true), + ('Pitt Meadows (British Columbia CAN)','Pitt Meadows',-122.690280,49.220560,'CAN','British Columbia',' CA-BC ',' Alouette River ',5.1,NULL,NULL,'','',true), + ('Port Alberni (British Columbia CAN)','Port Alberni',-124.805830,49.234440,'CAN','British Columbia',' CA-BC ',' Somass River ',1.7,NULL,NULL,'','',true), + ('Port Alice (British Columbia CAN)','Port Alice',-127.488060,50.426670,'CAN','British Columbia',' CA-BC ',' Alice Lake ',6.7,NULL,NULL,'','',true), + ('Port Clements (British Columbia CAN)','Port Clements',-132.183610,53.685560,'CAN','British Columbia',' CA-BC ',' Yakoun River ',3.5,NULL,NULL,'','',true), + ('Port Coquitlam (British Columbia CAN)','Port Coquitlam',-122.780280,49.261940,'CAN','British Columbia',' CA-BC ',' Lafarge Lake ',2.8,NULL,NULL,'','',true), + ('Port Edward (British Columbia CAN)','Port Edward',-130.289440,54.220560,'CAN','British Columbia',' CA-BC ',' Alwyn Lake ',3.6,NULL,NULL,'','',true), + ('Port Hardy (British Columbia CAN)','Port Hardy',-127.498060,50.724440,'CAN','British Columbia',' CA-BC ',' Tsulquate River ',0.8,NULL,NULL,'','',true), + ('Port McNeill (British Columbia CAN)','Port McNeill',-127.083610,50.589440,'CAN','British Columbia',' CA-BC ',' Cluxewe River ',7.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Port Moody (British Columbia CAN)','Port Moody',-122.829440,49.282220,'CAN','British Columbia',' CA-BC ',' Munday Lake ',2.7,NULL,NULL,'','',true), + ('Pouce Coupe (British Columbia CAN)','Pouce Coupe',-120.133610,55.714720,'CAN','British Columbia',' CA-BC ',' McWaters Lake ',11.3,NULL,NULL,'','',true), + ('Powell River (British Columbia CAN)','Powell River',-124.524440,49.835560,'CAN','British Columbia',' CA-BC ',' Cranberry Lake ',3.6,NULL,NULL,'','',true), + ('Prince George (British Columbia CAN)','Prince George',-122.745280,53.913060,'CAN','British Columbia',' CA-BC ',' Nechako River ',2.1,NULL,NULL,'','',true), + ('Prince Rupert (British Columbia CAN)','Prince Rupert',-130.325280,54.312780,'CAN','British Columbia',' CA-BC ',' Salt Lake ',3.6,NULL,NULL,'','',true), + ('Princeton (British Columbia CAN)','Princeton',-120.507780,49.460280,'CAN','British Columbia',' CA-BC ',' Tulameen River ',0.4,NULL,NULL,'','',true), + ('Qualicum Beach (British Columbia CAN)','Qualicum Beach',-124.443890,49.348060,'CAN','British Columbia',' CA-BC ',' Little Qualicum River ',4.1,NULL,NULL,'','',true), + ('Queen Charlotte Village of (British Columbia CAN)','Queen Charlotte Village of',-132.102500,53.254720,'CAN','British Columbia',' CA-BC ',' Honna River ',2.0,NULL,NULL,'','',true), + ('Quesnel (British Columbia CAN)','Quesnel',-122.493610,52.979720,'CAN','British Columbia',' CA-BC ',' Quesnel River ',1.1,NULL,NULL,'','',true), + ('Radium Hot Springs (British Columbia CAN)','Radium Hot Springs',-116.076110,50.620000,'CAN','British Columbia',' CA-BC ',' Northcote Lake ',6.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Revelstoke (British Columbia CAN)','Revelstoke',-118.195830,50.998890,'CAN','British Columbia',' CA-BC ',' Illecillewaet River ',2.0,NULL,NULL,'','',true), + ('Richmond (British Columbia CAN)','Richmond',-123.163330,49.163330,'CAN','British Columbia',' CA-BC ',' Fraser River ',5.4,NULL,NULL,'','',true), + ('Rossland (British Columbia CAN)','Rossland',-117.802220,49.076940,'CAN','British Columbia',' CA-BC ',' Violin Lake ',7.9,NULL,NULL,'','',true), + ('Saanich (British Columbia CAN)','Saanich',-123.373330,48.456670,'CAN','British Columbia',' CA-BC ',' Swan Lake ',0.7,NULL,NULL,'','',true), + ('Salmo (British Columbia CAN)','Salmo',-117.278610,49.193330,'CAN','British Columbia',' CA-BC ',' Erie Lake ',4.8,NULL,NULL,'','',true), + ('Salmon Arm (British Columbia CAN)','Salmon Arm',-119.278060,50.701390,'CAN','British Columbia',' CA-BC ',' Salmon River ',2.2,NULL,NULL,'','',true), + ('Sayward (British Columbia CAN)','Sayward',-125.959440,50.378890,'CAN','British Columbia',' CA-BC ',' Salmon River ',2.2,NULL,NULL,'','',true), + ('Sechelt (British Columbia CAN)','Sechelt',-123.763330,49.471670,'CAN','British Columbia',' CA-BC ',' Crowston Lake ',6.9,NULL,NULL,'','',true), + ('Sicamous (British Columbia CAN)','Sicamous',-118.980000,50.836110,'CAN','British Columbia',' CA-BC ',' Shuswap River ',1.0,NULL,NULL,'','',true), + ('Sidney (British Columbia CAN)','Sidney',-123.398330,48.650560,'CAN','British Columbia',' CA-BC ',' Quarry Lake ',10.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Silverton (British Columbia CAN)','Silverton',-117.357220,49.952780,'CAN','British Columbia',' CA-BC ',' Slocan Lake ',8.7,NULL,NULL,'','',true), + ('Slocan (British Columbia CAN)','Slocan',-117.466110,49.767780,'CAN','British Columbia',' CA-BC ',' Cahill Lake ',12.0,NULL,NULL,'','',true), + ('Smithers (British Columbia CAN)','Smithers',-127.176110,54.779170,'CAN','British Columbia',' CA-BC ',' Bigelow Lake ',2.7,NULL,NULL,'','',true), + ('Sooke (British Columbia CAN)','Sooke',-123.731940,48.382780,'CAN','British Columbia',' CA-BC ',' Sooke River ',2.4,NULL,NULL,'','',true), + ('Spallumcheen (British Columbia CAN)','Spallumcheen',-119.217500,50.402500,'CAN','British Columbia',' CA-BC ',' Otter Lake ',2.6,NULL,NULL,'','',true), + ('Sparwood (British Columbia CAN)','Sparwood',-114.885830,49.733330,'CAN','British Columbia',' CA-BC ',' Grave Lake ',15.1,NULL,NULL,'','',true), + ('Squamish (British Columbia CAN)','Squamish',-123.155830,49.698060,'CAN','British Columbia',' CA-BC ',' Stawamus River ',1.1,NULL,NULL,'','',true), + ('Stewart (British Columbia CAN)','Stewart',-129.991110,55.938330,'CAN','British Columbia',' CA-BC ',' Bear River ',2.3,NULL,NULL,'','',true), + ('Summerland (British Columbia CAN)','Summerland',-119.681940,49.602220,'CAN','British Columbia',' CA-BC ',' Madeline Lake ',10.5,NULL,NULL,'','',true), + ('Surrey (British Columbia CAN)','Surrey',-122.827500,49.111670,'CAN','British Columbia',' CA-BC ',' Serpentine River ',3.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tahsis (British Columbia CAN)','Tahsis',-126.664440,49.916390,'CAN','British Columbia',' CA-BC ',' Tahsis River ',0.9,NULL,NULL,'','',true), + ('Taylor (British Columbia CAN)','Taylor',-120.686670,56.159170,'CAN','British Columbia',' CA-BC ',' Pine River ',2.4,NULL,NULL,'','',true), + ('Telkwa (British Columbia CAN)','Telkwa',-127.050830,54.696670,'CAN','British Columbia',' CA-BC ',' Telkwa River ',0.2,NULL,NULL,'','',true), + ('Terrace (British Columbia CAN)','Terrace',-128.599720,54.516390,'CAN','British Columbia',' CA-BC ',' Kitsumkalum River ',4.0,NULL,NULL,'','',true), + ('Tofino (British Columbia CAN)','Tofino',-125.904440,49.153060,'CAN','British Columbia',' CA-BC ',' Mallard Lake ',7.8,NULL,NULL,'','',true), + ('Trail (British Columbia CAN)','Trail',-117.709170,49.094440,'CAN','British Columbia',' CA-BC ',' Violin Lake ',6.5,NULL,NULL,'','',true), + ('Tumbler Ridge (British Columbia CAN)','Tumbler Ridge',-120.998060,55.126110,'CAN','British Columbia',' CA-BC ',' Wolverine River ',2.8,NULL,NULL,'','',true), + ('Ucluelet (British Columbia CAN)','Ucluelet',-125.546110,48.942780,'CAN','British Columbia',' CA-BC ',' Itatsoo Lake ',1.6,NULL,NULL,'','',true), + ('Valemount (British Columbia CAN)','Valemount',-119.280000,52.829440,'CAN','British Columbia',' CA-BC ',' Cranberry Lake ',2.7,NULL,NULL,'','',true), + ('Vancouver (British Columbia CAN)','Vancouver',-123.113890,49.261110,'CAN','British Columbia',' CA-BC ',' Trout Lake ',3.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Vanderhoof (British Columbia CAN)','Vanderhoof',-124.007500,54.017500,'CAN','British Columbia',' CA-BC ',' Janze Lake ',10.0,NULL,NULL,'','',true), + ('Vernon (British Columbia CAN)','Vernon',-119.271670,50.265830,'CAN','British Columbia',' CA-BC ',' Swan Lake ',6.1,NULL,NULL,'','',true), + ('Victoria (British Columbia CAN)','Victoria',-123.364720,48.428330,'CAN','British Columbia',' CA-BC ',' Goodacre Lake ',1.5,NULL,NULL,'','',true), + ('View Royal (British Columbia CAN)','View Royal',-123.434170,48.451940,'CAN','British Columbia',' CA-BC ',' Colquitz River ',1.9,NULL,NULL,'','',true), + ('Warfield (British Columbia CAN)','Warfield',-117.749170,49.094170,'CAN','British Columbia',' CA-BC ',' Violin Lake ',7.0,NULL,NULL,'','',true), + ('West Kelowna City of (British Columbia CAN)','West Kelowna City of',-119.628610,49.830000,'CAN','British Columbia',' CA-BC ',' Shannon Lake ',3.2,NULL,NULL,'','',true), + ('West Vancouver (British Columbia CAN)','West Vancouver',-123.159720,49.331110,'CAN','British Columbia',' CA-BC ',' Capilano River ',1.8,NULL,NULL,'','',true), + ('White Rock (British Columbia CAN)','White Rock',-122.798330,49.023610,'CAN','British Columbia',' CA-BC ',' Campbell River ',1.9,NULL,NULL,'','',true), + ('Williams Lake (British Columbia CAN)','Williams Lake',-122.140000,52.129170,'CAN','British Columbia',' CA-BC ',' Bond Lake ',4.6,NULL,NULL,'','',true), + ('Zeballos (British Columbia CAN)','Zeballos',-126.846110,49.982500,'CAN','British Columbia',' CA-BC ',' Zeballos River ',0.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Ashern (Manitoba CAN)','Ashern',-98.360260,51.220630,'CAN','Manitoba',' CA-MB ',' Lake Manitoba ',35.3,NULL,NULL,'','',true), + ('Beausejour (Manitoba CAN)','Beausejour',-96.534880,50.074950,'CAN','Manitoba',' CA-MB ',' Pelican Lake ',48.4,NULL,NULL,'','',true), + ('Berens River (Manitoba CAN)','Berens River',-96.961490,52.396630,'CAN','Manitoba',' CA-MB ',' Lake Winnipeg ',40.6,NULL,NULL,'','',true), + ('Bloodvein (Manitoba CAN)','Bloodvein',-96.644110,51.809030,'CAN','Manitoba',' CA-MB ',' Family Lake ',81.9,NULL,NULL,'','',true), + ('Brandon (Manitoba CAN)','Brandon',-99.929520,49.848940,'CAN','Manitoba',' CA-MB ',' Vermilion River ',45.7,NULL,NULL,'','',true), + ('Brochet (Manitoba CAN)','Brochet',-101.677960,57.930590,'CAN','Manitoba',' CA-MB ',' Cochrane River ',52.0,NULL,NULL,'','',true), + ('Churchill (Manitoba CAN)','Churchill',-94.092750,58.728410,'CAN','Manitoba',' CA-MB ',' North Knife River ',96.2,NULL,NULL,'','',true), + ('Cranberry Portage (Manitoba CAN)','Cranberry Portage',-101.330560,54.601610,'CAN','Manitoba',' CA-MB ',' Simonhouse Lake ',12.2,NULL,NULL,'','',true), + ('Cross Lake (Manitoba CAN)','Cross Lake',-97.711410,54.625160,'CAN','Manitoba',' CA-MB ',' Nelson River ',5.6,NULL,NULL,'','',true), + ('Dauphin (Manitoba CAN)','Dauphin',-100.055960,51.142770,'CAN','Manitoba',' CA-MB ',' Lake Manitoba ',83.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Emerson (Manitoba CAN)','Emerson',-97.224620,49.040460,'CAN','Manitoba',' CA-MB ',' Roseau River ',47.4,NULL,NULL,'','',true), + ('Flin Flon (Manitoba CAN)','Flin Flon',-101.871700,54.772070,'CAN','Manitoba',' CA-MB ',' Athapapuskow Lake ',24.9,NULL,NULL,'','',true), + ('Fort Alexander (Manitoba CAN)','Fort Alexander',-96.338440,50.608870,'CAN','Manitoba',' CA-MB ',' Lac du Bonnet ',41.9,NULL,NULL,'','',true), + ('Garden Hill (Manitoba CAN)','Garden Hill',-94.618330,53.904310,'CAN','Manitoba',' CA-MB ',' Island Lake ',8.2,NULL,NULL,'','',true), + ('Gillam (Manitoba CAN)','Gillam',-94.618020,56.348590,'CAN','Manitoba',' CA-MB ',' Limestone River ',42.3,NULL,NULL,'','',true), + ('Gimli (Manitoba CAN)','Gimli',-97.023400,50.606200,'CAN','Manitoba',' CA-MB ',' Lac du Bonnet ',84.4,NULL,NULL,'','',true), + ('Gods Lake Narrows (Manitoba CAN)','Gods Lake Narrows',-94.415330,54.538670,'CAN','Manitoba',' CA-MB ',' Gods Lake ',16.3,NULL,NULL,'','',true), + ('Grand Rapids (Manitoba CAN)','Grand Rapids',-99.306670,53.204460,'CAN','Manitoba',' CA-MB ',' Katimik Lake ',36.4,NULL,NULL,'','',true), + ('Killarney (Manitoba CAN)','Killarney',-99.647500,49.186990,'CAN','Manitoba',' CA-MB ',' Plum Creek ',84.1,NULL,NULL,'','',true), + ('Lac Brochet (Manitoba CAN)','Lac Brochet',-101.503170,58.702960,'CAN','Manitoba',' CA-MB ',' Maria Lake ',49.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Leaf Rapids (Manitoba CAN)','Leaf Rapids',-100.015500,56.442720,'CAN','Manitoba',' CA-MB ',' Eden Lake ',26.2,NULL,NULL,'','',true), + ('Little Grand Rapids (Manitoba CAN)','Little Grand Rapids',-95.455540,52.094620,'CAN','Manitoba',' CA-MB ',' Fishing Lake ',9.1,NULL,NULL,'','',true), + ('Lynn Lake (Manitoba CAN)','Lynn Lake',-101.076310,56.915070,'CAN','Manitoba',' CA-MB ',' Goldsand Lake ',15.0,NULL,NULL,'','',true), + ('Melita (Manitoba CAN)','Melita',-101.022830,49.271070,'CAN','Manitoba',' CA-MB ',' Plum Lakes ',49.1,NULL,NULL,'','',true), + ('Minnedosa (Manitoba CAN)','Minnedosa',-99.880120,50.261840,'CAN','Manitoba',' CA-MB ',' Assiniboine ',12.2,NULL,NULL,'','',true), + ('Morden (Manitoba CAN)','Morden',-98.175510,49.219320,'CAN','Manitoba',' CA-MB ',' Wolf River ',95.3,NULL,NULL,'','',true), + ('Neepawa (Manitoba CAN)','Neepawa',-99.473170,50.239860,'CAN','Manitoba',' CA-MB ',' Vermilion River ',30.5,NULL,NULL,'','',true), + ('Nelson House (Manitoba CAN)','Nelson House',-98.863680,55.788580,'CAN','Manitoba',' CA-MB ',' Threepoint Lake ',11.7,NULL,NULL,'','',true), + ('Norway House (Manitoba CAN)','Norway House',-97.820180,53.965820,'CAN','Manitoba',' CA-MB ',' Gunisao River ',51.3,NULL,NULL,'','',true), + ('Oxford House (Manitoba CAN)','Oxford House',-95.213820,54.940000,'CAN','Manitoba',' CA-MB ',' Knee Lake ',32.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Poplar River (Manitoba CAN)','Poplar River',-97.314170,53.048390,'CAN','Manitoba',' CA-MB ',' Weaver Lake ',53.4,NULL,NULL,'','',true), + ('Portage la Prairie (Manitoba CAN)','Portage la Prairie',-98.256790,49.984290,'CAN','Manitoba',' CA-MB ',' Vermilion River ',76.5,NULL,NULL,'','',true), + ('Pukatawagan (Manitoba CAN)','Pukatawagan',-101.283220,55.777710,'CAN','Manitoba',' CA-MB ',' Flatrock Lake ',32.2,NULL,NULL,'','',true), + ('Roblin (Manitoba CAN)','Roblin',-101.421950,51.288180,'CAN','Manitoba',' CA-MB ',' Big Sandy Lake ',91.9,NULL,NULL,'','',true), + ('Russell (Manitoba CAN)','Russell',-101.277440,50.775820,'CAN','Manitoba',' CA-MB ',' Pipestone Creek ',96.7,NULL,NULL,'','',true), + ('Selkirk (Manitoba CAN)','Selkirk',-96.892310,50.188580,'CAN','Manitoba',' CA-MB ',' Pelican Lake ',70.8,NULL,NULL,'','',true), + ('Shamattawa (Manitoba CAN)','Shamattawa',-92.126210,55.914350,'CAN','Manitoba',' CA-MB ',' Gods ',71.4,NULL,NULL,'','',true), + ('Snow Lake (Manitoba CAN)','Snow Lake',-100.050790,54.893030,'CAN','Manitoba',' CA-MB ',' Wekusko Lake ',17.5,NULL,NULL,'','',true), + ('Souris (Manitoba CAN)','Souris',-100.338470,49.632610,'CAN','Manitoba',' CA-MB ',' Plum Creek ',15.8,NULL,NULL,'','',true), + ('South Indian Lake (Manitoba CAN)','South Indian Lake',-98.948290,56.764850,'CAN','Manitoba',' CA-MB ',' Southern Indian Lake ',38.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Split Lake (Manitoba CAN)','Split Lake',-96.141070,56.286590,'CAN','Manitoba',' CA-MB ',' Split Lake ',12.1,NULL,NULL,'','',true), + ('Steinbach (Manitoba CAN)','Steinbach',-96.681520,49.567570,'CAN','Manitoba',' CA-MB ',' Pelican Lake ',25.6,NULL,NULL,'','',true), + ('Swan River (Manitoba CAN)','Swan River',-101.198700,52.133720,'CAN','Manitoba',' CA-MB ',' Swan Lake ',49.9,NULL,NULL,'','',true), + ('The Pas (Manitoba CAN)','The Pas',-101.247150,53.819200,'CAN','Manitoba',' CA-MB ',' Reader Lake ',18.9,NULL,NULL,'','',true), + ('Thompson (Manitoba CAN)','Thompson',-97.837840,55.733620,'CAN','Manitoba',' CA-MB ',' Paint Lake ',25.2,NULL,NULL,'','',true), + ('Virden (Manitoba CAN)','Virden',-100.928080,49.833870,'CAN','Manitoba',' CA-MB ',' Plum Lakes ',25.0,NULL,NULL,'','',true), + ('Winkler (Manitoba CAN)','Winkler',-97.888180,49.228840,'CAN','Manitoba',' CA-MB ',' Roseau River ',97.3,NULL,NULL,'','',true), + ('Winnipeg (Manitoba CAN)','Winnipeg',-97.175450,49.914130,'CAN','Manitoba',' CA-MB ',' Pelican Lake ',65.7,NULL,NULL,'','',true), + ('Winnipegosis (Manitoba CAN)','Winnipegosis',-99.993400,51.662800,'CAN','Manitoba',' CA-MB ',' Big Sandy Lake ',43.3,NULL,NULL,'','',true), + ('Bathurst (New Brunswick CAN)','Bathurst',-65.686100,47.613130,'CAN','New Brunswick',' CA-NB ',' Nepisiguit River ',45.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Campbellton (New Brunswick CAN)','Campbellton',-66.632610,47.944930,'CAN','New Brunswick',' CA-NB ',' Rivire Matapdia ',55.1,NULL,NULL,'','',true), + ('Caraquet (New Brunswick CAN)','Caraquet',-64.915460,47.760550,'CAN','New Brunswick',' CA-NB ',' Rivire Bonaventure ',89.0,NULL,NULL,'','',true), + ('Dalhousie (New Brunswick CAN)','Dalhousie',-66.402210,48.011850,'CAN','New Brunswick',' CA-NB ',' Rivire Cascapdia ',65.8,NULL,NULL,'','',true), + ('Edmundston (New Brunswick CAN)','Edmundston',-68.307710,47.394730,'CAN','New Brunswick',' CA-NB ',' Fish River ',29.0,NULL,NULL,'','',true), + ('Fredericton (New Brunswick CAN)','Fredericton',-66.685630,45.922940,'CAN','New Brunswick',' CA-NB ',' Chiputneticook Lakes ',80.6,NULL,NULL,'','',true), + ('Grand Falls Grand Sault (New Brunswick CAN)','Grand Falls Grand Sault',-67.691450,47.032050,'CAN','New Brunswick',' CA-NB ',' Tobique River ',33.0,NULL,NULL,'','',true), + ('Miramichi (New Brunswick CAN)','Miramichi',-65.481960,47.075490,'CAN','New Brunswick',' CA-NB ',' Nepisiguit River ',66.4,NULL,NULL,'','',true), + ('Moncton (New Brunswick CAN)','Moncton',-64.871720,46.086750,'CAN','New Brunswick',' CA-NB ',' Petitcodiac River ',17.6,NULL,NULL,'','',true), + ('Saint John (New Brunswick CAN)','Saint John',-66.030040,45.296950,'CAN','New Brunswick',' CA-NB ',' Kennebecasis River ',61.1,NULL,NULL,'','',true), + ('St Stephen (New Brunswick CAN)','St Stephen',-67.254450,45.236380,'CAN','New Brunswick',' CA-NB ',' Saint Croix River ',26.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Sussex (New Brunswick CAN)','Sussex',-65.502470,45.708130,'CAN','New Brunswick',' CA-NB ',' Kennebecasis River ',7.6,NULL,NULL,'','',true), + ('Tracadie Sheila (New Brunswick CAN)','Tracadie Sheila',-64.939420,47.535420,'CAN','New Brunswick',' CA-NB ',' Nepisiguit River ',96.3,NULL,NULL,'','',true), + ('Baie Verte (Newfoundland and Labrador CAN)','Baie Verte',-56.211280,49.984710,'CAN','Newfoundland and Labrador',' CA-NL ',' Cat Arm River ',55.9,NULL,NULL,'','',true), + ('Bishops Falls (Newfoundland and Labrador CAN)','Bishops Falls',-55.486090,49.049790,'CAN','Newfoundland and Labrador',' CA-NL ',' Exploits ',41.1,NULL,NULL,'','',true), + ('Bonavista (Newfoundland and Labrador CAN)','Bonavista',-53.094150,48.647110,'CAN','Newfoundland and Labrador',' CA-NL ',' Terra Nova River ',119.0,NULL,NULL,'','',true), + ('Buchans (Newfoundland and Labrador CAN)','Buchans',-56.861050,48.823400,'CAN','Newfoundland and Labrador',' CA-NL ',' Exploits ',15.7,NULL,NULL,'','',true), + ('Burgeo (Newfoundland and Labrador CAN)','Burgeo',-57.631370,47.663160,'CAN','Newfoundland and Labrador',' CA-NL ',' White Bear River ',45.4,NULL,NULL,'','',true), + ('Carbonear (Newfoundland and Labrador CAN)','Carbonear',-53.241370,47.764350,'CAN','Newfoundland and Labrador',' CA-NL ',' Long Harbour River ',127.6,NULL,NULL,'','',true), + ('Cartwright (Newfoundland and Labrador CAN)','Cartwright',-56.895220,53.694730,'CAN','Newfoundland and Labrador',' CA-NL ',' Sand Hill River ',33.6,NULL,NULL,'','',true), + ('Channel Port aux Basques (Newfoundland and Labrador CAN)','Channel Port aux Basques',-59.165350,47.597850,'CAN','Newfoundland and Labrador',' CA-NL ',' King George IV Lake ',116.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Churchill Falls (Newfoundland and Labrador CAN)','Churchill Falls',-64.061020,53.549630,'CAN','Newfoundland and Labrador',' CA-NL ',' Ossokmanuan Lake ',52.1,NULL,NULL,'','',true), + ('Clarenville (Newfoundland and Labrador CAN)','Clarenville',-54.020210,48.137970,'CAN','Newfoundland and Labrador',' CA-NL ',' Terra Nova River ',59.8,NULL,NULL,'','',true), + ('Corner Brook (Newfoundland and Labrador CAN)','Corner Brook',-57.926410,48.929430,'CAN','Newfoundland and Labrador',' CA-NL ',' Humber River ',21.7,NULL,NULL,'','',true), + ('Deer Lake (Newfoundland and Labrador CAN)','Deer Lake',-57.373330,49.193100,'CAN','Newfoundland and Labrador',' CA-NL ',' Humber River ',28.1,NULL,NULL,'','',true), + ('Gander (Newfoundland and Labrador CAN)','Gander',-54.611520,48.960630,'CAN','Newfoundland and Labrador',' CA-NL ',' Gander Lake ',12.5,NULL,NULL,'','',true), + ('Grand Bank (Newfoundland and Labrador CAN)','Grand Bank',-55.727420,47.066000,'CAN','Newfoundland and Labrador',' CA-NL ',' Bay du Nord River ',99.4,NULL,NULL,'','',true), + ('Grand Falls Windsor (Newfoundland and Labrador CAN)','Grand Falls Windsor',-55.689310,48.973410,'CAN','Newfoundland and Labrador',' CA-NL ',' Exploits ',24.2,NULL,NULL,'','',true), + ('Happy Valley Goose Bay (Newfoundland and Labrador CAN)','Happy Valley Goose Bay',-60.278580,53.317060,'CAN','Newfoundland and Labrador',' CA-NL ',' Kenamu River ',44.7,NULL,NULL,'','',true), + ('Harbour Breton (Newfoundland and Labrador CAN)','Harbour Breton',-55.812710,47.508610,'CAN','Newfoundland and Labrador',' CA-NL ',' Bay du Nord River ',57.0,NULL,NULL,'','',true), + ('Hopedale (Newfoundland and Labrador CAN)','Hopedale',-60.222820,55.444620,'CAN','Newfoundland and Labrador',' CA-NL ',' Kaipokok River ',92.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Labrador City (Newfoundland and Labrador CAN)','Labrador City',-67.012280,52.992850,'CAN','Newfoundland and Labrador',' CA-NL ',' Shabogamo Lake ',31.8,NULL,NULL,'','',true), + ('Lewisporte (Newfoundland and Labrador CAN)','Lewisporte',-55.033360,49.262680,'CAN','Newfoundland and Labrador',' CA-NL ',' Gander River ',30.7,NULL,NULL,'','',true), + ('Makkovik (Newfoundland and Labrador CAN)','Makkovik',-59.110180,55.099480,'CAN','Newfoundland and Labrador',' CA-NL ',' Little Michinappi Lake ',67.6,NULL,NULL,'','',true), + ('Marystown (Newfoundland and Labrador CAN)','Marystown',-55.153020,47.171470,'CAN','Newfoundland and Labrador',' CA-NL ',' Bay du Nord River ',85.7,NULL,NULL,'','',true), + ('Nain (Newfoundland and Labrador CAN)','Nain',-61.729510,56.551050,'CAN','Newfoundland and Labrador',' CA-NL ',' Kogaluk River ',79.0,NULL,NULL,'','',true), + ('Natuashish (Newfoundland and Labrador CAN)','Natuashish',-61.123490,55.923800,'CAN','Newfoundland and Labrador',' CA-NL ',' Notakwanon River ',97.3,NULL,NULL,'','',true), + ('Placentia (Newfoundland and Labrador CAN)','Placentia',-53.946540,47.275830,'CAN','Newfoundland and Labrador',' CA-NL ',' Long Harbour River ',108.0,NULL,NULL,'','',true), + ('Port Hope Simpson (Newfoundland and Labrador CAN)','Port Hope Simpson',-56.210190,52.522510,'CAN','Newfoundland and Labrador',' CA-NL ',' St Lewis River ',37.8,NULL,NULL,'','',true), + ('Rigolet (Newfoundland and Labrador CAN)','Rigolet',-58.467770,54.187160,'CAN','Newfoundland and Labrador',' CA-NL ',' Little Michinappi Lake ',80.0,NULL,NULL,'','',true), + ('Rocky Harbour (Newfoundland and Labrador CAN)','Rocky Harbour',-57.879540,49.626270,'CAN','Newfoundland and Labrador',' CA-NL ',' Upper Humber River ',41.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Roddickton (Newfoundland and Labrador CAN)','Roddickton',-56.063930,50.876350,'CAN','Newfoundland and Labrador',' CA-NL ',' Cat Arm River ',101.8,NULL,NULL,'','',true), + ('Springdale (Newfoundland and Labrador CAN)','Springdale',-56.080460,49.530970,'CAN','Newfoundland and Labrador',' CA-NL ',' Exploits ',69.8,NULL,NULL,'','',true), + ('St Anthony (Newfoundland and Labrador CAN)','St Anthony',-55.544530,51.376910,'CAN','Newfoundland and Labrador',' CA-NL ',' Pinware River ',99.9,NULL,NULL,'','',true), + ('St Georges (Newfoundland and Labrador CAN)','St Georges',-58.476200,48.377300,'CAN','Newfoundland and Labrador',' CA-NL ',' King George IV Lake ',46.8,NULL,NULL,'','',true), + ('St Johns (Newfoundland and Labrador CAN)','St Johns',-52.742160,47.546050,'CAN','Newfoundland and Labrador',' CA-NL ',' Long Harbour River ',170.1,NULL,NULL,'','',true), + ('Stephenville (Newfoundland and Labrador CAN)','Stephenville',-58.487290,48.540510,'CAN','Newfoundland and Labrador',' CA-NL ',' King George IV Lake ',57.0,NULL,NULL,'','',true), + ('Trepassey (Newfoundland and Labrador CAN)','Trepassey',-53.346970,46.763490,'CAN','Newfoundland and Labrador',' CA-NL ',' Long Harbour River ',180.8,NULL,NULL,'','',true), + ('Twillingate (Newfoundland and Labrador CAN)','Twillingate',-54.648410,49.610710,'CAN','Newfoundland and Labrador',' CA-NL ',' Gander River ',63.5,NULL,NULL,'','',true), + ('Wabush (Newfoundland and Labrador CAN)','Wabush',-66.940560,52.913540,'CAN','Newfoundland and Labrador',' CA-NL ',' Lac Mnistouc ',32.0,NULL,NULL,'','',true), + ('Aklavik (Northwest Territories CAN)','Aklavik',-134.991560,68.247450,'CAN','Northwest Territories',' CA-NT ',' Mackenzie River ',15.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Colville Lake (Northwest Territories CAN)','Colville Lake',-126.150920,67.025350,'CAN','Northwest Territories',' CA-NT ',' Colville Lake ',17.1,NULL,NULL,'','',true), + ('Deline (Northwest Territories CAN)','Deline',-123.388570,65.213370,'CAN','Northwest Territories',' CA-NT ',' Brackett Lake ',91.5,NULL,NULL,'','',true), + ('Fort Good Hope (Northwest Territories CAN)','Fort Good Hope',-128.664000,66.275200,'CAN','Northwest Territories',' CA-NT ',' Lac a Jacques ',58.2,NULL,NULL,'','',true), + ('Fort Liard (Northwest Territories CAN)','Fort Liard',-123.371610,60.227410,'CAN','Northwest Territories',' CA-NT ',' Petitot River ',33.2,NULL,NULL,'','',true), + ('Fort McPherson (Northwest Territories CAN)','Fort McPherson',-134.743040,67.435830,'CAN','Northwest Territories',' CA-NT ',' Bell River ',99.9,NULL,NULL,'','',true), + ('Fort Providence (Northwest Territories CAN)','Fort Providence',-117.627480,61.389810,'CAN','Northwest Territories',' CA-NT ',' Laferte River ',63.9,NULL,NULL,'','',true), + ('Fort Resolution (Northwest Territories CAN)','Fort Resolution',-113.609040,61.182990,'CAN','Northwest Territories',' CA-NT ',' Thubun River ',70.9,NULL,NULL,'','',true), + ('Fort Simpson (Northwest Territories CAN)','Fort Simpson',-121.417000,61.839720,'CAN','Northwest Territories',' CA-NT ',' Martin River ',11.8,NULL,NULL,'','',true), + ('Fort Smith (Northwest Territories CAN)','Fort Smith',-112.089180,60.032490,'CAN','Northwest Territories',' CA-NT ',' Gordon Lake ',9.8,NULL,NULL,'','',true), + ('Hay River (Northwest Territories CAN)','Hay River',-115.907950,60.824480,'CAN','Northwest Territories',' CA-NT ',' Falaise Lake ',74.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Holman (Northwest Territories CAN)','Holman',-117.853780,70.766050,'CAN','Northwest Territories',' CA-NT ',' Kuujjua River ',183.1,NULL,NULL,'','',true), + ('Inuvik (Northwest Territories CAN)','Inuvik',-133.690740,68.367930,'CAN','Northwest Territories',' CA-NT ',' Sitidgi Lake ',44.7,NULL,NULL,'','',true), + ('Lutselke (Northwest Territories CAN)','Lutselke',-110.702570,62.370610,'CAN','Northwest Territories',' CA-NT ',' Gagnon Lake ',49.5,NULL,NULL,'','',true), + ('Norman Wells (Northwest Territories CAN)','Norman Wells',-126.930240,65.309690,'CAN','Northwest Territories',' CA-NT ',' Mackenzie ',39.3,NULL,NULL,'','',true), + ('Paulatuk (Northwest Territories CAN)','Paulatuk',-124.031700,69.356390,'CAN','Northwest Territories',' CA-NT ',' Fallaize Lake ',50.7,NULL,NULL,'','',true), + ('Rae Edzo (Northwest Territories CAN)','Rae Edzo',-115.947470,62.838510,'CAN','Northwest Territories',' CA-NT ',' Whitefish River ',59.1,NULL,NULL,'','',true), + ('Rae Lakes (Northwest Territories CAN)','Rae Lakes',-117.206080,64.063530,'CAN','Northwest Territories',' CA-NT ',' Lac Ste Croix ',32.1,NULL,NULL,'','',true), + ('Sachs Harbour (Northwest Territories CAN)','Sachs Harbour',-125.453790,71.994330,'CAN','Northwest Territories',' CA-NT ',' Storkerson River ',119.1,NULL,NULL,'','',true), + ('Tsiigehtchic (Northwest Territories CAN)','Tsiigehtchic',-133.642880,67.434800,'CAN','Northwest Territories',' CA-NT ',' Travaillant River ',83.5,NULL,NULL,'','',true), + ('Tuktoyaktuk (Northwest Territories CAN)','Tuktoyaktuk',-133.201490,69.404930,'CAN','Northwest Territories',' CA-NT ',' Parsons Lake ',52.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tulita (Northwest Territories CAN)','Tulita',-125.519860,64.907230,'CAN','Northwest Territories',' CA-NT ',' Brackett Lake ',36.0,NULL,NULL,'','',true), + ('Wekweti (Northwest Territories CAN)','Wekweti',-114.189940,64.230380,'CAN','Northwest Territories',' CA-NT ',' Wecho Lake ',32.7,NULL,NULL,'','',true), + ('Wha Ti (Northwest Territories CAN)','Wha Ti',-117.190870,63.182590,'CAN','Northwest Territories',' CA-NT ',' Lac la Martre ',40.5,NULL,NULL,'','',true), + ('Wrigley (Northwest Territories CAN)','Wrigley',-123.525450,63.298320,'CAN','Northwest Territories',' CA-NT ',' Fish Lake ',48.7,NULL,NULL,'','',true), + ('Yellowknife (Northwest Territories CAN)','Yellowknife',-114.384280,62.487600,'CAN','Northwest Territories',' CA-NT ',' Margaret Lake ',7.9,NULL,NULL,'','',true), + ('Amherst (Nova Scotia CAN)','Amherst',-64.143670,45.832150,'CAN','Nova Scotia',' CA-NS ',' Petitcodiac River ',73.8,NULL,NULL,'','',true), + ('Antigonish (Nova Scotia CAN)','Antigonish',-61.910200,45.600340,'CAN','Nova Scotia',' CA-NS ',' Saint Marys ',51.9,NULL,NULL,'','',true), + ('Bridgewater (Nova Scotia CAN)','Bridgewater',-64.508650,44.350640,'CAN','Nova Scotia',' CA-NS ',' LaHave River ',35.6,NULL,NULL,'','',true), + ('Canso (Nova Scotia CAN)','Canso',-61.049630,45.322920,'CAN','Nova Scotia',' CA-NS ',' Lake Ainslie ',92.8,NULL,NULL,'','',true), + ('Cape Breton (Nova Scotia CAN)','Cape Breton',-60.118320,46.156790,'CAN','Nova Scotia',' CA-NS ',' Mira River ',16.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Cheticamp (Nova Scotia CAN)','Cheticamp',-60.959510,46.662200,'CAN','Nova Scotia',' CA-NS ',' Northeast Margaree River ',21.3,NULL,NULL,'','',true), + ('Halifax (Nova Scotia CAN)','Halifax',-63.703020,44.639290,'CAN','Nova Scotia',' CA-NS ',' Shubenacadie River ',39.1,NULL,NULL,'','',true), + ('Inverness (Nova Scotia CAN)','Inverness',-61.268660,46.229140,'CAN','Nova Scotia',' CA-NS ',' Lake Ainslie ',10.6,NULL,NULL,'','',true), + ('Kentville (Nova Scotia CAN)','Kentville',-64.487570,45.070970,'CAN','Nova Scotia',' CA-NS ',' Annapolis River ',42.5,NULL,NULL,'','',true), + ('Middleton (Nova Scotia CAN)','Middleton',-65.055680,44.900760,'CAN','Nova Scotia',' CA-NS ',' Annapolis River ',6.6,NULL,NULL,'','',true), + ('New Glasgow (Nova Scotia CAN)','New Glasgow',-62.634270,45.573380,'CAN','Nova Scotia',' CA-NS ',' Saint Marys ',42.5,NULL,NULL,'','',true), + ('Port Hawkesbury (Nova Scotia CAN)','Port Hawkesbury',-61.318710,45.651950,'CAN','Nova Scotia',' CA-NS ',' Lake Ainslie ',56.5,NULL,NULL,'','',true), + ('Shelburne (Nova Scotia CAN)','Shelburne',-65.315170,43.771460,'CAN','Nova Scotia',' CA-NS ',' Lake Rossignol ',52.4,NULL,NULL,'','',true), + ('Truro (Nova Scotia CAN)','Truro',-63.243090,45.375780,'CAN','Nova Scotia',' CA-NS ',' Shubenacadie River ',50.5,NULL,NULL,'','',true), + ('Yarmouth (Nova Scotia CAN)','Yarmouth',-66.118470,43.850250,'CAN','Nova Scotia',' CA-NS ',' Lake Rossignol ',91.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Arctic Bay (Nunavut CAN)','Arctic Bay',-85.280760,73.033340,'CAN','Nunavut',' CA-NU ',' Robertson River ',167.8,NULL,NULL,'','',true), + ('Arviat (Nunavut CAN)','Arviat',-94.122160,61.126860,'CAN','Nunavut',' CA-NU ',' Hyde Lake ',84.4,NULL,NULL,'','',true), + ('Baker Lake (Nunavut CAN)','Baker Lake',-95.986270,64.317670,'CAN','Nunavut',' CA-NU ',' Baker Lake ',42.1,NULL,NULL,'','',true), + ('Bathurst Inlet (Nunavut CAN)','Bathurst Inlet',-108.067410,66.812650,'CAN','Nunavut',' CA-NU ',' Hiukitak River ',70.2,NULL,NULL,'','',true), + ('Cambridge Bay (Nunavut CAN)','Cambridge Bay',-104.980480,69.120110,'CAN','Nunavut',' CA-NU ',' Ekalluk River ',49.3,NULL,NULL,'','',true), + ('Cape Dorset (Nunavut CAN)','Cape Dorset',-76.502650,64.199810,'CAN','Nunavut',' CA-NU ',' Aukpar River ',179.3,NULL,NULL,'','',true), + ('Chesterfield Inlet (Nunavut CAN)','Chesterfield Inlet',-90.802340,63.338550,'CAN','Nunavut',' CA-NU ',' Hanway Lake ',71.9,NULL,NULL,'','',true), + ('Clyde River (Nunavut CAN)','Clyde River',-68.501120,70.461000,'CAN','Nunavut',' CA-NU ',' Kogalu River ',33.3,NULL,NULL,'','',true), + ('Coral Harbour (Nunavut CAN)','Coral Harbour',-83.362760,64.163390,'CAN','Nunavut',' CA-NU ',' Kirchoffer River ',50.4,NULL,NULL,'','',true), + ('Gjoa Haven (Nunavut CAN)','Gjoa Haven',-95.873090,68.651270,'CAN','Nunavut',' CA-NU ',' Murchison River ',128.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Hall Beach (Nunavut CAN)','Hall Beach',-81.275390,68.758140,'CAN','Nunavut',' CA-NU ',' Hall Lake ',41.9,NULL,NULL,'','',true), + ('Igloolik (Nunavut CAN)','Igloolik',-81.802440,69.385630,'CAN','Nunavut',' CA-NU ',' Hall Lake ',77.6,NULL,NULL,'','',true), + ('Iqaluit (Nunavut CAN)','Iqaluit',-68.470130,63.762800,'CAN','Nunavut',' CA-NU ',' Sylvia Grinnell River ',28.6,NULL,NULL,'','',true), + ('Kimmirut (Nunavut CAN)','Kimmirut',-69.849220,62.809190,'CAN','Nunavut',' CA-NU ',' Soper River ',45.9,NULL,NULL,'','',true), + ('Kugaaruk (Nunavut CAN)','Kugaaruk',-89.772800,68.512210,'CAN','Nunavut',' CA-NU ',' Barrow Lake ',14.0,NULL,NULL,'','',true), + ('Kugluktuk (Nunavut CAN)','Kugluktuk',-115.236210,67.796250,'CAN','Nunavut',' CA-NU ',' Asiak River ',63.6,NULL,NULL,'','',true), + ('Nanisivik (Nunavut CAN)','Nanisivik',-84.798830,73.051730,'CAN','Nunavut',' CA-NU ',' Robertson River ',156.6,NULL,NULL,'','',true), + ('Pangnirtung (Nunavut CAN)','Pangnirtung',-65.642210,66.114830,'CAN','Nunavut',' CA-NU ',' Padle River ',90.3,NULL,NULL,'','',true), + ('Pond Inlet (Nunavut CAN)','Pond Inlet',-77.868880,72.666850,'CAN','Nunavut',' CA-NU ',' Robertson River ',129.1,NULL,NULL,'','',true), + ('Qikiqtarjuaq (Nunavut CAN)','Qikiqtarjuaq',-63.954600,67.539210,'CAN','Nunavut',' CA-NU ',' Padle River ',95.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Rankin Inlet (Nunavut CAN)','Rankin Inlet',-92.109620,62.818810,'CAN','Nunavut',' CA-NU ',' Machum Lake ',58.0,NULL,NULL,'','',true), + ('Repulse Bay (Nunavut CAN)','Repulse Bay',-86.213210,66.527960,'CAN','Nunavut',' CA-NU ',' Hansine Lake ',105.3,NULL,NULL,'','',true), + ('Sanikiluaq (Nunavut CAN)','Sanikiluaq',-79.209440,56.506040,'CAN','Nunavut',' CA-NU ',' Lac Lomier ',191.3,NULL,NULL,'','',true), + ('Taloyoak (Nunavut CAN)','Taloyoak',-93.435020,69.542100,'CAN','Nunavut',' CA-NU ',' Middle Lake ',11.2,NULL,NULL,'','',true), + ('Whale Cove (Nunavut CAN)','Whale Cove',-92.604390,62.182990,'CAN','Nunavut',' CA-NU ',' Wilson River ',56.9,NULL,NULL,'','',true), + ('Armstrong (Ontario CAN)','Armstrong',-89.026720,50.295010,'CAN','Ontario',' CA-ON ',' Caribou Lake ',20.3,NULL,NULL,'','',true), + ('Atikokan (Ontario CAN)','Atikokan',-91.590270,48.747950,'CAN','Ontario',' CA-ON ',' Marmion Lake ',19.7,NULL,NULL,'','',true), + ('Attawapiskat (Ontario CAN)','Attawapiskat',-82.497110,52.932530,'CAN','Ontario',' CA-ON ',' Lawashi River ',71.0,NULL,NULL,'','',true), + ('Barrie (Ontario CAN)','Barrie',-79.704050,44.375030,'CAN','Ontario',' CA-ON ',' Lake Simcoe ',28.7,NULL,NULL,'','',true), + ('Bearskin Lake (Ontario CAN)','Bearskin Lake',-90.925830,53.952740,'CAN','Ontario',' CA-ON ',' Severn ',27.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Belleville (Ontario CAN)','Belleville',-77.364010,44.181900,'CAN','Ontario',' CA-ON ',' Trent River ',33.6,NULL,NULL,'','',true), + ('Big Trout Lake (Ontario CAN)','Big Trout Lake',-89.880680,53.868740,'CAN','Ontario',' CA-ON ',' Big Trout Lake ',11.0,NULL,NULL,'','',true), + ('Blind River (Ontario CAN)','Blind River',-82.918910,46.257860,'CAN','Ontario',' CA-ON ',' Quirke Lake ',38.0,NULL,NULL,'','',true), + ('Bracebridge (Ontario CAN)','Bracebridge',-79.341070,45.027840,'CAN','Ontario',' CA-ON ',' North Branch Muskoka River ',7.2,NULL,NULL,'','',true), + ('Brockville (Ontario CAN)','Brockville',-75.793980,44.635410,'CAN','Ontario',' CA-ON ',' Rideau River ',31.7,NULL,NULL,'','',true), + ('Chapleau (Ontario CAN)','Chapleau',-83.417810,47.859490,'CAN','Ontario',' CA-ON ',' Wenebegon Lake ',56.5,NULL,NULL,'','',true), + ('Chatham Kent (Ontario CAN)','Chatham Kent',-82.160310,42.372150,'CAN','Ontario',' CA-ON ',' Lake Saint Clair ',48.9,NULL,NULL,'','',true), + ('Cochrane (Ontario CAN)','Cochrane',-81.054820,49.095460,'CAN','Ontario',' CA-ON ',' Frederick House River ',24.9,NULL,NULL,'','',true), + ('Collingwood (Ontario CAN)','Collingwood',-80.087500,44.454090,'CAN','Ontario',' CA-ON ',' Lake Simcoe ',56.2,NULL,NULL,'','',true), + ('Cornwall (Ontario CAN)','Cornwall',-74.906910,45.086020,'CAN','Ontario',' CA-ON ',' Saint Lawrence ',28.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Deer Lake (Ontario CAN)','Deer Lake',-94.081270,52.658460,'CAN','Ontario',' CA-ON ',' McInnes River ',21.3,NULL,NULL,'','',true), + ('Dryden (Ontario CAN)','Dryden',-92.800490,49.803800,'CAN','Ontario',' CA-ON ',' Wabigoon River ',16.5,NULL,NULL,'','',true), + ('Dubreuilville (Ontario CAN)','Dubreuilville',-84.610280,48.334520,'CAN','Ontario',' CA-ON ',' Magpie River ',17.9,NULL,NULL,'','',true), + ('Ear Falls (Ontario CAN)','Ear Falls',-93.239520,50.644880,'CAN','Ontario',' CA-ON ',' Phelps Lake ',14.5,NULL,NULL,'','',true), + ('Elliot Lake (Ontario CAN)','Elliot Lake',-82.462110,46.417570,'CAN','Ontario',' CA-ON ',' Serpent River ',5.6,NULL,NULL,'','',true), + ('Englehart (Ontario CAN)','Englehart',-79.857480,47.840210,'CAN','Ontario',' CA-ON ',' Blanche River ',18.7,NULL,NULL,'','',true), + ('Espanola (Ontario CAN)','Espanola',-81.704450,46.221150,'CAN','Ontario',' CA-ON ',' Lake Panache ',25.6,NULL,NULL,'','',true), + ('Foleyet (Ontario CAN)','Foleyet',-82.441190,48.236410,'CAN','Ontario',' CA-ON ',' Ivanhoe ',11.3,NULL,NULL,'','',true), + ('Fort Albany (Ontario CAN)','Fort Albany',-81.661330,52.306360,'CAN','Ontario',' CA-ON ',' Kinosheo River ',72.2,NULL,NULL,'','',true), + ('Fort Frances (Ontario CAN)','Fort Frances',-93.444220,48.656920,'CAN','Ontario',' CA-ON ',' Rainy Lake ',32.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Fort Hope (Ontario CAN)','Fort Hope',-87.851480,51.573440,'CAN','Ontario',' CA-ON ',' Eabamet Lake ',4.5,NULL,NULL,'','',true), + ('Fort Severn (Ontario CAN)','Fort Severn',-87.672000,55.998650,'CAN','Ontario',' CA-ON ',' Shagamu River ',82.8,NULL,NULL,'','',true), + ('Geraldton (Ontario CAN)','Geraldton',-86.956810,49.763600,'CAN','Ontario',' CA-ON ',' Long Lake ',23.3,NULL,NULL,'','',true), + ('Goderich (Ontario CAN)','Goderich',-81.664950,43.744970,'CAN','Ontario',' CA-ON ',' Maitland River ',31.8,NULL,NULL,'','',true), + ('Gogama (Ontario CAN)','Gogama',-81.766800,47.660510,'CAN','Ontario',' CA-ON ',' Rush Lake ',34.8,NULL,NULL,'','',true), + ('Greater Sudbury (Ontario CAN)','Greater Sudbury',-80.922400,46.459770,'CAN','Ontario',' CA-ON ',' Wanapitei River ',26.0,NULL,NULL,'','',true), + ('Guelph (Ontario CAN)','Guelph',-80.277430,43.598690,'CAN','Ontario',' CA-ON ',' Maitland River ',86.9,NULL,NULL,'','',true), + ('Haileybury (Ontario CAN)','Haileybury',-79.627180,47.409880,'CAN','Ontario',' CA-ON ',' Lady Evelyn Lake ',39.8,NULL,NULL,'','',true), + ('Hamilton (Ontario CAN)','Hamilton',-79.843320,43.268980,'CAN','Ontario',' CA-ON ',' Welland Canal ',53.8,NULL,NULL,'','',true), + ('Hearst (Ontario CAN)','Hearst',-83.723690,49.709080,'CAN','Ontario',' CA-ON ',' Missinaibi ',50.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Hornepayne (Ontario CAN)','Hornepayne',-84.811880,49.213810,'CAN','Ontario',' CA-ON ',' Nagagami Lake ',28.6,NULL,NULL,'','',true), + ('Huntsville (Ontario CAN)','Huntsville',-79.244070,45.365250,'CAN','Ontario',' CA-ON ',' North Branch Muskoka River ',32.8,NULL,NULL,'','',true), + ('Iroquois Falls (Ontario CAN)','Iroquois Falls',-80.747690,48.736650,'CAN','Ontario',' CA-ON ',' Frederick House Lake ',16.5,NULL,NULL,'','',true), + ('Kapuskasing (Ontario CAN)','Kapuskasing',-82.410880,49.458740,'CAN','Ontario',' CA-ON ',' Opasatika River ',42.5,NULL,NULL,'','',true), + ('Kasabonika (Ontario CAN)','Kasabonika',-88.672270,53.527170,'CAN','Ontario',' CA-ON ',' Asheweig River ',15.4,NULL,NULL,'','',true), + ('Kenora (Ontario CAN)','Kenora',-94.371020,49.736440,'CAN','Ontario',' CA-ON ',' Dryberry Lake ',42.2,NULL,NULL,'','',true), + ('Kincardine (Ontario CAN)','Kincardine',-81.589740,44.160330,'CAN','Ontario',' CA-ON ',' Maitland River ',41.2,NULL,NULL,'','',true), + ('Kingston (Ontario CAN)','Kingston',-76.499010,44.268390,'CAN','Ontario',' CA-ON ',' Big Rideau Lake ',57.6,NULL,NULL,'','',true), + ('Kirkland Lake (Ontario CAN)','Kirkland Lake',-80.035130,48.140850,'CAN','Ontario',' CA-ON ',' Round Lake ',12.6,NULL,NULL,'','',true), + ('Kitchener (Ontario CAN)','Kitchener',-80.519940,43.412720,'CAN','Ontario',' CA-ON ',' Maitland River ',79.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Lansdowne House (Ontario CAN)','Lansdowne House',-87.933900,52.155090,'CAN','Ontario',' CA-ON ',' Kabania Lake ',28.6,NULL,NULL,'','',true), + ('Little Current (Ontario CAN)','Little Current',-81.956900,45.928960,'CAN','Ontario',' CA-ON ',' Lake Manitou ',16.6,NULL,NULL,'','',true), + ('London (Ontario CAN)','London',-81.212280,42.923410,'CAN','Ontario',' CA-ON ',' Thames River ',13.2,NULL,NULL,'','',true), + ('Longlac (Ontario CAN)','Longlac',-86.522690,49.756560,'CAN','Ontario',' CA-ON ',' McKay Lake ',17.1,NULL,NULL,'','',true), + ('Manitouwadge (Ontario CAN)','Manitouwadge',-85.852790,49.164500,'CAN','Ontario',' CA-ON ',' Pic River ',25.7,NULL,NULL,'','',true), + ('Marathon (Ontario CAN)','Marathon',-86.328100,48.704500,'CAN','Ontario',' CA-ON ',' Pic River ',51.5,NULL,NULL,'','',true), + ('Mattawa (Ontario CAN)','Mattawa',-78.662480,46.247870,'CAN','Ontario',' CA-ON ',' Opeongo Lake ',61.3,NULL,NULL,'','',true), + ('Midland (Ontario CAN)','Midland',-79.865570,44.711050,'CAN','Ontario',' CA-ON ',' Lake Muskoka ',44.7,NULL,NULL,'','',true), + ('Moosonee (Ontario CAN)','Moosonee',-80.617870,51.285470,'CAN','Ontario',' CA-ON ',' Moose ',71.0,NULL,NULL,'','',true), + ('Nakina (Ontario CAN)','Nakina',-86.741990,50.201260,'CAN','Ontario',' CA-ON ',' Esnagami Lake ',18.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('New Liskeard (Ontario CAN)','New Liskeard',-79.687390,47.547140,'CAN','Ontario',' CA-ON ',' Lady Evelyn Lake ',40.6,NULL,NULL,'','',true), + ('Niagara Falls (Ontario CAN)','Niagara Falls',-79.084780,43.107640,'CAN','Ontario',' CA-ON ',' Niagara ',7.1,NULL,NULL,'','',true), + ('Nipigon (Ontario CAN)','Nipigon',-88.273200,49.057920,'CAN','Ontario',' CA-ON ',' Black Sturgeon River ',19.5,NULL,NULL,'','',true), + ('North Bay (Ontario CAN)','North Bay',-79.422970,46.296790,'CAN','Ontario',' CA-ON ',' Lake Nipissing ',41.7,NULL,NULL,'','',true), + ('Orillia (Ontario CAN)','Orillia',-79.476140,44.601140,'CAN','Ontario',' CA-ON ',' Lake Simcoe ',14.5,NULL,NULL,'','',true), + ('Oshawa (Ontario CAN)','Oshawa',-78.875590,43.926480,'CAN','Ontario',' CA-ON ',' Lake Scugog ',30.9,NULL,NULL,'','',true), + ('Osnaburgh House (Ontario CAN)','Osnaburgh House',-90.235940,51.222320,'CAN','Ontario',' CA-ON ',' Kawinogans River ',31.5,NULL,NULL,'','',true), + ('Ottawa (Ontario CAN)','Ottawa',-75.667250,45.392910,'CAN','Ontario',' CA-ON ',' South Nation River ',39.1,NULL,NULL,'','',true), + ('Owen Sound (Ontario CAN)','Owen Sound',-80.952170,44.541910,'CAN','Ontario',' CA-ON ',' Saugeen River ',29.7,NULL,NULL,'','',true), + ('Parry Sound (Ontario CAN)','Parry Sound',-79.935980,45.327830,'CAN','Ontario',' CA-ON ',' Lake Rosseau ',27.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Peawanuck (Ontario CAN)','Peawanuck',-85.457910,55.058280,'CAN','Ontario',' CA-ON ',' Sutton Lake ',96.9,NULL,NULL,'','',true), + ('Pembroke (Ontario CAN)','Pembroke',-77.185300,45.812550,'CAN','Ontario',' CA-ON ',' Ottawa ',27.3,NULL,NULL,'','',true), + ('Petawawa (Ontario CAN)','Petawawa',-77.380990,45.945720,'CAN','Ontario',' CA-ON ',' Ottawa ',21.5,NULL,NULL,'','',true), + ('Peterborough (Ontario CAN)','Peterborough',-78.375130,44.304270,'CAN','Ontario',' CA-ON ',' Chemong Lake ',17.7,NULL,NULL,'','',true), + ('Pikangikum (Ontario CAN)','Pikangikum',-93.974980,51.837360,'CAN','Ontario',' CA-ON ',' McInnes Lake ',47.4,NULL,NULL,'','',true), + ('Quinte West (Ontario CAN)','Quinte West',-77.540660,44.131910,'CAN','Ontario',' CA-ON ',' Trent River ',24.5,NULL,NULL,'','',true), + ('Rainy River (Ontario CAN)','Rainy River',-94.485860,48.750710,'CAN','Ontario',' CA-ON ',' Lake of the Woods ',67.9,NULL,NULL,'','',true), + ('Red Lake (Ontario CAN)','Red Lake',-93.765400,50.997060,'CAN','Ontario',' CA-ON ',' Gullrock Lake ',6.6,NULL,NULL,'','',true), + ('Renfrew (Ontario CAN)','Renfrew',-76.681000,45.495330,'CAN','Ontario',' CA-ON ',' Madawaska River ',25.6,NULL,NULL,'','',true), + ('Sandy Lake (Ontario CAN)','Sandy Lake',-93.393010,53.064830,'CAN','Ontario',' CA-ON ',' Sandy Lake ',34.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Sarnia (Ontario CAN)','Sarnia',-82.380250,42.952570,'CAN','Ontario',' CA-ON ',' St Clair ',22.1,NULL,NULL,'','',true), + ('Sault Ste Marie (Ontario CAN)','Sault Ste Marie',-84.347080,46.561430,'CAN','Ontario',' CA-ON ',' St Marys River ',13.8,NULL,NULL,'','',true), + ('Sioux Lookout (Ontario CAN)','Sioux Lookout',-91.891980,50.101760,'CAN','Ontario',' CA-ON ',' Minnitaki Lake ',12.3,NULL,NULL,'','',true), + ('Smiths Falls (Ontario CAN)','Smiths Falls',-76.013260,44.942690,'CAN','Ontario',' CA-ON ',' Rideau River ',6.8,NULL,NULL,'','',true), + ('Smooth Rock Falls (Ontario CAN)','Smooth Rock Falls',-81.997580,49.390000,'CAN','Ontario',' CA-ON ',' Groundhog ',31.4,NULL,NULL,'','',true), + ('St Catharines (Ontario CAN)','St Catharines',-79.179970,43.179150,'CAN','Ontario',' CA-ON ',' Niagara ',10.0,NULL,NULL,'','',true), + ('Terrace Bay (Ontario CAN)','Terrace Bay',-87.072010,48.827560,'CAN','Ontario',' CA-ON ',' Aguasabon River ',17.4,NULL,NULL,'','',true), + ('Thessalon (Ontario CAN)','Thessalon',-83.465270,46.313550,'CAN','Ontario',' CA-ON ',' Mississagi River ',36.5,NULL,NULL,'','',true), + ('Thunder Bay (Ontario CAN)','Thunder Bay',-89.204930,48.420380,'CAN','Ontario',' CA-ON ',' Dog River ',48.4,NULL,NULL,'','',true), + ('Timmins (Ontario CAN)','Timmins',-81.334100,48.488480,'CAN','Ontario',' CA-ON ',' Mattagami River ',25.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Toronto (Ontario CAN)','Toronto',-79.394260,43.693590,'CAN','Ontario',' CA-ON ',' Niagara ',64.5,NULL,NULL,'','',true), + ('Wawa (Ontario CAN)','Wawa',-84.728320,48.049380,'CAN','Ontario',' CA-ON ',' Magpie River ',15.9,NULL,NULL,'','',true), + ('Weagamow Lake (Ontario CAN)','Weagamow Lake',-91.215450,52.979470,'CAN','Ontario',' CA-ON ',' Weagamow Lake ',14.8,NULL,NULL,'','',true), + ('Webequie (Ontario CAN)','Webequie',-87.391060,52.956090,'CAN','Ontario',' CA-ON ',' Winisk Lake ',0.8,NULL,NULL,'','',true), + ('White River (Ontario CAN)','White River',-85.223830,48.560630,'CAN','Ontario',' CA-ON ',' White Lake ',38.7,NULL,NULL,'','',true), + ('Windsor (Ontario CAN)','Windsor',-82.961390,42.256970,'CAN','Ontario',' CA-ON ',' Lake Saint Clair ',31.2,NULL,NULL,'','',true), + ('Charlottetown (Prince Edward Island CAN)','Charlottetown',-63.187690,46.279400,'CAN','Prince Edward Island',' CA-PE ',' Saint Marys ',131.9,NULL,NULL,'','',true), + ('Summerside (Prince Edward Island CAN)','Summerside',-63.807960,46.411420,'CAN','Prince Edward Island',' CA-PE ',' Petitcodiac River ',106.9,NULL,NULL,'','',true), + ('Akulivik (Quebec CAN)','Akulivik',-78.104850,60.827450,'CAN','Quebec',' CA-QC ',' Rivire Sorehead ',67.5,NULL,NULL,'','',true), + ('Alma (Quebec CAN)','Alma',-71.655340,48.524760,'CAN','Quebec',' CA-QC ',' Lac Saint Jean ',28.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Amos (Quebec CAN)','Amos',-78.062280,48.573100,'CAN','Quebec',' CA-QC ',' Lac La Motte ',17.7,NULL,NULL,'','',true), + ('Amqui (Quebec CAN)','Amqui',-67.448000,48.453940,'CAN','Quebec',' CA-QC ',' Lac Matapdia ',15.7,NULL,NULL,'','',true), + ('Baie Comeau (Quebec CAN)','Baie Comeau',-68.162800,49.227190,'CAN','Quebec',' CA-QC ',' Lac Matapdia ',85.3,NULL,NULL,'','',true), + ('Baie Saint Paul (Quebec CAN)','Baie Saint Paul',-70.492900,47.441230,'CAN','Quebec',' CA-QC ',' Rivire Jacques Cartier ',74.9,NULL,NULL,'','',true), + ('Blanc Sablon (Quebec CAN)','Blanc Sablon',-57.193980,51.431330,'CAN','Quebec',' CA-QC ',' Rivire Napetipi ',66.3,NULL,NULL,'','',true), + ('Cabano (Quebec CAN)','Cabano',-68.881540,47.607760,'CAN','Quebec',' CA-QC ',' Lac Tacmiscouata ',9.3,NULL,NULL,'','',true), + ('Cap aux Meules (Quebec CAN)','Cap aux Meules',-61.822210,47.382430,'CAN','Quebec',' CA-QC ',' Northeast Margaree River ',121.4,NULL,NULL,'','',true), + ('Chapais (Quebec CAN)','Chapais',-74.879810,49.778570,'CAN','Quebec',' CA-QC ',' Rivire Obatogamau ',10.2,NULL,NULL,'','',true), + ('Chibougamau (Quebec CAN)','Chibougamau',-74.358100,49.912170,'CAN','Quebec',' CA-QC ',' Lac Obatogamau ',37.2,NULL,NULL,'','',true), + ('Chisasibi (Quebec CAN)','Chisasibi',-78.910520,53.784880,'CAN','Quebec',' CA-QC ',' Rivire au Castor ',51.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Dolbeau Mistassini (Quebec CAN)','Dolbeau Mistassini',-72.294580,48.843990,'CAN','Quebec',' CA-QC ',' Lac Saint Jean ',33.8,NULL,NULL,'','',true), + ('Drummondville (Quebec CAN)','Drummondville',-72.413100,45.871900,'CAN','Quebec',' CA-QC ',' Rivire Nicolet ',32.1,NULL,NULL,'','',true), + ('Eastmain (Quebec CAN)','Eastmain',-78.477940,52.215670,'CAN','Quebec',' CA-QC ',' Rivire Jolicoeur ',37.2,NULL,NULL,'','',true), + ('Fermont (Quebec CAN)','Fermont',-67.126730,52.814930,'CAN','Quebec',' CA-QC ',' Lac Opocopa ',43.4,NULL,NULL,'','',true), + ('Forestville (Quebec CAN)','Forestville',-69.140860,48.771090,'CAN','Quebec',' CA-QC ',' Rivire Portneuf ',59.6,NULL,NULL,'','',true), + ('Gaspe (Quebec CAN)','Gaspe',-64.550910,48.827540,'CAN','Quebec',' CA-QC ',' Rivire York ',45.5,NULL,NULL,'','',true), + ('Gatineau (Quebec CAN)','Gatineau',-75.763610,45.492000,'CAN','Quebec',' CA-QC ',' South Nation River ',51.2,NULL,NULL,'','',true), + ('Granby (Quebec CAN)','Granby',-72.942220,45.378100,'CAN','Quebec',' CA-QC ',' Rivire Yamaska ',22.4,NULL,NULL,'','',true), + ('Havre Saint Pierre (Quebec CAN)','Havre Saint Pierre',-63.572460,50.254510,'CAN','Quebec',' CA-QC ',' Rivire Jupiter ',79.7,NULL,NULL,'','',true), + ('Inukjuak (Quebec CAN)','Inukjuak',-78.144060,58.482710,'CAN','Quebec',' CA-QC ',' Rivire Innuksuac ',17.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Ivujivik (Quebec CAN)','Ivujivik',-77.911760,62.413910,'CAN','Quebec',' CA-QC ',' Rivire Kovik ',111.2,NULL,NULL,'','',true), + ('Joliette (Quebec CAN)','Joliette',-73.430150,46.069770,'CAN','Quebec',' CA-QC ',' Rivire LAssomption ',17.4,NULL,NULL,'','',true), + ('Joutel (Quebec CAN)','Joutel',-78.443550,49.449350,'CAN','Quebec',' CA-QC ',' Harricana ',23.1,NULL,NULL,'','',true), + ('Kangiqsualujjuaq (Quebec CAN)','Kangiqsualujjuaq',-65.999310,58.783700,'CAN','Quebec',' CA-QC ',' Rivire Koroc ',84.8,NULL,NULL,'','',true), + ('Kangiqsujuaq (Quebec CAN)','Kangiqsujuaq',-71.910070,61.597260,'CAN','Quebec',' CA-QC ',' Rivire Vachon ',100.5,NULL,NULL,'','',true), + ('Kangirsuk (Quebec CAN)','Kangirsuk',-70.020250,60.050740,'CAN','Quebec',' CA-QC ',' Rivire Brochant ',25.5,NULL,NULL,'','',true), + ('Kuujjuaq (Quebec CAN)','Kuujjuaq',-68.387960,58.138710,'CAN','Quebec',' CA-QC ',' Lac Gabriel ',20.7,NULL,NULL,'','',true), + ('Kuujjuarapik (Quebec CAN)','Kuujjuarapik',-77.632510,55.300210,'CAN','Quebec',' CA-QC ',' Rivire Vauquelin ',54.3,NULL,NULL,'','',true), + ('La Malbaie (Quebec CAN)','La Malbaie',-70.172910,47.661950,'CAN','Quebec',' CA-QC ',' Lac Tacmiscouata ',100.6,NULL,NULL,'','',true), + ('La Pocatiere (Quebec CAN)','La Pocatiere',-70.077210,47.269080,'CAN','Quebec',' CA-QC ',' Allagash River ',78.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('La Sarre (Quebec CAN)','La Sarre',-79.225240,48.840420,'CAN','Quebec',' CA-QC ',' Rivire La Sarre ',5.7,NULL,NULL,'','',true), + ('La Tabatiere (Quebec CAN)','La Tabatiere',-59.016130,50.863120,'CAN','Quebec',' CA-QC ',' Little Mecatina River ',39.8,NULL,NULL,'','',true), + ('La Tuque (Quebec CAN)','La Tuque',-72.710330,47.408240,'CAN','Quebec',' CA-QC ',' St Maurice ',31.4,NULL,NULL,'','',true), + ('Lebel sur Quevillon (Quebec CAN)','Lebel sur Quevillon',-76.986920,49.041260,'CAN','Quebec',' CA-QC ',' Bell ',35.8,NULL,NULL,'','',true), + ('Levis (Quebec CAN)','Levis',-71.067340,46.717330,'CAN','Quebec',' CA-QC ',' Rivire Jacques Cartier ',63.3,NULL,NULL,'','',true), + ('Maniwaki (Quebec CAN)','Maniwaki',-76.054010,46.390100,'CAN','Quebec',' CA-QC ',' Gatineau ',25.4,NULL,NULL,'','',true), + ('Matagami (Quebec CAN)','Matagami',-77.684680,49.736650,'CAN','Quebec',' CA-QC ',' Lac Grasset ',42.8,NULL,NULL,'','',true), + ('Matane (Quebec CAN)','Matane',-67.530350,48.796270,'CAN','Quebec',' CA-QC ',' Lac Matapdia ',26.8,NULL,NULL,'','',true), + ('Mistissini (Quebec CAN)','Mistissini',-73.886640,50.381120,'CAN','Quebec',' CA-QC ',' Lake Mistassini ',51.5,NULL,NULL,'','',true), + ('Mont Joli (Quebec CAN)','Mont Joli',-68.188720,48.583280,'CAN','Quebec',' CA-QC ',' Lac Matapdia ',44.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Mont Laurier (Quebec CAN)','Mont Laurier',-75.512310,46.577070,'CAN','Quebec',' CA-QC ',' Rivire du Livre ',14.9,NULL,NULL,'','',true), + ('Montmagny (Quebec CAN)','Montmagny',-70.494280,46.921890,'CAN','Quebec',' CA-QC ',' Rivire Jacques Cartier ',79.1,NULL,NULL,'','',true), + ('Montreal (Quebec CAN)','Montreal',-73.624440,45.520590,'CAN','Quebec',' CA-QC ',' Richelieu ',32.2,NULL,NULL,'','',true), + ('Natashquan (Quebec CAN)','Natashquan',-61.783440,50.184290,'CAN','Quebec',' CA-QC ',' Lac Musquaro ',68.6,NULL,NULL,'','',true), + ('Nemiscau (Quebec CAN)','Nemiscau',-76.968910,51.370950,'CAN','Quebec',' CA-QC ',' Lac Jolliet ',20.3,NULL,NULL,'','',true), + ('New Richmond (Quebec CAN)','New Richmond',-65.856130,48.205520,'CAN','Quebec',' CA-QC ',' Rivire Bonaventure ',36.0,NULL,NULL,'','',true), + ('Parent (Quebec CAN)','Parent',-74.643500,47.952450,'CAN','Quebec',' CA-QC ',' Rivire Bazin ',29.5,NULL,NULL,'','',true), + ('Perce (Quebec CAN)','Perce',-64.295630,48.505410,'CAN','Quebec',' CA-QC ',' Rivire York ',76.5,NULL,NULL,'','',true), + ('Port Cartier (Quebec CAN)','Port Cartier',-66.801900,50.060120,'CAN','Quebec',' CA-QC ',' Rivire aux Rochers ',36.5,NULL,NULL,'','',true), + ('Puvirnituq (Quebec CAN)','Puvirnituq',-77.373740,60.052340,'CAN','Quebec',' CA-QC ',' Lac de Puvirnituq ',12.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Quaqtaq (Quebec CAN)','Quaqtaq',-69.593000,61.027890,'CAN','Quebec',' CA-QC ',' Rivire Latourette ',51.2,NULL,NULL,'','',true), + ('Quebec (Quebec CAN)','Quebec',-71.279140,46.813760,'CAN','Quebec',' CA-QC ',' Rivire Jacques Cartier ',47.6,NULL,NULL,'','',true), + ('Radisson (Quebec CAN)','Radisson',-77.636070,53.775900,'CAN','Quebec',' CA-QC ',' Lac Yasinski ',56.0,NULL,NULL,'','',true), + ('Rimouski (Quebec CAN)','Rimouski',-68.476770,48.431360,'CAN','Quebec',' CA-QC ',' Lac Matapdia ',66.7,NULL,NULL,'','',true), + ('Riviere du Loup (Quebec CAN)','Riviere du Loup',-69.463860,47.809600,'CAN','Quebec',' CA-QC ',' Lac Tacmiscouata ',49.4,NULL,NULL,'','',true), + ('Roberval (Quebec CAN)','Roberval',-72.261990,48.484720,'CAN','Quebec',' CA-QC ',' Lac Saint Jean ',22.2,NULL,NULL,'','',true), + ('Rouyn Noranda (Quebec CAN)','Rouyn Noranda',-79.048970,48.257780,'CAN','Quebec',' CA-QC ',' Rivire Kinojvis ',22.6,NULL,NULL,'','',true), + ('Saguenay (Quebec CAN)','Saguenay',-71.226960,48.406560,'CAN','Quebec',' CA-QC ',' Rivire Shipshaw ',53.0,NULL,NULL,'','',true), + ('Saint Augustin (Quebec CAN)','Saint Augustin',-58.608590,51.258680,'CAN','Quebec',' CA-QC ',' Rivire Napetipi ',50.7,NULL,NULL,'','',true), + ('Saint Felicien (Quebec CAN)','Saint Felicien',-72.411480,48.616560,'CAN','Quebec',' CA-QC ',' Lac Saint Jean ',29.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Saint Georges (Quebec CAN)','Saint Georges',-70.576380,46.078460,'CAN','Quebec',' CA-QC ',' Rivire Chaudire ',24.5,NULL,NULL,'','',true), + ('Sainte Anne des Monts (Quebec CAN)','Sainte Anne des Monts',-66.445490,49.084620,'CAN','Quebec',' CA-QC ',' Rivire Cascapdia ',59.8,NULL,NULL,'','',true), + ('Salaberry de Valleyfield (Quebec CAN)','Salaberry de Valleyfield',-74.256050,45.156980,'CAN','Quebec',' CA-QC ',' Saint Lawrence ',74.8,NULL,NULL,'','',true), + ('Salluit (Quebec CAN)','Salluit',-75.588100,62.184870,'CAN','Quebec',' CA-QC ',' Lac Vanasse ',40.0,NULL,NULL,'','',true), + ('Schefferville (Quebec CAN)','Schefferville',-66.839130,54.807050,'CAN','Quebec',' CA-QC ',' McPhadyen River ',71.7,NULL,NULL,'','',true), + ('Senneterre (Quebec CAN)','Senneterre',-77.259130,48.423300,'CAN','Quebec',' CA-QC ',' Rivire Bell ',2.6,NULL,NULL,'','',true), + ('Sept Iles (Quebec CAN)','Sept Iles',-66.274070,50.250200,'CAN','Quebec',' CA-QC ',' Rivire aux Rochers ',60.9,NULL,NULL,'','',true), + ('Shawinigan (Quebec CAN)','Shawinigan',-72.745230,46.552740,'CAN','Quebec',' CA-QC ',' Rivire Batiscan ',53.7,NULL,NULL,'','',true), + ('Sherbrooke (Quebec CAN)','Sherbrooke',-71.898520,45.375110,'CAN','Quebec',' CA-QC ',' Lac Memphremagog ',39.5,NULL,NULL,'','',true), + ('Sorel Tracy (Quebec CAN)','Sorel Tracy',-73.018710,46.026060,'CAN','Quebec',' CA-QC ',' Rivire LAssomption ',48.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Temiscaming (Quebec CAN)','Temiscaming',-79.073060,46.746870,'CAN','Quebec',' CA-QC ',' Lake Kipawa ',24.5,NULL,NULL,'','',true), + ('Thetford Mines (Quebec CAN)','Thetford Mines',-71.282300,46.051760,'CAN','Quebec',' CA-QC ',' Lac Saint Franacois ',13.6,NULL,NULL,'','',true), + ('Trois Rivieres (Quebec CAN)','Trois Rivieres',-72.502090,46.405750,'CAN','Quebec',' CA-QC ',' Rivire Nicolet ',53.6,NULL,NULL,'','',true), + ('Umiujaq (Quebec CAN)','Umiujaq',-76.512400,56.573440,'CAN','Quebec',' CA-QC ',' Rivire du Nord ',41.5,NULL,NULL,'','',true), + ('Val dOr (Quebec CAN)','Val dOr',-77.818120,48.085220,'CAN','Quebec',' CA-QC ',' Lac de Montigny ',9.9,NULL,NULL,'','',true), + ('Victoriaville (Quebec CAN)','Victoriaville',-72.005360,46.059780,'CAN','Quebec',' CA-QC ',' Rivire Nicolet ',5.7,NULL,NULL,'','',true), + ('Ville Marie (Quebec CAN)','Ville Marie',-79.352190,47.316240,'CAN','Quebec',' CA-QC ',' Lac des Quinze ',35.0,NULL,NULL,'','',true), + ('Waskaganish (Quebec CAN)','Waskaganish',-78.731760,51.461820,'CAN','Quebec',' CA-QC ',' Rivire Jolicoeur ',55.5,NULL,NULL,'','',true), + ('Wemindji (Quebec CAN)','Wemindji',-78.863270,53.020860,'CAN','Quebec',' CA-QC ',' Rivire Maquatua ',38.9,NULL,NULL,'','',true), + ('Assiniboia (Saskatchewan CAN)','Assiniboia',-105.987850,49.606520,'CAN','Saskatchewan',' CA-SK ',' Fife Lake ',40.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Biggar (Saskatchewan CAN)','Biggar',-107.993120,52.077970,'CAN','Saskatchewan',' CA-SK ',' Eagle Creek ',7.5,NULL,NULL,'','',true), + ('Buffalo Narrows (Saskatchewan CAN)','Buffalo Narrows',-108.479750,55.852340,'CAN','Saskatchewan',' CA-SK ',' Kazan Lake ',33.6,NULL,NULL,'','',true), + ('Canora (Saskatchewan CAN)','Canora',-102.462820,51.669460,'CAN','Saskatchewan',' CA-SK ',' Little Quill Lake ',113.6,NULL,NULL,'','',true), + ('Carlyle (Saskatchewan CAN)','Carlyle',-102.299880,49.650820,'CAN','Saskatchewan',' CA-SK ',' Moose Mountain Creek ',39.3,NULL,NULL,'','',true), + ('Coronach (Saskatchewan CAN)','Coronach',-105.579800,49.216260,'CAN','Saskatchewan',' CA-SK ',' Girard Creek ',8.9,NULL,NULL,'','',true), + ('Cumberland House (Saskatchewan CAN)','Cumberland House',-102.197010,53.928030,'CAN','Saskatchewan',' CA-SK ',' Saskatchewan River ',30.4,NULL,NULL,'','',true), + ('Davidson (Saskatchewan CAN)','Davidson',-106.080330,51.308280,'CAN','Saskatchewan',' CA-SK ',' Last Mountain Lake ',63.8,NULL,NULL,'','',true), + ('Deschambault Lake (Saskatchewan CAN)','Deschambault Lake',-103.339790,54.853290,'CAN','Saskatchewan',' CA-SK ',' Jan Lake ',28.4,NULL,NULL,'','',true), + ('Esterhazy (Saskatchewan CAN)','Esterhazy',-101.949030,50.675730,'CAN','Saskatchewan',' CA-SK ',' Pipestone Creek ',85.8,NULL,NULL,'','',true), + ('Estevan (Saskatchewan CAN)','Estevan',-102.971190,49.161370,'CAN','Saskatchewan',' CA-SK ',' Long Creek ',40.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Fond du Lac (Saskatchewan CAN)','Fond du Lac',-107.257340,59.377420,'CAN','Saskatchewan',' CA-SK ',' Richards Lake ',22.8,NULL,NULL,'','',true), + ('Fort QuAppelle (Saskatchewan CAN)','Fort QuAppelle',-103.765620,50.783040,'CAN','Saskatchewan',' CA-SK ',' QuAppelle River ',12.6,NULL,NULL,'','',true), + ('Gravelbourg (Saskatchewan CAN)','Gravelbourg',-106.592720,49.954130,'CAN','Saskatchewan',' CA-SK ',' Old Wives Lake ',49.1,NULL,NULL,'','',true), + ('Gull Lake (Saskatchewan CAN)','Gull Lake',-108.634240,50.123500,'CAN','Saskatchewan',' CA-SK ',' Swift Current Creek ',32.4,NULL,NULL,'','',true), + ('Hudson Bay (Saskatchewan CAN)','Hudson Bay',-102.449920,52.888160,'CAN','Saskatchewan',' CA-SK ',' Poplar River ',13.6,NULL,NULL,'','',true), + ('Humboldt (Saskatchewan CAN)','Humboldt',-105.128560,52.248580,'CAN','Saskatchewan',' CA-SK ',' Big Quill Lake ',65.6,NULL,NULL,'','',true), + ('Ile a la Crosse (Saskatchewan CAN)','Ile a la Crosse',-107.892620,55.458890,'CAN','Saskatchewan',' CA-SK ',' Canoe River ',12.3,NULL,NULL,'','',true), + ('Indian Head (Saskatchewan CAN)','Indian Head',-103.661950,50.506310,'CAN','Saskatchewan',' CA-SK ',' QuAppelle River ',23.8,NULL,NULL,'','',true), + ('Kamsack (Saskatchewan CAN)','Kamsack',-101.838190,51.581650,'CAN','Saskatchewan',' CA-SK ',' Big Sandy Lake ',97.8,NULL,NULL,'','',true), + ('Kerrobert (Saskatchewan CAN)','Kerrobert',-109.330270,51.991050,'CAN','Saskatchewan',' CA-SK ',' Red Deer River ',51.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Kindersley (Saskatchewan CAN)','Kindersley',-109.293290,51.489450,'CAN','Saskatchewan',' CA-SK ',' Red Deer River ',68.0,NULL,NULL,'','',true), + ('La Loche (Saskatchewan CAN)','La Loche',-109.390410,56.539290,'CAN','Saskatchewan',' CA-SK ',' Lac la Loche ',11.1,NULL,NULL,'','',true), + ('La Ronge (Saskatchewan CAN)','La Ronge',-105.328250,55.108810,'CAN','Saskatchewan',' CA-SK ',' Egg Lake ',14.6,NULL,NULL,'','',true), + ('Leader (Saskatchewan CAN)','Leader',-109.541860,50.880290,'CAN','Saskatchewan',' CA-SK ',' South Saskatchewan ',85.5,NULL,NULL,'','',true), + ('Maple Creek (Saskatchewan CAN)','Maple Creek',-109.450220,49.938230,'CAN','Saskatchewan',' CA-SK ',' Swift Current Creek ',89.5,NULL,NULL,'','',true), + ('Meadow Lake (Saskatchewan CAN)','Meadow Lake',-108.417090,54.161060,'CAN','Saskatchewan',' CA-SK ',' Meadow River ',8.1,NULL,NULL,'','',true), + ('Melfort (Saskatchewan CAN)','Melfort',-104.537160,52.878880,'CAN','Saskatchewan',' CA-SK ',' Ponass Lakes ',68.7,NULL,NULL,'','',true), + ('Melville (Saskatchewan CAN)','Melville',-102.822660,50.959280,'CAN','Saskatchewan',' CA-SK ',' QuAppelle River ',78.5,NULL,NULL,'','',true), + ('Moose Jaw (Saskatchewan CAN)','Moose Jaw',-105.564690,50.393630,'CAN','Saskatchewan',' CA-SK ',' Moose Jaw River ',33.9,NULL,NULL,'','',true), + ('Moosomin (Saskatchewan CAN)','Moosomin',-101.648750,50.154930,'CAN','Saskatchewan',' CA-SK ',' Pipestone Creek ',24.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Nipawin (Saskatchewan CAN)','Nipawin',-104.081080,53.385510,'CAN','Saskatchewan',' CA-SK ',' Tobin Lake ',35.0,NULL,NULL,'','',true), + ('North Battleford (Saskatchewan CAN)','North Battleford',-108.329730,52.872000,'CAN','Saskatchewan',' CA-SK ',' Turtlelake River ',55.4,NULL,NULL,'','',true), + ('Outlook (Saskatchewan CAN)','Outlook',-106.900670,51.508450,'CAN','Saskatchewan',' CA-SK ',' Lake Diefenbaker ',70.6,NULL,NULL,'','',true), + ('Patuanak (Saskatchewan CAN)','Patuanak',-107.649640,55.916190,'CAN','Saskatchewan',' CA-SK ',' Lac azle a la Crosse ',36.6,NULL,NULL,'','',true), + ('Pelican Narrows (Saskatchewan CAN)','Pelican Narrows',-102.888910,55.183800,'CAN','Saskatchewan',' CA-SK ',' Jan Lake ',26.4,NULL,NULL,'','',true), + ('Pinehouse Lake (Saskatchewan CAN)','Pinehouse Lake',-106.632190,55.532650,'CAN','Saskatchewan',' CA-SK ',' Besnard Lake ',40.6,NULL,NULL,'','',true), + ('Prince Albert (Saskatchewan CAN)','Prince Albert',-105.775550,53.215270,'CAN','Saskatchewan',' CA-SK ',' Spruce River ',45.7,NULL,NULL,'','',true), + ('Regina (Saskatchewan CAN)','Regina',-104.558360,50.491400,'CAN','Saskatchewan',' CA-SK ',' Moose Jaw River ',48.0,NULL,NULL,'','',true), + ('Rosetown (Saskatchewan CAN)','Rosetown',-107.994080,51.565010,'CAN','Saskatchewan',' CA-SK ',' Pembina River ',32.9,NULL,NULL,'','',true), + ('Rosthern (Saskatchewan CAN)','Rosthern',-106.294400,52.774610,'CAN','Saskatchewan',' CA-SK ',' Spruce River ',93.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Sandy Bay (Saskatchewan CAN)','Sandy Bay',-102.258020,55.538070,'CAN','Saskatchewan',' CA-SK ',' Mari Lake ',46.2,NULL,NULL,'','',true), + ('Saskatoon (Saskatchewan CAN)','Saskatoon',-106.678390,52.148370,'CAN','Saskatchewan',' CA-SK ',' Eagle Creek ',93.3,NULL,NULL,'','',true), + ('Shaunavon (Saskatchewan CAN)','Shaunavon',-108.366950,49.665060,'CAN','Saskatchewan',' CA-SK ',' Frenchman River ',31.9,NULL,NULL,'','',true), + ('Southend Reindeer (Saskatchewan CAN)','Southend Reindeer',-103.253170,56.323940,'CAN','Saskatchewan',' CA-SK ',' Wapiskau River ',31.2,NULL,NULL,'','',true), + ('Stanley Mission (Saskatchewan CAN)','Stanley Mission',-104.586890,55.397840,'CAN','Saskatchewan',' CA-SK ',' Lac la Ronge ',28.9,NULL,NULL,'','',true), + ('Stony Rapids (Saskatchewan CAN)','Stony Rapids',-105.931150,59.212960,'CAN','Saskatchewan',' CA-SK ',' Cree River ',25.9,NULL,NULL,'','',true), + ('Swift Current (Saskatchewan CAN)','Swift Current',-107.781460,50.314360,'CAN','Saskatchewan',' CA-SK ',' Gull Lake ',39.5,NULL,NULL,'','',true), + ('Tisdale (Saskatchewan CAN)','Tisdale',-104.043970,52.883600,'CAN','Saskatchewan',' CA-SK ',' Carrot River ',58.4,NULL,NULL,'','',true), + ('Unity (Saskatchewan CAN)','Unity',-109.219600,52.451490,'CAN','Saskatchewan',' CA-SK ',' Red Deer River ',86.0,NULL,NULL,'','',true), + ('Wadena (Saskatchewan CAN)','Wadena',-103.813670,51.964820,'CAN','Saskatchewan',' CA-SK ',' Little Quill Lake ',17.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Watrous (Saskatchewan CAN)','Watrous',-105.448550,51.654220,'CAN','Saskatchewan',' CA-SK ',' Last Mountain Lake ',60.3,NULL,NULL,'','',true), + ('Weyburn (Saskatchewan CAN)','Weyburn',-103.838630,49.664660,'CAN','Saskatchewan',' CA-SK ',' Long Creek ',59.5,NULL,NULL,'','',true), + ('Wollaston Lake (Saskatchewan CAN)','Wollaston Lake',-103.167570,58.100240,'CAN','Saskatchewan',' CA-SK ',' Wollaston Lake ',14.4,NULL,NULL,'','',true), + ('Wynyard (Saskatchewan CAN)','Wynyard',-104.165600,51.781990,'CAN','Saskatchewan',' CA-SK ',' Little Quill Lake ',17.3,NULL,NULL,'','',true), + ('Yorkton (Saskatchewan CAN)','Yorkton',-102.467570,51.289130,'CAN','Saskatchewan',' CA-SK ',' QuAppelle River ',118.0,NULL,NULL,'','',true), + ('Beaver Creek (Yukon Territory CAN)','Beaver Creek',-140.710620,62.265090,'CAN','Yukon Territory',' CA-YT ',' Donjek ',61.4,NULL,NULL,'','',true), + ('Carmacks (Yukon Territory CAN)','Carmacks',-136.194370,62.035100,'CAN','Yukon Territory',' CA-YT ',' Little Salmon River ',48.8,NULL,NULL,'','',true), + ('Dawson (Yukon Territory CAN)','Dawson',-139.336420,64.071140,'CAN','Yukon Territory',' CA-YT ',' Klondike River ',75.5,NULL,NULL,'','',true), + ('Faro (Yukon Territory CAN)','Faro',-133.266360,62.250380,'CAN','Yukon Territory',' CA-YT ',' Magundy River ',37.9,NULL,NULL,'','',true), + ('Haines Junction (Yukon Territory CAN)','Haines Junction',-137.525190,60.737740,'CAN','Yukon Territory',' CA-YT ',' Kaskawulsh River ',34.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Mayo (Yukon Territory CAN)','Mayo',-135.891560,63.604380,'CAN','Yukon Territory',' CA-YT ',' Mayo River ',18.9,NULL,NULL,'','',true), + ('Old Crow (Yukon Territory CAN)','Old Crow',-139.795760,67.588020,'CAN','Yukon Territory',' CA-YT ',' Old Crow River ',61.9,NULL,NULL,'','',true), + ('Pelly Crossing (Yukon Territory CAN)','Pelly Crossing',-136.610160,62.824030,'CAN','Yukon Territory',' CA-YT ',' Macmillan River ',96.2,NULL,NULL,'','',true), + ('Ross River (Yukon Territory CAN)','Ross River',-132.542650,61.967850,'CAN','Yukon Territory',' CA-YT ',' Tay River ',76.5,NULL,NULL,'','',true), + ('Teslin (Yukon Territory CAN)','Teslin',-132.746860,60.210900,'CAN','Yukon Territory',' CA-YT ',' Teslin ',21.9,NULL,NULL,'','',true), + ('Watson Lake (Yukon Territory CAN)','Watson Lake',-128.752370,60.089970,'CAN','Yukon Territory',' CA-YT ',' Porter Lakes ',12.2,NULL,NULL,'','',true), + ('Whitehorse (Yukon Territory CAN)','Whitehorse',-135.131800,60.709840,'CAN','Yukon Territory',' CA-YT ',' Takhini River ',42.7,NULL,NULL,'','',true), + ('Aguascalientes (Aguascalientes MEX)','Aguascalientes',-102.286780,21.870560,'MEX','Aguascalientes',' MX-AGU ',' Rio Juchipila ',75.8,NULL,NULL,'','',true), + ('Ensenada (Baja California MEX)','Ensenada',-116.584790,31.869060,'MEX','Baja California',' MX-BCN ',' Arroyo sin Nombre ',57.0,NULL,NULL,'','',true), + ('Mexicali (Baja California MEX)','Mexicali',-115.462710,32.603800,'MEX','Baja California',' MX-BCN ',' Laguna Salada ',25.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('San Felipe (Baja California MEX)','San Felipe',-114.901820,31.037490,'MEX','Baja California',' MX-BCN ',' Arroyo San Rafael ',94.3,NULL,NULL,'','',true), + ('San Quintin (Baja California MEX)','San Quintin',-115.904420,30.505300,'MEX','Baja California',' MX-BCN ',' Arroyo San Rafael ',66.6,NULL,NULL,'','',true), + ('Tecate (Baja California MEX)','Tecate',-116.703120,32.538570,'MEX','Baja California',' MX-BCN ',' Arroyo sin Nombre ',32.1,NULL,NULL,'','',true), + ('Tijuana (Baja California MEX)','Tijuana',-116.968190,32.471870,'MEX','Baja California',' MX-BCN ',' Arroyo sin Nombre ',51.9,NULL,NULL,'','',true), + ('Ciudad Constitucion (Baja California Sur MEX)','Ciudad Constitucion',-111.682140,25.048520,'MEX','Baja California Sur',' MX-BCS ',' Arroyo Las Bramonas ',12.7,NULL,NULL,'','',true), + ('Ejido Insurgentes (Baja California Sur MEX)','Ejido Insurgentes',-111.769040,25.254680,'MEX','Baja California Sur',' MX-BCS ',' Arroyo Las Bramonas ',24.5,NULL,NULL,'','',true), + ('La Paz (Baja California Sur MEX)','La Paz',-110.303590,24.102890,'MEX','Baja California Sur',' MX-BCS ',' Arroyo San Jose ',105.2,NULL,NULL,'','',true), + ('Loreto (Baja California Sur MEX)','Loreto',-111.386000,25.987370,'MEX','Baja California Sur',' MX-BCS ',' Arroyo Las Bramonas ',98.8,NULL,NULL,'','',true), + ('San Jose del Cabo (Baja California Sur MEX)','San Jose del Cabo',-109.697900,23.059180,'MEX','Baja California Sur',' MX-BCS ',' Arroyo San Jose ',27.2,NULL,NULL,'','',true), + ('San Lucas (Baja California Sur MEX)','San Lucas',-109.957210,22.920900,'MEX','Baja California Sur',' MX-BCS ',' Arroyo San Jose ',46.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Santa Rosalia (Baja California Sur MEX)','Santa Rosalia',-112.281600,27.302100,'MEX','Baja California Sur',' MX-BCS ',' Arroyo Bateque ',90.9,NULL,NULL,'','',true), + ('Todos Santos (Baja California Sur MEX)','Todos Santos',-110.198770,23.444390,'MEX','Baja California Sur',' MX-BCS ',' Arroyo San Jose ',47.3,NULL,NULL,'','',true), + ('Campeche (Campeche MEX)','Campeche',-90.500450,19.832410,'MEX','Campeche',' MX-CAM ',' Caribe ',176.6,NULL,NULL,'','',true), + ('Champoton (Campeche MEX)','Champoton',-90.705470,19.352200,'MEX','Campeche',' MX-CAM ',' Caribe ',122.7,NULL,NULL,'','',true), + ('Ciudad del Carmen (Campeche MEX)','Ciudad del Carmen',-91.818080,18.659500,'MEX','Campeche',' MX-CAM ',' Laguna Atasta ',35.0,NULL,NULL,'','',true), + ('Escarcega (Campeche MEX)','Escarcega',-90.739880,18.605360,'MEX','Campeche',' MX-CAM ',' Caribe ',40.6,NULL,NULL,'','',true), + ('Hopelchen (Campeche MEX)','Hopelchen',-89.843280,19.745900,'MEX','Campeche',' MX-CAM ',' Caribe ',186.6,NULL,NULL,'','',true), + ('Arriaga (Chiapas MEX)','Arriaga',-93.871230,16.227840,'MEX','Chiapas',' MX-CHP ',' La Venta ',48.8,NULL,NULL,'','',true), + ('Comitan (Chiapas MEX)','Comitan',-92.131630,16.240350,'MEX','Chiapas',' MX-CHP ',' Presa de la Angostura ',51.9,NULL,NULL,'','',true), + ('Escuintla (Chiapas MEX)','Escuintla',-92.688490,15.295800,'MEX','Chiapas',' MX-CHP ',' Novillero ',38.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Huixtla (Chiapas MEX)','Huixtla',-92.468270,15.140360,'MEX','Chiapas',' MX-CHP ',' Novillero ',67.4,NULL,NULL,'','',true), + ('Ocosingo (Chiapas MEX)','Ocosingo',-92.089320,16.923800,'MEX','Chiapas',' MX-CHP ',' La Sierra ',80.2,NULL,NULL,'','',true), + ('Palenque (Chiapas MEX)','Palenque',-91.941630,17.431460,'MEX','Chiapas',' MX-CHP ',' Usumacinta ',39.9,NULL,NULL,'','',true), + ('Pijijiapan (Chiapas MEX)','Pijijiapan',-93.283150,15.714600,'MEX','Chiapas',' MX-CHP ',' Novillero ',41.0,NULL,NULL,'','',true), + ('San Cristobal de las Casas (Chiapas MEX)','San Cristobal de las Casas',-92.619620,16.734690,'MEX','Chiapas',' MX-CHP ',' La Sierra ',70.7,NULL,NULL,'','',true), + ('Tapachula (Chiapas MEX)','Tapachula',-92.271720,14.903550,'MEX','Chiapas',' MX-CHP ',' Novillero ',100.6,NULL,NULL,'','',true), + ('Tonala (Chiapas MEX)','Tonala',-93.780190,16.094650,'MEX','Chiapas',' MX-CHP ',' La Venta ',60.3,NULL,NULL,'','',true), + ('Tuxtla Gutierrez (Chiapas MEX)','Tuxtla Gutierrez',-93.124820,16.753450,'MEX','Chiapas',' MX-CHP ',' Suchiapa ',38.3,NULL,NULL,'','',true), + ('Bueneventura (Chihuahua MEX)','Bueneventura',-107.478090,29.846330,'MEX','Chihuahua',' MX-CHH ',' Rio Santa Maria ',9.0,NULL,NULL,'','',true), + ('Chihuahua (Chihuahua MEX)','Chihuahua',-106.042520,28.635690,'MEX','Chihuahua',' MX-CHH ',' Arroyo Chuviscar ',16.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Ciudad Camargo (Chihuahua MEX)','Ciudad Camargo',-105.193810,27.685940,'MEX','Chihuahua',' MX-CHH ',' Laguna Los Clavos ',35.2,NULL,NULL,'','',true), + ('Ciudad Juarez (Chihuahua MEX)','Ciudad Juarez',-106.488170,31.704210,'MEX','Chihuahua',' MX-CHH ',' Laguna Santa Mara ',98.1,NULL,NULL,'','',true), + ('Cuauhtemoc (Chihuahua MEX)','Cuauhtemoc',-106.870540,28.409980,'MEX','Chihuahua',' MX-CHH ',' Laguna Bustillos ',19.9,NULL,NULL,'','',true), + ('Delicias (Chihuahua MEX)','Delicias',-105.455250,28.194920,'MEX','Chihuahua',' MX-CHH ',' Conchos ',21.9,NULL,NULL,'','',true), + ('Hidalgo del Parral (Chihuahua MEX)','Hidalgo del Parral',-105.677230,26.926510,'MEX','Chihuahua',' MX-CHH ',' Arroyo Florido ',67.5,NULL,NULL,'','',true), + ('Jimenez (Chihuahua MEX)','Jimenez',-104.914810,27.127200,'MEX','Chihuahua',' MX-CHH ',' Arroyo Florido ',22.3,NULL,NULL,'','',true), + ('Nuevo Casas Grandes (Chihuahua MEX)','Nuevo Casas Grandes',-107.912630,30.407830,'MEX','Chihuahua',' MX-CHH ',' Rio Santa Maria ',77.1,NULL,NULL,'','',true), + ('Ojinaga (Chihuahua MEX)','Ojinaga',-104.393280,29.530940,'MEX','Chihuahua',' MX-CHH ',' Presa Luis L Len (El Granero) ',111.3,NULL,NULL,'','',true), + ('San Juanito (Chihuahua MEX)','San Juanito',-107.601580,27.968340,'MEX','Chihuahua',' MX-CHH ',' Ro Conchos ',38.7,NULL,NULL,'','',true), + ('Villa Ahumada (Chihuahua MEX)','Villa Ahumada',-106.441940,30.853560,'MEX','Chihuahua',' MX-CHH ',' Laguna Santa Mara ',85.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Allende (Coahuila de Zaragoza MEX)','Allende',-100.850370,28.363030,'MEX','Coahuila de Zaragoza',' MX-COA ',' San Rodrigo ',65.0,NULL,NULL,'','',true), + ('Ciudad Acuna (Coahuila de Zaragoza MEX)','Ciudad Acuna',-100.939010,29.263780,'MEX','Coahuila de Zaragoza',' MX-COA ',' Amistad Reservoir ',35.2,NULL,NULL,'','',true), + ('Cuatro Cienegas (Coahuila de Zaragoza MEX)','Cuatro Cienegas',-102.106700,26.952120,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Salado de los Nadadores ',77.1,NULL,NULL,'','',true), + ('Matamoros (Coahuila de Zaragoza MEX)','Matamoros',-103.226920,25.524090,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Nasas ',69.1,NULL,NULL,'','',true), + ('Melchor Muzquiz (Coahuila de Zaragoza MEX)','Melchor Muzquiz',-101.518480,27.874140,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Sabinas ',18.1,NULL,NULL,'','',true), + ('Monclova (Coahuila de Zaragoza MEX)','Monclova',-101.426590,26.889660,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Salado de los Nadadores ',17.8,NULL,NULL,'','',true), + ('Nueva Rosita (Coahuila de Zaragoza MEX)','Nueva Rosita',-101.190880,27.924860,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Sabinas ',15.0,NULL,NULL,'','',true), + ('Parras (Coahuila de Zaragoza MEX)','Parras',-102.182640,25.424140,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio San Pedro ',81.2,NULL,NULL,'','',true), + ('Piedras Negras (Coahuila de Zaragoza MEX)','Piedras Negras',-100.565500,28.682350,'MEX','Coahuila de Zaragoza',' MX-COA ',' San Rodrigo ',68.8,NULL,NULL,'','',true), + ('Sabinas (Coahuila de Zaragoza MEX)','Sabinas',-101.116510,27.839440,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Sabinas ',21.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Saltillo (Coahuila de Zaragoza MEX)','Saltillo',-100.995420,25.433350,'MEX','Coahuila de Zaragoza',' MX-COA ',' Pesqueria ',66.2,NULL,NULL,'','',true), + ('San Pedro de las Colonias (Coahuila de Zaragoza MEX)','San Pedro de las Colonias',-102.991590,25.739800,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Nasas ',97.2,NULL,NULL,'','',true), + ('Torreon (Coahuila de Zaragoza MEX)','Torreon',-103.414720,25.553340,'MEX','Coahuila de Zaragoza',' MX-COA ',' Rio Nasas ',50.9,NULL,NULL,'','',true), + ('Colima (Colima MEX)','Colima',-103.725210,19.223450,'MEX','Colima',' MX-COL ',' Coahuayana ',25.6,NULL,NULL,'','',true), + ('Manzanillo (Colima MEX)','Manzanillo',-104.289570,19.054380,'MEX','Colima',' MX-COL ',' Purificacin ',68.9,NULL,NULL,'','',true), + ('Tecoman (Colima MEX)','Tecoman',-103.863690,18.931960,'MEX','Colima',' MX-COL ',' Coahuayana ',50.5,NULL,NULL,'','',true), + ('Canatlan (Durango MEX)','Canatlan',-104.769380,24.534590,'MEX','Durango',' MX-DUR ',' Arroyo El Yerbanis ',19.2,NULL,NULL,'','',true), + ('Durango (Durango MEX)','Durango',-104.651270,24.037590,'MEX','Durango',' MX-DUR ',' Arroyo El Yerbanis ',37.4,NULL,NULL,'','',true), + ('El Salto (Durango MEX)','El Salto',-105.347780,23.801400,'MEX','Durango',' MX-DUR ',' Rio Presidio ',52.8,NULL,NULL,'','',true), + ('Gomez Palacio (Durango MEX)','Gomez Palacio',-103.534960,25.635800,'MEX','Durango',' MX-DUR ',' Rio Nasas ',42.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Santiago Papasquiaro (Durango MEX)','Santiago Papasquiaro',-105.439310,25.037200,'MEX','Durango',' MX-DUR ',' Rio Tepehuanes ',23.0,NULL,NULL,'','',true), + ('Tepehuanes (Durango MEX)','Tepehuanes',-105.706070,25.345990,'MEX','Durango',' MX-DUR ',' Rio Tepehuanes ',21.0,NULL,NULL,'','',true), + ('Acambaro (Guanajuato MEX)','Acambaro',-100.733110,20.012830,'MEX','Guanajuato',' MX-GUA ',' Lago Cuitzeo ',37.3,NULL,NULL,'','',true), + ('Celaya (Guanajuato MEX)','Celaya',-100.799980,20.551150,'MEX','Guanajuato',' MX-GUA ',' Guanajuato ',14.8,NULL,NULL,'','',true), + ('Guanajuato (Guanajuato MEX)','Guanajuato',-101.261100,21.025610,'MEX','Guanajuato',' MX-GUA ',' Guanajuato ',56.5,NULL,NULL,'','',true), + ('Irapuato (Guanajuato MEX)','Irapuato',-101.352620,20.692330,'MEX','Guanajuato',' MX-GUA ',' Guanajuato ',48.3,NULL,NULL,'','',true), + ('Leon (Guanajuato MEX)','Leon',-101.653280,21.125830,'MEX','Guanajuato',' MX-GUA ',' Guanajuato ',95.0,NULL,NULL,'','',true), + ('Salamanca (Guanajuato MEX)','Salamanca',-101.182630,20.587110,'MEX','Guanajuato',' MX-GUA ',' Guanajuato ',31.3,NULL,NULL,'','',true), + ('San Miguel de Allende (Guanajuato MEX)','San Miguel de Allende',-100.754970,20.909080,'MEX','Guanajuato',' MX-GUA ',' Guanajuato ',31.7,NULL,NULL,'','',true), + ('Acapulco (Guerrero MEX)','Acapulco',-99.895040,16.878700,'MEX','Guerrero',' MX-GRO ',' Laguna Tres Palos ',22.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Chilpancingo (Guerrero MEX)','Chilpancingo',-99.421670,17.473550,'MEX','Guerrero',' MX-GRO ',' Rio Azul ',15.9,NULL,NULL,'','',true), + ('Ciudad Altamirano (Guerrero MEX)','Ciudad Altamirano',-100.657080,18.349050,'MEX','Guerrero',' MX-GRO ',' Bejucos ',30.4,NULL,NULL,'','',true), + ('Iguala (Guerrero MEX)','Iguala',-99.510690,18.328550,'MEX','Guerrero',' MX-GRO ',' Amacuzac ',27.1,NULL,NULL,'','',true), + ('San Marcos (Guerrero MEX)','San Marcos',-99.386970,16.833350,'MEX','Guerrero',' MX-GRO ',' Omitlan ',35.9,NULL,NULL,'','',true), + ('Taxco (Guerrero MEX)','Taxco',-99.513970,18.431080,'MEX','Guerrero',' MX-GRO ',' Amacuzac ',20.8,NULL,NULL,'','',true), + ('Tecpan (Guerrero MEX)','Tecpan',-100.434180,17.188090,'MEX','Guerrero',' MX-GRO ',' Coyuca ',30.3,NULL,NULL,'','',true), + ('Zihuatanejo (Guerrero MEX)','Zihuatanejo',-101.544220,17.649240,'MEX','Guerrero',' MX-GRO ',' La Laja ',40.9,NULL,NULL,'','',true), + ('Actopan (Hidalgo MEX)','Actopan',-98.958990,20.274630,'MEX','Hidalgo',' MX-HID ',' Lago Tecocomulco ',74.4,NULL,NULL,'','',true), + ('Huejutla (Hidalgo MEX)','Huejutla',-98.415630,21.140510,'MEX','Hidalgo',' MX-HID ',' Tempoal ',9.0,NULL,NULL,'','',true), + ('Pachuca (Hidalgo MEX)','Pachuca',-98.735940,20.111880,'MEX','Hidalgo',' MX-HID ',' Lago Tecocomulco ',44.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tulancingo (Hidalgo MEX)','Tulancingo',-98.380550,20.085220,'MEX','Hidalgo',' MX-HID ',' Lago Tecocomulco ',25.2,NULL,NULL,'','',true), + ('Ameca (Jalisco MEX)','Ameca',-104.072660,20.538100,'MEX','Jalisco',' MX-JAL ',' Laguna Atotonilco ',53.3,NULL,NULL,'','',true), + ('Autlan (Jalisco MEX)','Autlan',-104.363550,19.756590,'MEX','Jalisco',' MX-JAL ',' Armeria ',25.6,NULL,NULL,'','',true), + ('Ciudad Guzman (Jalisco MEX)','Ciudad Guzman',-103.475790,19.705390,'MEX','Jalisco',' MX-JAL ',' Laguna Sayula ',37.3,NULL,NULL,'','',true), + ('Guadalajara (Jalisco MEX)','Guadalajara',-103.336960,20.627110,'MEX','Jalisco',' MX-JAL ',' Laguna Atotonilco ',43.3,NULL,NULL,'','',true), + ('La Barca (Jalisco MEX)','La Barca',-102.549100,20.308870,'MEX','Jalisco',' MX-JAL ',' Lago de Chapala ',46.8,NULL,NULL,'','',true), + ('Lagos de Moreno (Jalisco MEX)','Lagos de Moreno',-101.912730,21.357260,'MEX','Jalisco',' MX-JAL ',' Ro Verde ',92.3,NULL,NULL,'','',true), + ('Ocotlan (Jalisco MEX)','Ocotlan',-102.817520,20.326880,'MEX','Jalisco',' MX-JAL ',' Lago de Chapala ',21.3,NULL,NULL,'','',true), + ('Puerto Vallarta (Jalisco MEX)','Puerto Vallarta',-105.220120,20.632420,'MEX','Jalisco',' MX-JAL ',' Mascota ',27.4,NULL,NULL,'','',true), + ('San Juan de los Lagos (Jalisco MEX)','San Juan de los Lagos',-102.268110,21.292760,'MEX','Jalisco',' MX-JAL ',' Ro Verde ',56.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Sayula (Jalisco MEX)','Sayula',-103.614870,19.854150,'MEX','Jalisco',' MX-JAL ',' Laguna Sayula ',21.8,NULL,NULL,'','',true), + ('Tamazula (Jalisco MEX)','Tamazula',-103.247870,19.687180,'MEX','Jalisco',' MX-JAL ',' Laguna Sayula ',49.2,NULL,NULL,'','',true), + ('Tepatitlan (Jalisco MEX)','Tepatitlan',-102.760330,20.868720,'MEX','Jalisco',' MX-JAL ',' Ro Verde ',18.7,NULL,NULL,'','',true), + ('Tequila (Jalisco MEX)','Tequila',-103.859830,20.879240,'MEX','Jalisco',' MX-JAL ',' Rao Grande de Santiago ',36.7,NULL,NULL,'','',true), + ('Tuxpan (Jalisco MEX)','Tuxpan',-103.348410,19.511800,'MEX','Jalisco',' MX-JAL ',' Coahuayana ',36.6,NULL,NULL,'','',true), + ('Mexico (Mexico MEX)','Mexico',-99.123930,19.443960,'MEX','Mexico',' MX-MEX ',' Lago de Texcoco ',14.6,NULL,NULL,'','',true), + ('Toluca (Mexico MEX)','Toluca',-99.643730,19.306270,'MEX','Mexico',' MX-MEX ',' Lago de Texcoco ',71.2,NULL,NULL,'','',true), + ('Aguililla (Michoacan de Ocampo MEX)','Aguililla',-102.637730,18.793830,'MEX','Michoacan de Ocampo',' MX-MIC ',' Ro Grande ',38.8,NULL,NULL,'','',true), + ('Apatzingan (Michoacan de Ocampo MEX)','Apatzingan',-102.364520,19.108310,'MEX','Michoacan de Ocampo',' MX-MIC ',' Ro Grande ',17.4,NULL,NULL,'','',true), + ('La Piedad (Michoacan de Ocampo MEX)','La Piedad',-102.024780,20.331960,'MEX','Michoacan de Ocampo',' MX-MIC ',' Lago de Pajtzcuaro ',90.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Lazaro Cardenas (Michoacan de Ocampo MEX)','Lazaro Cardenas',-102.217880,17.966260,'MEX','Michoacan de Ocampo',' MX-MIC ',' Toscano ',80.4,NULL,NULL,'','',true), + ('Los Reyes (Michoacan de Ocampo MEX)','Los Reyes',-102.468690,19.606650,'MEX','Michoacan de Ocampo',' MX-MIC ',' Ro Grande ',53.7,NULL,NULL,'','',true), + ('Morelia (Michoacan de Ocampo MEX)','Morelia',-101.210000,19.701870,'MEX','Michoacan de Ocampo',' MX-MIC ',' Lago Cuitzeo ',29.1,NULL,NULL,'','',true), + ('Patzcuaro (Michoacan de Ocampo MEX)','Patzcuaro',-101.604270,19.493990,'MEX','Michoacan de Ocampo',' MX-MIC ',' Lago de Pajtzcuaro ',13.5,NULL,NULL,'','',true), + ('Sahuayo (Michoacan de Ocampo MEX)','Sahuayo',-102.711170,20.070380,'MEX','Michoacan de Ocampo',' MX-MIC ',' Lago de Chapala ',33.3,NULL,NULL,'','',true), + ('Uruapan (Michoacan de Ocampo MEX)','Uruapan',-102.082500,19.405900,'MEX','Michoacan de Ocampo',' MX-MIC ',' Lago de Pajtzcuaro ',52.8,NULL,NULL,'','',true), + ('Zacapu (Michoacan de Ocampo MEX)','Zacapu',-101.779170,19.805660,'MEX','Michoacan de Ocampo',' MX-MIC ',' Lago de Pajtzcuaro ',26.6,NULL,NULL,'','',true), + ('Zamora (Michoacan de Ocampo MEX)','Zamora',-102.260430,19.961070,'MEX','Michoacan de Ocampo',' MX-MIC ',' Lago de Pajtzcuaro ',76.6,NULL,NULL,'','',true), + ('Cuautla (Morelos MEX)','Cuautla',-98.951170,18.819250,'MEX','Morelos',' MX-MOR ',' Nexpa ',41.3,NULL,NULL,'','',true), + ('Cuernavaca (Morelos MEX)','Cuernavaca',-99.221980,18.912110,'MEX','Morelos',' MX-MOR ',' Amacuzac ',46.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Acaponeta (Nayarit MEX)','Acaponeta',-105.388060,22.494610,'MEX','Nayarit',' MX-NAY ',' Laguna Agua Grande ',32.9,NULL,NULL,'','',true), + ('Compostela (Nayarit MEX)','Compostela',-104.886140,21.257350,'MEX','Nayarit',' MX-NAY ',' Ameca ',58.5,NULL,NULL,'','',true), + ('Ixtlan del Rio (Nayarit MEX)','Ixtlan del Rio',-104.435970,21.037520,'MEX','Nayarit',' MX-NAY ',' Ameca ',31.8,NULL,NULL,'','',true), + ('Santiago Ixcuintla (Nayarit MEX)','Santiago Ixcuintla',-105.231410,21.823180,'MEX','Nayarit',' MX-NAY ',' Laguna Agua Brava ',51.6,NULL,NULL,'','',true), + ('Tepic (Nayarit MEX)','Tepic',-104.881610,21.491020,'MEX','Nayarit',' MX-NAY ',' Huaynamota ',51.9,NULL,NULL,'','',true), + ('Tuxpan (Nayarit MEX)','Tuxpan',-105.318780,21.929060,'MEX','Nayarit',' MX-NAY ',' Laguna Agua Brava ',36.7,NULL,NULL,'','',true), + ('China (Nuevo Leon MEX)','China',-99.233490,25.706680,'MEX','Nuevo Leon',' MX-NLE ',' San Lorenzo ',51.7,NULL,NULL,'','',true), + ('Ciudad Anahuac (Nuevo Leon MEX)','Ciudad Anahuac',-100.114600,27.223490,'MEX','Nuevo Leon',' MX-NLE ',' San Juan ',35.5,NULL,NULL,'','',true), + ('Linares (Nuevo Leon MEX)','Linares',-99.566830,24.864020,'MEX','Nuevo Leon',' MX-NLE ',' Rio Salado ',37.5,NULL,NULL,'','',true), + ('Montemorelos (Nuevo Leon MEX)','Montemorelos',-99.815920,25.193340,'MEX','Nuevo Leon',' MX-NLE ',' Rio Salado ',35.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Monterrey (Nuevo Leon MEX)','Monterrey',-100.299010,25.664330,'MEX','Nuevo Leon',' MX-NLE ',' Pesqueria ',23.9,NULL,NULL,'','',true), + ('Sabinas Hildalgo (Nuevo Leon MEX)','Sabinas Hildalgo',-100.190480,26.500690,'MEX','Nuevo Leon',' MX-NLE ',' Sabinas ',10.1,NULL,NULL,'','',true), + ('Huajuapan (Oaxaca MEX)','Huajuapan',-97.771150,17.791440,'MEX','Oaxaca',' MX-OAX ',' Tonala ',7.1,NULL,NULL,'','',true), + ('Juchitan (Oaxaca MEX)','Juchitan',-95.019690,16.446140,'MEX','Oaxaca',' MX-OAX ',' Chicapa ',39.9,NULL,NULL,'','',true), + ('Matias Romero (Oaxaca MEX)','Matias Romero',-95.053200,16.872450,'MEX','Oaxaca',' MX-OAX ',' Sarabia ',20.6,NULL,NULL,'','',true), + ('Miahuatlan (Oaxaca MEX)','Miahuatlan',-96.598280,16.330600,'MEX','Oaxaca',' MX-OAX ',' Colotepec ',39.7,NULL,NULL,'','',true), + ('Oaxaca (Oaxaca MEX)','Oaxaca',-96.694270,17.056390,'MEX','Oaxaca',' MX-OAX ',' Rio Grande ',61.1,NULL,NULL,'','',true), + ('Pinotepa Nacional (Oaxaca MEX)','Pinotepa Nacional',-98.095960,16.376480,'MEX','Oaxaca',' MX-OAX ',' Quetzala ',50.9,NULL,NULL,'','',true), + ('Puerto Escondido (Oaxaca MEX)','Puerto Escondido',-97.064090,15.884070,'MEX','Oaxaca',' MX-OAX ',' Colotepec ',34.5,NULL,NULL,'','',true), + ('Salina Cruz (Oaxaca MEX)','Salina Cruz',-95.213930,16.200800,'MEX','Oaxaca',' MX-OAX ',' Chicapa ',73.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tehuantepec (Oaxaca MEX)','Tehuantepec',-95.243050,16.325160,'MEX','Oaxaca',' MX-OAX ',' Chicapa ',67.2,NULL,NULL,'','',true), + ('Tuxtepec (Oaxaca MEX)','Tuxtepec',-96.145780,18.095570,'MEX','Oaxaca',' MX-OAX ',' Papaloapan ',8.1,NULL,NULL,'','',true), + ('Acatlan (Puebla MEX)','Acatlan',-98.060890,18.183330,'MEX','Puebla',' MX-PUE ',' Atoyac ',46.6,NULL,NULL,'','',true), + ('Atlixco (Puebla MEX)','Atlixco',-98.394780,18.975770,'MEX','Puebla',' MX-PUE ',' Presa Manuel vila Camacho ',23.7,NULL,NULL,'','',true), + ('Izucar de Matamoros (Puebla MEX)','Izucar de Matamoros',-98.479480,18.604410,'MEX','Puebla',' MX-PUE ',' Nexpa ',15.3,NULL,NULL,'','',true), + ('Orizaba (Puebla MEX)','Orizaba',-97.360590,18.867110,'MEX','Puebla',' MX-PUE ',' Laguna Totolcingo ',55.1,NULL,NULL,'','',true), + ('Puebla (Puebla MEX)','Puebla',-98.198390,19.071250,'MEX','Puebla',' MX-PUE ',' Presa Manuel vila Camacho ',14.3,NULL,NULL,'','',true), + ('Tehuacan (Puebla MEX)','Tehuacan',-97.452450,18.514720,'MEX','Puebla',' MX-PUE ',' Atoyac ',50.7,NULL,NULL,'','',true), + ('Teziutlan (Puebla MEX)','Teziutlan',-97.372920,19.811070,'MEX','Puebla',' MX-PUE ',' Laguna El Salado ',39.7,NULL,NULL,'','',true), + ('Queretaro (Queretaro de Arteaga MEX)','Queretaro',-100.400850,20.592200,'MEX','Queretaro de Arteaga',' MX-QUE ',' Guanajuato ',51.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('San Juan del Rio (Queretaro de Arteaga MEX)','San Juan del Rio',-100.008020,20.416010,'MEX','Queretaro de Arteaga',' MX-QUE ',' Amajac ',27.1,NULL,NULL,'','',true), + ('Cancun (Quintana Roo MEX)','Cancun',-86.843460,21.062410,'MEX','Quintana Roo',' MX-ROO ',' Rio Hondo ',370.9,NULL,NULL,'','',true), + ('Chetumal (Quintana Roo MEX)','Chetumal',-88.289590,18.524020,'MEX','Quintana Roo',' MX-ROO ',' Rio Hondo ',55.0,NULL,NULL,'','',true), + ('Cozumel (Quintana Roo MEX)','Cozumel',-86.888550,20.493490,'MEX','Quintana Roo',' MX-ROO ',' Rio Hondo ',316.1,NULL,NULL,'','',true), + ('Felipe Carrillo Puerto (Quintana Roo MEX)','Felipe Carrillo Puerto',-88.048800,19.585510,'MEX','Quintana Roo',' MX-ROO ',' Rio Hondo ',166.3,NULL,NULL,'','',true), + ('Cardenas (San Luis Potosi MEX)','Cardenas',-99.532860,22.002430,'MEX','San Luis Potosi',' MX-SLP ',' Valles ',44.5,NULL,NULL,'','',true), + ('Cerritos (San Luis Potosi MEX)','Cerritos',-100.292960,22.435070,'MEX','San Luis Potosi',' MX-SLP ',' Verde ',87.1,NULL,NULL,'','',true), + ('Ciudad Valles (San Luis Potosi MEX)','Ciudad Valles',-99.024600,21.992110,'MEX','San Luis Potosi',' MX-SLP ',' Valles ',45.8,NULL,NULL,'','',true), + ('Ebano (San Luis Potosi MEX)','Ebano',-98.383000,22.226690,'MEX','San Luis Potosi',' MX-SLP ',' Laguna Chila ',10.5,NULL,NULL,'','',true), + ('Matehuala (San Luis Potosi MEX)','Matehuala',-100.648930,23.660740,'MEX','San Luis Potosi',' MX-SLP ',' Purificacin ',127.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Rioverde (San Luis Potosi MEX)','Rioverde',-100.021110,21.928590,'MEX','San Luis Potosi',' MX-SLP ',' Verde ',30.5,NULL,NULL,'','',true), + ('San Luis Potosi (San Luis Potosi MEX)','San Luis Potosi',-100.980930,22.154720,'MEX','San Luis Potosi',' MX-SLP ',' Verde ',104.2,NULL,NULL,'','',true), + ('Tamazunchale (San Luis Potosi MEX)','Tamazunchale',-98.779800,21.266590,'MEX','San Luis Potosi',' MX-SLP ',' Moctezuma ',34.0,NULL,NULL,'','',true), + ('Culiacan (Sinaloa MEX)','Culiacan',-107.417680,24.807550,'MEX','Sinaloa',' MX-SIN ',' Rio Culiacan ',13.0,NULL,NULL,'','',true), + ('El Dorado (Sinaloa MEX)','El Dorado',-107.372050,24.327250,'MEX','Sinaloa',' MX-SIN ',' Rio San Lorenzo ',52.9,NULL,NULL,'','',true), + ('El Fuerte (Sinaloa MEX)','El Fuerte',-108.636760,26.405810,'MEX','Sinaloa',' MX-SIN ',' Fuerte ',7.1,NULL,NULL,'','',true), + ('Escuinapa (Sinaloa MEX)','Escuinapa',-105.736660,22.826020,'MEX','Sinaloa',' MX-SIN ',' Laguna Agua Grande ',27.3,NULL,NULL,'','',true), + ('Guamuchil (Sinaloa MEX)','Guamuchil',-108.084180,25.461440,'MEX','Sinaloa',' MX-SIN ',' Presa Gustavo Daz Ordaz (Bacurato) ',55.3,NULL,NULL,'','',true), + ('Guasave (Sinaloa MEX)','Guasave',-108.429330,25.559830,'MEX','Sinaloa',' MX-SIN ',' Presa Gustavo Daz Ordaz (Bacurato) ',68.7,NULL,NULL,'','',true), + ('La Cruz (Sinaloa MEX)','La Cruz',-106.881470,23.945650,'MEX','Sinaloa',' MX-SIN ',' Rio San Lorenzo ',65.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Los Mochis (Sinaloa MEX)','Los Mochis',-108.959200,25.777900,'MEX','Sinaloa',' MX-SIN ',' Fuerte ',83.0,NULL,NULL,'','',true), + ('Mazatlan (Sinaloa MEX)','Mazatlan',-106.406890,23.282770,'MEX','Sinaloa',' MX-SIN ',' Laguna El Caimanero ',45.3,NULL,NULL,'','',true), + ('Rosario (Sinaloa MEX)','Rosario',-105.863420,22.968610,'MEX','Sinaloa',' MX-SIN ',' Laguna El Caimanero ',24.9,NULL,NULL,'','',true), + ('Agua Prieta (Sonora MEX)','Agua Prieta',-109.535470,31.283340,'MEX','Sonora',' MX-SON ',' Rio Agua Prieta ',7.8,NULL,NULL,'','',true), + ('Benjamin Hill (Sonora MEX)','Benjamin Hill',-111.117930,30.144440,'MEX','Sonora',' MX-SON ',' Arroyo el Zangon ',48.8,NULL,NULL,'','',true), + ('Caborca (Sonora MEX)','Caborca',-112.157460,30.709070,'MEX','Sonora',' MX-SON ',' Arroyo Asuncin ',32.1,NULL,NULL,'','',true), + ('Cananea (Sonora MEX)','Cananea',-110.228880,30.968590,'MEX','Sonora',' MX-SON ',' Arroyo llas Gallinas ',33.0,NULL,NULL,'','',true), + ('Ciudad Obregon (Sonora MEX)','Ciudad Obregon',-109.919040,27.474620,'MEX','Sonora',' MX-SON ',' Presa Alvaro Obregon ',55.7,NULL,NULL,'','',true), + ('Empalme (Sonora MEX)','Empalme',-110.768460,27.963070,'MEX','Sonora',' MX-SON ',' Arroyo El Carrizo ',76.1,NULL,NULL,'','',true), + ('Guaymas (Sonora MEX)','Guaymas',-110.902270,27.915390,'MEX','Sonora',' MX-SON ',' Arroyo El Carrizo ',88.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Hermosillo (Sonora MEX)','Hermosillo',-110.946110,29.088970,'MEX','Sonora',' MX-SON ',' Presa Abelardo L Rodrguez ',4.9,NULL,NULL,'','',true), + ('Huatabampo (Sonora MEX)','Huatabampo',-109.604350,26.827790,'MEX','Sonora',' MX-SON ',' Presa Adolfo Ruz Cortines ',71.1,NULL,NULL,'','',true), + ('Magdalena (Sonora MEX)','Magdalena',-110.905230,30.650190,'MEX','Sonora',' MX-SON ',' Arroyo Magdalena ',23.0,NULL,NULL,'','',true), + ('Nacozari de Garcia (Sonora MEX)','Nacozari de Garcia',-109.657890,30.295330,'MEX','Sonora',' MX-SON ',' Arroyo Sonora ',48.2,NULL,NULL,'','',true), + ('Navojoa (Sonora MEX)','Navojoa',-109.435260,27.094710,'MEX','Sonora',' MX-SON ',' Presa Adolfo Ruz Cortines ',40.7,NULL,NULL,'','',true), + ('Nogales (Sonora MEX)','Nogales',-110.941360,31.280600,'MEX','Sonora',' MX-SON ',' Santa Cruz River ',48.1,NULL,NULL,'','',true), + ('Puerto Penasco (Sonora MEX)','Puerto Penasco',-113.540390,31.320260,'MEX','Sonora',' MX-SON ',' Arroyo Sonoyta ',71.2,NULL,NULL,'','',true), + ('San Luis Rio Colorado (Sonora MEX)','San Luis Rio Colorado',-114.862900,32.473310,'MEX','Sonora',' MX-SON ',' Hardy ',49.6,NULL,NULL,'','',true), + ('Sonoyta (Sonora MEX)','Sonoyta',-112.883900,31.844510,'MEX','Sonora',' MX-SON ',' Arroyo Sonoyta ',14.7,NULL,NULL,'','',true), + ('Cardenas (Tabasco MEX)','Cardenas',-93.357370,18.011320,'MEX','Tabasco',' MX-TAB ',' Grijalva ',89.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Comalcalco (Tabasco MEX)','Comalcalco',-93.235520,18.252510,'MEX','Tabasco',' MX-TAB ',' San Pedro y San Pablo ',98.3,NULL,NULL,'','',true), + ('Emiliano Zapata (Tabasco MEX)','Emiliano Zapata',-91.772920,17.717950,'MEX','Tabasco',' MX-TAB ',' Usumacinta ',16.4,NULL,NULL,'','',true), + ('Frontera (Tabasco MEX)','Frontera',-92.653760,18.510400,'MEX','Tabasco',' MX-TAB ',' San Pedro y San Pablo ',36.3,NULL,NULL,'','',true), + ('Teapa (Tabasco MEX)','Teapa',-92.976880,17.556270,'MEX','Tabasco',' MX-TAB ',' La Sierra ',37.5,NULL,NULL,'','',true), + ('Tenosique (Tabasco MEX)','Tenosique',-91.420550,17.471540,'MEX','Tabasco',' MX-TAB ',' Usumacinta ',30.1,NULL,NULL,'','',true), + ('Villahermosa (Tabasco MEX)','Villahermosa',-92.926430,17.987620,'MEX','Tabasco',' MX-TAB ',' La Sierra ',73.6,NULL,NULL,'','',true), + ('Ciudad Madero (Tamaulipas MEX)','Ciudad Madero',-97.838210,22.290280,'MEX','Tamaulipas',' MX-TAM ',' Laguna de Pueblo Viejo ',17.6,NULL,NULL,'','',true), + ('Ciudad Mante (Tamaulipas MEX)','Ciudad Mante',-98.953370,22.724770,'MEX','Tamaulipas',' MX-TAM ',' Tamesi ',28.6,NULL,NULL,'','',true), + ('Ciudad Victoria (Tamaulipas MEX)','Ciudad Victoria',-99.168900,23.720010,'MEX','Tamaulipas',' MX-TAM ',' Presa Vicente Guerrero ',49.9,NULL,NULL,'','',true), + ('Matamoros (Tamaulipas MEX)','Matamoros',-97.524530,25.833380,'MEX','Tamaulipas',' MX-TAM ',' Laguna El Barril ',32.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Nuevo Laredo (Tamaulipas MEX)','Nuevo Laredo',-99.526760,27.459780,'MEX','Tamaulipas',' MX-TAM ',' San Juan ',73.4,NULL,NULL,'','',true), + ('Reynosa (Tamaulipas MEX)','Reynosa',-98.334240,26.068560,'MEX','Tamaulipas',' MX-TAM ',' Presa Marte R Gomez ',67.3,NULL,NULL,'','',true), + ('Rio Bravo (Tamaulipas MEX)','Rio Bravo',-98.106550,25.980610,'MEX','Tamaulipas',' MX-TAM ',' Presa Marte R Gomez ',91.5,NULL,NULL,'','',true), + ('San Fernando (Tamaulipas MEX)','San Fernando',-98.162260,24.841910,'MEX','Tamaulipas',' MX-TAM ',' Conchos ',76.5,NULL,NULL,'','',true), + ('Valle Hermoso (Tamaulipas MEX)','Valle Hermoso',-97.817160,25.670620,'MEX','Tamaulipas',' MX-TAM ',' Laguna El Barril ',56.7,NULL,NULL,'','',true), + ('Apizaco (Tlaxcala MEX)','Apizaco',-98.155790,19.404150,'MEX','Tlaxcala',' MX-TLA ',' Rio Colorado ',37.1,NULL,NULL,'','',true), + ('Tlaxcala (Tlaxcala MEX)','Tlaxcala',-98.229770,19.328260,'MEX','Tlaxcala',' MX-TLA ',' Presa Manuel vila Camacho ',43.1,NULL,NULL,'','',true), + ('Acayucan (Veracruz-Llave MEX)','Acayucan',-94.939790,17.909000,'MEX','Veracruz-Llave',' MX-VER ',' Coatzacoalcos ',35.8,NULL,NULL,'','',true), + ('Alvarado (Veracruz-Llave MEX)','Alvarado',-95.756550,18.782670,'MEX','Veracruz-Llave',' MX-VER ',' Laguna Mara Lizamba ',25.8,NULL,NULL,'','',true), + ('Cerro Azul (Veracruz-Llave MEX)','Cerro Azul',-97.746210,21.203060,'MEX','Veracruz-Llave',' MX-VER ',' Tuxpam ',51.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Coatzacoalcos (Veracruz-Llave MEX)','Coatzacoalcos',-94.420840,18.121310,'MEX','Veracruz-Llave',' MX-VER ',' Coatzacoalcos ',55.8,NULL,NULL,'','',true), + ('Cordoba (Veracruz-Llave MEX)','Cordoba',-96.925990,18.857000,'MEX','Veracruz-Llave',' MX-VER ',' Las Pozas ',25.1,NULL,NULL,'','',true), + ('Cosamaloapan (Veracruz-Llave MEX)','Cosamaloapan',-95.806030,18.347860,'MEX','Veracruz-Llave',' MX-VER ',' Papaloapan ',14.1,NULL,NULL,'','',true), + ('Jesus Carranza (Veracruz-Llave MEX)','Jesus Carranza',-95.046710,17.411090,'MEX','Veracruz-Llave',' MX-VER ',' Santo Domingo ',14.5,NULL,NULL,'','',true), + ('Martinez de la Torre (Veracruz-Llave MEX)','Martinez de la Torre',-97.051030,20.083990,'MEX','Veracruz-Llave',' MX-VER ',' Bobos ',4.9,NULL,NULL,'','',true), + ('Minatitlan (Veracruz-Llave MEX)','Minatitlan',-94.544880,18.007940,'MEX','Veracruz-Llave',' MX-VER ',' Coatzacoalcos ',38.6,NULL,NULL,'','',true), + ('Naranjos (Veracruz-Llave MEX)','Naranjos',-97.681930,21.361570,'MEX','Veracruz-Llave',' MX-VER ',' Tuxpam ',70.5,NULL,NULL,'','',true), + ('Papantla (Veracruz-Llave MEX)','Papantla',-97.326250,20.439280,'MEX','Veracruz-Llave',' MX-VER ',' Cazones ',37.6,NULL,NULL,'','',true), + ('Poza Rica (Veracruz-Llave MEX)','Poza Rica',-97.458320,20.533890,'MEX','Veracruz-Llave',' MX-VER ',' Cazones ',24.2,NULL,NULL,'','',true), + ('San Andres Tuxtla (Veracruz-Llave MEX)','San Andres Tuxtla',-95.226710,18.456270,'MEX','Veracruz-Llave',' MX-VER ',' Lago Catemaco ',17.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tampico (Veracruz-Llave MEX)','Tampico',-97.862390,22.197390,'MEX','Veracruz-Llave',' MX-VER ',' Laguna de Pueblo Viejo ',7.2,NULL,NULL,'','',true), + ('Tantoyuca (Veracruz-Llave MEX)','Tantoyuca',-98.229900,21.373230,'MEX','Veracruz-Llave',' MX-VER ',' Tempoal ',23.3,NULL,NULL,'','',true), + ('Tierra Blanca (Veracruz-Llave MEX)','Tierra Blanca',-96.351050,18.447280,'MEX','Veracruz-Llave',' MX-VER ',' Presa Miguel Alemajn ',27.3,NULL,NULL,'','',true), + ('Tuxpan (Veracruz-Llave MEX)','Tuxpan',-97.426620,20.968410,'MEX','Veracruz-Llave',' MX-VER ',' Tuxpam ',54.1,NULL,NULL,'','',true), + ('Veracruz (Veracruz-Llave MEX)','Veracruz',-96.119830,19.169800,'MEX','Veracruz-Llave',' MX-VER ',' Jamapa ',56.2,NULL,NULL,'','',true), + ('Xalapa (Veracruz-Llave MEX)','Xalapa',-96.883950,19.548340,'MEX','Veracruz-Llave',' MX-VER ',' Actopan ',9.2,NULL,NULL,'','',true), + ('Hunucma (Yuc MEX)','Hunucma',-89.889780,21.019770,'MEX','Yuc',' MX-YUC ',' Caribe ',318.0,NULL,NULL,'','',true), + ('Merida (Yuc MEX)','Merida',-89.618410,20.972380,'MEX','Yuc',' MX-YUC ',' Rio Hondo ',320.1,NULL,NULL,'','',true), + ('Motul (Yuc MEX)','Motul',-89.298200,21.093820,'MEX','Yuc',' MX-YUC ',' Rio Hondo ',325.0,NULL,NULL,'','',true), + ('Progreso (Yuc MEX)','Progreso',-89.677050,21.256430,'MEX','Yuc',' MX-YUC ',' Caribe ',349.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tekax (Yuc MEX)','Tekax',-89.296210,20.212850,'MEX','Yuc',' MX-YUC ',' Rio Hondo ',229.6,NULL,NULL,'','',true), + ('Ticul (Yuc MEX)','Ticul',-89.520440,20.390320,'MEX','Yuc',' MX-YUC ',' Rio Hondo ',255.5,NULL,NULL,'','',true), + ('Tizimin (Yuc MEX)','Tizimin',-88.157290,21.141470,'MEX','Yuc',' MX-YUC ',' Rio Hondo ',329.3,NULL,NULL,'','',true), + ('Valladolid (Yuc MEX)','Valladolid',-88.205920,20.736860,'MEX','Yuc',' MX-YUC ',' Rio Hondo ',284.2,NULL,NULL,'','',true), + ('Concepcion del Oro (Zacatecas MEX)','Concepcion del Oro',-101.351510,24.625370,'MEX','Zacatecas',' MX-ZAC ',' Rio San Pedro ',40.9,NULL,NULL,'','',true), + ('Fresnillo (Zacatecas MEX)','Fresnillo',-102.851160,23.169700,'MEX','Zacatecas',' MX-ZAC ',' Aguanaval ',120.1,NULL,NULL,'','',true), + ('Jerez de Garcia Salinas (Zacatecas MEX)','Jerez de Garcia Salinas',-103.006380,22.667500,'MEX','Zacatecas',' MX-ZAC ',' Atengo ',83.4,NULL,NULL,'','',true), + ('Juan Aldama (Zacatecas MEX)','Juan Aldama',-103.363210,24.350000,'MEX','Zacatecas',' MX-ZAC ',' Santa Clara ',10.9,NULL,NULL,'','',true), + ('Rio Grande (Zacatecas MEX)','Rio Grande',-103.037420,23.819980,'MEX','Zacatecas',' MX-ZAC ',' Aguanaval ',45.3,NULL,NULL,'','',true), + ('Sombrerete (Zacatecas MEX)','Sombrerete',-103.601290,23.604850,'MEX','Zacatecas',' MX-ZAC ',' Aguanaval ',82.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Zacatecas (Zacatecas MEX)','Zacatecas',-102.541250,22.751670,'MEX','Zacatecas',' MX-ZAC ',' Rio Juchipila ',121.0,NULL,NULL,'','',true), + ('Andalusia (Alabama USA)','Andalusia',-86.486480,31.275630,'USA','Alabama',' US-AL ',' Conecuh River ',27.3,NULL,NULL,'','',true), + ('Anniston (Alabama USA)','Anniston',-85.826510,33.666840,'USA','Alabama',' US-AL ',' Logan Martin Lake ',42.3,NULL,NULL,'','',true), + ('Atmore (Alabama USA)','Atmore',-87.476650,31.029440,'USA','Alabama',' US-AL ',' Escambia River ',31.1,NULL,NULL,'','',true), + ('Auburn (Alabama USA)','Auburn',-85.572780,32.599630,'USA','Alabama',' US-AL ',' Martin Lake ',39.8,NULL,NULL,'','',true), + ('Birmingham (Alabama USA)','Birmingham',-86.813300,33.531690,'USA','Alabama',' US-AL ',' Locust Fork ',35.9,NULL,NULL,'','',true), + ('Decatur (Alabama USA)','Decatur',-87.008010,34.595220,'USA','Alabama',' US-AL ',' Wheeler Lake ',28.1,NULL,NULL,'','',true), + ('Dothan (Alabama USA)','Dothan',-85.392600,31.241830,'USA','Alabama',' US-AL ',' East Fork Choctawhatchee River ',25.4,NULL,NULL,'','',true), + ('Florence (Alabama USA)','Florence',-87.654030,34.872400,'USA','Alabama',' US-AL ',' Wheeler Lake ',38.8,NULL,NULL,'','',true), + ('Gadsden (Alabama USA)','Gadsden',-85.974300,33.994330,'USA','Alabama',' US-AL ',' Slab Creek ',40.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Greenville (Alabama USA)','Greenville',-86.592230,31.782470,'USA','Alabama',' US-AL ',' Conecuh River ',35.0,NULL,NULL,'','',true), + ('Huntsville (Alabama USA)','Huntsville',-86.617580,34.696040,'USA','Alabama',' US-AL ',' Guntersville Lake ',50.1,NULL,NULL,'','',true), + ('Jasper (Alabama USA)','Jasper',-87.293720,33.828960,'USA','Alabama',' US-AL ',' Sipsey Fork ',20.2,NULL,NULL,'','',true), + ('Mobile (Alabama USA)','Mobile',-88.095260,30.719270,'USA','Alabama',' US-AL ',' Pascagoula River ',54.1,NULL,NULL,'','',true), + ('Montgomery (Alabama USA)','Montgomery',-86.270780,32.374600,'USA','Alabama',' US-AL ',' Alabama ',53.2,NULL,NULL,'','',true), + ('Selma (Alabama USA)','Selma',-87.030660,32.417210,'USA','Alabama',' US-AL ',' Alabama ',34.8,NULL,NULL,'','',true), + ('Troy (Alabama USA)','Troy',-85.995330,31.809350,'USA','Alabama',' US-AL ',' Pea River ',38.2,NULL,NULL,'','',true), + ('Tuscaloosa (Alabama USA)','Tuscaloosa',-87.569910,33.207660,'USA','Alabama',' US-AL ',' Black Warrior River ',25.7,NULL,NULL,'','',true), + ('Akutan (Alaska USA)','Akutan',-165.770040,54.143220,'USA','Alaska',' US-AK ',' Sandy River ',433.8,NULL,NULL,'','',true), + ('Alakanuk (Alaska USA)','Alakanuk',-164.664360,62.730090,'USA','Alaska',' US-AK ',' Kwikpak Pass ',33.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Anchorage (Alaska USA)','Anchorage',-149.799580,61.229460,'USA','Alaska',' US-AK ',' Beluga River ',74.7,NULL,NULL,'','',true), + ('Angoon (Alaska USA)','Angoon',-134.527480,57.504680,'USA','Alaska',' US-AK ',' Whiting River ',108.5,NULL,NULL,'','',true), + ('Arctic Village (Alaska USA)','Arctic Village',-145.732430,68.039890,'USA','Alaska',' US-AK ',' East Fork Chandalar River ',1.9,NULL,NULL,'','',true), + ('Barrow (Alaska USA)','Barrow',-156.611740,71.330410,'USA','Alaska',' US-AK ',' Meade ',127.0,NULL,NULL,'','',true), + ('Bethel (Alaska USA)','Bethel',-161.777560,60.796090,'USA','Alaska',' US-AK ',' Kwethluk River ',56.3,NULL,NULL,'','',true), + ('Chignik (Alaska USA)','Chignik',-158.454660,56.317230,'USA','Alaska',' US-AK ',' Chignik Lake ',23.2,NULL,NULL,'','',true), + ('Circle (Alaska USA)','Circle',-144.042930,65.820850,'USA','Alaska',' US-AK ',' Birch Creek ',43.5,NULL,NULL,'','',true), + ('Cold Bay (Alaska USA)','Cold Bay',-162.749480,55.215530,'USA','Alaska',' US-AK ',' Sandy River ',206.0,NULL,NULL,'','',true), + ('Cordova (Alaska USA)','Cordova',-145.687300,60.552140,'USA','Alaska',' US-AK ',' Berg Lakes ',104.7,NULL,NULL,'','',true), + ('Delta Junction (Alaska USA)','Delta Junction',-145.680810,64.042940,'USA','Alaska',' US-AK ',' Tanana ',26.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Dillingham (Alaska USA)','Dillingham',-158.561090,59.044070,'USA','Alaska',' US-AK ',' Kokwok River ',63.2,NULL,NULL,'','',true), + ('Emmonak (Alaska USA)','Emmonak',-164.349090,62.764310,'USA','Alaska',' US-AK ',' Kwikpak Pass ',16.6,NULL,NULL,'','',true), + ('Fairbanks (Alaska USA)','Fairbanks',-147.713500,64.823120,'USA','Alaska',' US-AK ',' Chatanika River ',35.6,NULL,NULL,'','',true), + ('False Pass (Alaska USA)','False Pass',-163.418370,54.818080,'USA','Alaska',' US-AK ',' Sandy River ',266.1,NULL,NULL,'','',true), + ('Fort Yukon (Alaska USA)','Fort Yukon',-145.205910,66.575770,'USA','Alaska',' US-AK ',' Preacher Creek ',70.2,NULL,NULL,'','',true), + ('Galena (Alaska USA)','Galena',-156.869770,64.771430,'USA','Alaska',' US-AK ',' Kateel River ',99.0,NULL,NULL,'','',true), + ('Glennallen (Alaska USA)','Glennallen',-145.535510,62.106970,'USA','Alaska',' US-AK ',' Tazlina River ',15.9,NULL,NULL,'','',true), + ('Haines (Alaska USA)','Haines',-135.453330,59.276940,'USA','Alaska',' US-AK ',' Chilkat River ',32.8,NULL,NULL,'','',true), + ('Holy Cross (Alaska USA)','Holy Cross',-159.791960,62.195770,'USA','Alaska',' US-AK ',' Kukaklik Lake ',71.9,NULL,NULL,'','',true), + ('Homer (Alaska USA)','Homer',-151.569710,59.672980,'USA','Alaska',' US-AK ',' Chakachatna River ',163.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Hoonah (Alaska USA)','Hoonah',-135.407200,58.105020,'USA','Alaska',' US-AK ',' Taku River ',114.9,NULL,NULL,'','',true), + ('Hooper Bay (Alaska USA)','Hooper Bay',-166.120610,61.527440,'USA','Alaska',' US-AK ',' Kashunuk River ',39.3,NULL,NULL,'','',true), + ('Juneau (Alaska USA)','Juneau',-134.428990,58.363850,'USA','Alaska',' US-AK ',' Taku River ',50.9,NULL,NULL,'','',true), + ('Kenai (Alaska USA)','Kenai',-151.240650,60.572940,'USA','Alaska',' US-AK ',' Chakachatna River ',72.3,NULL,NULL,'','',true), + ('Ketchikan (Alaska USA)','Ketchikan',-131.688180,55.386440,'USA','Alaska',' US-AK ',' Georgie River ',105.5,NULL,NULL,'','',true), + ('King Salmon (Alaska USA)','King Salmon',-156.655950,58.730360,'USA','Alaska',' US-AK ',' Naknek River ',4.2,NULL,NULL,'','',true), + ('Kodiak (Alaska USA)','Kodiak',-152.363470,57.807990,'USA','Alaska',' US-AK ',' Angle Creek ',204.3,NULL,NULL,'','',true), + ('Kotzebue (Alaska USA)','Kotzebue',-162.467550,66.877560,'USA','Alaska',' US-AK ',' Emanvicrok Channel ',54.7,NULL,NULL,'','',true), + ('McGrath (Alaska USA)','McGrath',-155.535520,62.943460,'USA','Alaska',' US-AK ',' East Fork Kuskokwim River ',74.9,NULL,NULL,'','',true), + ('Mountain Village (Alaska USA)','Mountain Village',-163.750920,62.124630,'USA','Alaska',' US-AK ',' Chuilnuk River ',60.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Naknek (Alaska USA)','Naknek',-156.923700,58.775280,'USA','Alaska',' US-AK ',' Naknek River ',16.9,NULL,NULL,'','',true), + ('Nenana (Alaska USA)','Nenana',-149.033830,64.539630,'USA','Alaska',' US-AK ',' Teklanika River ',41.1,NULL,NULL,'','',true), + ('Nikiski (Alaska USA)','Nikiski',-151.334790,60.733170,'USA','Alaska',' US-AK ',' Chakachatna River ',54.6,NULL,NULL,'','',true), + ('Noatak (Alaska USA)','Noatak',-163.103580,67.348430,'USA','Alaska',' US-AK ',' Krusenstern Lagoon ',29.7,NULL,NULL,'','',true), + ('Nome (Alaska USA)','Nome',-165.531910,64.556080,'USA','Alaska',' US-AK ',' Tuksuk Channel ',75.7,NULL,NULL,'','',true), + ('Palmer (Alaska USA)','Palmer',-149.094610,61.603260,'USA','Alaska',' US-AK ',' Matanuska River ',25.6,NULL,NULL,'','',true), + ('Petersburg (Alaska USA)','Petersburg',-132.879090,56.767180,'USA','Alaska',' US-AK ',' Stikine River ',64.1,NULL,NULL,'','',true), + ('Point Hope (Alaska USA)','Point Hope',-166.645290,68.351680,'USA','Alaska',' US-AK ',' Kukpuk River ',50.2,NULL,NULL,'','',true), + ('Prudhoe Bay (Alaska USA)','Prudhoe Bay',-148.371190,70.287010,'USA','Alaska',' US-AK ',' Kuparuk River ',57.4,NULL,NULL,'','',true), + ('Sand Point (Alaska USA)','Sand Point',-160.461130,55.346470,'USA','Alaska',' US-AK ',' Sandy River ',97.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Selawik (Alaska USA)','Selawik',-160.262550,66.651520,'USA','Alaska',' US-AK ',' Nazuruk Channel ',39.2,NULL,NULL,'','',true), + ('Seldovia (Alaska USA)','Seldovia',-151.717070,59.434500,'USA','Alaska',' US-AK ',' Lake Clark ',169.8,NULL,NULL,'','',true), + ('Seward (Alaska USA)','Seward',-149.449020,60.119390,'USA','Alaska',' US-AK ',' Beluga River ',161.1,NULL,NULL,'','',true), + ('Sitka (Alaska USA)','Sitka',-135.317440,57.077190,'USA','Alaska',' US-AK ',' Whiting River ',175.7,NULL,NULL,'','',true), + ('Skagway (Alaska USA)','Skagway',-135.387340,59.489830,'USA','Alaska',' US-AK ',' Skagway River ',20.9,NULL,NULL,'','',true), + ('Sleetmute (Alaska USA)','Sleetmute',-157.078620,61.731850,'USA','Alaska',' US-AK ',' Kuskokwim ',51.8,NULL,NULL,'','',true), + ('Soldotna (Alaska USA)','Soldotna',-150.997370,60.438370,'USA','Alaska',' US-AK ',' Chakachatna River ',92.1,NULL,NULL,'','',true), + ('Tanana (Alaska USA)','Tanana',-152.094760,65.214150,'USA','Alaska',' US-AK ',' Melozitna River ',116.4,NULL,NULL,'','',true), + ('Togiak (Alaska USA)','Togiak',-160.409430,59.081060,'USA','Alaska',' US-AK ',' Togiak River ',50.6,NULL,NULL,'','',true), + ('Tok (Alaska USA)','Tok',-143.025880,63.306660,'USA','Alaska',' US-AK ',' Tetlin Lake ',26.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Unalakleet (Alaska USA)','Unalakleet',-160.718960,63.935370,'USA','Alaska',' US-AK ',' Unalakleet River ',22.4,NULL,NULL,'','',true), + ('Unalaska (Alaska USA)','Unalaska',-166.447470,53.875650,'USA','Alaska',' US-AK ',' Sandy River ',487.1,NULL,NULL,'','',true), + ('Valdez (Alaska USA)','Valdez',-146.352710,61.167700,'USA','Alaska',' US-AK ',' Klutina Lake ',63.3,NULL,NULL,'','',true), + ('Wainwright (Alaska USA)','Wainwright',-159.925120,70.646560,'USA','Alaska',' US-AK ',' Kuk River ',54.4,NULL,NULL,'','',true), + ('Wasilla (Alaska USA)','Wasilla',-149.467340,61.583050,'USA','Alaska',' US-AK ',' Matanuska River ',44.8,NULL,NULL,'','',true), + ('Whittier (Alaska USA)','Whittier',-148.745560,60.796360,'USA','Alaska',' US-AK ',' Matanuska River ',101.2,NULL,NULL,'','',true), + ('Wrangell (Alaska USA)','Wrangell',-132.327380,56.449650,'USA','Alaska',' US-AK ',' Stikine River ',37.5,NULL,NULL,'','',true), + ('Yakutat (Alaska USA)','Yakutat',-139.596980,59.554150,'USA','Alaska',' US-AK ',' Harlequin Lake ',39.0,NULL,NULL,'','',true), + ('Ajo (Arizona USA)','Ajo',-112.819120,32.388350,'USA','Arizona',' US-AZ ',' San Cristobol Wash ',50.6,NULL,NULL,'','',true), + ('Bullhead City (Arizona USA)','Bullhead City',-114.546660,35.115110,'USA','Arizona',' US-AZ ',' Lake Mohave ',41.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Casa Grande (Arizona USA)','Casa Grande',-111.777700,32.912470,'USA','Arizona',' US-AZ ',' Gila ',52.8,NULL,NULL,'','',true), + ('Douglas (Arizona USA)','Douglas',-109.578940,31.380770,'USA','Arizona',' US-AZ ',' Rio Agua Prieta ',19.3,NULL,NULL,'','',true), + ('Eloy (Arizona USA)','Eloy',-111.498330,32.759220,'USA','Arizona',' US-AZ ',' Gila ',38.6,NULL,NULL,'','',true), + ('Flagstaff (Arizona USA)','Flagstaff',-111.635260,35.222420,'USA','Arizona',' US-AZ ',' Verde River ',90.0,NULL,NULL,'','',true), + ('Gila Bend (Arizona USA)','Gila Bend',-112.679490,32.982450,'USA','Arizona',' US-AZ ',' San Cristobol Wash ',92.0,NULL,NULL,'','',true), + ('Globe (Arizona USA)','Globe',-110.765700,33.388430,'USA','Arizona',' US-AZ ',' San Carlos Reservoir ',40.5,NULL,NULL,'','',true), + ('Holbrook (Arizona USA)','Holbrook',-110.160540,34.911260,'USA','Arizona',' US-AZ ',' Little Colorado River ',44.7,NULL,NULL,'','',true), + ('Kingman (Arizona USA)','Kingman',-114.045220,35.198130,'USA','Arizona',' US-AZ ',' Trout Creek ',59.6,NULL,NULL,'','',true), + ('Lake Havasu City (Arizona USA)','Lake Havasu City',-114.302640,34.490600,'USA','Arizona',' US-AZ ',' Lake Havasu ',6.5,NULL,NULL,'','',true), + ('Mesa (Arizona USA)','Mesa',-111.828970,33.428470,'USA','Arizona',' US-AZ ',' Gila ',72.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Page (Arizona USA)','Page',-111.476180,36.866140,'USA','Arizona',' US-AZ ',' Lake Powell ',75.2,NULL,NULL,'','',true), + ('Payson (Arizona USA)','Payson',-111.307260,34.226080,'USA','Arizona',' US-AZ ',' Theodore Roosevelt Lake ',60.4,NULL,NULL,'','',true), + ('Phoenix (Arizona USA)','Phoenix',-112.080530,33.498350,'USA','Arizona',' US-AZ ',' Hassayampa River ',73.7,NULL,NULL,'','',true), + ('Prescott (Arizona USA)','Prescott',-112.458280,34.528680,'USA','Arizona',' US-AZ ',' Verde River ',50.5,NULL,NULL,'','',true), + ('Safford (Arizona USA)','Safford',-109.737920,32.824750,'USA','Arizona',' US-AZ ',' San Simon Creek ',54.6,NULL,NULL,'','',true), + ('Sedona (Arizona USA)','Sedona',-111.799950,34.903220,'USA','Arizona',' US-AZ ',' Verde River ',51.8,NULL,NULL,'','',true), + ('Show Low (Arizona USA)','Show Low',-110.021360,34.260260,'USA','Arizona',' US-AZ ',' Little Colorado River ',111.0,NULL,NULL,'','',true), + ('Sierra Vista (Arizona USA)','Sierra Vista',-110.305280,31.549320,'USA','Arizona',' US-AZ ',' Santa Cruz River ',61.2,NULL,NULL,'','',true), + ('Tucson (Arizona USA)','Tucson',-110.978480,32.302450,'USA','Arizona',' US-AZ ',' San Pedro River ',58.1,NULL,NULL,'','',true), + ('Wickenburg (Arizona USA)','Wickenburg',-112.705300,33.969700,'USA','Arizona',' US-AZ ',' Hassayampa River ',5.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Willcox (Arizona USA)','Willcox',-109.792510,32.268500,'USA','Arizona',' US-AZ ',' San Simon Creek ',45.4,NULL,NULL,'','',true), + ('Williams (Arizona USA)','Williams',-112.122000,35.231310,'USA','Arizona',' US-AZ ',' Verde River ',89.2,NULL,NULL,'','',true), + ('Yuma (Arizona USA)','Yuma',-114.624970,32.690630,'USA','Arizona',' US-AZ ',' Hardy ',82.2,NULL,NULL,'','',true), + ('Arkadelphia (Arkansas USA)','Arkadelphia',-93.045120,34.178280,'USA','Arkansas',' US-AR ',' De Gray Reservoir ',21.0,NULL,NULL,'','',true), + ('Batesville (Arkansas USA)','Batesville',-91.654740,35.778170,'USA','Arkansas',' US-AR ',' Greers Ferry Lake ',53.5,NULL,NULL,'','',true), + ('Camden (Arkansas USA)','Camden',-92.847280,33.551760,'USA','Arkansas',' US-AR ',' Ouachita River ',47.4,NULL,NULL,'','',true), + ('Conway (Arkansas USA)','Conway',-92.433080,35.077590,'USA','Arkansas',' US-AR ',' Greers Ferry Lake ',58.1,NULL,NULL,'','',true), + ('El Dorado (Arkansas USA)','El Dorado',-92.658880,33.208570,'USA','Arkansas',' US-AR ',' Ouachita River ',11.7,NULL,NULL,'','',true), + ('Fayetteville (Arkansas USA)','Fayetteville',-94.161540,36.071210,'USA','Arkansas',' US-AR ',' Beaver Lake ',33.9,NULL,NULL,'','',true), + ('Fort Smith (Arkansas USA)','Fort Smith',-94.410860,35.380400,'USA','Arkansas',' US-AR ',' Ozark Lake ',40.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Hope (Arkansas USA)','Hope',-93.582190,33.647080,'USA','Arkansas',' US-AR ',' Millwood Lake ',38.4,NULL,NULL,'','',true), + ('Hot Springs (Arkansas USA)','Hot Springs',-93.054420,34.513090,'USA','Arkansas',' US-AR ',' Lake Hamilton ',7.4,NULL,NULL,'','',true), + ('Jonesboro (Arkansas USA)','Jonesboro',-90.694230,35.856620,'USA','Arkansas',' US-AR ',' Cache River ',33.5,NULL,NULL,'','',true), + ('Little Rock (Arkansas USA)','Little Rock',-92.296230,34.743120,'USA','Arkansas',' US-AR ',' Lake Hamilton ',81.1,NULL,NULL,'','',true), + ('Magnolia (Arkansas USA)','Magnolia',-93.245360,33.261830,'USA','Arkansas',' US-AR ',' Ouachita River ',66.4,NULL,NULL,'','',true), + ('Pine Bluff (Arkansas USA)','Pine Bluff',-92.022820,34.221080,'USA','Arkansas',' US-AR ',' Lake Hamilton ',104.9,NULL,NULL,'','',true), + ('Searcy (Arkansas USA)','Searcy',-91.987670,35.099230,'USA','Arkansas',' US-AR ',' Greers Ferry Lake ',54.0,NULL,NULL,'','',true), + ('Stuttgart (Arkansas USA)','Stuttgart',-91.543050,34.492630,'USA','Arkansas',' US-AR ',' Greers Ferry Lake ',132.0,NULL,NULL,'','',true), + ('Alturas (California USA)','Alturas',-120.530410,41.456970,'USA','California',' US-CA ',' Goose Lake ',52.1,NULL,NULL,'','',true), + ('Anaheim (California USA)','Anaheim',-117.818630,33.850970,'USA','California',' US-CA ',' Salton Sea ',195.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Bakersfield (California USA)','Bakersfield',-118.990960,35.367890,'USA','California',' US-CA ',' Isabella Lake ',63.3,NULL,NULL,'','',true), + ('Barstow (California USA)','Barstow',-117.033070,34.924630,'USA','California',' US-CA ',' Isabella Lake ',149.8,NULL,NULL,'','',true), + ('Berkeley (California USA)','Berkeley',-122.253010,37.903030,'USA','California',' US-CA ',' Lake Berryessa ',76.3,NULL,NULL,'','',true), + ('Bishop (California USA)','Bishop',-118.430970,37.336750,'USA','California',' US-CA ',' Owens River ',12.9,NULL,NULL,'','',true), + ('Blythe (California USA)','Blythe',-114.623380,33.644640,'USA','California',' US-CA ',' Lake Havasu ',93.5,NULL,NULL,'','',true), + ('Chico (California USA)','Chico',-121.864570,39.719730,'USA','California',' US-CA ',' Sacramento ',11.6,NULL,NULL,'','',true), + ('Concord (California USA)','Concord',-122.003100,37.967930,'USA','California',' US-CA ',' Lake Berryessa ',71.1,NULL,NULL,'','',true), + ('Crescent City (California USA)','Crescent City',-124.120790,41.769410,'USA','California',' US-CA ',' Klamath ',91.4,NULL,NULL,'','',true), + ('Delano (California USA)','Delano',-119.203770,35.783450,'USA','California',' US-CA ',' Kern River ',61.2,NULL,NULL,'','',true), + ('El Centro (California USA)','El Centro',-115.561180,32.830820,'USA','California',' US-CA ',' Laguna Salada ',45.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Escondido (California USA)','Escondido',-117.028560,33.106630,'USA','California',' US-CA ',' Arroyo sin Nombre ',99.7,NULL,NULL,'','',true), + ('Eureka (California USA)','Eureka',-124.145510,40.773560,'USA','California',' US-CA ',' Trinity ',77.8,NULL,NULL,'','',true), + ('Fremont (California USA)','Fremont',-122.004850,37.585560,'USA','California',' US-CA ',' Mokelumne River ',97.2,NULL,NULL,'','',true), + ('Fresno (California USA)','Fresno',-119.779440,36.778100,'USA','California',' US-CA ',' Millerton Lake ',30.8,NULL,NULL,'','',true), + ('Glendale (California USA)','Glendale',-118.237500,34.130500,'USA','California',' US-CA ',' Isabella Lake ',172.5,NULL,NULL,'','',true), + ('Hanford (California USA)','Hanford',-119.652860,36.328400,'USA','California',' US-CA ',' Fresno Slough ',45.9,NULL,NULL,'','',true), + ('Lancaster (California USA)','Lancaster',-118.134420,34.676250,'USA','California',' US-CA ',' Isabella Lake ',113.8,NULL,NULL,'','',true), + ('Lompoc (California USA)','Lompoc',-120.420160,34.632870,'USA','California',' US-CA ',' Salinas ',156.2,NULL,NULL,'','',true), + ('Long Beach (California USA)','Long Beach',-118.142430,33.794260,'USA','California',' US-CA ',' Isabella Lake ',210.6,NULL,NULL,'','',true), + ('Los Angeles (California USA)','Los Angeles',-118.315470,33.984160,'USA','California',' US-CA ',' Isabella Lake ',188.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Merced (California USA)','Merced',-120.440960,37.310070,'USA','California',' US-CA ',' San Joaquin ',27.3,NULL,NULL,'','',true), + ('Modesto (California USA)','Modesto',-120.985130,37.645210,'USA','California',' US-CA ',' Stanislaus ',56.1,NULL,NULL,'','',true), + ('Monterey (California USA)','Monterey',-121.901830,36.585890,'USA','California',' US-CA ',' San Luis Reservoir ',86.8,NULL,NULL,'','',true), + ('Napa (California USA)','Napa',-122.264030,38.313080,'USA','California',' US-CA ',' Lake Berryessa ',31.1,NULL,NULL,'','',true), + ('Needles (California USA)','Needles',-114.665170,34.777940,'USA','California',' US-CA ',' Lake Havasu ',52.0,NULL,NULL,'','',true), + ('Oakland (California USA)','Oakland',-122.185110,37.809440,'USA','California',' US-CA ',' Lake Berryessa ',86.6,NULL,NULL,'','',true), + ('Oceanside (California USA)','Oceanside',-117.339150,33.193140,'USA','California',' US-CA ',' Arroyo sin Nombre ',125.3,NULL,NULL,'','',true), + ('Ontario (California USA)','Ontario',-117.722070,34.037180,'USA','California',' US-CA ',' Isabella Lake ',192.5,NULL,NULL,'','',true), + ('Oxnard (California USA)','Oxnard',-119.149880,34.202880,'USA','California',' US-CA ',' Isabella Lake ',177.4,NULL,NULL,'','',true), + ('Palm Springs (California USA)','Palm Springs',-116.535330,33.778480,'USA','California',' US-CA ',' Salton Sea ',84.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Paradise (California USA)','Paradise',-121.645820,39.706220,'USA','California',' US-CA ',' Lake Oroville ',20.9,NULL,NULL,'','',true), + ('Pasadena (California USA)','Pasadena',-117.931920,34.098590,'USA','California',' US-CA ',' Isabella Lake ',180.6,NULL,NULL,'','',true), + ('Porterville (California USA)','Porterville',-119.002810,36.032740,'USA','California',' US-CA ',' Kern River ',42.4,NULL,NULL,'','',true), + ('Red Bluff (California USA)','Red Bluff',-122.269240,40.184700,'USA','California',' US-CA ',' Sacramento ',58.9,NULL,NULL,'','',true), + ('Redding (California USA)','Redding',-122.418430,40.585240,'USA','California',' US-CA ',' Shasta Lake ',24.8,NULL,NULL,'','',true), + ('Ridgecrest (California USA)','Ridgecrest',-117.645560,35.622260,'USA','California',' US-CA ',' Isabella Lake ',68.7,NULL,NULL,'','',true), + ('Riverside (California USA)','Riverside',-117.433730,33.954470,'USA','California',' US-CA ',' Salton Sea ',166.0,NULL,NULL,'','',true), + ('Sacramento (California USA)','Sacramento',-121.462620,38.584840,'USA','California',' US-CA ',' American River ',13.2,NULL,NULL,'','',true), + ('Salinas (California USA)','Salinas',-121.642500,36.694610,'USA','California',' US-CA ',' San Luis Reservoir ',61.2,NULL,NULL,'','',true), + ('San Bernardino (California USA)','San Bernardino',-117.250660,34.109050,'USA','California',' US-CA ',' Salton Sea ',159.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('San Diego (California USA)','San Diego',-117.113490,32.700650,'USA','California',' US-CA ',' Arroyo sin Nombre ',74.1,NULL,NULL,'','',true), + ('San Francisco (California USA)','San Francisco',-122.437240,37.733440,'USA','California',' US-CA ',' Lake Berryessa ',97.3,NULL,NULL,'','',true), + ('San Jose (California USA)','San Jose',-121.878060,37.322760,'USA','California',' US-CA ',' San Luis Reservoir ',72.9,NULL,NULL,'','',true), + ('San Luis Obispo (California USA)','San Luis Obispo',-120.621990,35.263270,'USA','California',' US-CA ',' Salinas ',84.0,NULL,NULL,'','',true), + ('Santa Ana (California USA)','Santa Ana',-117.766890,33.730480,'USA','California',' US-CA ',' Salton Sea ',186.9,NULL,NULL,'','',true), + ('Santa Barbara (California USA)','Santa Barbara',-119.712020,34.468910,'USA','California',' US-CA ',' Isabella Lake ',179.4,NULL,NULL,'','',true), + ('Santa Cruz (California USA)','Santa Cruz',-122.046260,36.969430,'USA','California',' US-CA ',' San Luis Reservoir ',82.3,NULL,NULL,'','',true), + ('Santa Maria (California USA)','Santa Maria',-120.396340,34.948680,'USA','California',' US-CA ',' Salinas ',124.2,NULL,NULL,'','',true), + ('Santa Rosa (California USA)','Santa Rosa',-122.743470,38.456780,'USA','California',' US-CA ',' Lake Berryessa ',49.3,NULL,NULL,'','',true), + ('South Lake Tahoe (California USA)','South Lake Tahoe',-119.946730,38.916160,'USA','California',' US-CA ',' Lake Tahoe ',22.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Stockton (California USA)','Stockton',-121.277240,37.932470,'USA','California',' US-CA ',' Mokelumne River ',31.8,NULL,NULL,'','',true), + ('Sunnyvale (California USA)','Sunnyvale',-122.132470,37.369560,'USA','California',' US-CA ',' San Luis Reservoir ',95.7,NULL,NULL,'','',true), + ('Susanville (California USA)','Susanville',-120.668420,40.410340,'USA','California',' US-CA ',' Honey Lake ',35.8,NULL,NULL,'','',true), + ('Ukiah (California USA)','Ukiah',-123.277220,39.125120,'USA','California',' US-CA ',' Russian River ',34.2,NULL,NULL,'','',true), + ('Visalia (California USA)','Visalia',-119.319880,36.351000,'USA','California',' US-CA ',' Kings River ',53.0,NULL,NULL,'','',true), + ('Weed (California USA)','Weed',-122.380120,41.439890,'USA','California',' US-CA ',' Trinity Lake ',62.6,NULL,NULL,'','',true), + ('Yreka (California USA)','Yreka',-122.683700,41.742500,'USA','California',' US-CA ',' Klamath ',28.0,NULL,NULL,'','',true), + ('Yuba City (California USA)','Yuba City',-121.645600,39.136480,'USA','California',' US-CA ',' North Yuba River ',38.5,NULL,NULL,'','',true), + ('Alamosa (Colorado USA)','Alamosa',-105.854070,37.465890,'USA','Colorado',' US-CO ',' North Fork Purgatoire River ',77.5,NULL,NULL,'','',true), + ('Aspen (Colorado USA)','Aspen',-106.644230,39.161420,'USA','Colorado',' US-CO ',' Taylor River ',38.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Boulder (Colorado USA)','Boulder',-105.230720,40.024740,'USA','Colorado',' US-CO ',' Lake Granby ',54.2,NULL,NULL,'','',true), + ('Burlington (Colorado USA)','Burlington',-102.291500,39.312240,'USA','Colorado',' US-CO ',' South Fork Republican River ',35.4,NULL,NULL,'','',true), + ('Colorado Springs (Colorado USA)','Colorado Springs',-104.767840,38.841280,'USA','Colorado',' US-CO ',' Taylor River ',167.4,NULL,NULL,'','',true), + ('Cortez (Colorado USA)','Cortez',-108.560650,37.348160,'USA','Colorado',' US-CO ',' Animas River ',60.9,NULL,NULL,'','',true), + ('Craig (Colorado USA)','Craig',-107.524670,40.547830,'USA','Colorado',' US-CO ',' Yampa River ',35.2,NULL,NULL,'','',true), + ('Denver (Colorado USA)','Denver',-104.939730,39.755000,'USA','Colorado',' US-CO ',' Lake Granby ',89.5,NULL,NULL,'','',true), + ('Durango (Colorado USA)','Durango',-107.899290,37.275410,'USA','Colorado',' US-CO ',' Animas River ',10.1,NULL,NULL,'','',true), + ('Fort Collins (Colorado USA)','Fort Collins',-105.085400,40.609860,'USA','Colorado',' US-CO ',' Lake Granby ',80.0,NULL,NULL,'','',true), + ('Fort Morgan (Colorado USA)','Fort Morgan',-103.814150,40.262520,'USA','Colorado',' US-CO ',' South Platte ',9.3,NULL,NULL,'','',true), + ('Glenwood Springs (Colorado USA)','Glenwood Springs',-107.036230,39.600210,'USA','Colorado',' US-CO ',' Taylor River ',91.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Grand Junction (Colorado USA)','Grand Junction',-108.519500,39.072990,'USA','Colorado',' US-CO ',' Gunnison River ',67.2,NULL,NULL,'','',true), + ('Greeley (Colorado USA)','Greeley',-104.696460,40.451190,'USA','Colorado',' US-CO ',' South Platte ',71.6,NULL,NULL,'','',true), + ('Gunnison (Colorado USA)','Gunnison',-106.874980,38.542750,'USA','Colorado',' US-CO ',' Blue Mesa Reservoir ',26.9,NULL,NULL,'','',true), + ('La Junta (Colorado USA)','La Junta',-103.532880,37.917450,'USA','Colorado',' US-CO ',' Purgatoire River ',70.9,NULL,NULL,'','',true), + ('Lamar (Colorado USA)','Lamar',-102.617820,38.117720,'USA','Colorado',' US-CO ',' Purgatoire River ',145.6,NULL,NULL,'','',true), + ('Leadville (Colorado USA)','Leadville',-106.266970,39.221760,'USA','Colorado',' US-CO ',' Taylor River ',58.2,NULL,NULL,'','',true), + ('Limon (Colorado USA)','Limon',-103.696370,39.251170,'USA','Colorado',' US-CO ',' South Fork Republican River ',93.5,NULL,NULL,'','',true), + ('Longmont (Colorado USA)','Longmont',-105.097410,40.193280,'USA','Colorado',' US-CO ',' Lake Granby ',62.8,NULL,NULL,'','',true), + ('Montrose (Colorado USA)','Montrose',-107.868600,38.487790,'USA','Colorado',' US-CO ',' Gunnison River ',23.7,NULL,NULL,'','',true), + ('Pagosa Springs (Colorado USA)','Pagosa Springs',-107.071480,37.263440,'USA','Colorado',' US-CO ',' Navajo Reservoir ',52.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Pueblo (Colorado USA)','Pueblo',-104.636650,38.249800,'USA','Colorado',' US-CO ',' Purgatoire River ',109.5,NULL,NULL,'','',true), + ('Salida (Colorado USA)','Salida',-105.873530,38.452670,'USA','Colorado',' US-CO ',' Taylor River ',82.7,NULL,NULL,'','',true), + ('Steamboat Springs (Colorado USA)','Steamboat Springs',-106.819970,40.529200,'USA','Colorado',' US-CO ',' Lake Granby ',92.2,NULL,NULL,'','',true), + ('Sterling (Colorado USA)','Sterling',-103.224840,40.677920,'USA','Colorado',' US-CO ',' Lodgepole Creek ',70.1,NULL,NULL,'','',true), + ('Trinidad (Colorado USA)','Trinidad',-104.473790,37.135840,'USA','Colorado',' US-CO ',' Canadian River ',48.1,NULL,NULL,'','',true), + ('Vail (Colorado USA)','Vail',-106.354360,39.617770,'USA','Colorado',' US-CO ',' Lake Granby ',76.0,NULL,NULL,'','',true), + ('Walsenburg (Colorado USA)','Walsenburg',-104.814090,37.611360,'USA','Colorado',' US-CO ',' North Fork Purgatoire River ',45.8,NULL,NULL,'','',true), + ('Bridgeport (Connecticut USA)','Bridgeport',-73.191900,41.196610,'USA','Connecticut',' US-CT ',' Housatonic River ',82.5,NULL,NULL,'','',true), + ('Hartford (Connecticut USA)','Hartford',-72.704870,41.769600,'USA','Connecticut',' US-CT ',' Chicopee River ',49.7,NULL,NULL,'','',true), + ('New Haven (Connecticut USA)','New Haven',-72.898320,41.342280,'USA','Connecticut',' US-CT ',' Housatonic River ',74.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('New London (Connecticut USA)','New London',-72.099270,41.341260,'USA','Connecticut',' US-CT ',' Pawcatuck River ',26.6,NULL,NULL,'','',true), + ('Waterbury (Connecticut USA)','Waterbury',-73.032660,41.579320,'USA','Connecticut',' US-CT ',' Housatonic River ',46.1,NULL,NULL,'','',true), + ('Dover (Deleware USA)','Dover',-75.542230,39.159670,'USA','Deleware',' US-DE ',' Schuylkill River ',110.7,NULL,NULL,'','',true), + ('Wilmington (Deleware USA)','Wilmington',-75.540200,39.740730,'USA','Deleware',' US-DE ',' Schuylkill River ',46.1,NULL,NULL,'','',true), + ('Boca Raton (Florida USA)','Boca Raton',-80.116420,26.329980,'USA','Florida',' US-FL ',' Saint Lucie Canal Okeechobee Waterway ',88.1,NULL,NULL,'','',true), + ('Clearwater (Florida USA)','Clearwater',-82.750100,27.966880,'USA','Florida',' US-FL ',' Peace River ',101.7,NULL,NULL,'','',true), + ('Daytona Beach (Florida USA)','Daytona Beach',-81.039690,29.191650,'USA','Florida',' US-FL ',' Saint Johns ',28.4,NULL,NULL,'','',true), + ('Deltona (Florida USA)','Deltona',-81.264870,28.911260,'USA','Florida',' US-FL ',' Lake Monroe ',9.0,NULL,NULL,'','',true), + ('Fort Lauderdale (Florida USA)','Fort Lauderdale',-80.135890,26.150390,'USA','Florida',' US-FL ',' Saint Lucie Canal Okeechobee Waterway ',107.1,NULL,NULL,'','',true), + ('Fort Myers (Florida USA)','Fort Myers',-81.800810,26.660020,'USA','Florida',' US-FL ',' Caloosahatchee River ',21.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Fort Pierce (Florida USA)','Fort Pierce',-80.329710,27.416120,'USA','Florida',' US-FL ',' Saint Lucie Canal Okeechobee Waterway ',35.8,NULL,NULL,'','',true), + ('Gainesville (Florida USA)','Gainesville',-82.308360,29.674700,'USA','Florida',' US-FL ',' Orange Lake ',26.8,NULL,NULL,'','',true), + ('Hialeah (Florida USA)','Hialeah',-80.320400,25.908860,'USA','Florida',' US-FL ',' Ninemile Canal ',118.0,NULL,NULL,'','',true), + ('Jacksonville (Florida USA)','Jacksonville',-81.664600,30.328770,'USA','Florida',' US-FL ',' North Prong Saint Marys River ',54.8,NULL,NULL,'','',true), + ('Key Largo (Florida USA)','Key Largo',-80.418740,25.103330,'USA','Florida',' US-FL ',' Ninemile Canal ',198.1,NULL,NULL,'','',true), + ('Key West (Florida USA)','Key West',-81.775750,24.559320,'USA','Florida',' US-FL ',' Caloosahatchee River ',241.9,NULL,NULL,'','',true), + ('Lake City (Florida USA)','Lake City',-82.631890,30.193830,'USA','Florida',' US-FL ',' Suwannee ',23.2,NULL,NULL,'','',true), + ('Melbourne (Florida USA)','Melbourne',-80.621680,28.079180,'USA','Florida',' US-FL ',' Lake Kissimmee ',66.8,NULL,NULL,'','',true), + ('Miami (Florida USA)','Miami',-80.224490,25.780460,'USA','Florida',' US-FL ',' Ninemile Canal ',135.1,NULL,NULL,'','',true), + ('Naples (Florida USA)','Naples',-81.773760,26.145460,'USA','Florida',' US-FL ',' Caloosahatchee River ',67.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Ocala (Florida USA)','Ocala',-82.116850,29.200000,'USA','Florida',' US-FL ',' Orange Lake ',29.7,NULL,NULL,'','',true), + ('Orlando (Florida USA)','Orlando',-81.349870,28.508140,'USA','Florida',' US-FL ',' East Lake Tohopekaliga ',25.1,NULL,NULL,'','',true), + ('Panama City (Florida USA)','Panama City',-85.628740,30.194280,'USA','Florida',' US-FL ',' Choctawhatchee River ',60.1,NULL,NULL,'','',true), + ('Pensacola (Florida USA)','Pensacola',-87.224810,30.459690,'USA','Florida',' US-FL ',' Escambia River ',39.7,NULL,NULL,'','',true), + ('Port Charlotte (Florida USA)','Port Charlotte',-82.081970,26.999590,'USA','Florida',' US-FL ',' Caloosahatchee River ',56.2,NULL,NULL,'','',true), + ('Port St Lucie (Florida USA)','Port St Lucie',-80.291230,27.282300,'USA','Florida',' US-FL ',' Saint Lucie Canal Okeechobee Waterway ',21.7,NULL,NULL,'','',true), + ('Sarasota (Florida USA)','Sarasota',-82.448010,27.305540,'USA','Florida',' US-FL ',' Peace River ',62.1,NULL,NULL,'','',true), + ('Sebring (Florida USA)','Sebring',-81.390690,27.493570,'USA','Florida',' US-FL ',' Lake Istokpoga ',16.3,NULL,NULL,'','',true), + ('St Augustine (Florida USA)','St Augustine',-81.360380,29.942980,'USA','Florida',' US-FL ',' Crescent Lake ',55.1,NULL,NULL,'','',true), + ('St Petersburg (Florida USA)','St Petersburg',-82.669160,27.782630,'USA','Florida',' US-FL ',' Peace River ',85.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tallahassee (Florida USA)','Tallahassee',-84.274730,30.435720,'USA','Florida',' US-FL ',' Ochlockonee River ',16.0,NULL,NULL,'','',true), + ('Tampa (Florida USA)','Tampa',-82.414280,27.971630,'USA','Florida',' US-FL ',' Peace River ',75.4,NULL,NULL,'','',true), + ('Titusville (Florida USA)','Titusville',-80.843570,28.597220,'USA','Florida',' US-FL ',' Lake Harney ',26.9,NULL,NULL,'','',true), + ('West Palm Beach (Florida USA)','West Palm Beach',-80.050120,26.733550,'USA','Florida',' US-FL ',' Saint Lucie Canal Okeechobee Waterway ',50.0,NULL,NULL,'','',true), + ('Winter Haven (Florida USA)','Winter Haven',-81.735290,27.999960,'USA','Florida',' US-FL ',' South Port Canal And Short Canal ',40.4,NULL,NULL,'','',true), + ('Albany (Georgia USA)','Albany',-84.170480,31.583010,'USA','Georgia',' US-GA ',' Walter F George Reservoir ',93.5,NULL,NULL,'','',true), + ('Americus (Georgia USA)','Americus',-84.241750,32.070800,'USA','Georgia',' US-GA ',' Chattahoochee ',63.6,NULL,NULL,'','',true), + ('Athens (Georgia USA)','Athens',-83.409120,33.943290,'USA','Georgia',' US-GA ',' North Oconee Creek ',32.3,NULL,NULL,'','',true), + ('Atlanta (Georgia USA)','Atlanta',-84.397430,33.774200,'USA','Georgia',' US-GA ',' Allatoona Lake ',48.0,NULL,NULL,'','',true), + ('Augusta (Georgia USA)','Augusta',-82.008390,33.437400,'USA','Georgia',' US-GA ',' Savannah ',49.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Brunswick (Georgia USA)','Brunswick',-81.490930,31.162490,'USA','Georgia',' US-GA ',' Satilla River ',75.1,NULL,NULL,'','',true), + ('Columbus (Georgia USA)','Columbus',-84.937750,32.481460,'USA','Georgia',' US-GA ',' Chattahoochee ',16.2,NULL,NULL,'','',true), + ('Dalton (Georgia USA)','Dalton',-84.963210,34.741840,'USA','Georgia',' US-GA ',' Conasauga River ',19.1,NULL,NULL,'','',true), + ('Douglas (Georgia USA)','Douglas',-82.860060,31.556250,'USA','Georgia',' US-GA ',' Alapaha River ',45.2,NULL,NULL,'','',true), + ('Gainesville (Georgia USA)','Gainesville',-83.804970,34.318100,'USA','Georgia',' US-GA ',' Lake Sidney Lanier ',12.1,NULL,NULL,'','',true), + ('Griffin (Georgia USA)','Griffin',-84.291100,33.252290,'USA','Georgia',' US-GA ',' Alcovy River ',67.6,NULL,NULL,'','',true), + ('Hinesville (Georgia USA)','Hinesville',-81.591950,31.872390,'USA','Georgia',' US-GA ',' Altamaha ',42.3,NULL,NULL,'','',true), + ('Jesup (Georgia USA)','Jesup',-81.901560,31.603620,'USA','Georgia',' US-GA ',' Altamaha ',17.0,NULL,NULL,'','',true), + ('La Grange (Georgia USA)','La Grange',-85.020240,33.053110,'USA','Georgia',' US-GA ',' Tallapoosa River ',60.6,NULL,NULL,'','',true), + ('Macon (Georgia USA)','Macon',-83.636000,32.810060,'USA','Georgia',' US-GA ',' Ocmulgee River ',47.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Marietta (Georgia USA)','Marietta',-84.553210,33.964250,'USA','Georgia',' US-GA ',' Allatoona Lake ',23.1,NULL,NULL,'','',true), + ('Rome (Georgia USA)','Rome',-85.183360,34.243050,'USA','Georgia',' US-GA ',' Oostanaula River ',29.6,NULL,NULL,'','',true), + ('Savannah (Georgia USA)','Savannah',-81.067110,32.064520,'USA','Georgia',' US-GA ',' Altamaha ',96.2,NULL,NULL,'','',true), + ('Statesboro (Georgia USA)','Statesboro',-81.763800,32.439540,'USA','Georgia',' US-GA ',' Ogeechee River ',44.5,NULL,NULL,'','',true), + ('Tifton (Georgia USA)','Tifton',-83.470980,31.442040,'USA','Georgia',' US-GA ',' Alapaha River ',28.0,NULL,NULL,'','',true), + ('Valdosta (Georgia USA)','Valdosta',-83.242850,30.846180,'USA','Georgia',' US-GA ',' Alapaha River ',50.3,NULL,NULL,'','',true), + ('Warner Robins (Georgia USA)','Warner Robins',-83.607460,32.562020,'USA','Georgia',' US-GA ',' Ocmulgee River ',24.0,NULL,NULL,'','',true), + ('Waycross (Georgia USA)','Waycross',-82.389850,31.237180,'USA','Georgia',' US-GA ',' Satilla River ',10.8,NULL,NULL,'','',true), + ('Hilo (Hawaii USA)','Hilo',-155.106160,19.708610,'USA','Hawaii',' US-HI ',' Russian River ',3737.6,NULL,NULL,'','',true), + ('Honolulu (Hawaii USA)','Honolulu',-157.834680,21.312480,'USA','Hawaii',' US-HI ',' Russian River ',3840.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Kailua (Hawaii USA)','Kailua',-155.907500,19.526680,'USA','Hawaii',' US-HI ',' Russian River ',3813.9,NULL,NULL,'','',true), + ('Lihue (Hawaii USA)','Lihue',-159.371390,22.014440,'USA','Hawaii',' US-HI ',' Sandy River ',3798.2,NULL,NULL,'','',true), + ('Boise (Idaho USA)','Boise',-116.169290,43.539640,'USA','Idaho',' US-ID ',' Boise River ',14.2,NULL,NULL,'','',true), + ('Caldwell (Idaho USA)','Caldwell',-116.727530,43.670070,'USA','Idaho',' US-ID ',' Boise River ',40.1,NULL,NULL,'','',true), + ('Coeur dAlene (Idaho USA)','Coeur dAlene',-116.814580,47.712220,'USA','Idaho',' US-ID ',' Coeur DAlene Lake ',18.5,NULL,NULL,'','',true), + ('Grangeville (Idaho USA)','Grangeville',-116.098960,45.919840,'USA','Idaho',' US-ID ',' Middle Fork Clearwater River ',36.6,NULL,NULL,'','',true), + ('Idaho Falls (Idaho USA)','Idaho Falls',-112.035260,43.467550,'USA','Idaho',' US-ID ',' Grays Lake ',65.2,NULL,NULL,'','',true), + ('Kellogg (Idaho USA)','Kellogg',-115.969450,47.480010,'USA','Idaho',' US-ID ',' Saint Joe River ',23.9,NULL,NULL,'','',true), + ('Ketchum (Idaho USA)','Ketchum',-114.344990,43.499520,'USA','Idaho',' US-ID ',' Big Wood River ',21.0,NULL,NULL,'','',true), + ('Lewiston (Idaho USA)','Lewiston',-116.953860,46.432620,'USA','Idaho',' US-ID ',' Palouse River ',63.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Moscow (Idaho USA)','Moscow',-116.988820,46.753760,'USA','Idaho',' US-ID ',' Palouse River ',36.0,NULL,NULL,'','',true), + ('Mountain Home (Idaho USA)','Mountain Home',-115.646940,43.133980,'USA','Idaho',' US-ID ',' South Fork Boise River ',53.3,NULL,NULL,'','',true), + ('Nampa (Idaho USA)','Nampa',-116.575750,43.520520,'USA','Idaho',' US-ID ',' Boise River ',31.9,NULL,NULL,'','',true), + ('Payette (Idaho USA)','Payette',-116.869950,44.123650,'USA','Idaho',' US-ID ',' Payette River ',35.6,NULL,NULL,'','',true), + ('Pocatello (Idaho USA)','Pocatello',-112.437450,42.834420,'USA','Idaho',' US-ID ',' American Falls Reservoir ',26.9,NULL,NULL,'','',true), + ('Rexburg (Idaho USA)','Rexburg',-111.748820,43.857650,'USA','Idaho',' US-ID ',' Palisades Reservoir ',79.4,NULL,NULL,'','',true), + ('Salmon (Idaho USA)','Salmon',-113.846430,45.156450,'USA','Idaho',' US-ID ',' Clark Canyon Reservoir ',78.1,NULL,NULL,'','',true), + ('Sandpoint (Idaho USA)','Sandpoint',-116.560800,48.314230,'USA','Idaho',' US-ID ',' Lake Pend Oreille ',20.4,NULL,NULL,'','',true), + ('Soda Springs (Idaho USA)','Soda Springs',-111.581180,42.643540,'USA','Idaho',' US-ID ',' Blackfoot Reservoir ',33.2,NULL,NULL,'','',true), + ('Twin Falls (Idaho USA)','Twin Falls',-114.470600,42.540080,'USA','Idaho',' US-ID ',' Big Wood River ',88.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Alton (Illinois USA)','Alton',-90.145480,38.934230,'USA','Illinois',' US-IL ',' Carlyle Lake ',79.7,NULL,NULL,'','',true), + ('Aurora (Illinois USA)','Aurora',-88.303620,41.748940,'USA','Illinois',' US-IL ',' Des Plaines River ',41.1,NULL,NULL,'','',true), + ('Bloomington (Illinois USA)','Bloomington',-88.975020,40.483580,'USA','Illinois',' US-IL ',' Sangamon River ',51.9,NULL,NULL,'','',true), + ('Carbondale (Illinois USA)','Carbondale',-89.208600,37.755390,'USA','Illinois',' US-IL ',' Big Muddy River ',7.6,NULL,NULL,'','',true), + ('Champaign (Illinois USA)','Champaign',-88.242860,40.100760,'USA','Illinois',' US-IL ',' Middle Fork Vermilion River ',39.7,NULL,NULL,'','',true), + ('Chicago (Illinois USA)','Chicago',-87.637680,41.831740,'USA','Illinois',' US-IL ',' Des Plaines River ',37.5,NULL,NULL,'','',true), + ('Decatur (Illinois USA)','Decatur',-88.960530,39.836340,'USA','Illinois',' US-IL ',' Sangamon River ',36.5,NULL,NULL,'','',true), + ('Effingham (Illinois USA)','Effingham',-88.544150,39.110250,'USA','Illinois',' US-IL ',' Embarras River ',45.4,NULL,NULL,'','',true), + ('Elgin (Illinois USA)','Elgin',-88.235990,42.041070,'USA','Illinois',' US-IL ',' Des Plaines River ',19.8,NULL,NULL,'','',true), + ('Joliet (Illinois USA)','Joliet',-88.088330,41.558180,'USA','Illinois',' US-IL ',' Des Plaines River ',54.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Kankakee (Illinois USA)','Kankakee',-87.878390,41.119980,'USA','Illinois',' US-IL ',' Big Four Ditch River ',74.9,NULL,NULL,'','',true), + ('Mount Vernon (Illinois USA)','Mount Vernon',-88.855510,38.319620,'USA','Illinois',' US-IL ',' Rend Lake ',21.7,NULL,NULL,'','',true), + ('Peoria (Illinois USA)','Peoria',-89.643590,40.683570,'USA','Illinois',' US-IL ',' Illinois ',21.6,NULL,NULL,'','',true), + ('Quincy (Illinois USA)','Quincy',-91.394610,39.932870,'USA','Illinois',' US-IL ',' Mark Twain Lake ',59.8,NULL,NULL,'','',true), + ('Rockford (Illinois USA)','Rockford',-89.069970,42.279150,'USA','Illinois',' US-IL ',' Lake Koshkonong ',66.9,NULL,NULL,'','',true), + ('Springfield (Illinois USA)','Springfield',-89.664300,39.803930,'USA','Illinois',' US-IL ',' Sangamon River ',45.5,NULL,NULL,'','',true), + ('Urbana (Illinois USA)','Urbana',-88.178000,40.093160,'USA','Illinois',' US-IL ',' Middle Fork Vermilion River ',35.7,NULL,NULL,'','',true), + ('Bloomington (Indiana USA)','Bloomington',-86.483890,39.137210,'USA','Indiana',' US-IN ',' Monroe Lake ',10.3,NULL,NULL,'','',true), + ('Columbus (Indiana USA)','Columbus',-85.885060,39.214070,'USA','Indiana',' US-IN ',' Driftwood River ',11.6,NULL,NULL,'','',true), + ('Evansville (Indiana USA)','Evansville',-87.532620,37.970170,'USA','Indiana',' US-IN ',' Saint Francis River ',49.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Fort Wayne (Indiana USA)','Fort Wayne',-85.096230,41.067940,'USA','Indiana',' US-IN ',' Grand Lake Saint Marys ',78.3,NULL,NULL,'','',true), + ('Gary (Indiana USA)','Gary',-87.373460,41.570010,'USA','Indiana',' US-IN ',' Kankakee ',52.7,NULL,NULL,'','',true), + ('Indianapolis (Indiana USA)','Indianapolis',-86.094280,39.781930,'USA','Indiana',' US-IN ',' Driftwood River ',56.2,NULL,NULL,'','',true), + ('Kokomo (Indiana USA)','Kokomo',-86.154010,40.477130,'USA','Indiana',' US-IN ',' Tippecanoe River ',71.4,NULL,NULL,'','',true), + ('Lafayette (Indiana USA)','Lafayette',-86.891120,40.396590,'USA','Indiana',' US-IN ',' Middle Fork Vermilion River ',82.1,NULL,NULL,'','',true), + ('Marion (Indiana USA)','Marion',-85.671280,40.562050,'USA','Indiana',' US-IN ',' Tippecanoe River ',80.1,NULL,NULL,'','',true), + ('Muncie (Indiana USA)','Muncie',-85.385060,40.185480,'USA','Indiana',' US-IN ',' Brookville Lake ',82.2,NULL,NULL,'','',true), + ('South Bend (Indiana USA)','South Bend',-86.241650,41.673910,'USA','Indiana',' US-IN ',' Tippecanoe River ',62.6,NULL,NULL,'','',true), + ('Terre Haute (Indiana USA)','Terre Haute',-87.345470,39.468430,'USA','Indiana',' US-IN ',' Wabash ',33.5,NULL,NULL,'','',true), + ('Vincennes (Indiana USA)','Vincennes',-87.463290,38.691590,'USA','Indiana',' US-IN ',' Saint Francis River ',73.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Ames (Iowa USA)','Ames',-93.632780,42.034490,'USA','Iowa',' US-IA ',' Des Moines ',14.8,NULL,NULL,'','',true), + ('Burlington (Iowa USA)','Burlington',-91.119350,40.817820,'USA','Iowa',' US-IA ',' Skunk River ',42.4,NULL,NULL,'','',true), + ('Cedar Rapids (Iowa USA)','Cedar Rapids',-91.607280,41.974700,'USA','Iowa',' US-IA ',' Coralville Lake ',17.5,NULL,NULL,'','',true), + ('Charles City (Iowa USA)','Charles City',-92.683500,43.083000,'USA','Iowa',' US-IA ',' Turkey Creek ',82.5,NULL,NULL,'','',true), + ('Council Bluffs (Iowa USA)','Council Bluffs',-95.782770,41.349380,'USA','Iowa',' US-IA ',' West Nishnabotna River ',35.5,NULL,NULL,'','',true), + ('Davenport (Iowa USA)','Davenport',-90.530540,41.546390,'USA','Iowa',' US-IA ',' Mississippi River ',61.8,NULL,NULL,'','',true), + ('Decorah (Iowa USA)','Decorah',-91.789560,43.310170,'USA','Iowa',' US-IA ',' Turkey Creek ',32.6,NULL,NULL,'','',true), + ('Des Moines (Iowa USA)','Des Moines',-93.621320,41.560390,'USA','Iowa',' US-IA ',' Saylorville Lake ',26.5,NULL,NULL,'','',true), + ('Dubuque (Iowa USA)','Dubuque',-90.668300,42.463510,'USA','Iowa',' US-IA ',' Mississippi River ',64.0,NULL,NULL,'','',true), + ('Fort Dodge (Iowa USA)','Fort Dodge',-94.207300,42.529170,'USA','Iowa',' US-IA ',' North Racoon River ',54.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Iowa City (Iowa USA)','Iowa City',-91.504710,41.625910,'USA','Iowa',' US-IA ',' Coralville Lake ',24.8,NULL,NULL,'','',true), + ('Marshalltown (Iowa USA)','Marshalltown',-92.935650,42.048460,'USA','Iowa',' US-IA ',' Iowa River ',21.2,NULL,NULL,'','',true), + ('Mason City (Iowa USA)','Mason City',-93.245140,43.165170,'USA','Iowa',' US-IA ',' West Branch Iowa River ',40.6,NULL,NULL,'','',true), + ('Ottumwa (Iowa USA)','Ottumwa',-92.418040,41.048120,'USA','Iowa',' US-IA ',' Rathbun Lake ',54.2,NULL,NULL,'','',true), + ('Sioux City (Iowa USA)','Sioux City',-96.357870,42.483950,'USA','Iowa',' US-IA ',' Grand River ',48.3,NULL,NULL,'','',true), + ('Spencer (Iowa USA)','Spencer',-95.153270,43.162190,'USA','Iowa',' US-IA ',' Little Sioux River ',46.6,NULL,NULL,'','',true), + ('Storm Lake (Iowa USA)','Storm Lake',-95.114750,42.730950,'USA','Iowa',' US-IA ',' Little Sioux River ',35.3,NULL,NULL,'','',true), + ('Waterloo (Iowa USA)','Waterloo',-92.401310,42.477700,'USA','Iowa',' US-IA ',' Elk River ',43.2,NULL,NULL,'','',true), + ('Arkansas City (Kansas USA)','Arkansas City',-97.041380,37.067650,'USA','Kansas',' US-KS ',' Kaw Lake ',34.9,NULL,NULL,'','',true), + ('Atchison (Kansas USA)','Atchison',-95.121530,39.561720,'USA','Kansas',' US-KS ',' Platte River ',39.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Coffeyville (Kansas USA)','Coffeyville',-95.599590,37.042180,'USA','Kansas',' US-KS ',' Verdigris River ',17.2,NULL,NULL,'','',true), + ('Colby (Kansas USA)','Colby',-101.041160,39.402970,'USA','Kansas',' US-KS ',' S Fork Republican ',77.9,NULL,NULL,'','',true), + ('Dodge City (Kansas USA)','Dodge City',-100.015590,37.780220,'USA','Kansas',' US-KS ',' Medicine Lodge River ',145.2,NULL,NULL,'','',true), + ('El Dorado (Kansas USA)','El Dorado',-96.826090,37.816910,'USA','Kansas',' US-KS ',' El Dorado Lake ',6.6,NULL,NULL,'','',true), + ('Emporia (Kansas USA)','Emporia',-96.121540,38.394340,'USA','Kansas',' US-KS ',' Melvern Lake ',31.2,NULL,NULL,'','',true), + ('Garden City (Kansas USA)','Garden City',-100.921560,37.979240,'USA','Kansas',' US-KS ',' Optima Lake ',146.5,NULL,NULL,'','',true), + ('Great Bend (Kansas USA)','Great Bend',-98.766580,38.371180,'USA','Kansas',' US-KS ',' Smoky Hill River ',46.3,NULL,NULL,'','',true), + ('Hays (Kansas USA)','Hays',-99.341290,38.870910,'USA','Kansas',' US-KS ',' Smoky Hill River ',59.1,NULL,NULL,'','',true), + ('Hutchinson (Kansas USA)','Hutchinson',-97.908000,38.071700,'USA','Kansas',' US-KS ',' Cheney Reservoir ',35.5,NULL,NULL,'','',true), + ('Kansas City (Kansas USA)','Kansas City',-94.711640,39.130200,'USA','Kansas',' US-KS ',' Perry Lake ',64.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Lawrence (Kansas USA)','Lawrence',-95.215020,38.959380,'USA','Kansas',' US-KS ',' Clinton Lake ',19.2,NULL,NULL,'','',true), + ('Leavenworth (Kansas USA)','Leavenworth',-94.932570,39.335610,'USA','Kansas',' US-KS ',' Perry Lake ',46.8,NULL,NULL,'','',true), + ('Liberal (Kansas USA)','Liberal',-100.923210,37.045570,'USA','Kansas',' US-KS ',' Optima Lake ',46.8,NULL,NULL,'','',true), + ('Manhattan (Kansas USA)','Manhattan',-96.568550,39.190800,'USA','Kansas',' US-KS ',' Tuttle Creek Lake ',28.8,NULL,NULL,'','',true), + ('Marysville (Kansas USA)','Marysville',-96.670340,39.843160,'USA','Kansas',' US-KS ',' Tuttle Creek Lake ',44.5,NULL,NULL,'','',true), + ('McPherson (Kansas USA)','McPherson',-97.683500,38.370510,'USA','Kansas',' US-KS ',' North Cottonwood River ',33.5,NULL,NULL,'','',true), + ('Oberlin (Kansas USA)','Oberlin',-100.527640,39.785760,'USA','Kansas',' US-KS ',' S Fork Republican ',97.8,NULL,NULL,'','',true), + ('Ottawa (Kansas USA)','Ottawa',-95.263190,38.601940,'USA','Kansas',' US-KS ',' Marais des Cygnes ',26.2,NULL,NULL,'','',true), + ('Phillipsburg (Kansas USA)','Phillipsburg',-99.372110,39.749460,'USA','Kansas',' US-KS ',' North Fork Solomon River ',16.8,NULL,NULL,'','',true), + ('Pittsburg (Kansas USA)','Pittsburg',-94.704490,37.407780,'USA','Kansas',' US-KS ',' Big Sandy River ',65.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Pratt (Kansas USA)','Pratt',-98.729430,37.624570,'USA','Kansas',' US-KS ',' Medicine Lodge River ',53.5,NULL,NULL,'','',true), + ('Salina (Kansas USA)','Salina',-97.635600,38.846870,'USA','Kansas',' US-KS ',' North Cottonwood River ',47.8,NULL,NULL,'','',true), + ('Scott City (Kansas USA)','Scott City',-100.887410,38.458470,'USA','Kansas',' US-KS ',' South Fork Solomon River ',162.5,NULL,NULL,'','',true), + ('Topeka (Kansas USA)','Topeka',-95.686680,39.021340,'USA','Kansas',' US-KS ',' Kansas ',8.9,NULL,NULL,'','',true), + ('Wichita (Kansas USA)','Wichita',-97.360660,37.687100,'USA','Kansas',' US-KS ',' Cheney Reservoir ',42.8,NULL,NULL,'','',true), + ('Ashland (Kentucky USA)','Ashland',-82.739910,38.503800,'USA','Kentucky',' US-KY ',' Cave Run Lake ',81.2,NULL,NULL,'','',true), + ('Bowling Green (Kentucky USA)','Bowling Green',-86.428720,36.957800,'USA','Kentucky',' US-KY ',' Barren River ',8.1,NULL,NULL,'','',true), + ('Cairo (Kentucky USA)','Cairo',-89.131870,37.005950,'USA','Kentucky',' US-KY ',' Big Muddy River ',87.4,NULL,NULL,'','',true), + ('Frankfort (Kentucky USA)','Frankfort',-84.856980,38.174230,'USA','Kentucky',' US-KY ',' Beech Fork ',59.0,NULL,NULL,'','',true), + ('Hazard (Kentucky USA)','Hazard',-83.178150,37.241080,'USA','Kentucky',' US-KY ',' Middle Fork Kentucky River ',28.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Lexington (Kentucky USA)','Lexington',-84.497930,38.034550,'USA','Kentucky',' US-KY ',' Kentucky ',40.2,NULL,NULL,'','',true), + ('Louisville (Kentucky USA)','Louisville',-85.769600,38.228850,'USA','Kentucky',' US-KY ',' Rolling Fork ',65.3,NULL,NULL,'','',true), + ('Madison (Kentucky USA)','Madison',-85.436000,38.710160,'USA','Kentucky',' US-KY ',' Driftwood River ',79.5,NULL,NULL,'','',true), + ('Madisonville (Kentucky USA)','Madisonville',-87.527080,37.357780,'USA','Kentucky',' US-KY ',' Lake Barkley ',67.5,NULL,NULL,'','',true), + ('Middlesboro (Kentucky USA)','Middlesboro',-83.724470,36.617480,'USA','Kentucky',' US-KY ',' Norris Lake ',35.7,NULL,NULL,'','',true), + ('Owensboro (Kentucky USA)','Owensboro',-87.127370,37.739140,'USA','Kentucky',' US-KY ',' Saint Francis River ',44.9,NULL,NULL,'','',true), + ('Paducah (Kentucky USA)','Paducah',-88.608100,37.096830,'USA','Kentucky',' US-KY ',' Lake Barkley ',57.6,NULL,NULL,'','',true), + ('Richmond (Kentucky USA)','Richmond',-84.275070,37.748250,'USA','Kentucky',' US-KY ',' Kentucky ',11.9,NULL,NULL,'','',true), + ('Somerset (Kentucky USA)','Somerset',-84.577110,37.078350,'USA','Kentucky',' US-KY ',' Laurel River Lake ',32.6,NULL,NULL,'','',true), + ('Alexandria (Louisiana USA)','Alexandria',-92.441180,31.328110,'USA','Louisiana',' US-LA ',' Catahoula Lake ',35.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Baton Rouge (Louisiana USA)','Baton Rouge',-91.179520,30.452820,'USA','Louisiana',' US-LA ',' Lake Verret ',63.2,NULL,NULL,'','',true), + ('De Ridder (Louisiana USA)','De Ridder',-93.321560,30.848710,'USA','Louisiana',' US-LA ',' Calcasieu River ',38.4,NULL,NULL,'','',true), + ('Houma (Louisiana USA)','Houma',-90.636920,29.626720,'USA','Louisiana',' US-LA ',' Bayou Lafourche ',11.7,NULL,NULL,'','',true), + ('Lafayette (Louisiana USA)','Lafayette',-92.036870,30.233060,'USA','Louisiana',' US-LA ',' Grand Lake ',73.3,NULL,NULL,'','',true), + ('Lake Charles (Louisiana USA)','Lake Charles',-93.201510,30.232130,'USA','Louisiana',' US-LA ',' Calcasieu River ',45.0,NULL,NULL,'','',true), + ('Monroe (Louisiana USA)','Monroe',-92.089250,32.526110,'USA','Louisiana',' US-LA ',' Little River ',39.2,NULL,NULL,'','',true), + ('Morgan City (Louisiana USA)','Morgan City',-91.182560,29.650240,'USA','Louisiana',' US-LA ',' Unnamed ',5.7,NULL,NULL,'','',true), + ('New Iberia (Louisiana USA)','New Iberia',-91.774030,30.004960,'USA','Louisiana',' US-LA ',' Grand Lake ',39.3,NULL,NULL,'','',true), + ('New Orleans (Louisiana USA)','New Orleans',-90.062620,29.941080,'USA','Louisiana',' US-LA ',' Lac des Allemands ',49.8,NULL,NULL,'','',true), + ('Shreveport (Louisiana USA)','Shreveport',-93.759830,32.534740,'USA','Louisiana',' US-LA ',' Twelvemile Bayou ',19.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tallulah (Louisiana USA)','Tallulah',-91.167260,32.437500,'USA','Louisiana',' US-LA ',' Little River ',51.9,NULL,NULL,'','',true), + ('Augusta (Maine USA)','Augusta',-69.781410,44.321660,'USA','Maine',' US-ME ',' Kennebec ',60.9,NULL,NULL,'','',true), + ('Bangor (Maine USA)','Bangor',-68.776190,44.811890,'USA','Maine',' US-ME ',' Penobscot River ',38.2,NULL,NULL,'','',true), + ('Belfast (Maine USA)','Belfast',-69.007710,44.417070,'USA','Maine',' US-ME ',' Kennebec ',80.6,NULL,NULL,'','',true), + ('Biddeford (Maine USA)','Biddeford',-70.476340,43.460180,'USA','Maine',' US-ME ',' Sebago Lake ',46.0,NULL,NULL,'','',true), + ('Calais (Maine USA)','Calais',-67.249070,45.121820,'USA','Maine',' US-ME ',' Saint Croix River ',37.4,NULL,NULL,'','',true), + ('Houlton (Maine USA)','Houlton',-67.950640,46.093980,'USA','Maine',' US-ME ',' Monument Brook ',28.2,NULL,NULL,'','',true), + ('Lewiston (Maine USA)','Lewiston',-70.194060,44.109720,'USA','Maine',' US-ME ',' Sebago Lake ',38.8,NULL,NULL,'','',true), + ('Portland (Maine USA)','Portland',-70.277580,43.698550,'USA','Maine',' US-ME ',' Sebago Lake ',28.9,NULL,NULL,'','',true), + ('Presque Isle (Maine USA)','Presque Isle',-68.014360,46.716560,'USA','Maine',' US-ME ',' Aroostook River ',16.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Skowhegan (Maine USA)','Skowhegan',-69.708970,44.767900,'USA','Maine',' US-ME ',' Kennebec ',13.5,NULL,NULL,'','',true), + ('Waterville (Maine USA)','Waterville',-69.620730,44.537240,'USA','Maine',' US-ME ',' Kennebec ',39.7,NULL,NULL,'','',true), + ('Annapolis (Maryland USA)','Annapolis',-76.542570,38.955880,'USA','Maryland',' US-MD ',' Rappahannock River ',109.5,NULL,NULL,'','',true), + ('Baltimore (Maryland USA)','Baltimore',-76.571450,39.300980,'USA','Maryland',' US-MD ',' Potomac ',98.2,NULL,NULL,'','',true), + ('Frederick (Maryland USA)','Frederick',-77.369390,39.438070,'USA','Maryland',' US-MD ',' Potomac ',29.8,NULL,NULL,'','',true), + ('Hagerstown (Maryland USA)','Hagerstown',-77.703160,39.647260,'USA','Maryland',' US-MD ',' Potomac ',29.6,NULL,NULL,'','',true), + ('Washington (Maryland USA)','Washington',-76.970770,38.951440,'USA','Maryland',' US-MD ',' Rappahannock River ',79.5,NULL,NULL,'','',true), + ('Boston (Massachusetts USA)','Boston',-71.080080,42.362830,'USA','Massachusetts',' US-MA ',' Quabbin Reservoir ',101.5,NULL,NULL,'','',true), + ('Fall River (Massachusetts USA)','Fall River',-71.104890,41.717710,'USA','Massachusetts',' US-MA ',' Pawcatuck River ',66.7,NULL,NULL,'','',true), + ('Lowell (Massachusetts USA)','Lowell',-71.318560,42.662090,'USA','Massachusetts',' US-MA ',' Merrimack ',67.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('New Bedford (Massachusetts USA)','New Bedford',-70.915070,41.658980,'USA','Massachusetts',' US-MA ',' Pawcatuck River ',78.2,NULL,NULL,'','',true), + ('Springfield (Massachusetts USA)','Springfield',-72.474590,42.111860,'USA','Massachusetts',' US-MA ',' Chicopee River ',7.4,NULL,NULL,'','',true), + ('Worcester (Massachusetts USA)','Worcester',-71.838700,42.270250,'USA','Massachusetts',' US-MA ',' Quabbin Reservoir ',41.4,NULL,NULL,'','',true), + ('Alpena (Michigan USA)','Alpena',-83.473750,45.077480,'USA','Michigan',' US-MI ',' Au Sable River ',64.3,NULL,NULL,'','',true), + ('Ann Arbor (Michigan USA)','Ann Arbor',-83.726440,42.272470,'USA','Michigan',' US-MI ',' Lake Saint Clair ',84.6,NULL,NULL,'','',true), + ('Bay City (Michigan USA)','Bay City',-83.884480,43.594520,'USA','Michigan',' US-MI ',' Saginaw River ',8.1,NULL,NULL,'','',true), + ('Detroit (Michigan USA)','Detroit',-83.068370,42.368250,'USA','Michigan',' US-MI ',' Lake Saint Clair ',30.1,NULL,NULL,'','',true), + ('Escanaba (Michigan USA)','Escanaba',-87.130180,45.737360,'USA','Michigan',' US-MI ',' Menominee River ',60.4,NULL,NULL,'','',true), + ('Flint (Michigan USA)','Flint',-83.722800,43.051930,'USA','Michigan',' US-MI ',' Shiawassee River ',44.5,NULL,NULL,'','',true), + ('Grand Rapids (Michigan USA)','Grand Rapids',-85.626630,42.947700,'USA','Michigan',' US-MI ',' Kalamazoo River ',55.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Houghton (Michigan USA)','Houghton',-88.610940,47.078540,'USA','Michigan',' US-MI ',' West Branch Peshekee River ',66.4,NULL,NULL,'','',true), + ('Iron Mountain (Michigan USA)','Iron Mountain',-88.074570,45.849330,'USA','Michigan',' US-MI ',' Menominee River ',35.3,NULL,NULL,'','',true), + ('Ironwood (Michigan USA)','Ironwood',-90.132780,46.485690,'USA','Michigan',' US-MI ',' Pigeon River ',32.8,NULL,NULL,'','',true), + ('Jackson (Michigan USA)','Jackson',-84.469070,42.312110,'USA','Michigan',' US-MI ',' Kalamazoo River ',94.2,NULL,NULL,'','',true), + ('Kalamazoo (Michigan USA)','Kalamazoo',-85.582490,42.312740,'USA','Michigan',' US-MI ',' Kalamazoo River ',15.3,NULL,NULL,'','',true), + ('Lansing (Michigan USA)','Lansing',-84.571170,42.771940,'USA','Michigan',' US-MI ',' Shiawassee River ',81.1,NULL,NULL,'','',true), + ('Ludington (Michigan USA)','Ludington',-86.368180,43.933510,'USA','Michigan',' US-MI ',' Muskegon River ',89.0,NULL,NULL,'','',true), + ('Marquette (Michigan USA)','Marquette',-87.422610,46.536510,'USA','Michigan',' US-MI ',' Peshekee River ',44.9,NULL,NULL,'','',true), + ('Midland (Michigan USA)','Midland',-84.232710,43.606730,'USA','Michigan',' US-MI ',' Tittabawassee River ',26.3,NULL,NULL,'','',true), + ('Muskegon (Michigan USA)','Muskegon',-86.236070,43.216400,'USA','Michigan',' US-MI ',' Kalamazoo River ',99.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Petoskey (Michigan USA)','Petoskey',-84.960800,45.340180,'USA','Michigan',' US-MI ',' Burt Lake ',27.3,NULL,NULL,'','',true), + ('Pontiac (Michigan USA)','Pontiac',-83.285740,42.626940,'USA','Michigan',' US-MI ',' Lake Saint Clair ',47.7,NULL,NULL,'','',true), + ('Port Huron (Michigan USA)','Port Huron',-82.473270,42.952800,'USA','Michigan',' US-MI ',' St Clair ',20.2,NULL,NULL,'','',true), + ('Saginaw (Michigan USA)','Saginaw',-83.955300,43.413190,'USA','Michigan',' US-MI ',' Shiawassee River ',6.7,NULL,NULL,'','',true), + ('Sault Ste Marie (Michigan USA)','Sault Ste Marie',-84.351890,46.466580,'USA','Michigan',' US-MI ',' St Marys River ',9.0,NULL,NULL,'','',true), + ('Traverse City (Michigan USA)','Traverse City',-85.631310,44.747770,'USA','Michigan',' US-MI ',' Manistee River ',30.0,NULL,NULL,'','',true), + ('Albert Lea (Minnesota USA)','Albert Lea',-93.375530,43.641680,'USA','Minnesota',' US-MN ',' West Branch Iowa River ',70.4,NULL,NULL,'','',true), + ('Bemidji (Minnesota USA)','Bemidji',-94.855190,47.482280,'USA','Minnesota',' US-MN ',' Cass Lake ',23.0,NULL,NULL,'','',true), + ('Brainerd (Minnesota USA)','Brainerd',-94.179530,46.354570,'USA','Minnesota',' US-MN ',' North Long Lake ',10.5,NULL,NULL,'','',true), + ('Crookston (Minnesota USA)','Crookston',-96.551490,47.765440,'USA','Minnesota',' US-MN ',' Red Lake River ',28.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Duluth (Minnesota USA)','Duluth',-92.156950,46.798480,'USA','Minnesota',' US-MN ',' Saint Louis ',35.1,NULL,NULL,'','',true), + ('Ely (Minnesota USA)','Ely',-91.863040,47.903800,'USA','Minnesota',' US-MN ',' Basswood Lake ',17.2,NULL,NULL,'','',true), + ('Fairmont (Minnesota USA)','Fairmont',-94.421430,43.633960,'USA','Minnesota',' US-MN ',' East Fork Des Moines River ',42.2,NULL,NULL,'','',true), + ('Faribault (Minnesota USA)','Faribault',-93.256900,44.282600,'USA','Minnesota',' US-MN ',' Minnesota ',133.8,NULL,NULL,'','',true), + ('Fergus Falls (Minnesota USA)','Fergus Falls',-96.055510,46.279230,'USA','Minnesota',' US-MN ',' Otter Tail Creek ',21.5,NULL,NULL,'','',true), + ('Grand Marais (Minnesota USA)','Grand Marais',-90.148550,47.837390,'USA','Minnesota',' US-MN ',' Arrow River ',35.8,NULL,NULL,'','',true), + ('Grand Rapids (Minnesota USA)','Grand Rapids',-93.513670,47.270230,'USA','Minnesota',' US-MN ',' Pokegama Lake ',9.2,NULL,NULL,'','',true), + ('Hibbing (Minnesota USA)','Hibbing',-92.951970,47.433380,'USA','Minnesota',' US-MN ',' Pokegama Lake ',54.4,NULL,NULL,'','',true), + ('International Falls (Minnesota USA)','International Falls',-93.378260,48.550070,'USA','Minnesota',' US-MN ',' Rainy Lake ',28.2,NULL,NULL,'','',true), + ('Little Falls (Minnesota USA)','Little Falls',-94.316230,45.980300,'USA','Minnesota',' US-MN ',' North Long Lake ',51.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Mankato (Minnesota USA)','Mankato',-93.976580,44.141760,'USA','Minnesota',' US-MN ',' Minnesota ',94.3,NULL,NULL,'','',true), + ('Marshall (Minnesota USA)','Marshall',-95.773790,44.505740,'USA','Minnesota',' US-MN ',' Minnesota ',80.1,NULL,NULL,'','',true), + ('Minneapolis (Minnesota USA)','Minneapolis',-93.302660,44.910910,'USA','Minnesota',' US-MN ',' St Croix ',105.9,NULL,NULL,'','',true), + ('Moorhead (Minnesota USA)','Moorhead',-96.696480,46.858070,'USA','Minnesota',' US-MN ',' Otter Tail Creek ',75.3,NULL,NULL,'','',true), + ('Rochester (Minnesota USA)','Rochester',-92.420930,44.020560,'USA','Minnesota',' US-MN ',' Red Cedar River ',125.5,NULL,NULL,'','',true), + ('St Cloud (Minnesota USA)','St Cloud',-94.168530,45.547420,'USA','Minnesota',' US-MN ',' Mille Lacs Lake ',84.6,NULL,NULL,'','',true), + ('St Paul (Minnesota USA)','St Paul',-93.088440,44.972410,'USA','Minnesota',' US-MN ',' St Croix ',91.0,NULL,NULL,'','',true), + ('Thief River Falls (Minnesota USA)','Thief River Falls',-96.221090,48.116250,'USA','Minnesota',' US-MN ',' Red Lake River ',19.9,NULL,NULL,'','',true), + ('Willmar (Minnesota USA)','Willmar',-95.045820,45.133550,'USA','Minnesota',' US-MN ',' Minnesota ',47.3,NULL,NULL,'','',true), + ('Winona (Minnesota USA)','Winona',-91.552080,44.012050,'USA','Minnesota',' US-MN ',' Turkey Creek ',109.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Worthington (Minnesota USA)','Worthington',-95.590830,43.609090,'USA','Minnesota',' US-MN ',' Floyd River ',73.7,NULL,NULL,'','',true), + ('Biloxi (Mississippi USA)','Biloxi',-88.921890,30.429120,'USA','Mississippi',' US-MS ',' Pascagoula River ',37.7,NULL,NULL,'','',true), + ('Brookhaven (Mississippi USA)','Brookhaven',-90.440340,31.547340,'USA','Mississippi',' US-MS ',' Pearl ',58.1,NULL,NULL,'','',true), + ('Cleveland (Mississippi USA)','Cleveland',-90.722140,33.729910,'USA','Mississippi',' US-MS ',' Tallahatchie River ',45.4,NULL,NULL,'','',true), + ('Columbus (Mississippi USA)','Columbus',-88.403680,33.460710,'USA','Mississippi',' US-MS ',' Sipsey River ',52.8,NULL,NULL,'','',true), + ('Corinth (Mississippi USA)','Corinth',-88.530410,34.929430,'USA','Mississippi',' US-MS ',' Pickwick Lake ',34.0,NULL,NULL,'','',true), + ('Greenville (Mississippi USA)','Greenville',-91.034540,33.387810,'USA','Mississippi',' US-MS ',' Yazoo River ',72.2,NULL,NULL,'','',true), + ('Grenada (Mississippi USA)','Grenada',-89.817170,33.774710,'USA','Mississippi',' US-MS ',' Yalobusha River ',13.5,NULL,NULL,'','',true), + ('Gulfport (Mississippi USA)','Gulfport',-89.092470,30.399050,'USA','Mississippi',' US-MS ',' Pascagoula River ',52.1,NULL,NULL,'','',true), + ('Hattiesburg (Mississippi USA)','Hattiesburg',-89.323640,31.315450,'USA','Mississippi',' US-MS ',' Leaf River ',36.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Jackson (Mississippi USA)','Jackson',-90.198460,32.324880,'USA','Mississippi',' US-MS ',' Ross R Barnett Reservoir ',24.9,NULL,NULL,'','',true), + ('Laurel (Mississippi USA)','Laurel',-89.143210,31.717430,'USA','Mississippi',' US-MS ',' Leaf River ',13.0,NULL,NULL,'','',true), + ('McComb (Mississippi USA)','McComb',-90.492800,31.231310,'USA','Mississippi',' US-MS ',' Pearl ',74.1,NULL,NULL,'','',true), + ('Meridian (Mississippi USA)','Meridian',-88.736320,32.376390,'USA','Mississippi',' US-MS ',' Okatibbee Creek ',9.9,NULL,NULL,'','',true), + ('Natchez (Mississippi USA)','Natchez',-91.299360,31.580360,'USA','Mississippi',' US-MS ',' Black River Lake ',46.6,NULL,NULL,'','',true), + ('Oxford (Mississippi USA)','Oxford',-89.468830,34.366440,'USA','Mississippi',' US-MS ',' Little Tallahatchie River ',19.8,NULL,NULL,'','',true), + ('Pascagoula (Mississippi USA)','Pascagoula',-88.558580,30.393970,'USA','Mississippi',' US-MS ',' Pascagoula River ',33.4,NULL,NULL,'','',true), + ('Starkville (Mississippi USA)','Starkville',-88.831630,33.459740,'USA','Mississippi',' US-MS ',' Yockanookany River ',70.5,NULL,NULL,'','',true), + ('Tupelo (Mississippi USA)','Tupelo',-88.731950,34.223670,'USA','Mississippi',' US-MS ',' Big Brown Creek ',48.9,NULL,NULL,'','',true), + ('Vicksburg (Mississippi USA)','Vicksburg',-90.863710,32.378080,'USA','Mississippi',' US-MS ',' Yazoo River ',64.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Branson (Missouri USA)','Branson',-93.234240,36.661090,'USA','Missouri',' US-MO ',' Table Rock Lake ',21.1,NULL,NULL,'','',true), + ('Cape Girardeau (Missouri USA)','Cape Girardeau',-89.523710,37.326950,'USA','Missouri',' US-MO ',' Big Muddy River ',54.7,NULL,NULL,'','',true), + ('Columbia (Missouri USA)','Columbia',-92.294560,38.957690,'USA','Missouri',' US-MO ',' Mark Twain Lake ',73.4,NULL,NULL,'','',true), + ('Farmington (Missouri USA)','Farmington',-90.431130,37.803710,'USA','Missouri',' US-MO ',' East Fork Black River ',46.9,NULL,NULL,'','',true), + ('Fulton (Missouri USA)','Fulton',-91.940470,38.841800,'USA','Missouri',' US-MO ',' Mark Twain Lake ',74.1,NULL,NULL,'','',true), + ('Hannibal (Missouri USA)','Hannibal',-91.387440,39.707300,'USA','Missouri',' US-MO ',' Mark Twain Lake ',42.8,NULL,NULL,'','',true), + ('Jefferson City (Missouri USA)','Jefferson City',-92.174130,38.591690,'USA','Missouri',' US-MO ',' Osage Fork Gasconade River ',70.1,NULL,NULL,'','',true), + ('Joplin (Missouri USA)','Joplin',-94.487180,37.106520,'USA','Missouri',' US-MO ',' Big Sandy River ',36.1,NULL,NULL,'','',true), + ('Kansas City (Missouri USA)','Kansas City',-94.585010,39.060530,'USA','Missouri',' US-MO ',' Clinton Lake ',74.7,NULL,NULL,'','',true), + ('Kirksville (Missouri USA)','Kirksville',-92.634710,40.208040,'USA','Missouri',' US-MO ',' Chariton River ',48.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Lebanon (Missouri USA)','Lebanon',-92.628060,37.722470,'USA','Missouri',' US-MO ',' Osage Fork Gasconade River ',48.1,NULL,NULL,'','',true), + ('Maryville (Missouri USA)','Maryville',-94.894530,40.340160,'USA','Missouri',' US-MO ',' Nodaway River ',14.0,NULL,NULL,'','',true), + ('Nevada (Missouri USA)','Nevada',-94.383470,37.827270,'USA','Missouri',' US-MO ',' Little Osage River ',39.2,NULL,NULL,'','',true), + ('Poplar Bluff (Missouri USA)','Poplar Bluff',-90.408550,36.759230,'USA','Missouri',' US-MO ',' Lake Wappapello ',29.0,NULL,NULL,'','',true), + ('Rolla (Missouri USA)','Rolla',-91.791500,37.926630,'USA','Missouri',' US-MO ',' Osage Fork Gasconade River ',33.5,NULL,NULL,'','',true), + ('Sikeston (Missouri USA)','Sikeston',-89.608040,36.893950,'USA','Missouri',' US-MO ',' Lake Wappapello ',69.0,NULL,NULL,'','',true), + ('Springfield (Missouri USA)','Springfield',-93.300540,37.189750,'USA','Missouri',' US-MO ',' Stockton Lake ',57.6,NULL,NULL,'','',true), + ('St Joseph (Missouri USA)','St Joseph',-94.845490,39.779160,'USA','Missouri',' US-MO ',' Platte River ',6.7,NULL,NULL,'','',true), + ('St Louis (Missouri USA)','St Louis',-90.268310,38.647230,'USA','Missouri',' US-MO ',' Meramec River ',85.7,NULL,NULL,'','',true), + ('Anaconda (Montana USA)','Anaconda',-112.978750,46.138970,'USA','Montana',' US-MT ',' Big Hole River ',57.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Billings (Montana USA)','Billings',-108.537080,45.818970,'USA','Montana',' US-MT ',' Yellowstone ',46.6,NULL,NULL,'','',true), + ('Bozeman (Montana USA)','Bozeman',-111.024720,45.664370,'USA','Montana',' US-MT ',' Gallitin River ',35.5,NULL,NULL,'','',true), + ('Butte (Montana USA)','Butte',-112.522970,46.021840,'USA','Montana',' US-MT ',' Jefferson River ',48.7,NULL,NULL,'','',true), + ('Deer Lodge (Montana USA)','Deer Lodge',-112.711310,46.377370,'USA','Montana',' US-MT ',' Blackfoot River ',76.0,NULL,NULL,'','',true), + ('Dillon (Montana USA)','Dillon',-112.637990,45.174240,'USA','Montana',' US-MT ',' Beaverhead Creek ',23.9,NULL,NULL,'','',true), + ('Glasgow (Montana USA)','Glasgow',-106.612110,48.246780,'USA','Montana',' US-MT ',' Walker Lake ',47.9,NULL,NULL,'','',true), + ('Glendive (Montana USA)','Glendive',-104.704840,47.104690,'USA','Montana',' US-MT ',' Little Missouri River ',98.6,NULL,NULL,'','',true), + ('Great Falls (Montana USA)','Great Falls',-111.228860,47.498820,'USA','Montana',' US-MT ',' Sun River ',71.8,NULL,NULL,'','',true), + ('Hamilton (Montana USA)','Hamilton',-114.161150,46.201770,'USA','Montana',' US-MT ',' Bitterroot River ',32.4,NULL,NULL,'','',true), + ('Havre (Montana USA)','Havre',-109.705710,48.531580,'USA','Montana',' US-MT ',' Milk River ',27.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Helena (Montana USA)','Helena',-112.038360,46.582600,'USA','Montana',' US-MT ',' Canyon Ferry Lake ',36.2,NULL,NULL,'','',true), + ('Kalispell (Montana USA)','Kalispell',-114.358310,48.214060,'USA','Montana',' US-MT ',' Flathead ',7.1,NULL,NULL,'','',true), + ('Lewistown (Montana USA)','Lewistown',-109.462800,47.056910,'USA','Montana',' US-MT ',' Musselshell River ',73.8,NULL,NULL,'','',true), + ('Libby (Montana USA)','Libby',-115.570900,48.377600,'USA','Montana',' US-MT ',' Kootenai River ',43.0,NULL,NULL,'','',true), + ('Livingston (Montana USA)','Livingston',-110.568050,45.673110,'USA','Montana',' US-MT ',' Gallitin River ',59.7,NULL,NULL,'','',true), + ('Malta (Montana USA)','Malta',-107.861230,48.400280,'USA','Montana',' US-MT ',' Nelson Reservoir ',24.9,NULL,NULL,'','',true), + ('Miles City (Montana USA)','Miles City',-105.789340,46.389000,'USA','Montana',' US-MT ',' Tongue River ',117.6,NULL,NULL,'','',true), + ('Missoula (Montana USA)','Missoula',-113.978910,46.902670,'USA','Montana',' US-MT ',' Bitterroot River ',47.0,NULL,NULL,'','',true), + ('Red Lodge (Montana USA)','Red Lodge',-109.267910,45.153250,'USA','Montana',' US-MT ',' Clarks Fork Yellowstone River ',13.2,NULL,NULL,'','',true), + ('Shelby (Montana USA)','Shelby',-111.760130,48.495450,'USA','Montana',' US-MT ',' Tiber Reservoir ',38.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Sidney (Montana USA)','Sidney',-104.172840,47.715800,'USA','Montana',' US-MT ',' Medicine Lake ',85.7,NULL,NULL,'','',true), + ('Wolf Point (Montana USA)','Wolf Point',-105.612810,48.119070,'USA','Montana',' US-MT ',' Walker Lake ',32.1,NULL,NULL,'','',true), + ('Alliance (Nebraska USA)','Alliance',-102.861230,42.113320,'USA','Nebraska',' US-NE ',' Lodgepole Creek ',120.6,NULL,NULL,'','',true), + ('Beatrice (Nebraska USA)','Beatrice',-96.743440,40.246300,'USA','Nebraska',' US-NE ',' Tuttle Creek Lake ',89.7,NULL,NULL,'','',true), + ('Broken Bow (Nebraska USA)','Broken Bow',-99.657860,41.414480,'USA','Nebraska',' US-NE ',' South Loup River ',18.7,NULL,NULL,'','',true), + ('Chadron (Nebraska USA)','Chadron',-102.991030,42.805940,'USA','Nebraska',' US-NE ',' White River ',102.0,NULL,NULL,'','',true), + ('Falls City (Nebraska USA)','Falls City',-95.594620,40.058070,'USA','Nebraska',' US-NE ',' Nodaway River ',53.7,NULL,NULL,'','',true), + ('Fremont (Nebraska USA)','Fremont',-96.504530,41.450760,'USA','Nebraska',' US-NE ',' Platte ',71.3,NULL,NULL,'','',true), + ('Grand Island (Nebraska USA)','Grand Island',-98.329580,40.926340,'USA','Nebraska',' US-NE ',' Loup River ',65.5,NULL,NULL,'','',true), + ('Hastings (Nebraska USA)','Hastings',-98.399970,40.597700,'USA','Nebraska',' US-NE ',' Little Blue River ',59.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Holdrege (Nebraska USA)','Holdrege',-99.361940,40.445990,'USA','Nebraska',' US-NE ',' Harlan County Reservoir ',42.8,NULL,NULL,'','',true), + ('Kearney (Nebraska USA)','Kearney',-99.132820,40.739170,'USA','Nebraska',' US-NE ',' South Loup River ',76.0,NULL,NULL,'','',true), + ('Kimball (Nebraska USA)','Kimball',-103.665730,41.212150,'USA','Nebraska',' US-NE ',' Lodgepole Creek ',0.3,NULL,NULL,'','',true), + ('Lincoln (Nebraska USA)','Lincoln',-96.680270,40.788660,'USA','Nebraska',' US-NE ',' Platte ',64.3,NULL,NULL,'','',true), + ('McCook (Nebraska USA)','McCook',-100.624990,40.245880,'USA','Nebraska',' US-NE ',' S Fork Republican ',95.4,NULL,NULL,'','',true), + ('Nebraska City (Nebraska USA)','Nebraska City',-95.885990,40.706680,'USA','Nebraska',' US-NE ',' Nishnabotna River ',23.6,NULL,NULL,'','',true), + ('Norfolk (Nebraska USA)','Norfolk',-97.425000,42.034480,'USA','Nebraska',' US-NE ',' Elk Horn River ',19.1,NULL,NULL,'','',true), + ('North Platte (Nebraska USA)','North Platte',-100.763540,41.153930,'USA','Nebraska',' US-NE ',' South Loup River ',87.4,NULL,NULL,'','',true), + ('Ogallala (Nebraska USA)','Ogallala',-101.673020,41.076530,'USA','Nebraska',' US-NE ',' Lake CW McConaughy ',24.2,NULL,NULL,'','',true), + ('Omaha (Nebraska USA)','Omaha',-95.988430,41.322380,'USA','Nebraska',' US-NE ',' West Nishnabotna River ',47.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('ONeill (Nebraska USA)','ONeill',-98.648370,42.473690,'USA','Nebraska',' US-NE ',' Elk Horn River ',95.3,NULL,NULL,'','',true), + ('Scottsbluff (Nebraska USA)','Scottsbluff',-103.650120,41.889160,'USA','Nebraska',' US-NE ',' Lodgepole Creek ',75.3,NULL,NULL,'','',true), + ('Valentine (Nebraska USA)','Valentine',-100.564680,42.881330,'USA','Nebraska',' US-NE ',' Niobrara River ',47.8,NULL,NULL,'','',true), + ('Carson City (Nevada USA)','Carson City',-119.763470,39.184750,'USA','Nevada',' US-NV ',' Lake Tahoe ',23.6,NULL,NULL,'','',true), + ('Elko (Nevada USA)','Elko',-115.747130,40.884990,'USA','Nevada',' US-NV ',' Humboldt ',102.2,NULL,NULL,'','',true), + ('Ely (Nevada USA)','Ely',-114.908010,39.254850,'USA','Nevada',' US-NV ',' Meadow Valley Wash ',202.1,NULL,NULL,'','',true), + ('Fallon (Nevada USA)','Fallon',-118.783060,39.470260,'USA','Nevada',' US-NV ',' Pyramid Lake ',92.0,NULL,NULL,'','',true), + ('Henderson (Nevada USA)','Henderson',-114.932120,35.993300,'USA','Nevada',' US-NV ',' Lake Mohave ',63.2,NULL,NULL,'','',true), + ('Las Vegas (Nevada USA)','Las Vegas',-115.131320,36.193990,'USA','Nevada',' US-NV ',' Lake Mead ',82.5,NULL,NULL,'','',true), + ('Reno (Nevada USA)','Reno',-119.791540,39.536450,'USA','Nevada',' US-NV ',' Lake Tahoe ',51.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tonopah (Nevada USA)','Tonopah',-117.186910,38.047650,'USA','Nevada',' US-NV ',' Owens River ',137.9,NULL,NULL,'','',true), + ('Wells (Nevada USA)','Wells',-114.902780,41.154980,'USA','Nevada',' US-NV ',' Bruneau River ',135.3,NULL,NULL,'','',true), + ('Winnemucca (Nevada USA)','Winnemucca',-117.725060,40.922400,'USA','Nevada',' US-NV ',' Rye Patch Reservoir ',57.7,NULL,NULL,'','',true), + ('Berlin (New Hampshire USA)','Berlin',-71.193240,44.464700,'USA','New Hampshire',' US-NH ',' Rapid River ',39.6,NULL,NULL,'','',true), + ('Concord (New Hampshire USA)','Concord',-71.558970,43.195560,'USA','New Hampshire',' US-NH ',' Merrimack ',11.8,NULL,NULL,'','',true), + ('Manchester (New Hampshire USA)','Manchester',-71.449120,42.982330,'USA','New Hampshire',' US-NH ',' Merrimack ',30.8,NULL,NULL,'','',true), + ('Portsmouth (New Hampshire USA)','Portsmouth',-70.770180,43.085900,'USA','New Hampshire',' US-NH ',' Merrimack ',57.8,NULL,NULL,'','',true), + ('Atlantic City (New Jersey USA)','Atlantic City',-74.452190,39.366130,'USA','New Jersey',' US-NJ ',' Schuylkill River ',126.8,NULL,NULL,'','',true), + ('Newark (New Jersey USA)','Newark',-74.232220,40.728310,'USA','New Jersey',' US-NJ ',' Delaware ',94.9,NULL,NULL,'','',true), + ('Paterson (New Jersey USA)','Paterson',-74.184770,40.921940,'USA','New Jersey',' US-NJ ',' Delaware ',84.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Trenton (New Jersey USA)','Trenton',-74.752010,40.238460,'USA','New Jersey',' US-NJ ',' Schuylkill River ',66.2,NULL,NULL,'','',true), + ('Vineland (New Jersey USA)','Vineland',-75.015280,39.461080,'USA','New Jersey',' US-NJ ',' Schuylkill River ',88.5,NULL,NULL,'','',true), + ('Alamagordo (New Mexico USA)','Alamagordo',-105.958110,32.876420,'USA','New Mexico',' US-NM ',' Elephant Butte Reservoir ',121.6,NULL,NULL,'','',true), + ('Albuquerque (New Mexico USA)','Albuquerque',-106.624440,35.118040,'USA','New Mexico',' US-NM ',' Arroyo Chico ',48.3,NULL,NULL,'','',true), + ('Artesia (New Mexico USA)','Artesia',-104.400850,32.840590,'USA','New Mexico',' US-NM ',' Brantley Lake ',18.6,NULL,NULL,'','',true), + ('Carlsbad (New Mexico USA)','Carlsbad',-104.214570,32.392880,'USA','New Mexico',' US-NM ',' Brantley Lake ',34.4,NULL,NULL,'','',true), + ('Carrizozo (New Mexico USA)','Carrizozo',-105.851130,33.656480,'USA','New Mexico',' US-NM ',' Elephant Butte Reservoir ',129.8,NULL,NULL,'','',true), + ('Clayton (New Mexico USA)','Clayton',-103.175840,36.448280,'USA','New Mexico',' US-NM ',' Corrumpa Creek ',29.8,NULL,NULL,'','',true), + ('Clovis (New Mexico USA)','Clovis',-103.201610,34.383660,'USA','New Mexico',' US-NM ',' Ute Reservoir ',113.4,NULL,NULL,'','',true), + ('Deming (New Mexico USA)','Deming',-107.726550,32.242780,'USA','New Mexico',' US-NM ',' Caballo Reservoir ',97.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Farmington (New Mexico USA)','Farmington',-108.172300,36.759390,'USA','New Mexico',' US-NM ',' Chaco River ',49.4,NULL,NULL,'','',true), + ('Fort Sumner (New Mexico USA)','Fort Sumner',-104.264820,34.463490,'USA','New Mexico',' US-NM ',' Conchas Lake ',109.8,NULL,NULL,'','',true), + ('Gallup (New Mexico USA)','Gallup',-108.742070,35.513880,'USA','New Mexico',' US-NM ',' Puerco River ',37.4,NULL,NULL,'','',true), + ('Grants (New Mexico USA)','Grants',-107.846900,35.123800,'USA','New Mexico',' US-NM ',' Rio San Jose ',52.2,NULL,NULL,'','',true), + ('Hobbs (New Mexico USA)','Hobbs',-103.159780,32.698640,'USA','New Mexico',' US-NM ',' Pecos ',41.3,NULL,NULL,'','',true), + ('Las Cruces (New Mexico USA)','Las Cruces',-106.782190,32.326900,'USA','New Mexico',' US-NM ',' Caballo Reservoir ',92.8,NULL,NULL,'','',true), + ('Las Vegas (New Mexico USA)','Las Vegas',-105.242210,35.666340,'USA','New Mexico',' US-NM ',' Carrizo Creek ',72.1,NULL,NULL,'','',true), + ('Lordsburg (New Mexico USA)','Lordsburg',-108.696400,32.363980,'USA','New Mexico',' US-NM ',' San Simon Creek ',63.0,NULL,NULL,'','',true), + ('Los Alamos (New Mexico USA)','Los Alamos',-106.272970,35.912780,'USA','New Mexico',' US-NM ',' Rio Chama ',49.5,NULL,NULL,'','',true), + ('Raton (New Mexico USA)','Raton',-104.453420,36.886110,'USA','New Mexico',' US-NM ',' Canadian River ',21.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Roswell (New Mexico USA)','Roswell',-104.517290,33.396260,'USA','New Mexico',' US-NM ',' Brantley Lake ',80.7,NULL,NULL,'','',true), + ('Santa Fe (New Mexico USA)','Santa Fe',-105.959330,35.674420,'USA','New Mexico',' US-NM ',' Rio Chama ',86.3,NULL,NULL,'','',true), + ('Santa Rosa (New Mexico USA)','Santa Rosa',-104.724800,34.888520,'USA','New Mexico',' US-NM ',' Conchas Lake ',77.4,NULL,NULL,'','',true), + ('Silver City (New Mexico USA)','Silver City',-108.248500,32.790380,'USA','New Mexico',' US-NM ',' Caballo Reservoir ',93.7,NULL,NULL,'','',true), + ('Socorro (New Mexico USA)','Socorro',-106.993410,34.031830,'USA','New Mexico',' US-NM ',' Rio Puerco ',71.4,NULL,NULL,'','',true), + ('Springer (New Mexico USA)','Springer',-104.563640,36.336240,'USA','New Mexico',' US-NM ',' Canadian River ',41.2,NULL,NULL,'','',true), + ('Taos (New Mexico USA)','Taos',-105.566230,36.406640,'USA','New Mexico',' US-NM ',' Rio Chama ',82.7,NULL,NULL,'','',true), + ('Truth or Consequences (New Mexico USA)','Truth or Consequences',-107.278040,33.103080,'USA','New Mexico',' US-NM ',' Caballo Reservoir ',6.8,NULL,NULL,'','',true), + ('Tucumcari (New Mexico USA)','Tucumcari',-103.585120,35.238380,'USA','New Mexico',' US-NM ',' Ute Reservoir ',17.4,NULL,NULL,'','',true), + ('Albany (New York USA)','Albany',-73.781920,42.674020,'USA','New York',' US-NY ',' Hudson ',26.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Auburn (New York USA)','Auburn',-76.430310,42.966180,'USA','New York',' US-NY ',' Skaneateles Lake ',10.7,NULL,NULL,'','',true), + ('Binghamton (New York USA)','Binghamton',-75.905900,42.143290,'USA','New York',' US-NY ',' Chemung River ',70.9,NULL,NULL,'','',true), + ('Buffalo (New York USA)','Buffalo',-78.762690,42.879140,'USA','New York',' US-NY ',' Tonawanda Creek Erie Canal ',21.1,NULL,NULL,'','',true), + ('Elmira (New York USA)','Elmira',-76.777470,42.097360,'USA','New York',' US-NY ',' Chemung River ',3.6,NULL,NULL,'','',true), + ('Ithaca (New York USA)','Ithaca',-76.504050,42.437170,'USA','New York',' US-NY ',' Cayuga Lake ',30.3,NULL,NULL,'','',true), + ('Jamestown (New York USA)','Jamestown',-79.231870,42.077890,'USA','New York',' US-NY ',' Chautauqua Lake ',16.3,NULL,NULL,'','',true), + ('New York (New York USA)','New York',-73.956050,40.648660,'USA','New York',' US-NY ',' Delaware ',118.2,NULL,NULL,'','',true), + ('Newburgh (New York USA)','Newburgh',-74.025760,41.483460,'USA','New York',' US-NY ',' Housatonic River ',76.5,NULL,NULL,'','',true), + ('Niagara Falls (New York USA)','Niagara Falls',-78.959430,43.109030,'USA','New York',' US-NY ',' Niagara ',10.3,NULL,NULL,'','',true), + ('Ogdensburg (New York USA)','Ogdensburg',-75.460170,44.686490,'USA','New York',' US-NY ',' Saint Lawrence ',34.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Plattsburgh (New York USA)','Plattsburgh',-73.523550,44.610780,'USA','New York',' US-NY ',' Lake Champlain ',16.9,NULL,NULL,'','',true), + ('Rochester (New York USA)','Rochester',-77.623070,43.177520,'USA','New York',' US-NY ',' Erie Canal ',24.0,NULL,NULL,'','',true), + ('Rome (New York USA)','Rome',-75.454740,43.212020,'USA','New York',' US-NY ',' Oneida Lake ',34.7,NULL,NULL,'','',true), + ('Saranac Lake (New York USA)','Saranac Lake',-74.140960,44.315980,'USA','New York',' US-NY ',' Raquette River ',45.1,NULL,NULL,'','',true), + ('Saratoga Springs (New York USA)','Saratoga Springs',-73.662700,43.136030,'USA','New York',' US-NY ',' Hudson ',30.8,NULL,NULL,'','',true), + ('Schenectady (New York USA)','Schenectady',-73.907460,42.818700,'USA','New York',' US-NY ',' Hudson ',10.0,NULL,NULL,'','',true), + ('Syracuse (New York USA)','Syracuse',-76.115420,43.069100,'USA','New York',' US-NY ',' Oneida River Erie Canal ',21.6,NULL,NULL,'','',true), + ('Troy (New York USA)','Troy',-73.645370,42.733190,'USA','New York',' US-NY ',' Hudson ',26.3,NULL,NULL,'','',true), + ('Utica (New York USA)','Utica',-75.270680,43.053410,'USA','New York',' US-NY ',' West Canada Creek ',42.5,NULL,NULL,'','',true), + ('Watertown (New York USA)','Watertown',-75.894230,43.976430,'USA','New York',' US-NY ',' Oneida Lake ',84.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Asheville (North Carolina USA)','Asheville',-82.542210,35.602170,'USA','North Carolina',' US-NC ',' French Broad River ',51.3,NULL,NULL,'','',true), + ('Charlotte (North Carolina USA)','Charlotte',-80.835590,35.238290,'USA','North Carolina',' US-NC ',' Lake Wylie ',21.9,NULL,NULL,'','',true), + ('Durham (North Carolina USA)','Durham',-78.866710,35.956340,'USA','North Carolina',' US-NC ',' Falls Lake Reservoir ',17.3,NULL,NULL,'','',true), + ('Elizabeth City (North Carolina USA)','Elizabeth City',-76.223510,36.313100,'USA','North Carolina',' US-NC ',' Chowan River ',60.9,NULL,NULL,'','',true), + ('Fayetteville (North Carolina USA)','Fayetteville',-78.860080,35.060330,'USA','North Carolina',' US-NC ',' Cape Fear ',39.4,NULL,NULL,'','',true), + ('Gastonia (North Carolina USA)','Gastonia',-81.203220,35.244800,'USA','North Carolina',' US-NC ',' Lake Wylie ',20.1,NULL,NULL,'','',true), + ('Goldsboro (North Carolina USA)','Goldsboro',-78.001840,35.371590,'USA','North Carolina',' US-NC ',' Neuse River ',15.7,NULL,NULL,'','',true), + ('Greensboro (North Carolina USA)','Greensboro',-79.804710,36.110880,'USA','North Carolina',' US-NC ',' Haw ',28.0,NULL,NULL,'','',true), + ('Greenville (North Carolina USA)','Greenville',-77.265150,35.577060,'USA','North Carolina',' US-NC ',' Tar River ',58.5,NULL,NULL,'','',true), + ('Hickory (North Carolina USA)','Hickory',-81.366420,35.721440,'USA','North Carolina',' US-NC ',' South River ',20.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('High Point (North Carolina USA)','High Point',-79.976960,35.954620,'USA','North Carolina',' US-NC ',' High Rock Lake ',41.9,NULL,NULL,'','',true), + ('Jacksonville (North Carolina USA)','Jacksonville',-77.408130,34.771600,'USA','North Carolina',' US-NC ',' Northeast Cape Fear River ',46.4,NULL,NULL,'','',true), + ('New Bern (North Carolina USA)','New Bern',-77.064830,35.120620,'USA','North Carolina',' US-NC ',' Lake Mattamuskeet ',89.3,NULL,NULL,'','',true), + ('Raleigh (North Carolina USA)','Raleigh',-78.637040,35.799500,'USA','North Carolina',' US-NC ',' Falls Lake Reservoir ',27.4,NULL,NULL,'','',true), + ('Rocky Mount (North Carolina USA)','Rocky Mount',-77.813750,35.936660,'USA','North Carolina',' US-NC ',' Tar River ',5.6,NULL,NULL,'','',true), + ('Wilmington (North Carolina USA)','Wilmington',-77.930200,34.218610,'USA','North Carolina',' US-NC ',' Northeast Cape Fear River ',47.8,NULL,NULL,'','',true), + ('Winston Salem (North Carolina USA)','Winston Salem',-80.262170,36.098060,'USA','North Carolina',' US-NC ',' High Rock Lake ',48.2,NULL,NULL,'','',true), + ('Bismarck (North Dakota USA)','Bismarck',-100.786330,46.805570,'USA','North Dakota',' US-ND ',' Heart River ',71.5,NULL,NULL,'','',true), + ('Bottineau (North Dakota USA)','Bottineau',-100.410630,48.822440,'USA','North Dakota',' US-ND ',' Souris River ',93.1,NULL,NULL,'','',true), + ('Bowman (North Dakota USA)','Bowman',-103.412630,46.180020,'USA','North Dakota',' US-ND ',' Little Missouri River ',46.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Carrington (North Dakota USA)','Carrington',-99.115160,47.449910,'USA','North Dakota',' US-ND ',' Sheyenne River ',53.0,NULL,NULL,'','',true), + ('Devils Lake (North Dakota USA)','Devils Lake',-98.860890,48.148850,'USA','North Dakota',' US-ND ',' Sweetwater Lake ',8.4,NULL,NULL,'','',true), + ('Dickinson (North Dakota USA)','Dickinson',-102.725440,46.873090,'USA','North Dakota',' US-ND ',' Lake Tschida ',69.9,NULL,NULL,'','',true), + ('Ellendale (North Dakota USA)','Ellendale',-98.573510,46.014590,'USA','North Dakota',' US-ND ',' James ',44.7,NULL,NULL,'','',true), + ('Fargo (North Dakota USA)','Fargo',-96.810420,46.874900,'USA','North Dakota',' US-ND ',' Otter Tail Creek ',83.4,NULL,NULL,'','',true), + ('Garrison (North Dakota USA)','Garrison',-101.375450,47.662900,'USA','North Dakota',' US-ND ',' Lake Sakakawea ',76.3,NULL,NULL,'','',true), + ('Grafton (North Dakota USA)','Grafton',-97.431410,48.461190,'USA','North Dakota',' US-ND ',' Pigeon Lake ',90.9,NULL,NULL,'','',true), + ('Grand Forks (North Dakota USA)','Grand Forks',-97.091090,47.911220,'USA','North Dakota',' US-ND ',' Red Lake River ',61.1,NULL,NULL,'','',true), + ('Harvey (North Dakota USA)','Harvey',-99.896180,47.764820,'USA','North Dakota',' US-ND ',' Devils Lake ',76.9,NULL,NULL,'','',true), + ('Jamestown (North Dakota USA)','Jamestown',-98.690940,46.919820,'USA','North Dakota',' US-ND ',' Sheyenne River ',45.6,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Mandan (North Dakota USA)','Mandan',-100.911610,46.809360,'USA','North Dakota',' US-ND ',' Heart River ',62.2,NULL,NULL,'','',true), + ('Minot (North Dakota USA)','Minot',-101.261500,48.256630,'USA','North Dakota',' US-ND ',' Souris River ',87.0,NULL,NULL,'','',true), + ('Rugby (North Dakota USA)','Rugby',-99.987950,48.392360,'USA','North Dakota',' US-ND ',' Devils Lake ',85.6,NULL,NULL,'','',true), + ('Wahpeton (North Dakota USA)','Wahpeton',-96.661270,46.252840,'USA','North Dakota',' US-ND ',' Otter Tail Creek ',61.3,NULL,NULL,'','',true), + ('Williston (North Dakota USA)','Williston',-103.640630,48.165640,'USA','North Dakota',' US-ND ',' Medicine Lake ',64.9,NULL,NULL,'','',true), + ('Akron (Ohio USA)','Akron',-81.535950,41.093240,'USA','Ohio',' US-OH ',' Cuyahoga River ',26.8,NULL,NULL,'','',true), + ('Ashtabula (Ohio USA)','Ashtabula',-80.818920,41.846990,'USA','Ohio',' US-OH ',' Pymatuning Reservoir ',37.8,NULL,NULL,'','',true), + ('Canton (Ohio USA)','Canton',-81.340930,40.812080,'USA','Ohio',' US-OH ',' Tuscarawas ',18.9,NULL,NULL,'','',true), + ('Chillicothe (Ohio USA)','Chillicothe',-82.993310,39.321490,'USA','Ohio',' US-OH ',' Scioto ',51.0,NULL,NULL,'','',true), + ('Cincinnati (Ohio USA)','Cincinnati',-84.526290,39.122200,'USA','Ohio',' US-OH ',' Ohio ',52.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Cleveland (Ohio USA)','Cleveland',-81.576380,41.492260,'USA','Ohio',' US-OH ',' Cuyahoga River ',18.6,NULL,NULL,'','',true), + ('Columbus (Ohio USA)','Columbus',-82.981830,39.972380,'USA','Ohio',' US-OH ',' Scioto ',28.8,NULL,NULL,'','',true), + ('Dayton (Ohio USA)','Dayton',-84.126090,39.764030,'USA','Ohio',' US-OH ',' Great Miami River ',16.9,NULL,NULL,'','',true), + ('Findlay (Ohio USA)','Findlay',-83.609800,41.055410,'USA','Ohio',' US-OH ',' Sandusky River ',34.6,NULL,NULL,'','',true), + ('Hamilton (Ohio USA)','Hamilton',-84.529630,39.392720,'USA','Ohio',' US-OH ',' Brookville Lake ',42.4,NULL,NULL,'','',true), + ('Lancaster (Ohio USA)','Lancaster',-82.604860,39.709630,'USA','Ohio',' US-OH ',' Scioto ',48.9,NULL,NULL,'','',true), + ('Lima (Ohio USA)','Lima',-84.109880,40.740130,'USA','Ohio',' US-OH ',' Grand Lake Saint Marys ',39.6,NULL,NULL,'','',true), + ('Mansfield (Ohio USA)','Mansfield',-82.512360,40.753820,'USA','Ohio',' US-OH ',' Black Fork Mohican River ',7.6,NULL,NULL,'','',true), + ('Marion (Ohio USA)','Marion',-83.146570,40.591090,'USA','Ohio',' US-OH ',' Sandusky River ',55.1,NULL,NULL,'','',true), + ('Portsmouth (Ohio USA)','Portsmouth',-82.966800,38.790740,'USA','Ohio',' US-OH ',' Licking River ',88.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Springfield (Ohio USA)','Springfield',-83.784740,39.951600,'USA','Ohio',' US-OH ',' Great Miami River ',48.7,NULL,NULL,'','',true), + ('Toledo (Ohio USA)','Toledo',-83.515890,41.674990,'USA','Ohio',' US-OH ',' Maumee River ',55.3,NULL,NULL,'','',true), + ('Youngstown (Ohio USA)','Youngstown',-80.642290,41.088010,'USA','Ohio',' US-OH ',' Shenango River ',24.2,NULL,NULL,'','',true), + ('Ada (Oklahoma USA)','Ada',-96.588150,34.785300,'USA','Oklahoma',' US-OK ',' Lake Texoma ',97.4,NULL,NULL,'','',true), + ('Altus (Oklahoma USA)','Altus',-99.329170,34.634670,'USA','Oklahoma',' US-OK ',' North Fork Red River ',45.4,NULL,NULL,'','',true), + ('Alva (Oklahoma USA)','Alva',-98.668980,36.797990,'USA','Oklahoma',' US-OK ',' Medicine Lodge River ',41.4,NULL,NULL,'','',true), + ('Ardmore (Oklahoma USA)','Ardmore',-97.113960,34.177240,'USA','Oklahoma',' US-OK ',' Lake Texoma ',46.1,NULL,NULL,'','',true), + ('Bartlesville (Oklahoma USA)','Bartlesville',-96.013620,36.742340,'USA','Oklahoma',' US-OK ',' Verdigris River ',32.9,NULL,NULL,'','',true), + ('Durant (Oklahoma USA)','Durant',-96.355070,34.010240,'USA','Oklahoma',' US-OK ',' Lake Texoma ',35.7,NULL,NULL,'','',true), + ('Enid (Oklahoma USA)','Enid',-97.886250,36.399130,'USA','Oklahoma',' US-OK ',' Salt Fork Arkansas River ',42.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Guymon (Oklahoma USA)','Guymon',-101.464230,36.678110,'USA','Oklahoma',' US-OK ',' Optima Lake ',25.6,NULL,NULL,'','',true), + ('Idabel (Oklahoma USA)','Idabel',-94.795290,33.876940,'USA','Oklahoma',' US-OK ',' Broken Bow Lake ',43.1,NULL,NULL,'','',true), + ('Lawton (Oklahoma USA)','Lawton',-98.442300,34.603140,'USA','Oklahoma',' US-OK ',' Waurika Lake ',44.8,NULL,NULL,'','',true), + ('McAlester (Oklahoma USA)','McAlester',-95.730630,34.922860,'USA','Oklahoma',' US-OK ',' Eufaula Lake ',39.6,NULL,NULL,'','',true), + ('Miami (Oklahoma USA)','Miami',-94.904640,36.871640,'USA','Oklahoma',' US-OK ',' Big Sandy River ',20.6,NULL,NULL,'','',true), + ('Muskogee (Oklahoma USA)','Muskogee',-95.324620,35.744500,'USA','Oklahoma',' US-OK ',' Fort Gibson Lake ',25.3,NULL,NULL,'','',true), + ('Norman (Oklahoma USA)','Norman',-97.386290,35.276040,'USA','Oklahoma',' US-OK ',' North Canadian River ',42.0,NULL,NULL,'','',true), + ('Oklahoma City (Oklahoma USA)','Oklahoma City',-97.504300,35.516440,'USA','Oklahoma',' US-OK ',' North Canadian River ',17.9,NULL,NULL,'','',true), + ('Pauls Valley (Oklahoma USA)','Pauls Valley',-97.222040,34.719110,'USA','Oklahoma',' US-OK ',' Waurika Lake ',93.2,NULL,NULL,'','',true), + ('Ponca City (Oklahoma USA)','Ponca City',-97.045330,36.744160,'USA','Oklahoma',' US-OK ',' Kaw Lake ',18.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Shawnee (Oklahoma USA)','Shawnee',-96.949170,35.338860,'USA','Oklahoma',' US-OK ',' North Canadian River ',53.8,NULL,NULL,'','',true), + ('Stillwater (Oklahoma USA)','Stillwater',-97.070730,36.122120,'USA','Oklahoma',' US-OK ',' Arkansas ',31.3,NULL,NULL,'','',true), + ('Tulsa (Oklahoma USA)','Tulsa',-95.942570,36.149110,'USA','Oklahoma',' US-OK ',' Keystone Lake ',38.8,NULL,NULL,'','',true), + ('Woodward (Oklahoma USA)','Woodward',-99.441990,36.422720,'USA','Oklahoma',' US-OK ',' Cimarron River ',28.2,NULL,NULL,'','',true), + ('Albany (Oregon USA)','Albany',-123.140650,44.645030,'USA','Oregon',' US-OR ',' Santium River ',13.1,NULL,NULL,'','',true), + ('Ashland (Oregon USA)','Ashland',-122.723410,42.164590,'USA','Oregon',' US-OR ',' Klamath ',50.2,NULL,NULL,'','',true), + ('Astoria (Oregon USA)','Astoria',-123.782640,46.153730,'USA','Oregon',' US-OR ',' Chehalis River ',76.1,NULL,NULL,'','',true), + ('Baker City (Oregon USA)','Baker City',-117.807480,44.741190,'USA','Oregon',' US-OR ',' Malheur River ',101.6,NULL,NULL,'','',true), + ('Bend (Oregon USA)','Bend',-121.324390,44.049120,'USA','Oregon',' US-OR ',' Wickiup Reservoir ',52.0,NULL,NULL,'','',true), + ('Brookings (Oregon USA)','Brookings',-124.291080,42.081690,'USA','Oregon',' US-OR ',' Rogue ',104.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Burns (Oregon USA)','Burns',-119.014300,43.611100,'USA','Oregon',' US-OR ',' The Narrows ',35.2,NULL,NULL,'','',true), + ('Coos Bay (Oregon USA)','Coos Bay',-124.198100,43.347260,'USA','Oregon',' US-OR ',' Umpqua River ',51.3,NULL,NULL,'','',true), + ('Corvallis (Oregon USA)','Corvallis',-123.274680,44.575090,'USA','Oregon',' US-OR ',' Santium River ',26.0,NULL,NULL,'','',true), + ('Eugene (Oregon USA)','Eugene',-123.090860,44.026200,'USA','Oregon',' US-OR ',' Fern Ridge Reservoir ',17.4,NULL,NULL,'','',true), + ('Florence (Oregon USA)','Florence',-124.088360,43.946060,'USA','Oregon',' US-OR ',' Umpqua River ',55.4,NULL,NULL,'','',true), + ('Grants Pass (Oregon USA)','Grants Pass',-123.326940,42.428480,'USA','Oregon',' US-OR ',' Rogue ',25.8,NULL,NULL,'','',true), + ('John Day (Oregon USA)','John Day',-118.945400,44.386490,'USA','Oregon',' US-OR ',' John Day ',99.9,NULL,NULL,'','',true), + ('Klamath Falls (Oregon USA)','Klamath Falls',-121.771610,42.223000,'USA','Oregon',' US-OR ',' Upper Klamath Lake ',28.9,NULL,NULL,'','',true), + ('La Grande (Oregon USA)','La Grande',-118.211500,45.365030,'USA','Oregon',' US-OR ',' Grande Ronde River ',47.9,NULL,NULL,'','',true), + ('Lakeview (Oregon USA)','Lakeview',-120.358730,42.167790,'USA','Oregon',' US-OR ',' Goose Lake ',28.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('McMinnville (Oregon USA)','McMinnville',-123.215700,45.227770,'USA','Oregon',' US-OR ',' Santium River ',56.4,NULL,NULL,'','',true), + ('Medford (Oregon USA)','Medford',-122.884060,42.318230,'USA','Oregon',' US-OR ',' Rogue ',50.0,NULL,NULL,'','',true), + ('Newport (Oregon USA)','Newport',-124.008150,44.611600,'USA','Oregon',' US-OR ',' Santium River ',78.0,NULL,NULL,'','',true), + ('Ontario (Oregon USA)','Ontario',-116.997970,44.010980,'USA','Oregon',' US-OR ',' Payette River ',42.6,NULL,NULL,'','',true), + ('Pendleton (Oregon USA)','Pendleton',-118.748860,45.693400,'USA','Oregon',' US-OR ',' Grande Ronde River ',76.7,NULL,NULL,'','',true), + ('Portland (Oregon USA)','Portland',-122.646790,45.528860,'USA','Oregon',' US-OR ',' North Santium River ',83.1,NULL,NULL,'','',true), + ('Redmond (Oregon USA)','Redmond',-121.158520,44.261470,'USA','Oregon',' US-OR ',' Deschutes River ',56.2,NULL,NULL,'','',true), + ('Roseburg (Oregon USA)','Roseburg',-123.336350,43.209020,'USA','Oregon',' US-OR ',' South Umpqua River ',25.1,NULL,NULL,'','',true), + ('Salem (Oregon USA)','Salem',-123.025900,44.947630,'USA','Oregon',' US-OR ',' Santium River ',23.5,NULL,NULL,'','',true), + ('The Dalles (Oregon USA)','The Dalles',-121.229350,45.578730,'USA','Oregon',' US-OR ',' Deschutes River ',90.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Tillamook (Oregon USA)','Tillamook',-123.823000,45.483890,'USA','Oregon',' US-OR ',' Santium River ',103.5,NULL,NULL,'','',true), + ('Allentown (Pennsylvania USA)','Allentown',-75.481290,40.622270,'USA','Pennsylvania',' US-PA ',' Schuylkill River ',52.1,NULL,NULL,'','',true), + ('Altoona (Pennsylvania USA)','Altoona',-78.400990,40.525650,'USA','Pennsylvania',' US-PA ',' Raystown Lake ',29.5,NULL,NULL,'','',true), + ('Erie (Pennsylvania USA)','Erie',-80.063100,42.104660,'USA','Pennsylvania',' US-PA ',' French Creek ',44.4,NULL,NULL,'','',true), + ('Harrisburg (Pennsylvania USA)','Harrisburg',-76.826300,40.266820,'USA','Pennsylvania',' US-PA ',' Juniata River ',62.2,NULL,NULL,'','',true), + ('Oil City (Pennsylvania USA)','Oil City',-79.713050,41.439740,'USA','Pennsylvania',' US-PA ',' Allegheny ',38.2,NULL,NULL,'','',true), + ('Philadelphia (Pennsylvania USA)','Philadelphia',-75.167280,39.941230,'USA','Pennsylvania',' US-PA ',' Schuylkill River ',38.5,NULL,NULL,'','',true), + ('Pittsburgh (Pennsylvania USA)','Pittsburgh',-79.914400,40.447400,'USA','Pennsylvania',' US-PA ',' Kiskiminetas River ',34.3,NULL,NULL,'','',true), + ('Scranton (Pennsylvania USA)','Scranton',-75.684690,41.425550,'USA','Pennsylvania',' US-PA ',' Susquehanna ',42.4,NULL,NULL,'','',true), + ('Wilkes Barre (Pennsylvania USA)','Wilkes Barre',-75.915190,41.233210,'USA','Pennsylvania',' US-PA ',' Susquehanna ',27.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Williamsport (Pennsylvania USA)','Williamsport',-77.028360,41.268230,'USA','Pennsylvania',' US-PA ',' W Branch Susquehanna ',63.1,NULL,NULL,'','',true), + ('Providence (Rhode Island USA)','Providence',-71.342420,41.848460,'USA','Rhode Island',' US-RI ',' Pawcatuck River ',61.5,NULL,NULL,'','',true), + ('Aiken (South Carolina USA)','Aiken',-81.710600,33.559360,'USA','South Carolina',' US-SC ',' South Fork Edisto River ',22.6,NULL,NULL,'','',true), + ('Anderson (South Carolina USA)','Anderson',-82.621270,34.497530,'USA','South Carolina',' US-SC ',' Hartwell Lake ',28.1,NULL,NULL,'','',true), + ('Charleston (South Carolina USA)','Charleston',-79.921840,32.785880,'USA','South Carolina',' US-SC ',' Cooper ',40.3,NULL,NULL,'','',true), + ('Columbia (South Carolina USA)','Columbia',-81.034890,34.003110,'USA','South Carolina',' US-SC ',' Lake Murray ',31.0,NULL,NULL,'','',true), + ('Florence (South Carolina USA)','Florence',-79.776260,34.186570,'USA','South Carolina',' US-SC ',' Lynches River ',17.0,NULL,NULL,'','',true), + ('Georgetown (South Carolina USA)','Georgetown',-79.311220,33.383160,'USA','South Carolina',' US-SC ',' Santee ',40.2,NULL,NULL,'','',true), + ('Greenville (South Carolina USA)','Greenville',-82.431360,34.856800,'USA','South Carolina',' US-SC ',' South Saluda River ',26.9,NULL,NULL,'','',true), + ('Hilton Head Island (South Carolina USA)','Hilton Head Island',-80.760600,32.227750,'USA','South Carolina',' US-SC ',' Edisto River ',82.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Myrtle Beach (South Carolina USA)','Myrtle Beach',-78.914830,33.706360,'USA','South Carolina',' US-SC ',' Waccamaw River ',21.6,NULL,NULL,'','',true), + ('Spartanburg (South Carolina USA)','Spartanburg',-81.883050,34.933890,'USA','South Carolina',' US-SC ',' Broad ',22.4,NULL,NULL,'','',true), + ('Sumter (South Carolina USA)','Sumter',-80.384370,33.909750,'USA','South Carolina',' US-SC ',' Wateree River ',35.4,NULL,NULL,'','',true), + ('Aberdeen (South Dakota USA)','Aberdeen',-98.562460,45.456150,'USA','South Dakota',' US-SD ',' James ',20.5,NULL,NULL,'','',true), + ('Brookings (South Dakota USA)','Brookings',-96.826870,44.327380,'USA','South Dakota',' US-SD ',' Big Sioux River ',85.3,NULL,NULL,'','',true), + ('Chamberlain (South Dakota USA)','Chamberlain',-99.271530,43.815620,'USA','South Dakota',' US-SD ',' Lake Francis Case ',34.1,NULL,NULL,'','',true), + ('Hot Springs (South Dakota USA)','Hot Springs',-103.411230,43.439450,'USA','South Dakota',' US-SD ',' White River ',25.1,NULL,NULL,'','',true), + ('Huron (South Dakota USA)','Huron',-98.234670,44.358850,'USA','South Dakota',' US-SD ',' Lake Francis Case ',119.8,NULL,NULL,'','',true), + ('Milbank (South Dakota USA)','Milbank',-96.641750,45.220220,'USA','South Dakota',' US-SD ',' Lake Traverse ',54.2,NULL,NULL,'','',true), + ('Mitchell (South Dakota USA)','Mitchell',-98.011440,43.719030,'USA','South Dakota',' US-SD ',' Lake Francis Case ',95.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Mobridge (South Dakota USA)','Mobridge',-100.260350,45.545920,'USA','South Dakota',' US-SD ',' Lake Oahe ',28.9,NULL,NULL,'','',true), + ('Pierre (South Dakota USA)','Pierre',-100.301810,44.397110,'USA','South Dakota',' US-SD ',' Missouri ',40.8,NULL,NULL,'','',true), + ('Pine Ridge (South Dakota USA)','Pine Ridge',-102.519720,43.056770,'USA','South Dakota',' US-SD ',' Cheyenne ',97.1,NULL,NULL,'','',true), + ('Rapid City (South Dakota USA)','Rapid City',-103.182570,44.061050,'USA','South Dakota',' US-SD ',' Cheyenne ',33.6,NULL,NULL,'','',true), + ('Sioux Falls (South Dakota USA)','Sioux Falls',-96.731720,43.571240,'USA','South Dakota',' US-SD ',' Big Sioux River ',6.2,NULL,NULL,'','',true), + ('Spearfish (South Dakota USA)','Spearfish',-103.836870,44.498730,'USA','South Dakota',' US-SD ',' Belle Fourche River ',26.8,NULL,NULL,'','',true), + ('Sturgis (South Dakota USA)','Sturgis',-103.502820,44.435110,'USA','South Dakota',' US-SD ',' Belle Fourche River ',52.8,NULL,NULL,'','',true), + ('Vermillion (South Dakota USA)','Vermillion',-96.993090,42.844610,'USA','South Dakota',' US-SD ',' Grand River ',67.5,NULL,NULL,'','',true), + ('Watertown (South Dakota USA)','Watertown',-97.095990,44.889090,'USA','South Dakota',' US-SD ',' Lake Traverse ',94.4,NULL,NULL,'','',true), + ('Yankton (South Dakota USA)','Yankton',-97.405470,42.904980,'USA','South Dakota',' US-SD ',' Grand River ',86.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Chattanooga (Tennessee USA)','Chattanooga',-85.256770,35.052080,'USA','Tennessee',' US-TN ',' Chickamauga Lake ',24.0,NULL,NULL,'','',true), + ('Clarksville (Tennessee USA)','Clarksville',-87.306450,36.542550,'USA','Tennessee',' US-TN ',' Cheatham Lake ',33.2,NULL,NULL,'','',true), + ('Columbia (Tennessee USA)','Columbia',-87.055360,35.579280,'USA','Tennessee',' US-TN ',' Duck River ',13.2,NULL,NULL,'','',true), + ('Dyersburg (Tennessee USA)','Dyersburg',-89.376060,36.030070,'USA','Tennessee',' US-TN ',' Obion River ',11.8,NULL,NULL,'','',true), + ('Jackson (Tennessee USA)','Jackson',-88.828120,35.605890,'USA','Tennessee',' US-TN ',' South Fork Forked Deer River ',39.0,NULL,NULL,'','',true), + ('Johnson City (Tennessee USA)','Johnson City',-82.397020,36.299860,'USA','Tennessee',' US-TN ',' South Fork Holston River ',26.4,NULL,NULL,'','',true), + ('Kingsport (Tennessee USA)','Kingsport',-82.532200,36.544230,'USA','Tennessee',' US-TN ',' South Fork Holston River ',20.5,NULL,NULL,'','',true), + ('Knoxville (Tennessee USA)','Knoxville',-83.934070,35.980190,'USA','Tennessee',' US-TN ',' Fort Loudoun Lake ',20.6,NULL,NULL,'','',true), + ('Memphis (Tennessee USA)','Memphis',-90.015360,35.156940,'USA','Tennessee',' US-TN ',' Arkabutla Lake ',44.4,NULL,NULL,'','',true), + ('Murfreesboro (Tennessee USA)','Murfreesboro',-86.383190,35.858800,'USA','Tennessee',' US-TN ',' J Percy Priest Lake ',28.5,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Nashville (Tennessee USA)','Nashville',-86.752370,36.118200,'USA','Tennessee',' US-TN ',' J Percy Priest Lake ',18.8,NULL,NULL,'','',true), + ('Oak Ridge (Tennessee USA)','Oak Ridge',-84.259110,36.009180,'USA','Tennessee',' US-TN ',' Fort Loudoun Lake ',24.9,NULL,NULL,'','',true), + ('Paris (Tennessee USA)','Paris',-88.311090,36.313160,'USA','Tennessee',' US-TN ',' Kentucky Lake ',24.0,NULL,NULL,'','',true), + ('Abilene (Texas USA)','Abilene',-99.734900,32.426430,'USA','Texas',' US-TX ',' Clear Fork Brazos River ',48.0,NULL,NULL,'','',true), + ('Alice (Texas USA)','Alice',-98.051410,27.763390,'USA','Texas',' US-TX ',' Lake Corpus Christi ',44.4,NULL,NULL,'','',true), + ('Alpine (Texas USA)','Alpine',-103.631520,30.354080,'USA','Texas',' US-TX ',' Rio Grande ',60.0,NULL,NULL,'','',true), + ('Amarillo (Texas USA)','Amarillo',-101.819820,35.233380,'USA','Texas',' US-TX ',' Prairie Dog Town Fork Red ',45.0,NULL,NULL,'','',true), + ('Arlington (Texas USA)','Arlington',-97.045150,32.729970,'USA','Texas',' US-TX ',' Lake Joe Pool ',13.3,NULL,NULL,'','',true), + ('Austin (Texas USA)','Austin',-97.767230,30.286690,'USA','Texas',' US-TX ',' Lake Travis ',25.6,NULL,NULL,'','',true), + ('Bay City (Texas USA)','Bay City',-95.938020,28.977250,'USA','Texas',' US-TX ',' Somerville Lake ',163.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Baytown (Texas USA)','Baytown',-94.926760,29.728970,'USA','Texas',' US-TX ',' Lake Conroe ',105.3,NULL,NULL,'','',true), + ('Beaumont (Texas USA)','Beaumont',-94.100040,30.056440,'USA','Texas',' US-TX ',' B A Steinhagen Reservoir ',89.6,NULL,NULL,'','',true), + ('Beeville (Texas USA)','Beeville',-97.762420,28.370920,'USA','Texas',' US-TX ',' Lake Corpus Christi ',29.3,NULL,NULL,'','',true), + ('Big Spring (Texas USA)','Big Spring',-101.459820,32.257440,'USA','Texas',' US-TX ',' Double Mountain Fork Brazos ',107.6,NULL,NULL,'','',true), + ('Borger (Texas USA)','Borger',-101.458420,35.621750,'USA','Texas',' US-TX ',' Lake Meredith ',19.1,NULL,NULL,'','',true), + ('Brownfield (Texas USA)','Brownfield',-102.286460,33.168680,'USA','Texas',' US-TX ',' Double Mountain Fork Brazos ',124.1,NULL,NULL,'','',true), + ('Brownsville (Texas USA)','Brownsville',-97.488690,25.946410,'USA','Texas',' US-TX ',' Laguna El Barril ',38.8,NULL,NULL,'','',true), + ('Brownwood (Texas USA)','Brownwood',-99.014140,31.673730,'USA','Texas',' US-TX ',' Trinity River ',84.8,NULL,NULL,'','',true), + ('Bryan (Texas USA)','Bryan',-96.364200,30.676990,'USA','Texas',' US-TX ',' Navasota River ',38.7,NULL,NULL,'','',true), + ('Childress (Texas USA)','Childress',-100.130900,34.412880,'USA','Texas',' US-TX ',' North Wichita River ',67.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Cleburne (Texas USA)','Cleburne',-97.373180,32.344010,'USA','Texas',' US-TX ',' Lake Whitney ',42.2,NULL,NULL,'','',true), + ('Corpus Christi (Texas USA)','Corpus Christi',-97.427030,27.757030,'USA','Texas',' US-TX ',' Lake Corpus Christi ',64.6,NULL,NULL,'','',true), + ('Corsicana (Texas USA)','Corsicana',-96.442390,32.111130,'USA','Texas',' US-TX ',' Navarro Mills Lake ',35.8,NULL,NULL,'','',true), + ('Dalhart (Texas USA)','Dalhart',-102.474310,36.088630,'USA','Texas',' US-TX ',' Rita Blanca Creek ',14.4,NULL,NULL,'','',true), + ('Dallas (Texas USA)','Dallas',-96.753840,32.800110,'USA','Texas',' US-TX ',' Lake Ray Hubbard ',25.6,NULL,NULL,'','',true), + ('Del Rio (Texas USA)','Del Rio',-100.894940,29.353200,'USA','Texas',' US-TX ',' Amistad Reservoir ',29.9,NULL,NULL,'','',true), + ('Denton (Texas USA)','Denton',-97.079880,33.175730,'USA','Texas',' US-TX ',' Lewisville Lake ',9.4,NULL,NULL,'','',true), + ('Eagle Pass (Texas USA)','Eagle Pass',-100.459700,28.722450,'USA','Texas',' US-TX ',' San Rodrigo ',78.0,NULL,NULL,'','',true), + ('El Paso (Texas USA)','El Paso',-106.411230,31.780570,'USA','Texas',' US-TX ',' Laguna Santa Mara ',109.2,NULL,NULL,'','',true), + ('Fort Stockton (Texas USA)','Fort Stockton',-102.857070,30.878150,'USA','Texas',' US-TX ',' Rio Grande ',36.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Fort Worth (Texas USA)','Fort Worth',-97.341550,32.787920,'USA','Texas',' US-TX ',' West Fork Trinity River ',22.4,NULL,NULL,'','',true), + ('Freeport (Texas USA)','Freeport',-95.387620,29.019800,'USA','Texas',' US-TX ',' Lake Conroe ',163.2,NULL,NULL,'','',true), + ('Gainesville (Texas USA)','Gainesville',-97.130820,33.583270,'USA','Texas',' US-TX ',' Ray Roberts Lake ',15.0,NULL,NULL,'','',true), + ('Galveston (Texas USA)','Galveston',-94.820690,29.283130,'USA','Texas',' US-TX ',' Lake Conroe ',152.4,NULL,NULL,'','',true), + ('Harlingen (Texas USA)','Harlingen',-97.718430,26.266590,'USA','Texas',' US-TX ',' Laguna El Barril ',81.1,NULL,NULL,'','',true), + ('Hereford (Texas USA)','Hereford',-102.381300,34.860190,'USA','Texas',' US-TX ',' Prairie Dog Town Fork Red ',69.3,NULL,NULL,'','',true), + ('Houston (Texas USA)','Houston',-95.350270,29.812190,'USA','Texas',' US-TX ',' Lake Conroe ',77.6,NULL,NULL,'','',true), + ('Huntsville (Texas USA)','Huntsville',-95.578580,30.731600,'USA','Texas',' US-TX ',' Lake Conroe ',28.4,NULL,NULL,'','',true), + ('Kerrville (Texas USA)','Kerrville',-99.174260,30.082280,'USA','Texas',' US-TX ',' North Prong Medina River ',32.2,NULL,NULL,'','',true), + ('Killeen (Texas USA)','Killeen',-97.765120,31.134190,'USA','Texas',' US-TX ',' Lampasas River ',12.3,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Kingsville (Texas USA)','Kingsville',-97.869440,27.591850,'USA','Texas',' US-TX ',' Lake Corpus Christi ',61.7,NULL,NULL,'','',true), + ('Lamesa (Texas USA)','Lamesa',-101.945980,32.742850,'USA','Texas',' US-TX ',' Double Mountain Fork Brazos ',101.9,NULL,NULL,'','',true), + ('Laredo (Texas USA)','Laredo',-99.458310,27.519220,'USA','Texas',' US-TX ',' San Juan ',79.9,NULL,NULL,'','',true), + ('Longview (Texas USA)','Longview',-94.724400,32.516490,'USA','Texas',' US-TX ',' Big Cypress Bayou ',41.1,NULL,NULL,'','',true), + ('Lubbock (Texas USA)','Lubbock',-101.843730,33.583300,'USA','Texas',' US-TX ',' Double Mountain Fork Brazos ',97.0,NULL,NULL,'','',true), + ('Lufkin (Texas USA)','Lufkin',-94.722410,31.357860,'USA','Texas',' US-TX ',' Neches River ',14.4,NULL,NULL,'','',true), + ('McAllen (Texas USA)','McAllen',-98.249030,26.186490,'USA','Texas',' US-TX ',' Presa Marte R Gomez ',74.9,NULL,NULL,'','',true), + ('Midland (Texas USA)','Midland',-102.065470,32.009670,'USA','Texas',' US-TX ',' OC Fisher Lake ',156.9,NULL,NULL,'','',true), + ('Monahans (Texas USA)','Monahans',-102.835280,31.633090,'USA','Texas',' US-TX ',' Rio Grande ',103.9,NULL,NULL,'','',true), + ('Mount Pleasant (Texas USA)','Mount Pleasant',-94.953030,33.162880,'USA','Texas',' US-TX ',' Big Cypress Creek ',9.8,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Nacogdoches (Texas USA)','Nacogdoches',-94.683900,31.679730,'USA','Texas',' US-TX ',' Angelina River ',40.8,NULL,NULL,'','',true), + ('New Braunfels (Texas USA)','New Braunfels',-98.149970,29.734490,'USA','Texas',' US-TX ',' Canyon Lake ',20.6,NULL,NULL,'','',true), + ('Odessa (Texas USA)','Odessa',-102.369750,31.867860,'USA','Texas',' US-TX ',' Pecos ',146.1,NULL,NULL,'','',true), + ('Palestine (Texas USA)','Palestine',-95.614100,31.756120,'USA','Texas',' US-TX ',' Cedar Creek Reservoir ',80.4,NULL,NULL,'','',true), + ('Pampa (Texas USA)','Pampa',-100.946320,35.515460,'USA','Texas',' US-TX ',' Canadian ',28.7,NULL,NULL,'','',true), + ('Paris (Texas USA)','Paris',-95.564590,33.662920,'USA','Texas',' US-TX ',' Pat Mayse Lake ',19.1,NULL,NULL,'','',true), + ('Pecos (Texas USA)','Pecos',-103.457170,31.414360,'USA','Texas',' US-TX ',' Red Bluff Lake ',76.0,NULL,NULL,'','',true), + ('Perryton (Texas USA)','Perryton',-100.793510,36.397280,'USA','Texas',' US-TX ',' Optima Lake ',46.3,NULL,NULL,'','',true), + ('Plainview (Texas USA)','Plainview',-101.679350,34.222330,'USA','Texas',' US-TX ',' Prairie Dog Town Fork Red ',71.4,NULL,NULL,'','',true), + ('Port Arthur (Texas USA)','Port Arthur',-93.938030,29.922390,'USA','Texas',' US-TX ',' B A Steinhagen Reservoir ',106.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Port Lavaca (Texas USA)','Port Lavaca',-96.646750,28.614530,'USA','Texas',' US-TX ',' San Antonio River ',98.5,NULL,NULL,'','',true), + ('Presidio (Texas USA)','Presidio',-104.362320,29.600140,'USA','Texas',' US-TX ',' Presa Luis L Len (El Granero) ',118.5,NULL,NULL,'','',true), + ('San Angelo (Texas USA)','San Angelo',-100.427440,31.460720,'USA','Texas',' US-TX ',' OC Fisher Lake ',10.1,NULL,NULL,'','',true), + ('San Antonio (Texas USA)','San Antonio',-98.504470,29.410440,'USA','Texas',' US-TX ',' Medina River ',36.2,NULL,NULL,'','',true), + ('San Marcos (Texas USA)','San Marcos',-97.918060,29.959950,'USA','Texas',' US-TX ',' Canyon Lake ',34.4,NULL,NULL,'','',true), + ('Sherman (Texas USA)','Sherman',-96.560130,33.598220,'USA','Texas',' US-TX ',' Lake Texoma ',38.5,NULL,NULL,'','',true), + ('Snyder (Texas USA)','Snyder',-100.943480,32.720600,'USA','Texas',' US-TX ',' Double Mountain Fork Brazos ',45.1,NULL,NULL,'','',true), + ('Sweetwater (Texas USA)','Sweetwater',-100.362130,32.489020,'USA','Texas',' US-TX ',' Clear Fork Brazos River ',82.4,NULL,NULL,'','',true), + ('Taylor (Texas USA)','Taylor',-97.406560,30.585560,'USA','Texas',' US-TX ',' Stillhouse Hollow Lake ',51.2,NULL,NULL,'','',true), + ('Temple (Texas USA)','Temple',-97.327430,31.075760,'USA','Texas',' US-TX ',' Belton Lake ',19.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Texarkana (Texas USA)','Texarkana',-94.056490,33.430810,'USA','Texas',' US-TX ',' Sulphur River ',20.3,NULL,NULL,'','',true), + ('Tyler (Texas USA)','Tyler',-95.322610,32.357900,'USA','Texas',' US-TX ',' Lake Fork Reservoir ',65.8,NULL,NULL,'','',true), + ('Van Horn (Texas USA)','Van Horn',-104.841230,31.090920,'USA','Texas',' US-TX ',' Red Bluff Lake ',130.3,NULL,NULL,'','',true), + ('Vernon (Texas USA)','Vernon',-99.289460,34.158430,'USA','Texas',' US-TX ',' Wichita River ',51.8,NULL,NULL,'','',true), + ('Victoria (Texas USA)','Victoria',-96.999210,28.809680,'USA','Texas',' US-TX ',' San Antonio River ',61.9,NULL,NULL,'','',true), + ('Waco (Texas USA)','Waco',-97.142210,31.609140,'USA','Texas',' US-TX ',' Waco Lake ',12.5,NULL,NULL,'','',true), + ('Wichita Falls (Texas USA)','Wichita Falls',-98.506630,33.932370,'USA','Texas',' US-TX ',' Wichita River ',31.3,NULL,NULL,'','',true), + ('Zapata (Texas USA)','Zapata',-99.208980,26.934990,'USA','Texas',' US-TX ',' Falcon Lake ',15.5,NULL,NULL,'','',true), + ('Blanding (Utah USA)','Blanding',-109.476780,37.587220,'USA','Utah',' US-UT ',' Dolores River ',86.1,NULL,NULL,'','',true), + ('Brigham City (Utah USA)','Brigham City',-111.957210,41.500090,'USA','Utah',' US-UT ',' Great Salt Lake ',55.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Cedar City (Utah USA)','Cedar City',-113.049850,37.678640,'USA','Utah',' US-UT ',' Virgin River ',106.2,NULL,NULL,'','',true), + ('Delta (Utah USA)','Delta',-112.535740,39.331970,'USA','Utah',' US-UT ',' Sevier River ',48.5,NULL,NULL,'','',true), + ('Green River (Utah USA)','Green River',-110.177930,39.034860,'USA','Utah',' US-UT ',' Muddy Creek ',86.0,NULL,NULL,'','',true), + ('Logan (Utah USA)','Logan',-111.818520,41.732940,'USA','Utah',' US-UT ',' Bear ',30.1,NULL,NULL,'','',true), + ('Moab (Utah USA)','Moab',-109.484690,38.519640,'USA','Utah',' US-UT ',' Dolores River ',81.5,NULL,NULL,'','',true), + ('Monticello (Utah USA)','Monticello',-109.342320,37.869510,'USA','Utah',' US-UT ',' Dolores River ',59.0,NULL,NULL,'','',true), + ('Nephi (Utah USA)','Nephi',-111.898010,39.719990,'USA','Utah',' US-UT ',' San Pitch River ',36.1,NULL,NULL,'','',true), + ('Ogden (Utah USA)','Ogden',-111.942890,41.264190,'USA','Utah',' US-UT ',' Great Salt Lake ',46.6,NULL,NULL,'','',true), + ('Orem (Utah USA)','Orem',-111.754460,40.362860,'USA','Utah',' US-UT ',' Utah Lake ',18.2,NULL,NULL,'','',true), + ('Panguitch (Utah USA)','Panguitch',-112.470110,37.823600,'USA','Utah',' US-UT ',' Fremont River ',117.0,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Price (Utah USA)','Price',-110.783340,39.645770,'USA','Utah',' US-UT ',' Strawberry Reservoir ',65.7,NULL,NULL,'','',true), + ('Provo (Utah USA)','Provo',-111.655480,40.273800,'USA','Utah',' US-UT ',' Utah Lake ',14.9,NULL,NULL,'','',true), + ('Richfield (Utah USA)','Richfield',-112.059060,38.786740,'USA','Utah',' US-UT ',' Sevier River ',31.0,NULL,NULL,'','',true), + ('Salt Lake City (Utah USA)','Salt Lake City',-111.887670,40.766260,'USA','Utah',' US-UT ',' Jordan River ',11.2,NULL,NULL,'','',true), + ('St George (Utah USA)','St George',-113.606210,37.112740,'USA','Utah',' US-UT ',' Virgin River ',26.5,NULL,NULL,'','',true), + ('Vernal (Utah USA)','Vernal',-109.546510,40.430710,'USA','Utah',' US-UT ',' Green ',45.9,NULL,NULL,'','',true), + ('Wendover (Utah USA)','Wendover',-113.971620,40.701600,'USA','Utah',' US-UT ',' Great Salt Lake ',136.3,NULL,NULL,'','',true), + ('Burlington (Vermont USA)','Burlington',-73.209690,44.503300,'USA','Vermont',' US-VT ',' Lake Champlain ',11.0,NULL,NULL,'','',true), + ('Montpelier (Vermont USA)','Montpelier',-72.548920,44.251180,'USA','Vermont',' US-VT ',' Lamoille River ',52.4,NULL,NULL,'','',true), + ('Rutland (Vermont USA)','Rutland',-72.982580,43.609610,'USA','Vermont',' US-VT ',' Lake George ',45.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Alexandria (Virginia USA)','Alexandria',-77.079580,38.753650,'USA','Virginia',' US-VA ',' Rappahannock River ',58.2,NULL,NULL,'','',true), + ('Blacksburg (Virginia USA)','Blacksburg',-80.410240,37.267350,'USA','Virginia',' US-VA ',' Craig Creek ',44.4,NULL,NULL,'','',true), + ('Charlottesville (Virginia USA)','Charlottesville',-78.513530,38.056520,'USA','Virginia',' US-VA ',' Rapidan River ',48.7,NULL,NULL,'','',true), + ('Danville (Virginia USA)','Danville',-79.444310,36.587970,'USA','Virginia',' US-VA ',' Dan River ',7.0,NULL,NULL,'','',true), + ('Lynchburg (Virginia USA)','Lynchburg',-79.199550,37.370000,'USA','Virginia',' US-VA ',' Cowpasture ',45.0,NULL,NULL,'','',true), + ('Martinsville (Virginia USA)','Martinsville',-79.871670,36.699300,'USA','Virginia',' US-VA ',' Dan River ',47.1,NULL,NULL,'','',true), + ('Newport News (Virginia USA)','Newport News',-76.387420,37.038090,'USA','Virginia',' US-VA ',' Nottoway River ',74.5,NULL,NULL,'','',true), + ('Norfolk (Virginia USA)','Norfolk',-76.269910,36.858000,'USA','Virginia',' US-VA ',' Chowan River ',72.4,NULL,NULL,'','',true), + ('Petersburg (Virginia USA)','Petersburg',-77.347850,37.231180,'USA','Virginia',' US-VA ',' Nottoway River ',43.7,NULL,NULL,'','',true), + ('Richmond (Virginia USA)','Richmond',-77.448980,37.542470,'USA','Virginia',' US-VA ',' Pamunkey River ',27.4,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Roanoke (Virginia USA)','Roanoke',-79.929050,37.285940,'USA','Virginia',' US-VA ',' Smith Mountain Lake ',30.2,NULL,NULL,'','',true), + ('Staunton (Virginia USA)','Staunton',-79.074890,38.145480,'USA','Virginia',' US-VA ',' Calfpasture River ',29.5,NULL,NULL,'','',true), + ('Virginia Beach (Virginia USA)','Virginia Beach',-76.025850,36.870880,'USA','Virginia',' US-VA ',' Chowan River ',90.8,NULL,NULL,'','',true), + ('Aberdeen (Washington USA)','Aberdeen',-123.779340,46.967850,'USA','Washington',' US-WA ',' Chehalis River ',46.5,NULL,NULL,'','',true), + ('Bellingham (Washington USA)','Bellingham',-122.452070,48.764160,'USA','Washington',' US-WA ',' Judson Lake ',27.5,NULL,NULL,'','',true), + ('Bremerton (Washington USA)','Bremerton',-122.679700,47.540210,'USA','Washington',' US-WA ',' Lake Washington Ship Canal ',28.2,NULL,NULL,'','',true), + ('Centralia (Washington USA)','Centralia',-122.910200,46.685960,'USA','Washington',' US-WA ',' Chehalis River ',27.9,NULL,NULL,'','',true), + ('Chelan (Washington USA)','Chelan',-119.962730,47.830180,'USA','Washington',' US-WA ',' Lake Chelan ',42.7,NULL,NULL,'','',true), + ('Colville (Washington USA)','Colville',-117.931660,48.574590,'USA','Washington',' US-WA ',' Franklin D Roosevelt Lake ',15.3,NULL,NULL,'','',true), + ('Ellensburg (Washington USA)','Ellensburg',-120.493420,47.014650,'USA','Washington',' US-WA ',' Yakima River ',46.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Everett (Washington USA)','Everett',-122.193860,47.973460,'USA','Washington',' US-WA ',' Snohomish River ',6.0,NULL,NULL,'','',true), + ('Kennewick (Washington USA)','Kennewick',-119.183530,46.178050,'USA','Washington',' US-WA ',' Lower Crab Creek ',88.2,NULL,NULL,'','',true), + ('Longview (Washington USA)','Longview',-122.949960,46.148470,'USA','Washington',' US-WA ',' Cowlitz River ',57.3,NULL,NULL,'','',true), + ('Mount Vernon (Washington USA)','Mount Vernon',-122.356570,48.429230,'USA','Washington',' US-WA ',' North Fork Skagit River ',8.0,NULL,NULL,'','',true), + ('Olympia (Washington USA)','Olympia',-122.921430,47.002460,'USA','Washington',' US-WA ',' Chehalis River ',39.4,NULL,NULL,'','',true), + ('Omak (Washington USA)','Omak',-119.539870,48.424990,'USA','Washington',' US-WA ',' Okanogan River ',7.5,NULL,NULL,'','',true), + ('Port Angeles (Washington USA)','Port Angeles',-123.486470,48.110300,'USA','Washington',' US-WA ',' Quarantine Lake ',27.6,NULL,NULL,'','',true), + ('Pullman (Washington USA)','Pullman',-117.185190,46.753530,'USA','Washington',' US-WA ',' Palouse River ',24.6,NULL,NULL,'','',true), + ('Richland (Washington USA)','Richland',-119.295850,46.345820,'USA','Washington',' US-WA ',' Lower Crab Creek ',68.4,NULL,NULL,'','',true), + ('Seattle (Washington USA)','Seattle',-122.347960,47.639070,'USA','Washington',' US-WA ',' Lake Washington Ship Canal ',3.1,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Spokane (Washington USA)','Spokane',-117.429990,47.655380,'USA','Washington',' US-WA ',' Spokane River ',23.0,NULL,NULL,'','',true), + ('Tacoma (Washington USA)','Tacoma',-122.434740,47.234300,'USA','Washington',' US-WA ',' Puyallup River ',8.5,NULL,NULL,'','',true), + ('Vancouver (Washington USA)','Vancouver',-122.672040,45.674500,'USA','Washington',' US-WA ',' Cowlitz River ',92.3,NULL,NULL,'','',true), + ('Walla Walla (Washington USA)','Walla Walla',-118.336290,46.093240,'USA','Washington',' US-WA ',' Grande Ronde River ',65.5,NULL,NULL,'','',true), + ('Wenatchee (Washington USA)','Wenatchee',-120.370590,47.488080,'USA','Washington',' US-WA ',' Lake Chelan ',67.1,NULL,NULL,'','',true), + ('Yakima (Washington USA)','Yakima',-120.521500,46.571620,'USA','Washington',' US-WA ',' Yakima River ',22.7,NULL,NULL,'','',true), + ('Beckley (West Virginia USA)','Beckley',-81.158240,37.804370,'USA','West Virginia',' US-WV ',' Bluestone River ',43.6,NULL,NULL,'','',true), + ('Bluefield (West Virginia USA)','Bluefield',-81.217340,37.281370,'USA','West Virginia',' US-WV ',' Bluestone River ',14.8,NULL,NULL,'','',true), + ('Charleston (West Virginia USA)','Charleston',-81.604650,38.335450,'USA','West Virginia',' US-WV ',' Kanawha ',10.2,NULL,NULL,'','',true), + ('Clarksburg (West Virginia USA)','Clarksburg',-80.363820,39.286490,'USA','West Virginia',' US-WV ',' Buckhannon River ',33.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Huntington (West Virginia USA)','Huntington',-82.476000,38.393380,'USA','West Virginia',' US-WV ',' Kanawha ',69.4,NULL,NULL,'','',true), + ('Morgantown (West Virginia USA)','Morgantown',-79.973190,39.568510,'USA','West Virginia',' US-WV ',' Monongahela ',3.2,NULL,NULL,'','',true), + ('Parkersburg (West Virginia USA)','Parkersburg',-81.529580,39.266170,'USA','West Virginia',' US-WV ',' Little Kanawha River ',41.3,NULL,NULL,'','',true), + ('Wheeling (West Virginia USA)','Wheeling',-80.663640,40.048660,'USA','West Virginia',' US-WV ',' Monongahela ',77.3,NULL,NULL,'','',true), + ('Appleton (Wisconsin USA)','Appleton',-88.362830,44.282170,'USA','Wisconsin',' US-WI ',' Fox ',16.2,NULL,NULL,'','',true), + ('Ashland (Wisconsin USA)','Ashland',-90.861020,46.542500,'USA','Wisconsin',' US-WI ',' Pigeon River ',31.0,NULL,NULL,'','',true), + ('Eau Claire (Wisconsin USA)','Eau Claire',-91.510200,44.807050,'USA','Wisconsin',' US-WI ',' Red Cedar River ',36.8,NULL,NULL,'','',true), + ('Green Bay (Wisconsin USA)','Green Bay',-88.000020,44.486030,'USA','Wisconsin',' US-WI ',' Fox ',20.5,NULL,NULL,'','',true), + ('Janesville (Wisconsin USA)','Janesville',-89.024490,42.676360,'USA','Wisconsin',' US-WI ',' Lake Koshkonong ',22.7,NULL,NULL,'','',true), + ('La Crosse (Wisconsin USA)','La Crosse',-91.170770,43.780610,'USA','Wisconsin',' US-WI ',' Turkey Creek ',92.7,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Madison (Wisconsin USA)','Madison',-89.459830,43.045960,'USA','Wisconsin',' US-WI ',' Lake Mendota ',8.1,NULL,NULL,'','',true), + ('Manitowoc (Wisconsin USA)','Manitowoc',-87.664270,44.093670,'USA','Wisconsin',' US-WI ',' Fox ',52.0,NULL,NULL,'','',true), + ('Marinette (Wisconsin USA)','Marinette',-87.679610,45.089820,'USA','Wisconsin',' US-WI ',' Peshtigo River ',33.7,NULL,NULL,'','',true), + ('Milwaukee (Wisconsin USA)','Milwaukee',-87.940980,43.028760,'USA','Wisconsin',' US-WI ',' East Branch Rock River ',67.3,NULL,NULL,'','',true), + ('Oshkosh (Wisconsin USA)','Oshkosh',-88.550640,44.036360,'USA','Wisconsin',' US-WI ',' Lake Butte Des Morts ',8.6,NULL,NULL,'','',true), + ('Racine (Wisconsin USA)','Racine',-87.819970,42.734230,'USA','Wisconsin',' US-WI ',' Des Plaines River ',78.7,NULL,NULL,'','',true), + ('Sheboygan (Wisconsin USA)','Sheboygan',-87.795290,43.704960,'USA','Wisconsin',' US-WI ',' East Branch Rock River ',59.9,NULL,NULL,'','',true), + ('Superior (Wisconsin USA)','Superior',-92.066080,46.676050,'USA','Wisconsin',' US-WI ',' Saint Louis ',50.4,NULL,NULL,'','',true), + ('Wausau (Wisconsin USA)','Wausau',-89.630380,44.965430,'USA','Wisconsin',' US-WI ',' Lake Dubay ',28.4,NULL,NULL,'','',true), + ('West Bend (Wisconsin USA)','West Bend',-88.168950,43.419150,'USA','Wisconsin',' US-WI ',' East Branch Rock River ',26.2,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Buffalo (Wyoming USA)','Buffalo',-106.745880,44.339110,'USA','Wyoming',' US-WY ',' North Fork Powder River ',47.8,NULL,NULL,'','',true), + ('Casper (Wyoming USA)','Casper',-106.336030,42.847500,'USA','Wyoming',' US-WY ',' South Fork Powder River ',63.3,NULL,NULL,'','',true), + ('Cheyenne (Wyoming USA)','Cheyenne',-104.812430,41.114710,'USA','Wyoming',' US-WY ',' Laramie River ',81.7,NULL,NULL,'','',true), + ('Cody (Wyoming USA)','Cody',-109.015580,44.529390,'USA','Wyoming',' US-WY ',' Buffalo Bill Reservoir ',19.4,NULL,NULL,'','',true), + ('Gillette (Wyoming USA)','Gillette',-105.454970,44.320090,'USA','Wyoming',' US-WY ',' Powder River ',81.2,NULL,NULL,'','',true), + ('Green River (Wyoming USA)','Green River',-109.415870,41.516360,'USA','Wyoming',' US-WY ',' Flaming Gorge Reservoir ',47.1,NULL,NULL,'','',true), + ('Greybull (Wyoming USA)','Greybull',-108.098650,44.500740,'USA','Wyoming',' US-WY ',' Greybull River ',41.0,NULL,NULL,'','',true), + ('Jackson (Wyoming USA)','Jackson',-110.743990,43.513630,'USA','Wyoming',' US-WY ',' Palisades Reservoir ',39.7,NULL,NULL,'','',true), + ('Kemmerer (Wyoming USA)','Kemmerer',-110.524980,41.828130,'USA','Wyoming',' US-WY ',' Bear Lake ',71.6,NULL,NULL,'','',true), + ('Lander (Wyoming USA)','Lander',-108.722500,42.823100,'USA','Wyoming',' US-WY ',' Ocean Lake ',41.9,NULL,NULL,'','',true); +INSERT INTO major_city (composite,city_name,city_longitude,city_latitude,country_code,province,location_abbreviation,closest_water_body,distance,created_at,updated_at,created_by_user_id,updated_by_user_id,active) VALUES + ('Laramie (Wyoming USA)','Laramie',-105.562590,41.327440,'USA','Wyoming',' US-WY ',' Laramie River ',30.8,NULL,NULL,'','',true), + ('Lusk (Wyoming USA)','Lusk',-104.449140,42.753370,'USA','Wyoming',' US-WY ',' Glendo Reservoir ',47.4,NULL,NULL,'','',true), + ('Newcastle (Wyoming USA)','Newcastle',-104.243830,43.879310,'USA','Wyoming',' US-WY ',' Belle Fourche River ',63.8,NULL,NULL,'','',true), + ('Rawlins (Wyoming USA)','Rawlins',-107.235230,41.822260,'USA','Wyoming',' US-WY ',' Seminoe Reservoir ',41.6,NULL,NULL,'','',true), + ('Riverton (Wyoming USA)','Riverton',-108.389140,43.029430,'USA','Wyoming',' US-WY ',' Ocean Lake ',25.0,NULL,NULL,'','',true), + ('Rock Springs (Wyoming USA)','Rock Springs',-109.193070,41.544660,'USA','Wyoming',' US-WY ',' Flaming Gorge Reservoir ',57.6,NULL,NULL,'','',true), + ('Sheridan (Wyoming USA)','Sheridan',-107.006990,44.799660,'USA','Wyoming',' US-WY ',' Tongue River ',82.9,NULL,NULL,'','',true), + ('Thermopolis (Wyoming USA)','Thermopolis',-108.236710,43.679460,'USA','Wyoming',' US-WY ',' Boysen Reservoir ',39.3,NULL,NULL,'','',true), + ('Torrington (Wyoming USA)','Torrington',-104.151960,42.090800,'USA','Wyoming',' US-WY ',' North Platte ',72.9,NULL,NULL,'','',true), + ('Worland (Wyoming USA)','Worland',-107.912410,44.032820,'USA','Wyoming',' US-WY ',' Greybull River ',62.6,NULL,NULL,'','',true); diff --git a/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql b/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql index 8c9b0d52d..33d1f6d32 100644 --- a/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql +++ b/api/api_sources/schema-migration-sql/MajorCitySchema/MajorCitySchema.sql @@ -1,4 +1,4 @@ -CREATE TABLE invasivesbc.major_city ( +CREATE TABLE major_city ( composite character varying(1024), city_name character varying(1024), city_longitude numeric, @@ -13,17 +13,14 @@ CREATE TABLE invasivesbc.major_city ( updated_at timestamp without time zone, created_by_user_id character varying(100), updated_by_user_id character varying(100), - active_ind boolean + active boolean ); - -ALTER TABLE invasivesbc.major_city OWNER TO invasivebc; - -- -- Name: major_city_major_city_id_seq; Type: SEQUENCE; Schema: invasivesbc; Owner: invasivebc -- -CREATE SEQUENCE invasivesbc.major_city_major_city_id_seq +CREATE SEQUENCE major_city_major_city_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE @@ -31,25 +28,23 @@ CREATE SEQUENCE invasivesbc.major_city_major_city_id_seq CACHE 1; -ALTER TABLE invasivesbc.major_city_major_city_id_seq OWNER TO invasivebc; - -- -- Name: major_city_major_city_id_seq; Type: SEQUENCE OWNED BY; Schema: invasivesbc; Owner: invasivebc -- -ALTER SEQUENCE invasivesbc.major_city_major_city_id_seq OWNED BY invasivesbc.major_city.major_city_id; +ALTER SEQUENCE major_city_major_city_id_seq OWNED BY major_city.major_city_id; -- -- Name: major_city major_city_id; Type: DEFAULT; Schema: invasivesbc; Owner: invasivebc -- -ALTER TABLE ONLY invasivesbc.major_city ALTER COLUMN major_city_id SET DEFAULT nextval('invasivesbc.major_city_major_city_id_seq'::regclass); +ALTER TABLE ONLY major_city ALTER COLUMN major_city_id SET DEFAULT nextval('major_city_major_city_id_seq'::regclass); -- -- Name: major_city major_city_pkey; Type: CONSTRAINT; Schema: invasivesbc; Owner: invasivebc -- -ALTER TABLE ONLY invasivesbc.major_city - ADD CONSTRAINT major_city_pkey PRIMARY KEY (major_city_id); \ No newline at end of file +ALTER TABLE ONLY major_city + ADD CONSTRAINT major_city_pkey PRIMARY KEY (major_city_id); diff --git a/api/api_sources/sources/database/migrations/1572894977602-MusselAppDatabase.ts b/api/api_sources/sources/database/migrations/1572894977602-MusselAppDatabase.ts index 5de11100d..76afdb894 100644 --- a/api/api_sources/sources/database/migrations/1572894977602-MusselAppDatabase.ts +++ b/api/api_sources/sources/database/migrations/1572894977602-MusselAppDatabase.ts @@ -7,7 +7,9 @@ import { PreviousAISKnowledgeSourceSchema, PreviousInspectionSourceSchema, CountrySchema, - CountryProvinceSchema + CountryProvinceSchema, + MajorCitySchema, + } from '../database-schema'; import { AppDBMigrator } from '../applicationSchemaInterface'; @@ -21,6 +23,7 @@ export class MusselAppDatabase1572894977602 extends AppDBMigrator implements Mig previousAISKnowledgeSourceSchema: PreviousAISKnowledgeSourceSchema; previousInspectionSourceSchema: PreviousInspectionSourceSchema; countrySchema: CountrySchema; + majorCitiesSchema: MajorCitySchema; countryProvinceSchema: CountryProvinceSchema; /** * Setup @@ -31,6 +34,7 @@ export class MusselAppDatabase1572894977602 extends AppDBMigrator implements Mig this.previousAISKnowledgeSourceSchema = new PreviousAISKnowledgeSourceSchema(); this.previousInspectionSourceSchema = new PreviousInspectionSourceSchema(); this.countrySchema = new CountrySchema(); + this.majorCitiesSchema = new MajorCitySchema(); this.countryProvinceSchema = new CountryProvinceSchema(); this.waterCraftRiskAssessmentSchema = new WatercraftRiskAssessmentSchema(); this.observerWorkflowSchema = new ObserverWorkflowSchema(); @@ -41,6 +45,10 @@ export class MusselAppDatabase1572894977602 extends AppDBMigrator implements Mig // Add populate country table sql file this.addUpMigration(this.countrySchema.className, 'CountrySchema-init.sql'); + // Create Major Cities table + this.addSchemaInitVersion(this.majorCitiesSchema); + this.addUpMigration(this.majorCitiesSchema.className, 'MajorCitySchema-init.sql'); + // Create Country province table this.addSchemaInitVersion(this.countryProvinceSchema); // Run Constraint sql script @@ -82,6 +90,7 @@ export class MusselAppDatabase1572894977602 extends AppDBMigrator implements Mig await queryRunner.query(this.observerWorkflowSchema.dropTable()); await queryRunner.query(this.countryProvinceSchema.dropTable()); await queryRunner.query(this.countrySchema.dropTable()); + await queryRunner.query(this.majorCitiesSchema.dropTable()); await queryRunner.query('DROP TABLE IF EXISTS adult_mussels_location'); await queryRunner.query('DROP TABLE IF EXISTS previous_ais_knowledge_source'); await queryRunner.query('DROP TABLE IF EXISTS previous_inspection_source'); From dd5dc6f47c3f4cecef1e4c85d4eaffc5004e6fa5 Mon Sep 17 00:00:00 2001 From: Dave <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 21 Dec 2023 14:49:41 -0800 Subject: [PATCH 185/194] add columns missing from yaml, will load properly on local init (#1161) --- .../WatercraftRiskAssessmentSchema.sql | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema.sql b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema.sql index c85cb8190..ba5d7de6d 100644 --- a/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema.sql +++ b/api/api_sources/schema-migration-sql/WatercraftRiskAssessmentSchema/WatercraftRiskAssessmentSchema.sql @@ -5,6 +5,7 @@ CREATE TABLE watercraft_risk_assessment (); ALTER TABLE watercraft_risk_assessment ADD COLUMN watercraft_risk_assessment_id SERIAL PRIMARY KEY; ALTER TABLE watercraft_risk_assessment ADD COLUMN timestamp TIMESTAMP NOT NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN passport_holder_ind BOOLEAN NOT NULL DEFAULT FALSE; +ALTER TABLE watercraft_risk_assessment ADD COLUMN is_new_passport_issued BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN k9_inspection_ind BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN marine_species_found_ind BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN aquatic_plants_found_ind BOOLEAN NOT NULL DEFAULT FALSE; @@ -19,15 +20,18 @@ ALTER TABLE watercraft_risk_assessment ADD COLUMN high_risk_area_ind BOOLEAN NOT ALTER TABLE watercraft_risk_assessment ADD COLUMN high_risk_ais_ind BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN previous_dry_storage_ind BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN destination_dry_storage_ind BOOLEAN NOT NULL DEFAULT FALSE; +ALTER TABLE watercraft_risk_assessment ADD COLUMN previous_major_city VARCHAR(100) NULL; +ALTER TABLE watercraft_risk_assessment ADD COLUMN destination_major_city VARCHAR(100) NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN unknown_previous_water_body_ind BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN unknown_destination_water_body_ind BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN commercial_manufacturer_as_previous_water_body_ind BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN commercial_manufacturer_as_destination_water_body_ind BOOLEAN NOT NULL DEFAULT FALSE; +ALTER TABLE watercraft_risk_assessment ADD COLUMN dreissenid_mussels_found_previous BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE watercraft_risk_assessment ADD COLUMN non_motorized_counter INT NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN simple_counter INT NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN complex_counter INT NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN very_complex_count INT NULL; -ALTER TABLE watercraft_risk_assessment ADD COLUMN previous_inspection_days_count INT NULL; +ALTER TABLE watercraft_risk_assessment ADD COLUMN previous_inspection_days_count VARCHAR(100) NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN general_comment VARCHAR(300) NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN passport_number VARCHAR(100) NULL; ALTER TABLE watercraft_risk_assessment ADD COLUMN decontamination_reference VARCHAR(100) NULL; @@ -46,6 +50,7 @@ COMMENT ON TABLE watercraft_risk_assessment IS 'This is schema for data model of COMMENT ON COLUMN watercraft_risk_assessment.watercraft_risk_assessment_id IS 'Auto generated primary key'; COMMENT ON COLUMN watercraft_risk_assessment.timestamp IS 'Date and time of watercraft observation.'; COMMENT ON COLUMN watercraft_risk_assessment.passport_holder_ind IS 'Indicator to show that inspected boat has previously issued passport'; +COMMENT ON COLUMN watercraft_risk_assessment.is_new_passport_issued IS 'Indicator to show that inspected boat was issued a new passport'; COMMENT ON COLUMN watercraft_risk_assessment.k9_inspection_ind IS 'Indicator to show that inspection type is K9'; COMMENT ON COLUMN watercraft_risk_assessment.marine_species_found_ind IS 'Indicator to show any marine species found during inspection'; COMMENT ON COLUMN watercraft_risk_assessment.aquatic_plants_found_ind IS 'Indicator to show any aquatic plants found during inspection'; @@ -60,15 +65,18 @@ COMMENT ON COLUMN watercraft_risk_assessment.high_risk_area_ind IS 'Indicator fl COMMENT ON COLUMN watercraft_risk_assessment.high_risk_ais_ind IS 'Indicator flag to check high risk AIS or not'; COMMENT ON COLUMN watercraft_risk_assessment.previous_dry_storage_ind IS 'Boolean indicator that watercraft''s previous water body is Dry Storage'; COMMENT ON COLUMN watercraft_risk_assessment.destination_dry_storage_ind IS 'Boolean indicator that watercraft''s destination water body is Dry Storage'; +COMMENT ON COLUMN watercraft_risk_assessment.previous_major_city IS 'The closest major city to previous water body'; +COMMENT ON COLUMN watercraft_risk_assessment.destination_major_city IS 'The closest major city to destination water body'; COMMENT ON COLUMN watercraft_risk_assessment.unknown_previous_water_body_ind IS 'Boolean indicate that watercraft''s previous water body is unknown'; COMMENT ON COLUMN watercraft_risk_assessment.unknown_destination_water_body_ind IS 'Boolean indicate that watercraft''s destination water body is unknown'; COMMENT ON COLUMN watercraft_risk_assessment.commercial_manufacturer_as_previous_water_body_ind IS 'Boolean indicate that watercraft''s previous water body is commercial manufacturer'; COMMENT ON COLUMN watercraft_risk_assessment.commercial_manufacturer_as_destination_water_body_ind IS 'Boolean indicate that watercraft''s destination water body is commercial manufacturer'; +COMMENT ON COLUMN watercraft_risk_assessment.dreissenid_mussels_found_previous IS 'Status flag to check if dreissenid mussels were found on the previous inspection or not'; COMMENT ON COLUMN watercraft_risk_assessment.non_motorized_counter IS 'Counter for non motorized boats in inspection'; COMMENT ON COLUMN watercraft_risk_assessment.simple_counter IS 'Counter for number of simple boats in the inspection'; COMMENT ON COLUMN watercraft_risk_assessment.complex_counter IS 'Counter for number of complex boats in the inspection'; COMMENT ON COLUMN watercraft_risk_assessment.very_complex_count IS 'Counter for number of very complex boats in the inspection'; -COMMENT ON COLUMN watercraft_risk_assessment.previous_inspection_days_count IS 'Counter for number of very complex boats in the inspection'; +COMMENT ON COLUMN watercraft_risk_assessment.previous_inspection_days_count IS 'Number of days the previous inspection was conducted'; COMMENT ON COLUMN watercraft_risk_assessment.general_comment IS 'General comment associated with assessment'; COMMENT ON COLUMN watercraft_risk_assessment.passport_number IS 'Passport number associated with previous inspection'; COMMENT ON COLUMN watercraft_risk_assessment.decontamination_reference IS 'Decontamination reference number. Optional and dependent on decontaminationPerformed indicator'; From 907efc62cf5ef9c8ae5c669533511c389a80db7d Mon Sep 17 00:00:00 2001 From: Dave <62899351+davidclaveau@users.noreply.github.com> Date: Fri, 12 Jan 2024 11:49:52 -0800 Subject: [PATCH 186/194] [FIX][LUCY-188] - Fix to Admin, allow access to INSPECT Web (#1162) * add hot-reloading; update node image to fix node-sass errors * fix local target; add PKCE validation * Update dockercompose / packages * fix legacy typo * Update app/lucy/src/app/services/sso.service.ts Co-authored-by: Matthew Logan <62873746+LocalNewsTV@users.noreply.github.com> --------- Co-authored-by: LocalNewsTV <62873746+LocalNewsTV@users.noreply.github.com> --- app/docker-compose.yml | 5 +- app/lucy/Dockerfile | 12 +- app/lucy/package-lock.json | 115 +++++++++++++++++- app/lucy/package.json | 3 +- app/lucy/src/app/constants/app-constants.ts | 38 +++++- .../src/app/services/bootstrap.service.ts | 2 +- app/lucy/src/app/services/sso.service.ts | 50 +++++--- app/lucy/src/app/utils/helpers.ts | 25 ++++ 8 files changed, 211 insertions(+), 39 deletions(-) create mode 100644 app/lucy/src/app/utils/helpers.ts diff --git a/app/docker-compose.yml b/app/docker-compose.yml index a3d581293..43ae56c36 100644 --- a/app/docker-compose.yml +++ b/app/docker-compose.yml @@ -5,13 +5,14 @@ services: container_name: "lucy-web" build: context: ./lucy - dockerfile: .build/Dockerfile.local + dockerfile: Dockerfile ports: - 3030:3030 networks: - web-net + volumes: + - ./lucy:/opt/app-root/src networks: web-net: driver: bridge name: lucy-web-network - \ No newline at end of file diff --git a/app/lucy/Dockerfile b/app/lucy/Dockerfile index 129f93172..91253172e 100644 --- a/app/lucy/Dockerfile +++ b/app/lucy/Dockerfile @@ -1,4 +1,4 @@ -FROM node:10 +FROM node:14.21.3 # Setting Path ENV PATH /opt/rh/rh-nodejs8/root/usr/bin:/opt/app-root/src/node_modules/.bin/:/opt/app-root/src/app.npm-global/bin/:/opt/app-root/src/app/bin:/opt/app-root/src/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin @@ -20,13 +20,13 @@ WORKDIR /opt/app-root/src # where available (npm@5+) # COPY PACKAGE JSON COPY ./package*.json ./ - -# INSATLL NODE DEPENDENCIES -RUN npm ci +RUN npm install @angular/cli@15.1.0 # Copy All the sources -COPY ./ . +COPY . . +# INSTALL NODE DEPENDENCIES +RUN npm ci # BUILD APP RUN npm run build-prod @@ -36,4 +36,4 @@ RUN npm run build-prod EXPOSE 3030 # RUN APP -CMD ["npm", "run", "deploy_start"] +CMD ["npm", "run", "deploy_run"] diff --git a/app/lucy/package-lock.json b/app/lucy/package-lock.json index 1da1c6db1..4662248d7 100644 --- a/app/lucy/package-lock.json +++ b/app/lucy/package-lock.json @@ -40,7 +40,7 @@ "loader-utils": "1.2.3", "mini-css-extract-plugin": "0.5.0", "minimatch": "3.0.4", - "node-sass": "4.13.1", + "sass": "1.69.7", "open": "6.0.0", "parse5": "4.0.0", "postcss": "7.0.14", @@ -9943,6 +9943,11 @@ "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==", "dev": true }, + "immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" + }, "import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", @@ -13134,8 +13139,7 @@ "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" }, "pify": { "version": "4.0.1", @@ -15194,6 +15198,106 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sass": { + "version": "1.69.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", + "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "sass-graph": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.6.tgz", @@ -16220,6 +16324,11 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, "source-map-loader": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", diff --git a/app/lucy/package.json b/app/lucy/package.json index 639e36b28..08fa69a64 100644 --- a/app/lucy/package.json +++ b/app/lucy/package.json @@ -10,7 +10,7 @@ "test": "ng test --watch=false", "lint": "ng lint", "e2e": "ng e2e", - "deploy_run": "ng serve --host 0.0.0.0 --port 3030 --disableHostCheck", + "deploy_run": "ng serve --poll 2000 --host 0.0.0.0 --port 3030 --disable-host-check", "deploy_start": "node server", "storybook": "start-storybook -p 6006", "build-storybook": "build-storybook", @@ -58,6 +58,7 @@ "popper.js": "^1.15.0", "request": "^2.88.0", "rxjs": "~6.3.3", + "sass": "1.69.7", "terser-webpack-plugin": "^2.1.0", "tslib": "^1.9.0", "web-animations-js": "^2.3.2", diff --git a/app/lucy/src/app/constants/app-constants.ts b/app/lucy/src/app/constants/app-constants.ts index b96503a44..7033449a2 100755 --- a/app/lucy/src/app/constants/app-constants.ts +++ b/app/lucy/src/app/constants/app-constants.ts @@ -16,12 +16,13 @@ * Created by Amir Shayegh on 2019-10-23. */ +import { encryptStringWithSHA256, getRandomString, hashToBase64url } from "../utils/helpers"; + /** * @description Advance declare window obj */ declare var window: any; export class AppConstants { - // Mussles App static get API_WatercraftAssessment_Export(): string { return `${AppConstants.API_baseURL}/mussels/wra/export`;} static get API_Shift_Export(): string { return `${AppConstants.API_baseURL}/mussels/workflow/export`;} @@ -63,16 +64,39 @@ export class AppConstants { // API Reference data static get API_Roles(): string { return `${AppConstants.API_baseURL}/account/roles`; } + static getAuthorizationParams = async() => { + // Create random "state" + const state = getRandomString(); + const nonce = getRandomString(); + sessionStorage.setItem('oauth_state', state); + sessionStorage.setItem('oidc_nonce', nonce); + + // Create PKCE Code Verifier + const code_verifier = getRandomString(); + sessionStorage.setItem('code_verifier', code_verifier); + + // Create PKCE Code Challenge + const arrayHash: any = await encryptStringWithSHA256(code_verifier); + const code_challenge = hashToBase64url(arrayHash); + sessionStorage.setItem('code_challenge', code_challenge); + + return { code_challenge, state, nonce }; + }; + + // PKCE Verifier + static CODE_VERIFIER = getRandomString(); + // SSO static SSOConstants = { SSO_CLIENT_ID : `inspect-bc-mussels-4817`, SSO_BASE_URL : `https://dev.loginproxy.gov.bc.ca`, SSO_REALM_NAME : `standard`, SSO_LOGIN_REDIRECT_URI : `http://${window.location.host}`, + SSO_CODE_CHALLENGE_METHOD : `S256`, }; // API - static API_baseURL = 'http://localhost:80/api'; + static API_baseURL = 'http://localhost:7070/api'; // Default Config static CONFIG = { @@ -118,13 +142,15 @@ export class AppConstants { static API_observationChemicallyTreated(): string { return `${AppConstants.API_baseURL}/obschem`; } // SSO non static endpoints - static SSO_LoginEndpoint(): string { - const baseAuthEndpoint = `${this.SSOConstants.SSO_BASE_URL}/auth/realms/${this.SSOConstants.SSO_REALM_NAME}/protocol/openid-connect`; - return `${baseAuthEndpoint}/auth?response_type=code&client_id=${this.SSOConstants.SSO_CLIENT_ID}&redirect_uri=${this.SSOConstants.SSO_LOGIN_REDIRECT_URI}`; + static SSO_LoginEndpoint = async() => { + AppConstants.getAuthorizationParams().then((authorizationParams) => { + const baseAuthEndpoint = `${AppConstants.SSOConstants.SSO_BASE_URL}/auth/realms/${AppConstants.SSOConstants.SSO_REALM_NAME}/protocol/openid-connect`; + return `${baseAuthEndpoint}/auth?response_type=code&client_id=${AppConstants.SSOConstants.SSO_CLIENT_ID}&redirect_uri=${AppConstants.SSOConstants.SSO_LOGIN_REDIRECT_URI}&code_challenge_method=${AppConstants.SSOConstants.SSO_CODE_CHALLENGE_METHOD}&code_challenge=${encodeURIComponent(authorizationParams.code_challenge)}&state=${encodeURIComponent(authorizationParams.state)}&nonce=${encodeURIComponent(authorizationParams.nonce)}`; + }) } static SSO_TokenEndpoint(): string { - return `${this.SSOConstants.SSO_BASE_URL}/auth/realms/${this.SSOConstants.SSO_REALM_NAME}/protocol/openid-connect/token`; + return `${AppConstants.SSOConstants.SSO_BASE_URL}/auth/realms/${AppConstants.SSOConstants.SSO_REALM_NAME}/protocol/openid-connect/token`; } // API Non static endpoints diff --git a/app/lucy/src/app/services/bootstrap.service.ts b/app/lucy/src/app/services/bootstrap.service.ts index 83d4b9575..b5d652138 100644 --- a/app/lucy/src/app/services/bootstrap.service.ts +++ b/app/lucy/src/app/services/bootstrap.service.ts @@ -29,7 +29,7 @@ export class AppBootService { // Get config const result: any = await this.api.get('/config').toPromise(); // Get API host - const host = result.apiHost || 'localhost:80'; + const host = result.apiHost || 'localhost:7070'; // Create base url const baseURL = `${location.protocol}//${host}/api`; // Setting base url to API const diff --git a/app/lucy/src/app/services/sso.service.ts b/app/lucy/src/app/services/sso.service.ts index 2af63b3f1..b6aaeae2c 100644 --- a/app/lucy/src/app/services/sso.service.ts +++ b/app/lucy/src/app/services/sso.service.ts @@ -67,12 +67,12 @@ export class SsoService { /***** Computed variables *****/ - /** - * Return Login endpoint by concatenating Constants from AppConstants -> SSOConstants - */ + /** + * Return Login endpoint by concatenating Constants from AppConstants -> SSOConstants + */ private SSO_LoginEndpoint(): string { const baseAuthEndpoint = `${AppConstants.SSOConstants.SSO_BASE_URL}/auth/realms/${AppConstants.SSOConstants.SSO_REALM_NAME}/protocol/openid-connect`; - return `${baseAuthEndpoint}/auth?response_type=code&client_id=${AppConstants.SSOConstants.SSO_CLIENT_ID}&redirect_uri=${AppConstants.SSOConstants.SSO_LOGIN_REDIRECT_URI}`; + return `${baseAuthEndpoint}/auth?response_type=code&client_id=${AppConstants.SSOConstants.SSO_CLIENT_ID}&redirect_uri=${AppConstants.SSOConstants.SSO_LOGIN_REDIRECT_URI}&code_challenge_method=${AppConstants.SSOConstants.SSO_CODE_CHALLENGE_METHOD}`; } private SSO_idirLoginEndpoint(): string { @@ -213,22 +213,23 @@ export class SsoService { * THe route will include a code that we will use in getToken() to get the user's token * @param provider SSOLoginProvider */ - public login(provider: SSOLoginProvider) { - switch (provider) { - case SSOLoginProvider.idir: { - window.open(this.SSO_idirLoginEndpoint(), `_self`); - break; - } - case SSOLoginProvider.BCeID: { - window.open(this.SSO_BCeidLoginEndpoint(), `_self`); - break; + public async login(provider: SSOLoginProvider) { + AppConstants.getAuthorizationParams().then((authorizationParams) => { + switch (provider) { + case SSOLoginProvider.idir: { + window.open(`${this.SSO_idirLoginEndpoint()}&code_challenge=${encodeURIComponent(authorizationParams.code_challenge)}&state=${encodeURIComponent(authorizationParams.state)}&nonce=${encodeURIComponent(authorizationParams.nonce)}`, `_self`); + break; + } + case SSOLoginProvider.BCeID: { + window.open(`${this.SSO_BCeidLoginEndpoint()}&code_challenge=${encodeURIComponent(authorizationParams.code_challenge)}&state=${encodeURIComponent(authorizationParams.state)}&nonce=${encodeURIComponent(authorizationParams.nonce)}`, `_self`); + break; + } + default: { + window.open(`${this.SSO_LoginEndpoint()}&code_challenge=${encodeURIComponent(authorizationParams.code_challenge)}&state=${encodeURIComponent(authorizationParams.state)}&nonce=${encodeURIComponent(authorizationParams.nonce)}`, `_self`); + break; + } } - default: { - console.log(`where am i`); - window.open(this.SSO_LoginEndpoint(), `_self`); - break; - } - } + }); } /** @@ -299,7 +300,11 @@ export class SsoService { } private getTokensFromAPIResult(result: any): TokenReponse | undefined { - if (result['success'] === false) { + // PKCE Validation + const oidc_nonce = sessionStorage.getItem('oidc_nonce'); + const tokenNonce = jwtDecode(result.refresh_token)['nonce']; + + if (!result['success'] || oidc_nonce !== tokenNonce) { return undefined; } else { const accessToken = result['access_token']; @@ -307,6 +312,10 @@ export class SsoService { const newRefreshToken = result['refresh_token']; const newRefreshTokenExpiery = result['refresh_expires_in']; + sessionStorage.removeItem('oauth_state'); + sessionStorage.removeItem('code_verifier'); + sessionStorage.removeItem('code_challenge'); + if (!accessToken || !expiresIn || !newRefreshToken || !newRefreshTokenExpiery) { console.log('response doesnt have all required data'); return undefined; @@ -409,6 +418,7 @@ export class SsoService { grant_type: 'authorization_code', redirect_uri: AppConstants.SSOConstants.SSO_LOGIN_REDIRECT_URI, client_id: AppConstants.SSOConstants.SSO_CLIENT_ID, + code_verifier: sessionStorage.getItem('code_verifier') }; const response: TokenReponse = { diff --git a/app/lucy/src/app/utils/helpers.ts b/app/lucy/src/app/utils/helpers.ts new file mode 100644 index 000000000..797e8b5de --- /dev/null +++ b/app/lucy/src/app/utils/helpers.ts @@ -0,0 +1,25 @@ +// Generate a Random String +export const getRandomString = () => { + const randomItems = new Uint32Array(28); + crypto.getRandomValues(randomItems); + const binaryStringItems: string[] = []; + randomItems.forEach((dec) => binaryStringItems.push(`0${dec.toString(16).substr(-2)}`)); + return binaryStringItems.reduce((acc: string, item: string) => `${acc}${item}`, ''); +}; + +// Encrypt a String with SHA256 +export const encryptStringWithSHA256 = async (str: string) => { + const PROTOCOL = 'SHA-256'; + const textEncoder = new TextEncoder(); + const encodedData = textEncoder.encode(str); + return crypto.subtle.digest(PROTOCOL, encodedData); +}; + +// Convert Hash to Base64-URL +export const hashToBase64url = (arrayBuffer: Iterable) => { + const items = new Uint8Array(arrayBuffer); + const stringifiedArrayHash = items.reduce((acc, i) => `${acc}${String.fromCharCode(i)}`, ''); + const decodedHash = btoa(stringifiedArrayHash); + + return decodedHash.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); +}; From 0c15b3ad585541e15947715ca48dca339996d585 Mon Sep 17 00:00:00 2001 From: Matthew Logan <62873746+LocalNewsTV@users.noreply.github.com> Date: Fri, 12 Jan 2024 14:09:00 -0800 Subject: [PATCH 187/194] modify-ocbc (#1165) --- app/openshift/app.bc.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/openshift/app.bc.yaml b/app/openshift/app.bc.yaml index 379a2307b..4fff3127c 100644 --- a/app/openshift/app.bc.yaml +++ b/app/openshift/app.bc.yaml @@ -30,13 +30,13 @@ parameters: value: dev - name: SOURCE_IMAGE_NAME required: true - value: redhat-ubi-node-10 + value: node:14.21.3 - name: SOURCE_IMAGE_TAG required: true value: 1-41 - name: BASE_IMAGE_URL required: true - value: registry.access.redhat.com/ubi8/nodejs-10:1-41 + value: node:14.21.3 objects: - kind: ImageStream apiVersion: v1 @@ -111,4 +111,4 @@ objects: - type: ConfigChange - type: ImageChange status: - lastVersion: 7 \ No newline at end of file + lastVersion: 7 From 970991614f3684b20f776a948cbeb68d4607442e Mon Sep 17 00:00:00 2001 From: Matthew Logan <62873746+LocalNewsTV@users.noreply.github.com> Date: Fri, 12 Jan 2024 14:25:50 -0800 Subject: [PATCH 188/194] [LUCY-118] FIX** Modify Build Config (#1166) * modify-ocbc --- app/openshift/app.bc.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/openshift/app.bc.yaml b/app/openshift/app.bc.yaml index 4fff3127c..14c2d1121 100644 --- a/app/openshift/app.bc.yaml +++ b/app/openshift/app.bc.yaml @@ -30,10 +30,10 @@ parameters: value: dev - name: SOURCE_IMAGE_NAME required: true - value: node:14.21.3 + value: node - name: SOURCE_IMAGE_TAG required: true - value: 1-41 + value: 14.21.3 - name: BASE_IMAGE_URL required: true value: node:14.21.3 From f2d0ac5e25a1a9e54e79501e4659a8d8929f40a7 Mon Sep 17 00:00:00 2001 From: Dave <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 25 Jan 2024 13:47:09 -0800 Subject: [PATCH 189/194] [FEATURE][LUCY-1169] - Add BlowBy table to capture BlowBy data coming from INSPECT (#1170) * wip - preliminary work to add blow by table, remove previous columns * wip - update blow by model and route * fix to blowBy validation check and yaml * change blow_by_time type, clean up redundancies * revert removal of watercraft complexity from shift, no real change * revert removal of watercraft complexity, no real change * Update api/api_sources/sources/database/models/blowBy.ts Co-authored-by: Matthew Logan <62873746+LocalNewsTV@users.noreply.github.com> --------- Co-authored-by: Matthew Logan <62873746+LocalNewsTV@users.noreply.github.com> --- .../schema-files/blowBy.schema.yaml | 54 ++++++++++++ .../BlowBySchema/BlowBySchema.sql | 41 +++++++++ .../database-schema/musselApp.schema.ts | 6 ++ .../migrations/1703285389562-CreateBlowBy.ts | 42 +++++++++ .../sources/database/models/blowBy.ts | 87 +++++++++++++++++++ .../models/controllers/blowBy.controller.ts | 49 +++++++++++ .../watercraftRiskAssessment.controller.ts | 2 +- .../sources/database/models/index.ts | 2 + .../database/models/observerWorkflow.ts | 2 +- .../sources/server/initializers/routes.ts | 4 + .../server/modules/blowBy/blowBy.route.ts | 74 ++++++++++++++++ .../sources/server/modules/blowBy/index.ts | 24 +++++ 12 files changed, 385 insertions(+), 2 deletions(-) create mode 100644 api/api_sources/schema-files/blowBy.schema.yaml create mode 100644 api/api_sources/schema-migration-sql/BlowBySchema/BlowBySchema.sql create mode 100644 api/api_sources/sources/database/migrations/1703285389562-CreateBlowBy.ts create mode 100644 api/api_sources/sources/database/models/blowBy.ts create mode 100644 api/api_sources/sources/database/models/controllers/blowBy.controller.ts create mode 100644 api/api_sources/sources/server/modules/blowBy/blowBy.route.ts create mode 100644 api/api_sources/sources/server/modules/blowBy/index.ts diff --git a/api/api_sources/schema-files/blowBy.schema.yaml b/api/api_sources/schema-files/blowBy.schema.yaml new file mode 100644 index 000000000..11c033e43 --- /dev/null +++ b/api/api_sources/schema-files/blowBy.schema.yaml @@ -0,0 +1,54 @@ +version: '1.0' +description: Schema file for table blow_by +externalTables: [] +includes: + - observerWorkflow.schema.yaml +schemas: + BlowBySchema: + name: blow_by + description: 'Table to store blow by data for watercraft observer.' + baseSchema: RecordSchema + meta: + resource: true + api: /mussels/blow-bys + base: api + resource: true + baseModel: Record + columns: + id: + name: blow_by_id + comment: Auto generated primary key + definition: SERIAL PRIMARY KEY + observerWorkflowId: + name: observer_workflow_id + comment: Foreign key to observer_workflow + definition: INT NULL + foreignTable: observer_workflow + refColumn: observer_workflow_id + blowByTime: + name: blow_by_time + comment: Time of blow by + definition: TIMESTAMP NULL + watercraftComplexity: + name: watercraft_complexity + comment: Watercraft complexity + definition: VARCHAR(100) NULL + reportedToRapp: + name: reported_to_rapp + comment: Reported to rapp + definition: BOOLEAN NOT NULL DEFAULT false + relations: + observerWorkflow: + header: + key: blow_by.observer_workflow + default: Observer Workflow + description: + key: blow_by.observer_workflow.description + default: Observer workflow associated with the blow by + type: single + relationshipType: many-to-one + schema: ObserverWorkflowSchema + meta: + skipValidation: true + versions: [] + fields: {} diff --git a/api/api_sources/schema-migration-sql/BlowBySchema/BlowBySchema.sql b/api/api_sources/schema-migration-sql/BlowBySchema/BlowBySchema.sql new file mode 100644 index 000000000..bb5f95be0 --- /dev/null +++ b/api/api_sources/schema-migration-sql/BlowBySchema/BlowBySchema.sql @@ -0,0 +1,41 @@ +-- ### Creating Table: blow_by ### -- + + +CREATE TABLE blow_by (); +ALTER TABLE blow_by ADD COLUMN blow_by_id SERIAL PRIMARY KEY; +ALTER TABLE blow_by ADD COLUMN observer_workflow_id INT NULL REFERENCES observer_workflow(observer_workflow_id) ON DELETE SET NULL; +ALTER TABLE blow_by ADD COLUMN blow_by_time TIMESTAMP NULL; +ALTER TABLE blow_by ADD COLUMN watercraft_complexity VARCHAR(100) NULL; +ALTER TABLE blow_by ADD COLUMN reported_to_rapp BOOLEAN NOT NULL DEFAULT false; + + + +-- ### Creating Comments on table ### -- + + +COMMENT ON TABLE blow_by IS 'Table to store blow by data for watercraft observer.'; +COMMENT ON COLUMN blow_by.blow_by_id IS 'Auto generated primary key'; +COMMENT ON COLUMN blow_by.observer_workflow_id IS 'Foreign key to observer_workflow'; +COMMENT ON COLUMN blow_by.blow_by_time IS 'Time of blow by'; +COMMENT ON COLUMN blow_by.watercraft_complexity IS 'Watercraft complexity'; +COMMENT ON COLUMN blow_by.reported_to_rapp IS 'Reported to rapp'; + + + +-- ### Creating Timestamp column ### -- + + +ALTER TABLE blow_by ADD COLUMN created_at TIMESTAMP DEFAULT NOW(); +ALTER TABLE blow_by ADD COLUMN updated_at TIMESTAMP DEFAULT NOW(); +COMMENT ON COLUMN blow_by.created_at IS 'Timestamp column to check creation time of record'; +COMMENT ON COLUMN blow_by.updated_at IS 'Timestamp column to check modify time of record'; + + +-- ### Creating User Audit Columns ### -- + + +ALTER TABLE blow_by ADD COLUMN updated_by_user_id INT NULL DEFAULT NULL REFERENCES application_user(user_id) ON DELETE SET NULL; +ALTER TABLE blow_by ADD COLUMN created_by_user_id INT NULL DEFAULT NULL REFERENCES application_user(user_id) ON DELETE SET NULL; +COMMENT ON COLUMN blow_by.updated_by_user_id IS 'Audit column to track creator'; +COMMENT ON COLUMN blow_by.created_by_user_id IS 'Audit column to track modifier'; + -- ### End: blow_by ### -- diff --git a/api/api_sources/sources/database/database-schema/musselApp.schema.ts b/api/api_sources/sources/database/database-schema/musselApp.schema.ts index 1c68cb36c..000440c3d 100644 --- a/api/api_sources/sources/database/database-schema/musselApp.schema.ts +++ b/api/api_sources/sources/database/database-schema/musselApp.schema.ts @@ -112,3 +112,9 @@ export class AdultMusselsLocationSchema extends RecordTableSchema { return true; } } + +export class BlowBySchema extends RecordTableSchema { + get schemaFilePath(): string { + return getYAMLFilePath('blowBy.schema.yaml'); + } +} diff --git a/api/api_sources/sources/database/migrations/1703285389562-CreateBlowBy.ts b/api/api_sources/sources/database/migrations/1703285389562-CreateBlowBy.ts new file mode 100644 index 000000000..fd60fdc31 --- /dev/null +++ b/api/api_sources/sources/database/migrations/1703285389562-CreateBlowBy.ts @@ -0,0 +1,42 @@ +import {MigrationInterface, QueryRunner} from 'typeorm'; +import { AppDBMigrator } from '../applicationSchemaInterface'; +import { BlowBySchema, ObserverWorkflowSchema } from '../database-schema'; + +export class CreateBlowBy1703888022971 extends AppDBMigrator implements MigrationInterface { + blowBySchema: BlowBySchema; + observerWorkflowSchema: ObserverWorkflowSchema; + + /** + * Setup + */ + setup() { + // Adding BlowBy schema to migrator + this.blowBySchema = new BlowBySchema(); + this.observerWorkflowSchema = new ObserverWorkflowSchema(); + + // Create BlowBy table + this.addSchemaInitVersion(this.blowBySchema); + } + + /** + * UP: Create DB method + */ + public async up(queryRunner: QueryRunner): Promise { + // Start Log + this.log('[START]', 'UP'); + // Running all up migration files + await this.runQuerySqlFiles(this.upMigrations(), queryRunner); + this.log('[END]', 'UP'); + } + + /** + * Down: Revert + */ + public async down(queryRunner: QueryRunner): Promise { + this.log('[START]', 'DOWN'); + await queryRunner.query(this.blowBySchema.dropTable()); + await queryRunner.query(this.observerWorkflowSchema.dropTable()); + this.log('[END]', 'DOWN'); + } + +} diff --git a/api/api_sources/sources/database/models/blowBy.ts b/api/api_sources/sources/database/models/blowBy.ts new file mode 100644 index 000000000..f36a803c2 --- /dev/null +++ b/api/api_sources/sources/database/models/blowBy.ts @@ -0,0 +1,87 @@ +// ** Model: BlowBy from schema BlowBySchema ** + +import { Column, Entity, PrimaryGeneratedColumn, JoinColumn, ManyToOne } from 'typeorm'; +import { BlowBySchema, ObserverWorkflowSchema } from '../database-schema'; +import { ModelProperty, PropertyType, ModelDescription } from '../../libs/core-model'; +import { ObserverWorkflow, Record } from '../models'; +import { DateTimeTransformer } from '../../libs/transformer'; + +/** Interface **/ +/** + * @description BlowBy create interface + */ +export interface BlowBySpec { + observerWorkflowId: ObserverWorkflow; + blowByTime: string; + watercraftComplexity: string; + reportedToRapp: boolean; +} +// -- End: BlowBySpec -- + + +/** Interface **/ +/** + * @description BlowBy update interface + */ +export interface BlowByUpdateSpec { + observerWorkflowId?: ObserverWorkflow; + blowByTime?: string; + watercraftComplexity?: string; + reportedToRapp?: boolean; +} +// -- End: BlowByUpdateSpec -- + +/** + * @description Data Model Class for BlowBySchema + */ +@ModelDescription({ + description: 'Data Model Class for BlowBySchema', + schema: BlowBySchema, + apiResource: false +}) +@Entity( { name: BlowBySchema.dbTable} ) +export class BlowBy extends Record implements BlowBySpec { + + /** + * Class Properties + */ + + /** + * @description Getter/Setter property for column {blow_by_id} + */ + @PrimaryGeneratedColumn() + @ModelProperty({type: PropertyType.number}) + blow_by_id: number; + + /** + * @description Getter/Setter property for column {observer_workflow_id} + */ + @ManyToOne( type => ObserverWorkflow, { eager: true}) + @JoinColumn({ name: BlowBySchema.columns.observerWorkflowId, referencedColumnName: ObserverWorkflowSchema.pk}) + @ModelProperty({type: PropertyType.object}) + observerWorkflowId: ObserverWorkflow; + + /** + * @description Getter/Setter property for column {blow_by_time} + */ + @Column({ name: BlowBySchema.columns.blowByTime, transformer: new DateTimeTransformer()}) + @ModelProperty({type: PropertyType.string}) + blowByTime: string; + + /** + * @description Getter/Setter property for column {watercraft_complexity} + */ + @Column({ name: BlowBySchema.columns.watercraftComplexity}) + @ModelProperty({type: PropertyType.string}) + watercraftComplexity: string; + + /** + * @description Getter/Setter property for column {reported_to_rapp} + */ + @Column({ name: BlowBySchema.columns.reportedToRapp}) + @ModelProperty({type: PropertyType.boolean}) + reportedToRapp: boolean; + +} + +// ------------------------------------- diff --git a/api/api_sources/sources/database/models/controllers/blowBy.controller.ts b/api/api_sources/sources/database/models/controllers/blowBy.controller.ts new file mode 100644 index 000000000..da3f75bf5 --- /dev/null +++ b/api/api_sources/sources/database/models/controllers/blowBy.controller.ts @@ -0,0 +1,49 @@ +// ** BlowByController ** // + +import { RecordController } from '../generic.data.models'; +import { BlowBy} from '../../models'; +import { BlowBySchema } from '../../database-schema'; + +// ** BlowByController ** // + + +/** + * @description Data Model Controller Class for BlowBySchema and BlowBy + */ +export class BlowByController extends RecordController { + /** + * @description Getter for shared instance + */ + public static get shared(): BlowByController { + return this.sharedInstance(BlowBy, BlowBySchema) as BlowByController; + } + + public async all(query?: any): Promise { + const options = query || {}; + options.relations = ['observerWorkflowId']; + return await this.repo.find(options) as BlowBy[]; + } + + get exportKeyPriorities(): {[key: string]: number} { + const basePriority = 1000; + const topPriority = 100; + return { + id: basePriority + topPriority, + observerWorkflowId: (basePriority + topPriority - 10), + blowByTime: (basePriority + topPriority - 50), + watercraftComplexity: (basePriority + topPriority - 60), + reportedToRapp: (basePriority + topPriority - 70), + }; + } + + processForExport(data: BlowBy): any { + const result: any = {}; + Object.keys(data).forEach((key) => { + if (this.exportKeyMapper[key]) { + result[this.exportKeyMapper[key]] = data[key]; + } + }); + return result; + } +} +// ---------------- diff --git a/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts b/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts index 022c0ea9b..44e46cb80 100644 --- a/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts +++ b/api/api_sources/sources/database/models/controllers/watercraftRiskAssessment.controller.ts @@ -129,8 +129,8 @@ export class WatercraftRiskAssessmentController extends RecordController { // Observer Workflow app.use('/api/mussels/workflow', ObserverWorkflowRouteController.shared.router); + // Watercraft Risk Assessment + app.use('/api/mussels/blow-bys', BlowByRouteController.shared.router); + // Mussels App Codes app.use('/api/mussels/codes', MusselsAppCodesRouteController.shared.router); diff --git a/api/api_sources/sources/server/modules/blowBy/blowBy.route.ts b/api/api_sources/sources/server/modules/blowBy/blowBy.route.ts new file mode 100644 index 000000000..a461bcc14 --- /dev/null +++ b/api/api_sources/sources/server/modules/blowBy/blowBy.route.ts @@ -0,0 +1,74 @@ +/* + * Copyright © 2019 Province of British Columbia + * Licensed under the Apache License, Version 2.0 (the "License") + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * ** + * http://www.apache.org/licenses/LICENSE-2.0 + * ** + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * File: watercraftRiskAssessment.route.ts + * Project: lucy + * File Created: Tuesday, 5th November 2019 10:16:47 am + * Author: pushan + * ----- + * Last Modified: Tuesday, 5th November 2019 10:58:51 am + * Modified By: pushan + * ----- + */ +/** + * Imports + */ +import { + // SecureRouteController, + ResourceRoute, + CreateMiddleware, + ResourceRouteController, + UpdateMiddleware, + Get, + inspectAppEditorRoute, + inspectAppAdminRoute +} from '../../core'; +import { + BlowByController, + BlowBySpec +} from '../../../database/models'; + + +@ResourceRoute({ + path: '/api/mussels/blow-bys/#', + description: 'API route controller for Blow Bys', + dataController: BlowByController.shared, + // validators: CreateTreatmentValidator, + secure: true +}) +@CreateMiddleware(() => [ inspectAppEditorRoute() ]) +@UpdateMiddleware(() => [ inspectAppEditorRoute() ]) +export class BlowByRouteController extends ResourceRouteController { + static get shared(): BlowByRouteController { + return this.sharedInstance() as BlowByRouteController; + } + + /** + * @description Create New Object + * @param Request req + * @param any data + */ + public async createResource(req: any, data: any): Promise<[number, any]> { + // Get Proper data mapping + return [201, await this.dataController.createNewObject(data, req.user)]; + } + + @Get({ + path: '/export', + secure: true, + middleware: () => [ inspectAppAdminRoute() ] + }) + public async export() { + return [200, await this.dataController.export()]; + } +} diff --git a/api/api_sources/sources/server/modules/blowBy/index.ts b/api/api_sources/sources/server/modules/blowBy/index.ts new file mode 100644 index 000000000..35c9aa4f6 --- /dev/null +++ b/api/api_sources/sources/server/modules/blowBy/index.ts @@ -0,0 +1,24 @@ +/* + * Copyright © 2019 Province of British Columbia + * Licensed under the Apache License, Version 2.0 (the "License") + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * ** + * http://www.apache.org/licenses/LICENSE-2.0 + * ** + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * File: index.ts + * Project: lucy + * File Created: Thursday, 23rd April 2020 1:36:03 pm + * Author: Sustainment Team (you@you.you) + * ----- + * Last Modified: Thursday, 23rd April 2020 1:36:31 pm + * Modified By: Sustainment Team (you@you.you>) + * ----- + */ + +export * from './blowBy.route'; From 27600b531c4d9c5a99120bec6caff4a501e01748 Mon Sep 17 00:00:00 2001 From: Dave <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 25 Jan 2024 14:33:25 -0800 Subject: [PATCH 190/194] add migration to add 'e.g.' to closest_city in water_body (#1172) --- .../1706036892274-closestCityNameChangeInWaterBody.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts diff --git a/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts b/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts new file mode 100644 index 000000000..e042907b0 --- /dev/null +++ b/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts @@ -0,0 +1,11 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class closestCityNameChangeInWaterBody1706036892274 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`UPDATE "water_body" SET "closest_city" = CONCAT('e.g. ', "closest_city")`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`UPDATE "water_body" SET "closest_city" = SUBSTRING("closest_city", 6)`); + } +} From f77f8fc6ab5e0efd107dd0e84746c8ad6c3e4543 Mon Sep 17 00:00:00 2001 From: Dave <62899351+davidclaveau@users.noreply.github.com> Date: Thu, 25 Jan 2024 14:50:57 -0800 Subject: [PATCH 191/194] update to pascal case for linting (#1173) --- .../1706036892274-closestCityNameChangeInWaterBody.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts b/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts index e042907b0..3c6aa9384 100644 --- a/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts +++ b/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -export class closestCityNameChangeInWaterBody1706036892274 implements MigrationInterface { +export class ClosestCityNameChangeInWaterBody1706036892274 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { await queryRunner.query(`UPDATE "water_body" SET "closest_city" = CONCAT('e.g. ', "closest_city")`); } From e8171cbcbc5a6a98651b9c9cd510434a9c55906b Mon Sep 17 00:00:00 2001 From: Matthew Logan <62873746+LocalNewsTV@users.noreply.github.com> Date: Thu, 25 Jan 2024 15:11:35 -0800 Subject: [PATCH 192/194] [LUCY-281] FEATURE** Use Keycloak permissions to manage users (#1168) * modify-ocbc * modify oc-bc * Update login to auto assign user keycloak roles * cleanup auth.middleware --- .gitignore | 2 + .../sources/server/core/auth.middleware.ts | 308 +++++++++--------- 2 files changed, 162 insertions(+), 148 deletions(-) diff --git a/.gitignore b/.gitignore index d7576baf3..1d47cc1e2 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ node_modules/ .env .npm + +.v8flags* diff --git a/api/api_sources/sources/server/core/auth.middleware.ts b/api/api_sources/sources/server/core/auth.middleware.ts index 8623b5710..a0e1cf93f 100644 --- a/api/api_sources/sources/server/core/auth.middleware.ts +++ b/api/api_sources/sources/server/core/auth.middleware.ts @@ -16,15 +16,13 @@ // limitations under the License. // // Created by Pushan Mitra on 2019-06-6. -/** - * Imports - */ + import * as passport from 'passport'; import * as express from 'express'; import * as assert from 'assert'; import { ExtractJwt, Strategy as JwtStrategy, StrategyOptions } from 'passport-jwt'; import AppConfig from '../../AppConfig'; -import { UserDataController, User, RoleCodeController, RolesCodeValue, RolesCode, UserSessionDataController, UserSession, AccountStatus} from '../../database/models'; +import { UserDataController, User, RoleCodeController, RolesCodeValue, RolesCode, UserSessionDataController, UserSession, AccountStatus } from '../../database/models'; import { LoggerBase } from '../logger'; import { errorBody } from './common.error.handler'; import { BCHelperLib } from '../../libs/utilities/bc.helpers'; @@ -38,24 +36,23 @@ export interface MiddlewareValidationResult { code?: number; success: boolean; } + /** * @description JWT bases passport auth middleware manager * @export class ApplicationAuthMiddleware */ export class ApplicationAuthMiddleware extends LoggerBase { private static shareInstance: any; - app: any = express(); - public static get shared(): ApplicationAuthMiddleware { return this.shareInstance || (this.shareInstance = new this()); } - + app: any = express(); constructor() { super(); } async validateUser(user: User, payload?: any): Promise { - return {success: true}; + return { success: true }; } /** @@ -67,16 +64,96 @@ export class ApplicationAuthMiddleware extends LoggerBase { // Get algorithm and public key const { algorithm, certificate } = await BCHelperLib.getCertificate(); const options: StrategyOptions = { - jwtFromRequest : ExtractJwt.fromAuthHeaderAsBearerToken(), + jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), algorithms: [algorithm], secretOrKey: certificate, passReqToCallback: true, ignoreExpiration: true }; const jwtStrategy = new JwtStrategy(options, this._tokenCallback.bind(this)); - passport.use(jwtStrategy); } + /** + * @desc Given a keycloak token, creates a user + * @param payload JWT Data from keycloak + * @param api API information + * @returns New user object + */ + async createUserFromPayload(payload: any): Promise { + const { preferred_username, email, family_name, given_name, client_roles } = payload; + // Creating new user with keycloak roles + const user = UserDataController.shared.create(); + user.email = email || preferred_username; + user.preferredUsername = preferred_username || email; + user.firstName = given_name || 'Test'; + user.lastName = family_name || 'User'; + user.roles = await this.getRoleCodes(client_roles); + user.accountStatus = AccountStatus.active; + await UserDataController.shared.saveInDB(user); + return user; + } + async updateUserFromPayload(payload: any, user: User) { + const { preferred_username, email, family_name, given_name } = payload; + user.preferredUsername = preferred_username || user.preferredUsername; + user.email = email || user.email; + user.firstName = given_name; + user.lastName = family_name; + user.accountStatus = AccountStatus.active; + await UserDataController.shared.saveInDB(user); + return user; + } + + /** + * @desc Creates a session entry for a given user + * @param user Currently authenticated user + * @param expiry keycloak token expiry + * @returns updated user session + */ + async createUserSession(user: any, expiry: number) { + const newSession: UserSession = UserSessionDataController.shared.create(); + newSession.lastActiveAt = new Date(); + newSession.lastLoginAt = new Date(); + newSession.user = user; + newSession.tokenExpiry = new Date((expiry * 1000) || Date.now() + AppConfig.sessionLifeTime); + + // Saving new session and users + await UserSessionDataController.shared.saveInDB(newSession); + await UserDataController.shared.setCurrentSession(user, newSession); + return user; + } + + /** + * @desc parses user information from token and returns relevant user + * @param preferred_username Users preferred username from jwt + * @param email Users email address from jwt + * @param api url pointing to api + * @returns authenticated user + */ + async getUserInformationFromPayload(preferred_username: string, email: string, api: string): Promise { + ApplicationAuthMiddleware.logger.info(`${api} | Fetching using preferred_username => ${preferred_username}`); + let user: User = await UserDataController.shared.fetchOne({ preferredUsername: preferred_username }); + if (!user && email) { + ApplicationAuthMiddleware.logger.info(`${api} | Fetching using email => ${email}`); + user = await UserDataController.shared.fetchOne({ email: email }); + } + return user; + } + + /** + * Create list of user roles in invasives-db matching the keycloak roles + * @param roleCodes array of keycloak roles + * @returns Correlated rolecodes + */ + async getRoleCodes(roleCodes: string[]): Promise> { + const roles = []; + if (roleCodes.includes('admin')) { roles.push(await RoleCodeController.shared.getCode(RolesCodeValue.admin)); } + if (roleCodes.includes('dataEditor')) { roles.push(await RoleCodeController.shared.getCode(RolesCodeValue.editor)); } + if (roleCodes.includes('superUser')) { roles.push(await RoleCodeController.shared.getCode(RolesCodeValue.superUser)); } + if (roleCodes.includes('inspectAppOfficer')) { roles.push(await RoleCodeController.shared.getCode(RolesCodeValue.inspectAppOfficer)); } + if (roleCodes.includes('inspectAppAdmin')) { roles.push(await RoleCodeController.shared.getCode(RolesCodeValue.inspectAppAdmin)); } + if (roles.length === 0) { roles.push(await RoleCodeController.shared.getCode(RolesCodeValue.viewer)); } + return roles; + } /** * @description Passport token callback @@ -87,120 +164,79 @@ export class ApplicationAuthMiddleware extends LoggerBase { async _tokenCallback(request: express.Request, payload: any, done: any) { const { errorWithCode } = BCHelperLib.getCommonUtility(); try { - // Get user info - // ApplicationAuthMiddleware.logger.info(`Payload: ${JSON.stringify(payload)}`); - ApplicationAuthMiddleware.logger.disableInfoLog = true; - const { preferred_username, email, family_name, given_name} = payload; - assert((preferred_username || email), `Email And Preferred user name is missing from payload\n ${JSON.stringify(payload)}`); - - const api = `${request.originalUrl}[${request.method}]`; + // ApplicationAuthMiddleware.logger.info(`Payload: ${JSON.stringify(payload)}`); + ApplicationAuthMiddleware.logger.disableInfoLog = true; + const { preferred_username, email, client_roles } = payload; + assert((preferred_username || email), `Email And Preferred user name is missing from payload\n ${JSON.stringify(payload)}`); + const api = `${request.originalUrl}[${request.method}]`; - // Check token expiry - const expiry = (payload.exp * 1000); - if (expiry && expiry < Date.now()) { - const message = `Token is expired for user ${email}`; - ApplicationAuthMiddleware.logger.info(message); - if (!AppConfig.bypassTokenExpiry) { + // Check token expiry + const expiry = (payload.exp * 1000); + if (expiry && expiry < Date.now()) { + const message = `Token is expired for user ${email}`; + ApplicationAuthMiddleware.logger.info(message); + if (!AppConfig.bypassTokenExpiry) { ApplicationAuthMiddleware.logger.error(`Token Expire for user: ${email}`); ApplicationAuthMiddleware.logger.error(`Expiry: ${expiry}: current: ${Date.now()}, Diff: ${expiry - Date.now()}`); done(errorWithCode(401, message), false); return; - } else { - ApplicationAuthMiddleware.logger.info(`${api} | Allowing user in dev env`); - } - } - - // Get user - ApplicationAuthMiddleware.logger.info(`${api} | Getting user`); - let user: User; - if (preferred_username && email) { - ApplicationAuthMiddleware.logger.info(`${api} | Fetching using preferred_username => ${preferred_username}`); - user = await UserDataController.shared.fetchOne({preferredUsername: preferred_username}); - if (!user) { - ApplicationAuthMiddleware.logger.info(`${api} | Fetching using email => ${email}`); - user = await UserDataController.shared.fetchOne({email: email}); - } - } else { - ApplicationAuthMiddleware.logger.info(`${api} | Fetching user by preferredUsername: ${preferred_username} - - *** - \n[ISSUE]*: possibly email is missing from payload: \n${JSON.stringify(payload)}`); - user = await UserDataController.shared.fetchOne({ preferredUsername: preferred_username}); - } - if (!user) { - ApplicationAuthMiddleware.logger.info(`${api} | Creating new user with email and username: {${email}, ${preferred_username}}`); - - // Creating new user with viewer role - user = UserDataController.shared.create(); - user.email = email || preferred_username; - user.preferredUsername = preferred_username || email; - user.firstName = given_name || 'Test'; - user.lastName = family_name || 'User'; - user.roles = [await RoleCodeController.shared.getCode(RolesCodeValue.viewer)]; - user.accountStatus = AccountStatus.active; - await UserDataController.shared.saveInDB(user); - } else { - // Update user data if require - if (user.preferredUsername !== preferred_username || user.email !== email) { - user.preferredUsername = preferred_username || user.preferredUsername; - user.email = email || user.email; - user.firstName = given_name; - user.lastName = family_name; - user.accountStatus = AccountStatus.active; + } + } + ApplicationAuthMiddleware.logger.info(`${api} | Getting user`); + let user: User = await this.getUserInformationFromPayload(preferred_username, email, api); + if (user) { + // check current keycloak roles, update if they've changed + const keycloakRoles = await this.getRoleCodes(client_roles); + if (JSON.stringify(user.roles) !== JSON.stringify(keycloakRoles)) { + user.roles = keycloakRoles; await UserDataController.shared.saveInDB(user); - } - } - - ApplicationAuthMiddleware.logger.info(`${api} | User {${user.email}, ${user.preferredUsername} and status: ${user.accountStatus}}`); + } + if (user.preferredUsername !== preferred_username || user.email !== email) { + user = await this.updateUserFromPayload(payload, user); + } + } else { + ApplicationAuthMiddleware.logger.info(`${api} | Creating new user with email and username: {${email}, ${preferred_username}}`); + user = await this.createUserFromPayload(payload); + } - // Checking and creating status - if (user.accountStatus === undefined) { - user.accountStatus = AccountStatus.active; - await UserDataController.shared.saveInDB(user); - ApplicationAuthMiddleware.logger.info(`Creating status for user: ${user.email}`); - } + // Checking and creating status + if (user.accountStatus === undefined) { + user.accountStatus = AccountStatus.active; + await UserDataController.shared.saveInDB(user); + ApplicationAuthMiddleware.logger.info(`Creating status for user: ${user.email}`); + } - // Checking user validity {for subclasses} - const valid: MiddlewareValidationResult = await this.validateUser(user, payload); - if (!valid.success) { - done(errorWithCode(valid.message, valid.code), false); - return; - } + // Checking user validity {for subclasses} + const valid: MiddlewareValidationResult = await this.validateUser(user, payload); + if (!valid.success) { + done(errorWithCode(valid.message, valid.code), false); + return; + } - // Session Handling - const session = await UserDataController.shared.getCurrentSession(user); - if (session) { - // Check session validity - if (session.tokenExpiry < new Date() && !AppConfig.bypassTokenExpiry) { - const message = `${api} | Session Expire (app internal) for user ${user.email} at ${session.tokenExpiry}`; - ApplicationAuthMiddleware.logger.error(message); - // Remove current - await UserDataController.shared.removeSession(user); - // Fail Session + // Session Handling + const session = await UserDataController.shared.getCurrentSession(user); + if (session) { + if (session.tokenExpiry < new Date() && !AppConfig.bypassTokenExpiry) { + const message = `${api} | Session Expired (app internal) for user ${user.email} at ${session.tokenExpiry}`; + ApplicationAuthMiddleware.logger.error(message); + await UserDataController.shared.removeSession(user); done(errorWithCode(message, 401)); - } else { + } else { ApplicationAuthMiddleware.logger.info(`${api} | Session Active for user ${user.email}`); - session.lastActiveAt = new Date(); - session.tokenExpiry = new Date((payload.exp * 1000) || Date.now() + AppConfig.sessionLifeTime); - request['appUser'] = user; - done(null, user); - } - } else { - // Create New Session - ApplicationAuthMiddleware.logger.info(`${api} | Create New Session for user ${user.email}`); - const newSession: UserSession = UserSessionDataController.shared.create(); - newSession.lastActiveAt = new Date(); - newSession.lastLoginAt = new Date(); - newSession.user = user; - newSession.tokenExpiry = new Date((payload.exp * 1000) || Date.now() + AppConfig.sessionLifeTime); - - // Saving new session and users - await UserSessionDataController.shared.saveInDB(newSession); - await UserDataController.shared.setCurrentSession(user, newSession); - done(null, user); - } - - } catch (excp) { - ApplicationAuthMiddleware.logger.error(`_tokenCallback | Exception | ${excp}`); - done(excp, false); + session.lastActiveAt = new Date(); + session.tokenExpiry = new Date((payload.exp * 1000) || Date.now() + AppConfig.sessionLifeTime); + request['appUser'] = user; + done(null, user); + } + } else { + // Create New Session + ApplicationAuthMiddleware.logger.info(`${api} | Create New Session for user ${user.email}`); + user = await this.createUserSession(user, payload.exp); + done(null, user); + } + } catch (ex) { + ApplicationAuthMiddleware.logger.error(`_tokenCallback | Exception | ${ex}`); + done(ex, false); } } } @@ -218,33 +254,24 @@ export const authenticationMiddleWare = async (): Promise => { * @description Role authentication middleware * @export closure roleAuthenticationMiddleware * @param RolesCodeValue[] roles + * @returns middleware callback */ export const roleAuthenticationMiddleware = (roles: RolesCodeValue[]) => { - // Returning Middleware callback return (req: express.Request, resp: express.Response, next: any) => { try { - LoggerBase.logger.disableInfoLog = true; assert(req.user || req['appUser'], 'Invalid request parameters: [No User]'); const user: User = req.user || req['appUser']; const userRoles = user.roles; const acceptedRoles = userRoles.filter((item: RolesCode) => { const rc: RolesCodeValue = item.code as RolesCodeValue; const value = roles.includes(rc); - if (value) { - LoggerBase.logger.info(`roleAuthenticationMiddleware | => Role Accepted ${rc}`); - } else { - LoggerBase.logger.error(`roleAuthenticationMiddleware | => Role Not Accepted ${rc}`); - } - LoggerBase.logger.disableInfoLog = false; + LoggerBase.logger.info(`roleAuthenticationMiddleware | => Role ${value ? '' : 'not '}Accepted ${rc}`); return value; }); - LoggerBase.logger.disableInfoLog = false; return acceptedRoles.length > 0 ? next() : (resp.status(401).json(errorBody('User role is not authorized to access this route', [{ acceptedRoles: `Accepted roles are [${roles}]` }]))); - } catch (excp) { - LoggerBase.logger.disableInfoLog = false; resp.status(500).json(errorBody(`${excp}`, [excp])); } }; @@ -254,37 +281,22 @@ export const roleAuthenticationMiddleware = (roles: RolesCodeValue[]) => { * @description Admin only route check authentication middleware * @export closure adminOnlyRoute */ -export const adminOnlyRoute = () => { - return roleAuthenticationMiddleware([RolesCodeValue.admin]); -}; - +export const adminOnlyRoute = () => ( roleAuthenticationMiddleware([RolesCodeValue.admin]) ); /** - * @description Route For Editor + * @desc Route For Editor * @export closure writerOnlyRoute */ -export const writerOnlyRoute = () => { - return roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.editor]); -}; - +export const writerOnlyRoute = () => (roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.editor]) ); /** - * @description Route For all editors including inspect app admin + * @desc Route For all editors including inspect app admin * @export closure editorOnlyRoute */ -export const editorOnlyRoute = () => { - return roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.inspectAppAdmin, RolesCodeValue.editor]); -}; - +export const editorOnlyRoute = () => ( roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.inspectAppAdmin, RolesCodeValue.editor]) ); /** - * @description Route for inspect app editor + * @desc Route for inspect app editor */ -export const inspectAppEditorRoute = () => { - return roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.inspectAppAdmin, RolesCodeValue.inspectAppOfficer]); -}; - +export const inspectAppEditorRoute = () => ( roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.inspectAppAdmin, RolesCodeValue.inspectAppOfficer]) ); /** - * @description Route for inspect app admin + * @desc Route for inspect app admin */ -export const inspectAppAdminRoute = () => { - return roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.inspectAppAdmin]); -}; -// ----------------------------------------------------------------------------------------------------------- +export const inspectAppAdminRoute = () => ( roleAuthenticationMiddleware([RolesCodeValue.admin, RolesCodeValue.inspectAppAdmin])); From 083106debf11b8849ef7258dc62bc519b9d53d79 Mon Sep 17 00:00:00 2001 From: Dave <62899351+davidclaveau@users.noreply.github.com> Date: Tue, 13 Feb 2024 11:37:12 -0800 Subject: [PATCH 193/194] remove the migration to add 'e.g.' to closest_city (#1178) --- .../1706036892274-closestCityNameChangeInWaterBody.ts | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts diff --git a/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts b/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts deleted file mode 100644 index 3c6aa9384..000000000 --- a/api/api_sources/sources/database/migrations/1706036892274-closestCityNameChangeInWaterBody.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { MigrationInterface, QueryRunner } from 'typeorm'; - -export class ClosestCityNameChangeInWaterBody1706036892274 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`UPDATE "water_body" SET "closest_city" = CONCAT('e.g. ', "closest_city")`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`UPDATE "water_body" SET "closest_city" = SUBSTRING("closest_city", 6)`); - } -} From 042b07b3b385c03da79246176ee3c75208980e72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 06:37:23 +0000 Subject: [PATCH 194/194] Bump axios from 0.21.1 to 0.28.0 in /api/api_sources Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.28.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.28.0/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.28.0) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- api/api_sources/package-lock.json | 41 +++++++++++++++++++++++++------ api/api_sources/package.json | 2 +- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/api/api_sources/package-lock.json b/api/api_sources/package-lock.json index 4b86943d8..4f7cd3b92 100644 --- a/api/api_sources/package-lock.json +++ b/api/api_sources/package-lock.json @@ -997,11 +997,38 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.0.tgz", + "integrity": "sha512-Tu7NYoGY4Yoc7I+Npf9HhUMtEEpV7ZiLH9yndTCoNhcpBH0kwcvFbzYN9/u5QKI5A6uefjsNNWaz5olJVYS62Q==", "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } } }, "bach": { @@ -3419,9 +3446,9 @@ } }, "follow-redirects": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", - "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" }, "for-in": { "version": "1.0.2", diff --git a/api/api_sources/package.json b/api/api_sources/package.json index 3adf131f6..9bbb450e4 100644 --- a/api/api_sources/package.json +++ b/api/api_sources/package.json @@ -79,7 +79,7 @@ }, "dependencies": { "@bcgov/nodejs-common-utils": "0.0.16", - "axios": "^0.21.1", + "axios": "^0.28.0", "bcryptjs": "^2.4.3", "body-parser": "^1.19.0", "chai": "^4.2.0",