@budibase/server 2.3.18-alpha.9 → 2.3.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/aws-sdk.ts +1 -1
- package/builder/assets/index.4488f38d.css +6 -0
- package/builder/assets/{index.956858d3.js → index.527a5fcb.js} +415 -422
- package/builder/index.html +2 -2
- package/coverage/clover.xml +11774 -0
- package/coverage/coverage-final.json +284 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +1031 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +190 -0
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +247 -0
- package/coverage/lcov-report/src/api/controllers/application.ts.html +1987 -0
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +301 -0
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +940 -0
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +148 -0
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +442 -0
- package/coverage/lcov-report/src/api/controllers/component.ts.html +259 -0
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +1135 -0
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +262 -0
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +694 -0
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +472 -0
- package/coverage/lcov-report/src/api/controllers/index.html +431 -0
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +124 -0
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +226 -0
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +211 -0
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +127 -0
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +619 -0
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +130 -0
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +310 -0
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +206 -0
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +499 -0
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +253 -0
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +97 -0
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +121 -0
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +136 -0
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +385 -0
- package/coverage/lcov-report/src/api/controllers/public/index.html +191 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +181 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +191 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +124 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +202 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +178 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +163 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +181 -0
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +145 -0
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +328 -0
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +253 -0
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +325 -0
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +220 -0
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +373 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +379 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +157 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +403 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +146 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +586 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +712 -0
- package/coverage/lcov-report/src/api/controllers/query/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +1000 -0
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +235 -0
- package/coverage/lcov-report/src/api/controllers/role.ts.html +397 -0
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +370 -0
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +2305 -0
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +931 -0
- package/coverage/lcov-report/src/api/controllers/row/index.html +206 -0
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +541 -0
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +1609 -0
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1678 -0
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +595 -0
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +556 -0
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +463 -0
- package/coverage/lcov-report/src/api/controllers/script.ts.html +121 -0
- package/coverage/lcov-report/src/api/controllers/static/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +679 -0
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +649 -0
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +1153 -0
- package/coverage/lcov-report/src/api/controllers/table/index.html +176 -0
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +514 -0
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +658 -0
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1273 -0
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +214 -0
- package/coverage/lcov-report/src/api/controllers/user.ts.html +634 -0
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +214 -0
- package/coverage/lcov-report/src/api/controllers/view/index.html +161 -0
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +661 -0
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +580 -0
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +694 -0
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +385 -0
- package/coverage/lcov-report/src/api/index.html +116 -0
- package/coverage/lcov-report/src/api/index.ts.html +352 -0
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +112 -0
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +121 -0
- package/coverage/lcov-report/src/api/routes/application.ts.html +256 -0
- package/coverage/lcov-report/src/api/routes/auth.ts.html +109 -0
- package/coverage/lcov-report/src/api/routes/automation.ts.html +346 -0
- package/coverage/lcov-report/src/api/routes/backup.ts.html +127 -0
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +139 -0
- package/coverage/lcov-report/src/api/routes/component.ts.html +127 -0
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +265 -0
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +145 -0
- package/coverage/lcov-report/src/api/routes/dev.ts.html +199 -0
- package/coverage/lcov-report/src/api/routes/index.html +551 -0
- package/coverage/lcov-report/src/api/routes/index.ts.html +298 -0
- package/coverage/lcov-report/src/api/routes/integration.ts.html +133 -0
- package/coverage/lcov-report/src/api/routes/layout.ts.html +133 -0
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +199 -0
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +127 -0
- package/coverage/lcov-report/src/api/routes/permission.ts.html +208 -0
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +151 -0
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +673 -0
- package/coverage/lcov-report/src/api/routes/public/index.html +191 -0
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +493 -0
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +116 -0
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +340 -0
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +313 -0
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +598 -0
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +586 -0
- package/coverage/lcov-report/src/api/routes/public/tests/index.html +116 -0
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +169 -0
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +511 -0
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +238 -0
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +116 -0
- package/coverage/lcov-report/src/api/routes/query.ts.html +268 -0
- package/coverage/lcov-report/src/api/routes/role.ts.html +157 -0
- package/coverage/lcov-report/src/api/routes/routing.ts.html +127 -0
- package/coverage/lcov-report/src/api/routes/row.ts.html +883 -0
- package/coverage/lcov-report/src/api/routes/screen.ts.html +154 -0
- package/coverage/lcov-report/src/api/routes/script.ts.html +115 -0
- package/coverage/lcov-report/src/api/routes/static.ts.html +280 -0
- package/coverage/lcov-report/src/api/routes/table.ts.html +595 -0
- package/coverage/lcov-report/src/api/routes/templates.ts.html +133 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +550 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +131 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +367 -0
- package/coverage/lcov-report/src/api/routes/user.ts.html +238 -0
- package/coverage/lcov-report/src/api/routes/utils/index.html +116 -0
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +805 -0
- package/coverage/lcov-report/src/api/routes/view.ts.html +187 -0
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +166 -0
- package/coverage/lcov-report/src/app.ts.html +424 -0
- package/coverage/lcov-report/src/automations/actions.ts.html +316 -0
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +562 -0
- package/coverage/lcov-report/src/automations/bullboard.ts.html +199 -0
- package/coverage/lcov-report/src/automations/index.html +191 -0
- package/coverage/lcov-report/src/automations/index.ts.html +163 -0
- package/coverage/lcov-report/src/automations/logging/index.html +116 -0
- package/coverage/lcov-report/src/automations/logging/index.ts.html +199 -0
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +319 -0
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +382 -0
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +217 -0
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +349 -0
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +397 -0
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +370 -0
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +325 -0
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +394 -0
- package/coverage/lcov-report/src/automations/steps/index.html +371 -0
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +409 -0
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +241 -0
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +499 -0
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +664 -0
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +355 -0
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +256 -0
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +340 -0
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +439 -0
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +223 -0
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +403 -0
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +116 -0
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +265 -0
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +196 -0
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +193 -0
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +206 -0
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +130 -0
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +196 -0
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +220 -0
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +220 -0
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +208 -0
- package/coverage/lcov-report/src/automations/triggers.ts.html +553 -0
- package/coverage/lcov-report/src/automations/utils.ts.html +886 -0
- package/coverage/lcov-report/src/constants/index.html +146 -0
- package/coverage/lcov-report/src/constants/index.ts.html +697 -0
- package/coverage/lcov-report/src/constants/layouts.ts.html +526 -0
- package/coverage/lcov-report/src/constants/screens.ts.html +229 -0
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +2059 -0
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +541 -0
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +427 -0
- package/coverage/lcov-report/src/db/defaultData/index.html +176 -0
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +403 -0
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +559 -0
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +526 -0
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +250 -0
- package/coverage/lcov-report/src/db/index.html +176 -0
- package/coverage/lcov-report/src/db/index.ts.html +133 -0
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1417 -0
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +265 -0
- package/coverage/lcov-report/src/db/linkedRows/index.html +161 -0
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +736 -0
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +460 -0
- package/coverage/lcov-report/src/db/newid.ts.html +100 -0
- package/coverage/lcov-report/src/db/utils.ts.html +913 -0
- package/coverage/lcov-report/src/definitions/automations.ts.html +184 -0
- package/coverage/lcov-report/src/definitions/index.html +116 -0
- package/coverage/lcov-report/src/environment.ts.html +472 -0
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +259 -0
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +172 -0
- package/coverage/lcov-report/src/events/index.html +161 -0
- package/coverage/lcov-report/src/events/index.ts.html +100 -0
- package/coverage/lcov-report/src/events/utils.ts.html +319 -0
- package/coverage/lcov-report/src/index.html +191 -0
- package/coverage/lcov-report/src/index.ts.html +133 -0
- package/coverage/lcov-report/src/integrations/airtable.ts.html +529 -0
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +415 -0
- package/coverage/lcov-report/src/integrations/base/index.html +161 -0
- package/coverage/lcov-report/src/integrations/base/query.ts.html +139 -0
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +2017 -0
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +691 -0
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +121 -0
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +484 -0
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +745 -0
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +646 -0
- package/coverage/lcov-report/src/integrations/firebase.ts.html +646 -0
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1315 -0
- package/coverage/lcov-report/src/integrations/index.html +371 -0
- package/coverage/lcov-report/src/integrations/index.ts.html +460 -0
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1012 -0
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +1999 -0
- package/coverage/lcov-report/src/integrations/mysql.ts.html +979 -0
- package/coverage/lcov-report/src/integrations/oracle.ts.html +1387 -0
- package/coverage/lcov-report/src/integrations/postgres.ts.html +1087 -0
- package/coverage/lcov-report/src/integrations/queries/index.html +116 -0
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +328 -0
- package/coverage/lcov-report/src/integrations/redis.ts.html +550 -0
- package/coverage/lcov-report/src/integrations/rest.ts.html +1372 -0
- package/coverage/lcov-report/src/integrations/s3.ts.html +862 -0
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +376 -0
- package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +85 -0
- package/coverage/lcov-report/src/integrations/tests/index.html +116 -0
- package/coverage/lcov-report/src/integrations/utils.ts.html +1036 -0
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +145 -0
- package/coverage/lcov-report/src/middleware/authorized.ts.html +472 -0
- package/coverage/lcov-report/src/middleware/builder.ts.html +361 -0
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +508 -0
- package/coverage/lcov-report/src/middleware/index.html +236 -0
- package/coverage/lcov-report/src/middleware/joi-validator.ts.html +205 -0
- package/coverage/lcov-report/src/middleware/publicApi.ts.html +148 -0
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +283 -0
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +121 -0
- package/coverage/lcov-report/src/middleware/utils.ts.html +112 -0
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +166 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +163 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +206 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +172 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +226 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +166 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +532 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +286 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +146 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +265 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +232 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +724 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +106 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +235 -0
- package/coverage/lcov-report/src/migrations/functions/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +130 -0
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +520 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +94 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +127 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +115 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +169 -0
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +124 -0
- package/coverage/lcov-report/src/migrations/index.html +116 -0
- package/coverage/lcov-report/src/migrations/index.ts.html +430 -0
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +205 -0
- package/coverage/lcov-report/src/migrations/tests/index.html +131 -0
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +283 -0
- package/coverage/lcov-report/src/sdk/app/applications/index.html +146 -0
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +106 -0
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +268 -0
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +136 -0
- package/coverage/lcov-report/src/sdk/app/automations/index.html +131 -0
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +214 -0
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +91 -0
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +604 -0
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +640 -0
- package/coverage/lcov-report/src/sdk/app/backups/index.html +176 -0
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +112 -0
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +292 -0
- package/coverage/lcov-report/src/sdk/app/datasources/datasources.ts.html +562 -0
- package/coverage/lcov-report/src/sdk/app/datasources/index.html +131 -0
- package/coverage/lcov-report/src/sdk/app/datasources/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/app/queries/index.html +131 -0
- package/coverage/lcov-report/src/sdk/app/queries/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/app/queries/queries.ts.html +235 -0
- package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +265 -0
- package/coverage/lcov-report/src/sdk/app/rows/index.html +146 -0
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +106 -0
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +139 -0
- package/coverage/lcov-report/src/sdk/app/tables/index.html +116 -0
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +274 -0
- package/coverage/lcov-report/src/sdk/index.html +116 -0
- package/coverage/lcov-report/src/sdk/index.ts.html +151 -0
- package/coverage/lcov-report/src/sdk/users/index.html +131 -0
- package/coverage/lcov-report/src/sdk/users/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +277 -0
- package/coverage/lcov-report/src/sdk/utils/index.html +116 -0
- package/coverage/lcov-report/src/sdk/utils/index.ts.html +133 -0
- package/coverage/lcov-report/src/startup.ts.html +484 -0
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +2032 -0
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +127 -0
- package/coverage/lcov-report/src/tests/utilities/index.html +161 -0
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +118 -0
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +856 -0
- package/coverage/lcov-report/src/threads/automation.ts.html +1555 -0
- package/coverage/lcov-report/src/threads/index.html +161 -0
- package/coverage/lcov-report/src/threads/index.ts.html +418 -0
- package/coverage/lcov-report/src/threads/query.ts.html +1000 -0
- package/coverage/lcov-report/src/threads/utils.ts.html +373 -0
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +94 -0
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +151 -0
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +343 -0
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +547 -0
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +601 -0
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +206 -0
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +100 -0
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +277 -0
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +142 -0
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +193 -0
- package/coverage/lcov-report/src/utilities/global.ts.html +499 -0
- package/coverage/lcov-report/src/utilities/index.html +251 -0
- package/coverage/lcov-report/src/utilities/index.ts.html +487 -0
- package/coverage/lcov-report/src/utilities/redis.ts.html +343 -0
- package/coverage/lcov-report/src/utilities/routing/index.html +116 -0
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +181 -0
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +146 -0
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +922 -0
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +373 -0
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +373 -0
- package/coverage/lcov-report/src/utilities/schema.ts.html +508 -0
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +169 -0
- package/coverage/lcov-report/src/utilities/security.ts.html +280 -0
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +131 -0
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +325 -0
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +139 -0
- package/coverage/lcov-report/src/utilities/users.ts.html +232 -0
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +646 -0
- package/coverage/lcov-report/src/watch.ts.html +196 -0
- package/coverage/lcov-report/src/websocket.ts.html +163 -0
- package/coverage/lcov.info +21777 -0
- package/dist/api/controllers/automation.js +2 -11
- package/dist/api/controllers/query/index.js +0 -2
- package/dist/api/controllers/row/ExternalRequest.js +2 -4
- package/dist/api/controllers/row/external.js +1 -12
- package/dist/api/controllers/table/external.js +8 -8
- package/dist/api/index.js +21 -1
- package/dist/api/routes/automation.js +1 -1
- package/dist/api/routes/public/tests/utils.js +33 -0
- package/dist/app.js +1 -7
- package/dist/constants/index.js +24 -4
- package/dist/db/defaultData/datasource_bb_default.js +5 -6
- package/dist/db/linkedRows/LinkController.js +8 -9
- package/dist/integrations/base/sql.js +3 -10
- package/dist/middleware/authorized.js +3 -5
- package/dist/middleware/builder.js +3 -6
- package/dist/package.json +8 -12
- package/dist/sdk/app/backups/exports.js +2 -8
- package/dist/sdk/app/datasources/datasources.js +0 -3
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/redis.js +0 -2
- package/jest.config.ts +22 -34
- package/package.json +9 -13
- package/specs/openapi.json +6 -6
- package/specs/openapi.yaml +3 -3
- package/specs/resources/query.js +1 -1
- package/specs/resources/table.js +1 -1
- package/src/api/controllers/automation.ts +2 -13
- package/src/api/controllers/query/import/tests/index.spec.js +1 -1
- package/src/api/controllers/query/index.ts +0 -2
- package/src/api/controllers/row/ExternalRequest.ts +2 -6
- package/src/api/controllers/row/external.ts +1 -13
- package/src/api/controllers/table/external.ts +2 -3
- package/src/api/index.ts +22 -3
- package/src/api/routes/automation.ts +1 -1
- package/src/api/routes/public/applications.ts +1 -0
- package/src/api/routes/public/tests/compare.spec.js +1 -1
- package/src/api/routes/public/tests/users.spec.js +1 -1
- package/src/api/routes/public/tests/utils.ts +8 -25
- package/src/api/routes/tests/__snapshots__/datasource.spec.ts.snap +1 -1
- package/src/api/routes/tests/analytics.spec.js +1 -4
- package/src/api/routes/tests/apikeys.spec.js +1 -1
- package/src/api/routes/tests/application.spec.ts +6 -20
- package/src/api/routes/tests/auth.spec.js +2 -2
- package/src/api/routes/tests/automation.spec.js +2 -6
- package/src/api/routes/tests/backup.spec.ts +14 -4
- package/src/api/routes/tests/{cloud.seq.spec.ts → cloud.spec.ts} +15 -11
- package/src/api/routes/tests/component.spec.js +1 -1
- package/src/api/routes/tests/datasource.spec.ts +3 -20
- package/src/api/routes/tests/dev.spec.js +1 -1
- package/src/api/routes/tests/integration.spec.js +1 -1
- package/src/api/routes/tests/layout.spec.js +1 -1
- package/src/api/routes/tests/metadata.spec.js +1 -1
- package/src/api/routes/tests/misc.spec.js +1 -1
- package/src/api/routes/tests/permissions.spec.js +1 -4
- package/src/api/routes/tests/{query.seq.spec.js → query.spec.js} +1 -22
- package/src/api/routes/tests/role.spec.js +1 -6
- package/src/api/routes/tests/routing.spec.js +1 -1
- package/src/api/routes/tests/row.spec.js +3 -11
- package/src/api/routes/tests/screen.spec.js +1 -1
- package/src/api/routes/tests/static.spec.js +13 -2
- package/src/api/routes/tests/table.spec.js +1 -1
- package/src/api/routes/tests/templates.spec.js +1 -1
- package/src/api/routes/tests/user.spec.js +12 -11
- package/src/api/routes/tests/utilities/TestFunctions.ts +2 -25
- package/src/api/routes/tests/utilities/index.ts +3 -5
- package/src/api/routes/tests/view.spec.js +1 -4
- package/src/api/routes/tests/webhook.spec.js +2 -11
- package/src/app.ts +1 -10
- package/src/automations/tests/automation.spec.js +4 -4
- package/src/automations/tests/bash.spec.js +1 -1
- package/src/automations/tests/discord.spec.js +1 -1
- package/src/automations/tests/executeQuery.spec.js +3 -2
- package/src/automations/tests/executeScript.spec.js +1 -1
- package/src/automations/tests/outgoingWebhook.spec.js +1 -1
- package/src/automations/tests/sendSmtpEmail.spec.js +1 -1
- package/src/automations/tests/serverLog.spec.js +1 -1
- package/src/automations/tests/updateRow.spec.js +1 -1
- package/src/automations/tests/zapier.spec.js +1 -1
- package/src/constants/index.ts +23 -1
- package/src/db/defaultData/datasource_bb_default.ts +10 -6
- package/src/db/linkedRows/LinkController.ts +1 -2
- package/src/db/tests/linkController.spec.js +1 -4
- package/src/db/tests/linkTests.spec.js +1 -1
- package/src/integrations/base/sql.ts +5 -15
- package/src/integrations/oracle.ts +1 -1
- package/src/integrations/tests/couchdb.spec.ts +2 -0
- package/src/middleware/authorized.ts +4 -6
- package/src/middleware/builder.ts +3 -8
- package/src/migrations/functions/tests/appUrls.spec.js +1 -1
- package/src/migrations/functions/tests/syncQuotas.spec.js +1 -1
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +1 -1
- package/src/migrations/tests/index.spec.ts +20 -13
- package/src/sdk/app/backups/exports.ts +2 -8
- package/src/sdk/app/datasources/datasources.ts +0 -3
- package/src/tests/jestEnv.ts +11 -8
- package/src/tests/jestSetup.ts +7 -9
- package/src/tests/utilities/TestConfiguration.ts +92 -166
- package/src/tests/utilities/structures.ts +2 -16
- package/src/utilities/redis.ts +0 -2
- package/tsconfig.build.json +0 -1
- package/builder/assets/blankScreenPreview.72634dd1.png +0 -0
- package/builder/assets/index.22724f34.css +0 -6
- package/builder/assets/listScreenPreview.599c0aae.png +0 -0
- package/dist/ddApm.js +0 -11
- package/dist/elasticApm.js +0 -14
- package/dist/utilities/retry.js +0 -30
- package/jest-testcontainers-config.js +0 -8
- package/scripts/load/create-many-apps.js +0 -24
- package/scripts/load/create-many-rows.js +0 -30
- package/scripts/load/utils.js +0 -66
- package/scripts/test.sh +0 -12
- package/src/api/routes/tests/environmentVariables.spec.ts +0 -144
- package/src/ddApm.ts +0 -7
- package/src/elasticApm.ts +0 -10
- package/src/integration-test/postgres.spec.ts +0 -762
- package/src/tests/logging.ts +0 -34
- package/src/utilities/retry.ts +0 -18
|
@@ -0,0 +1,2032 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/tests/utilities/TestConfiguration.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/tests/utilities</a> TestConfiguration.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">92.52% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>198/214</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">84.4% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>92/109</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">92.85% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>52/56</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">92.48% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>197/213</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
+
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
+
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
+
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
+
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
+
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
+
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
+
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
+
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
+
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
+
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
+
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
+
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
+
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
+
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
+
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
+
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
+
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
+
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
+
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
+
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
+
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
+
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
+
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
+
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
+
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
+
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
+
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
+
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
+
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
+
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
+
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
+
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
+
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
+
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
+
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
+
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
+
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
+
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
+
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
+
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
+
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
+
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
+
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
+
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
+
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
+
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
+
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
+
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
+
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
+
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
+
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
+
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
+
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
+
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
+
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
+
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
+
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
+
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
+
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
+
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
+
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
+
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
+
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
+
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
+
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
+
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
+
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
+
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
+
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
+
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
+
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
+
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
+
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
+
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
+
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
+
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
+
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
+
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
+
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
+
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
+
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
+
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
+
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
+
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
+
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
+
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
+
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
+
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
+
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
+
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
+
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
+
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
+
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
+
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
+
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
+
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
+
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
+
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
+
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
+
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
+
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
+
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
+
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
+
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
+
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
+
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
+
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
+
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
+
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
+
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
+
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
+
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
+
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
+
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
+
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
+
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
+
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
+
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
+
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
+
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
+
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
+
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
+
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
+
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
+
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
+
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
+
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
+
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
+
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
+
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
+
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
+
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
+
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
+
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
+
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
+
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
+
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
+
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
+
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
+
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
+
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
+
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
+
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
+
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
+
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
+
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
+
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
+
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
+
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
+
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
+
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
+
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
+
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
+
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
+
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
+
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
+
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
+
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
+
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
+
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
+
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
+
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
+
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
+
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
+
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
+
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
+
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
+
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
+
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
+
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
+
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
+
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
+
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
+
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
+
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
+
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
+
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
+
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
+
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
+
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
+
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
+
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
+
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
+
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
+
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
+
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
+
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
+
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
+
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
+
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
+
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
+
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
+
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
+
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
+
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
+
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
+
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
+
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
+
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
+
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
+
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
+
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
+
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
+
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
+
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
+
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
+
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
+
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
+
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
+
<a name='L650'></a><a href='#L650'>650</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">55x</span>
|
|
716
|
+
<span class="cline-any cline-neutral"> </span>
|
|
717
|
+
<span class="cline-any cline-neutral"> </span>
|
|
718
|
+
<span class="cline-any cline-yes">55x</span>
|
|
719
|
+
<span class="cline-any cline-yes">55x</span>
|
|
720
|
+
<span class="cline-any cline-neutral"> </span>
|
|
721
|
+
<span class="cline-any cline-neutral"> </span>
|
|
722
|
+
<span class="cline-any cline-yes">55x</span>
|
|
723
|
+
<span class="cline-any cline-neutral"> </span>
|
|
724
|
+
<span class="cline-any cline-yes">55x</span>
|
|
725
|
+
<span class="cline-any cline-yes">55x</span>
|
|
726
|
+
<span class="cline-any cline-yes">55x</span>
|
|
727
|
+
<span class="cline-any cline-neutral"> </span>
|
|
728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
729
|
+
<span class="cline-any cline-neutral"> </span>
|
|
730
|
+
<span class="cline-any cline-neutral"> </span>
|
|
731
|
+
<span class="cline-any cline-neutral"> </span>
|
|
732
|
+
<span class="cline-any cline-neutral"> </span>
|
|
733
|
+
<span class="cline-any cline-neutral"> </span>
|
|
734
|
+
<span class="cline-any cline-neutral"> </span>
|
|
735
|
+
<span class="cline-any cline-neutral"> </span>
|
|
736
|
+
<span class="cline-any cline-neutral"> </span>
|
|
737
|
+
<span class="cline-any cline-neutral"> </span>
|
|
738
|
+
<span class="cline-any cline-yes">55x</span>
|
|
739
|
+
<span class="cline-any cline-neutral"> </span>
|
|
740
|
+
<span class="cline-any cline-neutral"> </span>
|
|
741
|
+
<span class="cline-any cline-neutral"> </span>
|
|
742
|
+
<span class="cline-any cline-neutral"> </span>
|
|
743
|
+
<span class="cline-any cline-neutral"> </span>
|
|
744
|
+
<span class="cline-any cline-neutral"> </span>
|
|
745
|
+
<span class="cline-any cline-neutral"> </span>
|
|
746
|
+
<span class="cline-any cline-neutral"> </span>
|
|
747
|
+
<span class="cline-any cline-neutral"> </span>
|
|
748
|
+
<span class="cline-any cline-neutral"> </span>
|
|
749
|
+
<span class="cline-any cline-yes">55x</span>
|
|
750
|
+
<span class="cline-any cline-yes">55x</span>
|
|
751
|
+
<span class="cline-any cline-yes">55x</span>
|
|
752
|
+
<span class="cline-any cline-yes">55x</span>
|
|
753
|
+
<span class="cline-any cline-yes">55x</span>
|
|
754
|
+
<span class="cline-any cline-yes">55x</span>
|
|
755
|
+
<span class="cline-any cline-yes">55x</span>
|
|
756
|
+
<span class="cline-any cline-neutral"> </span>
|
|
757
|
+
<span class="cline-any cline-yes">55x</span>
|
|
758
|
+
<span class="cline-any cline-yes">55x</span>
|
|
759
|
+
<span class="cline-any cline-yes">55x</span>
|
|
760
|
+
<span class="cline-any cline-yes">55x</span>
|
|
761
|
+
<span class="cline-any cline-yes">55x</span>
|
|
762
|
+
<span class="cline-any cline-neutral"> </span>
|
|
763
|
+
<span class="cline-any cline-neutral"> </span>
|
|
764
|
+
<span class="cline-any cline-neutral"> </span>
|
|
765
|
+
<span class="cline-any cline-neutral"> </span>
|
|
766
|
+
<span class="cline-any cline-neutral"> </span>
|
|
767
|
+
<span class="cline-any cline-neutral"> </span>
|
|
768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
769
|
+
<span class="cline-any cline-neutral"> </span>
|
|
770
|
+
<span class="cline-any cline-neutral"> </span>
|
|
771
|
+
<span class="cline-any cline-neutral"> </span>
|
|
772
|
+
<span class="cline-any cline-neutral"> </span>
|
|
773
|
+
<span class="cline-any cline-neutral"> </span>
|
|
774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
775
|
+
<span class="cline-any cline-neutral"> </span>
|
|
776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
777
|
+
<span class="cline-any cline-neutral"> </span>
|
|
778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
779
|
+
<span class="cline-any cline-neutral"> </span>
|
|
780
|
+
<span class="cline-any cline-neutral"> </span>
|
|
781
|
+
<span class="cline-any cline-yes">53x</span>
|
|
782
|
+
<span class="cline-any cline-neutral"> </span>
|
|
783
|
+
<span class="cline-any cline-yes">30x</span>
|
|
784
|
+
<span class="cline-any cline-yes">30x</span>
|
|
785
|
+
<span class="cline-any cline-neutral"> </span>
|
|
786
|
+
<span class="cline-any cline-yes">30x</span>
|
|
787
|
+
<span class="cline-any cline-yes">30x</span>
|
|
788
|
+
<span class="cline-any cline-neutral"> </span>
|
|
789
|
+
<span class="cline-any cline-yes">23x</span>
|
|
790
|
+
<span class="cline-any cline-neutral"> </span>
|
|
791
|
+
<span class="cline-any cline-yes">53x</span>
|
|
792
|
+
<span class="cline-any cline-yes">53x</span>
|
|
793
|
+
<span class="cline-any cline-neutral"> </span>
|
|
794
|
+
<span class="cline-any cline-neutral"> </span>
|
|
795
|
+
<span class="cline-any cline-neutral"> </span>
|
|
796
|
+
<span class="cline-any cline-yes">29x</span>
|
|
797
|
+
<span class="cline-any cline-neutral"> </span>
|
|
798
|
+
<span class="cline-any cline-neutral"> </span>
|
|
799
|
+
<span class="cline-any cline-neutral"> </span>
|
|
800
|
+
<span class="cline-any cline-yes">2x</span>
|
|
801
|
+
<span class="cline-any cline-neutral"> </span>
|
|
802
|
+
<span class="cline-any cline-neutral"> </span>
|
|
803
|
+
<span class="cline-any cline-neutral"> </span>
|
|
804
|
+
<span class="cline-any cline-yes">1x</span>
|
|
805
|
+
<span class="cline-any cline-neutral"> </span>
|
|
806
|
+
<span class="cline-any cline-neutral"> </span>
|
|
807
|
+
<span class="cline-any cline-neutral"> </span>
|
|
808
|
+
<span class="cline-any cline-yes">380x</span>
|
|
809
|
+
<span class="cline-any cline-neutral"> </span>
|
|
810
|
+
<span class="cline-any cline-neutral"> </span>
|
|
811
|
+
<span class="cline-any cline-neutral"> </span>
|
|
812
|
+
<span class="cline-any cline-yes">4x</span>
|
|
813
|
+
<span class="cline-any cline-neutral"> </span>
|
|
814
|
+
<span class="cline-any cline-neutral"> </span>
|
|
815
|
+
<span class="cline-any cline-neutral"> </span>
|
|
816
|
+
<span class="cline-any cline-yes">7x</span>
|
|
817
|
+
<span class="cline-any cline-neutral"> </span>
|
|
818
|
+
<span class="cline-any cline-neutral"> </span>
|
|
819
|
+
<span class="cline-any cline-neutral"> </span>
|
|
820
|
+
<span class="cline-any cline-neutral"> </span>
|
|
821
|
+
<span class="cline-any cline-neutral"> </span>
|
|
822
|
+
<span class="cline-any cline-neutral"> </span>
|
|
823
|
+
<span class="cline-any cline-neutral"> </span>
|
|
824
|
+
<span class="cline-any cline-neutral"> </span>
|
|
825
|
+
<span class="cline-any cline-yes">1071x</span>
|
|
826
|
+
<span class="cline-any cline-yes">347x</span>
|
|
827
|
+
<span class="cline-any cline-neutral"> </span>
|
|
828
|
+
<span class="cline-any cline-yes">1071x</span>
|
|
829
|
+
<span class="cline-any cline-neutral"> </span>
|
|
830
|
+
<span class="cline-any cline-yes">1071x</span>
|
|
831
|
+
<span class="cline-any cline-yes">461x</span>
|
|
832
|
+
<span class="cline-any cline-yes">461x</span>
|
|
833
|
+
<span class="cline-any cline-neutral"> </span>
|
|
834
|
+
<span class="cline-any cline-neutral"> </span>
|
|
835
|
+
<span class="cline-any cline-yes">610x</span>
|
|
836
|
+
<span class="cline-any cline-neutral"> </span>
|
|
837
|
+
<span class="cline-any cline-neutral"> </span>
|
|
838
|
+
<span class="cline-any cline-neutral"> </span>
|
|
839
|
+
<span class="cline-any cline-neutral"> </span>
|
|
840
|
+
<span class="cline-any cline-neutral"> </span>
|
|
841
|
+
<span class="cline-any cline-neutral"> </span>
|
|
842
|
+
<span class="cline-any cline-neutral"> </span>
|
|
843
|
+
<span class="cline-any cline-neutral"> </span>
|
|
844
|
+
<span class="cline-any cline-yes">276x</span>
|
|
845
|
+
<span class="cline-any cline-yes">54x</span>
|
|
846
|
+
<span class="cline-any cline-neutral"> </span>
|
|
847
|
+
<span class="cline-any cline-yes">276x</span>
|
|
848
|
+
<span class="cline-any cline-yes">276x</span>
|
|
849
|
+
<span class="cline-any cline-yes">276x</span>
|
|
850
|
+
<span class="cline-any cline-neutral"> </span>
|
|
851
|
+
<span class="cline-any cline-yes">276x</span>
|
|
852
|
+
<span class="cline-any cline-neutral"> </span>
|
|
853
|
+
<span class="cline-any cline-neutral"> </span>
|
|
854
|
+
<span class="cline-any cline-neutral"> </span>
|
|
855
|
+
<span class="cline-any cline-yes">51x</span>
|
|
856
|
+
<span class="cline-any cline-no"> </span>
|
|
857
|
+
<span class="cline-any cline-neutral"> </span>
|
|
858
|
+
<span class="cline-any cline-yes">51x</span>
|
|
859
|
+
<span class="cline-any cline-yes">30x</span>
|
|
860
|
+
<span class="cline-any cline-neutral"> </span>
|
|
861
|
+
<span class="cline-any cline-yes">51x</span>
|
|
862
|
+
<span class="cline-any cline-yes">520x</span>
|
|
863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
865
|
+
<span class="cline-any cline-neutral"> </span>
|
|
866
|
+
<span class="cline-any cline-neutral"> </span>
|
|
867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
868
|
+
<span class="cline-any cline-neutral"> </span>
|
|
869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
870
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
871
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
872
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
873
|
+
<span class="cline-any cline-neutral"> </span>
|
|
874
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
875
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
876
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
877
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
878
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
879
|
+
<span class="cline-any cline-neutral"> </span>
|
|
880
|
+
<span class="cline-any cline-neutral"> </span>
|
|
881
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
882
|
+
<span class="cline-any cline-yes">117x</span>
|
|
883
|
+
<span class="cline-any cline-neutral"> </span>
|
|
884
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
885
|
+
<span class="cline-any cline-yes">1010x</span>
|
|
886
|
+
<span class="cline-any cline-yes">1007x</span>
|
|
887
|
+
<span class="cline-any cline-neutral"> </span>
|
|
888
|
+
<span class="cline-any cline-neutral"> </span>
|
|
889
|
+
<span class="cline-any cline-neutral"> </span>
|
|
890
|
+
<span class="cline-any cline-neutral"> </span>
|
|
891
|
+
<span class="cline-any cline-neutral"> </span>
|
|
892
|
+
<span class="cline-any cline-neutral"> </span>
|
|
893
|
+
<span class="cline-any cline-neutral"> </span>
|
|
894
|
+
<span class="cline-any cline-neutral"> </span>
|
|
895
|
+
<span class="cline-any cline-neutral"> </span>
|
|
896
|
+
<span class="cline-any cline-neutral"> </span>
|
|
897
|
+
<span class="cline-any cline-neutral"> </span>
|
|
898
|
+
<span class="cline-any cline-neutral"> </span>
|
|
899
|
+
<span class="cline-any cline-neutral"> </span>
|
|
900
|
+
<span class="cline-any cline-yes">325x</span>
|
|
901
|
+
<span class="cline-any cline-neutral"> </span>
|
|
902
|
+
<span class="cline-any cline-yes">325x</span>
|
|
903
|
+
<span class="cline-any cline-yes">325x</span>
|
|
904
|
+
<span class="cline-any cline-neutral"> </span>
|
|
905
|
+
<span class="cline-any cline-yes">82x</span>
|
|
906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
907
|
+
<span class="cline-any cline-yes">325x</span>
|
|
908
|
+
<span class="cline-any cline-neutral"> </span>
|
|
909
|
+
<span class="cline-any cline-neutral"> </span>
|
|
910
|
+
<span class="cline-any cline-neutral"> </span>
|
|
911
|
+
<span class="cline-any cline-neutral"> </span>
|
|
912
|
+
<span class="cline-any cline-neutral"> </span>
|
|
913
|
+
<span class="cline-any cline-neutral"> </span>
|
|
914
|
+
<span class="cline-any cline-neutral"> </span>
|
|
915
|
+
<span class="cline-any cline-yes">325x</span>
|
|
916
|
+
<span class="cline-any cline-neutral"> </span>
|
|
917
|
+
<span class="cline-any cline-neutral"> </span>
|
|
918
|
+
<span class="cline-any cline-neutral"> </span>
|
|
919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
920
|
+
<span class="cline-any cline-yes">325x</span>
|
|
921
|
+
<span class="cline-any cline-yes">292x</span>
|
|
922
|
+
<span class="cline-any cline-neutral"> </span>
|
|
923
|
+
<span class="cline-any cline-yes">33x</span>
|
|
924
|
+
<span class="cline-any cline-neutral"> </span>
|
|
925
|
+
<span class="cline-any cline-yes">325x</span>
|
|
926
|
+
<span class="cline-any cline-yes">2x</span>
|
|
927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
928
|
+
<span class="cline-any cline-yes">323x</span>
|
|
929
|
+
<span class="cline-any cline-neutral"> </span>
|
|
930
|
+
<span class="cline-any cline-yes">325x</span>
|
|
931
|
+
<span class="cline-any cline-yes">325x</span>
|
|
932
|
+
<span class="cline-any cline-neutral"> </span>
|
|
933
|
+
<span class="cline-any cline-neutral"> </span>
|
|
934
|
+
<span class="cline-any cline-neutral"> </span>
|
|
935
|
+
<span class="cline-any cline-neutral"> </span>
|
|
936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
938
|
+
<span class="cline-any cline-neutral"> </span>
|
|
939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
942
|
+
<span class="cline-any cline-neutral"> </span>
|
|
943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
944
|
+
<span class="cline-any cline-neutral"> </span>
|
|
945
|
+
<span class="cline-any cline-neutral"> </span>
|
|
946
|
+
<span class="cline-any cline-neutral"> </span>
|
|
947
|
+
<span class="cline-any cline-yes">16x</span>
|
|
948
|
+
<span class="cline-any cline-yes">16x</span>
|
|
949
|
+
<span class="cline-any cline-neutral"> </span>
|
|
950
|
+
<span class="cline-any cline-neutral"> </span>
|
|
951
|
+
<span class="cline-any cline-neutral"> </span>
|
|
952
|
+
<span class="cline-any cline-neutral"> </span>
|
|
953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
954
|
+
<span class="cline-any cline-neutral"> </span>
|
|
955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
956
|
+
<span class="cline-any cline-neutral"> </span>
|
|
957
|
+
<span class="cline-any cline-yes">16x</span>
|
|
958
|
+
<span class="cline-any cline-yes">16x</span>
|
|
959
|
+
<span class="cline-any cline-neutral"> </span>
|
|
960
|
+
<span class="cline-any cline-neutral"> </span>
|
|
961
|
+
<span class="cline-any cline-neutral"> </span>
|
|
962
|
+
<span class="cline-any cline-neutral"> </span>
|
|
963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
965
|
+
<span class="cline-any cline-yes">32x</span>
|
|
966
|
+
<span class="cline-any cline-yes">32x</span>
|
|
967
|
+
<span class="cline-any cline-yes">32x</span>
|
|
968
|
+
<span class="cline-any cline-yes">32x</span>
|
|
969
|
+
<span class="cline-any cline-no"> </span>
|
|
970
|
+
<span class="cline-any cline-neutral"> </span>
|
|
971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
972
|
+
<span class="cline-any cline-yes">32x</span>
|
|
973
|
+
<span class="cline-any cline-yes">32x</span>
|
|
974
|
+
<span class="cline-any cline-neutral"> </span>
|
|
975
|
+
<span class="cline-any cline-neutral"> </span>
|
|
976
|
+
<span class="cline-any cline-neutral"> </span>
|
|
977
|
+
<span class="cline-any cline-neutral"> </span>
|
|
978
|
+
<span class="cline-any cline-neutral"> </span>
|
|
979
|
+
<span class="cline-any cline-yes">32x</span>
|
|
980
|
+
<span class="cline-any cline-neutral"> </span>
|
|
981
|
+
<span class="cline-any cline-neutral"> </span>
|
|
982
|
+
<span class="cline-any cline-neutral"> </span>
|
|
983
|
+
<span class="cline-any cline-neutral"> </span>
|
|
984
|
+
<span class="cline-any cline-yes">32x</span>
|
|
985
|
+
<span class="cline-any cline-neutral"> </span>
|
|
986
|
+
<span class="cline-any cline-neutral"> </span>
|
|
987
|
+
<span class="cline-any cline-neutral"> </span>
|
|
988
|
+
<span class="cline-any cline-neutral"> </span>
|
|
989
|
+
<span class="cline-any cline-yes">32x</span>
|
|
990
|
+
<span class="cline-any cline-neutral"> </span>
|
|
991
|
+
<span class="cline-any cline-neutral"> </span>
|
|
992
|
+
<span class="cline-any cline-neutral"> </span>
|
|
993
|
+
<span class="cline-any cline-yes">32x</span>
|
|
994
|
+
<span class="cline-any cline-yes">32x</span>
|
|
995
|
+
<span class="cline-any cline-neutral"> </span>
|
|
996
|
+
<span class="cline-any cline-neutral"> </span>
|
|
997
|
+
<span class="cline-any cline-yes">32x</span>
|
|
998
|
+
<span class="cline-any cline-yes">32x</span>
|
|
999
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1002
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1010
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1011
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1016
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1020
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1021
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1022
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1031
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1032
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
+
<span class="cline-any cline-yes">237x</span>
|
|
1034
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1040
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1043
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1044
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1046
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1055
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1061
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1062
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1064
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1065
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1067
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1069
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1072
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1073
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1075
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1081
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1082
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1083
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1085
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1086
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1087
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1088
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1089
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1090
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1091
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1092
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1093
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1094
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1095
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
+
<span class="cline-any cline-yes">288x</span>
|
|
1097
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1098
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
+
<span class="cline-any cline-yes">296x</span>
|
|
1102
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
+
<span class="cline-any cline-yes">296x</span>
|
|
1104
|
+
<span class="cline-any cline-yes">296x</span>
|
|
1105
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1106
|
+
<span class="cline-any cline-yes">296x</span>
|
|
1107
|
+
<span class="cline-any cline-yes">296x</span>
|
|
1108
|
+
<span class="cline-any cline-yes">296x</span>
|
|
1109
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1110
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1111
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1112
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1113
|
+
<span class="cline-any cline-no"> </span>
|
|
1114
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1117
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
+
<span class="cline-any cline-no"> </span>
|
|
1119
|
+
<span class="cline-any cline-no"> </span>
|
|
1120
|
+
<span class="cline-any cline-no"> </span>
|
|
1121
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1123
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1124
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1125
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
+
<span class="cline-any cline-yes">123x</span>
|
|
1127
|
+
<span class="cline-any cline-yes">123x</span>
|
|
1128
|
+
<span class="cline-any cline-yes">123x</span>
|
|
1129
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1131
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
+
<span class="cline-any cline-yes">119x</span>
|
|
1133
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1134
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1135
|
+
<span class="cline-any cline-yes">119x</span>
|
|
1136
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1137
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1140
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1141
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1142
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1145
|
+
<span class="cline-any cline-no"> </span>
|
|
1146
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1147
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1148
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1149
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1150
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1151
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1157
|
+
<span class="cline-any cline-yes">29x</span>
|
|
1158
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1161
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1162
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1163
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1165
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1166
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1167
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1170
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1171
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1172
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
+
<span class="cline-any cline-yes">71x</span>
|
|
1177
|
+
<span class="cline-any cline-no"> </span>
|
|
1178
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
+
<span class="cline-any cline-yes">71x</span>
|
|
1180
|
+
<span class="cline-any cline-yes">71x</span>
|
|
1181
|
+
<span class="cline-any cline-yes">71x</span>
|
|
1182
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1185
|
+
<span class="cline-any cline-yes">11x</span>
|
|
1186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1190
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1191
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1192
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1193
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1196
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1198
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1199
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1200
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1202
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1203
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1205
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1208
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1209
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1211
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1218
|
+
<span class="cline-any cline-no"> </span>
|
|
1219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1220
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1222
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1223
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1224
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1231
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1232
|
+
<span class="cline-any cline-no"> </span>
|
|
1233
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1234
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1235
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1242
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1243
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1244
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
+
<span class="cline-any cline-no"> </span>
|
|
1246
|
+
<span class="cline-any cline-no"> </span>
|
|
1247
|
+
<span class="cline-any cline-no"> </span>
|
|
1248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
+
<span class="cline-any cline-no"> </span>
|
|
1250
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1258
|
+
<span class="cline-any cline-no"> </span>
|
|
1259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1261
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1268
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1269
|
+
<span class="cline-any cline-yes">67x</span>
|
|
1270
|
+
<span class="cline-any cline-yes">67x</span>
|
|
1271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1280
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1284
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1295
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1303
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1313
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1341
|
+
<span class="cline-any cline-yes">37x</span>
|
|
1342
|
+
<span class="cline-any cline-no"> </span>
|
|
1343
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
+
<span class="cline-any cline-yes">37x</span>
|
|
1345
|
+
<span class="cline-any cline-yes">37x</span>
|
|
1346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1352
|
+
<span class="cline-any cline-yes">27x</span>
|
|
1353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1358
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1359
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1364
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { mocks } from "@budibase/backend-core/tests"
|
|
1365
|
+
|
|
1366
|
+
// init the licensing mock
|
|
1367
|
+
import * as pro from "@budibase/pro"
|
|
1368
|
+
mocks.licenses.init(pro)
|
|
1369
|
+
|
|
1370
|
+
// use unlimited license by default
|
|
1371
|
+
mocks.licenses.useUnlimited()
|
|
1372
|
+
|
|
1373
|
+
import { init as dbInit } from "../../db"
|
|
1374
|
+
dbInit()
|
|
1375
|
+
import env from "../../environment"
|
|
1376
|
+
import {
|
|
1377
|
+
basicTable,
|
|
1378
|
+
basicRow,
|
|
1379
|
+
basicRole,
|
|
1380
|
+
basicAutomation,
|
|
1381
|
+
basicDatasource,
|
|
1382
|
+
basicQuery,
|
|
1383
|
+
basicScreen,
|
|
1384
|
+
basicLayout,
|
|
1385
|
+
basicWebhook,
|
|
1386
|
+
TENANT_ID,
|
|
1387
|
+
} from "./structures"
|
|
1388
|
+
import {
|
|
1389
|
+
constants,
|
|
1390
|
+
tenancy,
|
|
1391
|
+
sessions,
|
|
1392
|
+
cache,
|
|
1393
|
+
context,
|
|
1394
|
+
db as dbCore,
|
|
1395
|
+
encryption,
|
|
1396
|
+
auth,
|
|
1397
|
+
roles,
|
|
1398
|
+
} from "@budibase/backend-core"
|
|
1399
|
+
import * as controllers from "./controllers"
|
|
1400
|
+
import { cleanup } from "../../utilities/fileSystem"
|
|
1401
|
+
import newid from "../../db/newid"
|
|
1402
|
+
import { generateUserMetadataID } from "../../db/utils"
|
|
1403
|
+
import { startup } from "../../startup"
|
|
1404
|
+
const supertest = require("supertest")
|
|
1405
|
+
|
|
1406
|
+
const GLOBAL_USER_ID = "us_uuid1"
|
|
1407
|
+
const EMAIL = "babs@babs.com"
|
|
1408
|
+
const FIRSTNAME = "Barbara"
|
|
1409
|
+
const LASTNAME = "Barbington"
|
|
1410
|
+
const CSRF_TOKEN = "e3727778-7af0-4226-b5eb-f43cbe60a306"
|
|
1411
|
+
|
|
1412
|
+
class TestConfiguration {
|
|
1413
|
+
server: any
|
|
1414
|
+
request: any
|
|
1415
|
+
started: boolean
|
|
1416
|
+
appId: string | null
|
|
1417
|
+
allApps: any[]
|
|
1418
|
+
app: any
|
|
1419
|
+
prodApp: any
|
|
1420
|
+
prodAppId: any
|
|
1421
|
+
user: any
|
|
1422
|
+
globalUserId: any
|
|
1423
|
+
userMetadataId: any
|
|
1424
|
+
table: any
|
|
1425
|
+
linkedTable: any
|
|
1426
|
+
automation: any
|
|
1427
|
+
datasource: any
|
|
1428
|
+
|
|
1429
|
+
constructor(openServer = true) {
|
|
1430
|
+
if (openServer) {
|
|
1431
|
+
// use a random port because it doesn't matter
|
|
1432
|
+
env.PORT = "0"
|
|
1433
|
+
this.server = require("../../app").default
|
|
1434
|
+
// we need the request for logging in, involves cookies, hard to fake
|
|
1435
|
+
this.request = supertest(this.server)
|
|
1436
|
+
this.started = true
|
|
1437
|
+
} else {
|
|
1438
|
+
this.started = false
|
|
1439
|
+
}
|
|
1440
|
+
this.appId = null
|
|
1441
|
+
this.allApps = []
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
getRequest() {
|
|
1445
|
+
return this.request
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
getApp() {
|
|
1449
|
+
return this.app
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
getProdApp() {
|
|
1453
|
+
return this.prodApp
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
getAppId() {
|
|
1457
|
+
return this.appId
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
getProdAppId() {
|
|
1461
|
+
return this.prodAppId
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
getUserDetails() {
|
|
1465
|
+
return {
|
|
1466
|
+
globalId: GLOBAL_USER_ID,
|
|
1467
|
+
email: EMAIL,
|
|
1468
|
+
firstName: FIRSTNAME,
|
|
1469
|
+
lastName: LASTNAME,
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
async doInContext(appId: string | null, task: any) {
|
|
1474
|
+
if (!appId) {
|
|
1475
|
+
appId = this.appId
|
|
1476
|
+
}
|
|
1477
|
+
return tenancy.doInTenant(TENANT_ID, () => {
|
|
1478
|
+
// check if already in a context
|
|
1479
|
+
if (context.getAppId() == null && appId !== null) {
|
|
1480
|
+
return context.doInAppContext(appId, async () => {
|
|
1481
|
+
return task()
|
|
1482
|
+
})
|
|
1483
|
+
} else {
|
|
1484
|
+
return task()
|
|
1485
|
+
}
|
|
1486
|
+
})
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
// SETUP / TEARDOWN
|
|
1490
|
+
|
|
1491
|
+
// use a new id as the name to avoid name collisions
|
|
1492
|
+
async init(appName = newid()) {
|
|
1493
|
+
if (!this.started) {
|
|
1494
|
+
await startup()
|
|
1495
|
+
}
|
|
1496
|
+
this.user = await this.globalUser()
|
|
1497
|
+
this.globalUserId = this.user._id
|
|
1498
|
+
this.userMetadataId = generateUserMetadataID(this.globalUserId)
|
|
1499
|
+
|
|
1500
|
+
return this.createApp(appName)
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
end() {
|
|
1504
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this) {
|
|
1505
|
+
<span class="cstat-no" title="statement not covered" > return</span>
|
|
1506
|
+
}
|
|
1507
|
+
if (this.server) {
|
|
1508
|
+
this.server.close()
|
|
1509
|
+
}
|
|
1510
|
+
if (this.allApps) {
|
|
1511
|
+
cleanup(this.allApps.map(app => app.appId))
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
// UTILS
|
|
1516
|
+
|
|
1517
|
+
async _req(body: any, params: any, controlFunc: any) {
|
|
1518
|
+
// create a fake request ctx
|
|
1519
|
+
const request: any = {}
|
|
1520
|
+
const appId = this.appId
|
|
1521
|
+
request.appId = appId
|
|
1522
|
+
// fake cookies, we don't need them
|
|
1523
|
+
request.cookies = { set: <span class="fstat-no" title="function not covered" >() => {</span>}, get: <span class="fstat-no" title="function not covered" >() => {</span>} }
|
|
1524
|
+
request.config = { jwtSecret: env.JWT_SECRET }
|
|
1525
|
+
request.user = { appId, tenantId: TENANT_ID }
|
|
1526
|
+
request.query = {}
|
|
1527
|
+
request.request = {
|
|
1528
|
+
body,
|
|
1529
|
+
}
|
|
1530
|
+
if (params) {
|
|
1531
|
+
request.params = params
|
|
1532
|
+
}
|
|
1533
|
+
return this.doInContext(appId, async () => {
|
|
1534
|
+
await controlFunc(request)
|
|
1535
|
+
return request.body
|
|
1536
|
+
})
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
// USER / AUTH
|
|
1540
|
+
async globalUser({
|
|
1541
|
+
id = GLOBAL_USER_ID,
|
|
1542
|
+
firstName = FIRSTNAME,
|
|
1543
|
+
lastName = LASTNAME,
|
|
1544
|
+
builder = true,
|
|
1545
|
+
admin = false,
|
|
1546
|
+
email = EMAIL,
|
|
1547
|
+
roles,
|
|
1548
|
+
}: any = {}) {
|
|
1549
|
+
return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) => {
|
|
1550
|
+
let existing
|
|
1551
|
+
try {
|
|
1552
|
+
existing = await db.get(id)
|
|
1553
|
+
} catch (err) {
|
|
1554
|
+
existing = { email }
|
|
1555
|
+
}
|
|
1556
|
+
const user = {
|
|
1557
|
+
_id: id,
|
|
1558
|
+
...existing,
|
|
1559
|
+
roles: roles || {},
|
|
1560
|
+
tenantId: TENANT_ID,
|
|
1561
|
+
firstName,
|
|
1562
|
+
lastName,
|
|
1563
|
+
}
|
|
1564
|
+
await sessions.createASession(id, {
|
|
1565
|
+
sessionId: "sessionid",
|
|
1566
|
+
tenantId: TENANT_ID,
|
|
1567
|
+
csrfToken: CSRF_TOKEN,
|
|
1568
|
+
})
|
|
1569
|
+
if (builder) {
|
|
1570
|
+
user.builder = { global: true }
|
|
1571
|
+
} else {
|
|
1572
|
+
user.builder = { global: false }
|
|
1573
|
+
}
|
|
1574
|
+
if (admin) {
|
|
1575
|
+
user.admin = { global: true }
|
|
1576
|
+
} else {
|
|
1577
|
+
user.admin = { global: false }
|
|
1578
|
+
}
|
|
1579
|
+
const resp = await db.put(user)
|
|
1580
|
+
return {
|
|
1581
|
+
_rev: resp._rev,
|
|
1582
|
+
...user,
|
|
1583
|
+
}
|
|
1584
|
+
})
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
async createUser(
|
|
1588
|
+
id = null,
|
|
1589
|
+
firstName = FIRSTNAME,
|
|
1590
|
+
lastName = LASTNAME,
|
|
1591
|
+
email = EMAIL,
|
|
1592
|
+
builder = true,
|
|
1593
|
+
admin = false,
|
|
1594
|
+
roles = {}
|
|
1595
|
+
) {
|
|
1596
|
+
const globalId = !id ? `us_${Math.random()}` : `us_${id}`
|
|
1597
|
+
const resp = await this.globalUser({
|
|
1598
|
+
id: globalId,
|
|
1599
|
+
firstName,
|
|
1600
|
+
lastName,
|
|
1601
|
+
email,
|
|
1602
|
+
builder,
|
|
1603
|
+
admin,
|
|
1604
|
+
roles,
|
|
1605
|
+
})
|
|
1606
|
+
await cache.user.invalidateUser(globalId)
|
|
1607
|
+
return {
|
|
1608
|
+
...resp,
|
|
1609
|
+
globalId,
|
|
1610
|
+
}
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
async login({ roleId, userId, builder, prodApp = <span class="branch-0 cbranch-no" title="branch not covered" >false </span>}: any = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
1614
|
+
const appId = prodApp ? this.prodAppId : this.appId
|
|
1615
|
+
return context.doInAppContext(appId, async () => {
|
|
1616
|
+
userId = !userId ? `us_uuid1` : userId
|
|
1617
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.request) {
|
|
1618
|
+
<span class="cstat-no" title="statement not covered" > throw "Server has not been opened, cannot login."</span>
|
|
1619
|
+
}
|
|
1620
|
+
// make sure the user exists in the global DB
|
|
1621
|
+
if (roleId !== roles.BUILTIN_ROLE_IDS.PUBLIC) {
|
|
1622
|
+
await this.globalUser({
|
|
1623
|
+
id: userId,
|
|
1624
|
+
builder,
|
|
1625
|
+
roles: { [this.prodAppId]: roleId },
|
|
1626
|
+
})
|
|
1627
|
+
}
|
|
1628
|
+
await sessions.createASession(userId, {
|
|
1629
|
+
sessionId: "sessionid",
|
|
1630
|
+
tenantId: TENANT_ID,
|
|
1631
|
+
})
|
|
1632
|
+
// have to fake this
|
|
1633
|
+
const authObj = {
|
|
1634
|
+
userId,
|
|
1635
|
+
sessionId: "sessionid",
|
|
1636
|
+
tenantId: TENANT_ID,
|
|
1637
|
+
}
|
|
1638
|
+
const app = {
|
|
1639
|
+
roleId: roleId,
|
|
1640
|
+
appId,
|
|
1641
|
+
}
|
|
1642
|
+
const authToken = auth.jwt.sign(authObj, env.JWT_SECRET)
|
|
1643
|
+
const appToken = auth.jwt.sign(app, env.JWT_SECRET)
|
|
1644
|
+
|
|
1645
|
+
// returning necessary request headers
|
|
1646
|
+
await cache.user.invalidateUser(userId)
|
|
1647
|
+
return {
|
|
1648
|
+
Accept: "application/json",
|
|
1649
|
+
Cookie: [
|
|
1650
|
+
`${constants.Cookie.Auth}=${authToken}`,
|
|
1651
|
+
`${constants.Cookie.CurrentApp}=${appToken}`,
|
|
1652
|
+
],
|
|
1653
|
+
[constants.Header.APP_ID]: appId,
|
|
1654
|
+
}
|
|
1655
|
+
})
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1658
|
+
defaultHeaders(extras = {}) {
|
|
1659
|
+
const authObj = {
|
|
1660
|
+
userId: GLOBAL_USER_ID,
|
|
1661
|
+
sessionId: "sessionid",
|
|
1662
|
+
tenantId: TENANT_ID,
|
|
1663
|
+
}
|
|
1664
|
+
const app = {
|
|
1665
|
+
roleId: roles.BUILTIN_ROLE_IDS.ADMIN,
|
|
1666
|
+
appId: this.appId,
|
|
1667
|
+
}
|
|
1668
|
+
const authToken = auth.jwt.sign(authObj, env.JWT_SECRET)
|
|
1669
|
+
const appToken = auth.jwt.sign(app, env.JWT_SECRET)
|
|
1670
|
+
const headers: any = {
|
|
1671
|
+
Accept: "application/json",
|
|
1672
|
+
Cookie: [
|
|
1673
|
+
`${constants.Cookie.Auth}=${authToken}`,
|
|
1674
|
+
`${constants.Cookie.CurrentApp}=${appToken}`,
|
|
1675
|
+
],
|
|
1676
|
+
[constants.Header.CSRF_TOKEN]: CSRF_TOKEN,
|
|
1677
|
+
...extras,
|
|
1678
|
+
}
|
|
1679
|
+
if (this.appId) {
|
|
1680
|
+
headers[constants.Header.APP_ID] = this.appId
|
|
1681
|
+
}
|
|
1682
|
+
return headers
|
|
1683
|
+
}
|
|
1684
|
+
|
|
1685
|
+
publicHeaders({ prodApp = true } = {}) {
|
|
1686
|
+
const appId = prodApp ? this.prodAppId : this.appId
|
|
1687
|
+
|
|
1688
|
+
const headers: any = {
|
|
1689
|
+
Accept: "application/json",
|
|
1690
|
+
}
|
|
1691
|
+
if (appId) {
|
|
1692
|
+
headers[constants.Header.APP_ID] = appId
|
|
1693
|
+
}
|
|
1694
|
+
return headers
|
|
1695
|
+
}
|
|
1696
|
+
|
|
1697
|
+
async roleHeaders({
|
|
1698
|
+
email = EMAIL,
|
|
1699
|
+
roleId = <span class="branch-0 cbranch-no" title="branch not covered" >roles.BUILTIN_ROLE_IDS.ADMIN,</span>
|
|
1700
|
+
builder = false,
|
|
1701
|
+
prodApp = true,
|
|
1702
|
+
} = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
1703
|
+
return this.login({ email, roleId, builder, prodApp })
|
|
1704
|
+
}
|
|
1705
|
+
|
|
1706
|
+
// API
|
|
1707
|
+
|
|
1708
|
+
async generateApiKey(userId = GLOBAL_USER_ID) {
|
|
1709
|
+
return tenancy.doWithGlobalDB(TENANT_ID, async (db: any) => {
|
|
1710
|
+
const id = dbCore.generateDevInfoID(userId)
|
|
1711
|
+
let devInfo
|
|
1712
|
+
try {
|
|
1713
|
+
devInfo = await db.get(id)
|
|
1714
|
+
} catch (err) {
|
|
1715
|
+
devInfo = { _id: id, userId }
|
|
1716
|
+
}
|
|
1717
|
+
devInfo.apiKey = encryption.encrypt(
|
|
1718
|
+
`${TENANT_ID}${dbCore.SEPARATOR}${newid()}`
|
|
1719
|
+
)
|
|
1720
|
+
await db.put(devInfo)
|
|
1721
|
+
return devInfo.apiKey
|
|
1722
|
+
})
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
// APP
|
|
1726
|
+
async createApp(appName: string) {
|
|
1727
|
+
// create dev app
|
|
1728
|
+
// clear any old app
|
|
1729
|
+
this.appId = null
|
|
1730
|
+
await context.doInAppContext(null, async () => {
|
|
1731
|
+
this.app = await this._req(
|
|
1732
|
+
{ name: appName },
|
|
1733
|
+
null,
|
|
1734
|
+
controllers.app.create
|
|
1735
|
+
)
|
|
1736
|
+
this.appId = this.app.appId
|
|
1737
|
+
})
|
|
1738
|
+
return await context.doInAppContext(this.appId, async () => {
|
|
1739
|
+
// create production app
|
|
1740
|
+
this.prodApp = await this.publish()
|
|
1741
|
+
|
|
1742
|
+
this.allApps.push(this.prodApp)
|
|
1743
|
+
this.allApps.push(this.app)
|
|
1744
|
+
|
|
1745
|
+
return this.app
|
|
1746
|
+
})
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
async publish() {
|
|
1750
|
+
await this._req(null, null, controllers.deploy.publishApp)
|
|
1751
|
+
// @ts-ignore
|
|
1752
|
+
const prodAppId = this.getAppId().replace("_dev", "")
|
|
1753
|
+
this.prodAppId = prodAppId
|
|
1754
|
+
|
|
1755
|
+
return context.doInAppContext(prodAppId, async () => {
|
|
1756
|
+
const db = context.getProdAppDB()
|
|
1757
|
+
return await db.get(dbCore.DocumentType.APP_METADATA)
|
|
1758
|
+
})
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
<span class="fstat-no" title="function not covered" > async u</span>npublish() {
|
|
1762
|
+
const response = <span class="cstat-no" title="statement not covered" >await this._req(</span>
|
|
1763
|
+
null,
|
|
1764
|
+
{ appId: this.appId },
|
|
1765
|
+
controllers.app.unpublish
|
|
1766
|
+
)
|
|
1767
|
+
<span class="cstat-no" title="statement not covered" > this.prodAppId = null</span>
|
|
1768
|
+
<span class="cstat-no" title="statement not covered" > this.prodApp = null</span>
|
|
1769
|
+
<span class="cstat-no" title="statement not covered" > return response</span>
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
// TABLE
|
|
1773
|
+
|
|
1774
|
+
async updateTable(config?: any) {
|
|
1775
|
+
config = config || basicTable()
|
|
1776
|
+
this.table = await this._req(config, null, controllers.table.save)
|
|
1777
|
+
return this.table
|
|
1778
|
+
}
|
|
1779
|
+
|
|
1780
|
+
async createTable(config?: any) {
|
|
1781
|
+
if (config != null && config._id) {
|
|
1782
|
+
delete config._id
|
|
1783
|
+
}
|
|
1784
|
+
return this.updateTable(config)
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
async getTable(tableId?: string) {
|
|
1788
|
+
tableId = tableId || <span class="branch-1 cbranch-no" title="branch not covered" >this.table._id</span>
|
|
1789
|
+
return this._req(null, { tableId }, controllers.table.find)
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
async createLinkedTable(relationshipType?: string, links: any = ["link"]) {
|
|
1793
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.table) {
|
|
1794
|
+
<span class="cstat-no" title="statement not covered" > throw "Must have created a table first."</span>
|
|
1795
|
+
}
|
|
1796
|
+
const tableConfig: any = basicTable()
|
|
1797
|
+
tableConfig.primaryDisplay = "name"
|
|
1798
|
+
for (let link of links) {
|
|
1799
|
+
tableConfig.schema[link] = {
|
|
1800
|
+
type: "link",
|
|
1801
|
+
fieldName: link,
|
|
1802
|
+
tableId: this.table._id,
|
|
1803
|
+
name: link,
|
|
1804
|
+
}
|
|
1805
|
+
if (relationshipType) {
|
|
1806
|
+
tableConfig.schema[link].relationshipType = relationshipType
|
|
1807
|
+
}
|
|
1808
|
+
}
|
|
1809
|
+
const linkedTable = await this.createTable(tableConfig)
|
|
1810
|
+
this.linkedTable = linkedTable
|
|
1811
|
+
return linkedTable
|
|
1812
|
+
}
|
|
1813
|
+
|
|
1814
|
+
async createAttachmentTable() {
|
|
1815
|
+
const table: any = basicTable()
|
|
1816
|
+
table.schema.attachment = {
|
|
1817
|
+
type: "attachment",
|
|
1818
|
+
}
|
|
1819
|
+
return this.createTable(table)
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
// ROW
|
|
1823
|
+
|
|
1824
|
+
async createRow(config: any = null) {
|
|
1825
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.table) {
|
|
1826
|
+
<span class="cstat-no" title="statement not covered" > throw "Test requires table to be configured."</span>
|
|
1827
|
+
}
|
|
1828
|
+
const tableId = (config && config.tableId) || this.table._id
|
|
1829
|
+
config = config || basicRow(tableId)
|
|
1830
|
+
return this._req(config, { tableId }, controllers.row.save)
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
async getRow(tableId: string, rowId: string) {
|
|
1834
|
+
return this._req(null, { tableId, rowId }, controllers.row.find)
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
async getRows(tableId: string) {
|
|
1838
|
+
if (!tableId && this.table) {
|
|
1839
|
+
tableId = this.table._id
|
|
1840
|
+
}
|
|
1841
|
+
return this._req(null, { tableId }, controllers.row.fetch)
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
// ROLE
|
|
1845
|
+
|
|
1846
|
+
async createRole(config?: any) {
|
|
1847
|
+
config = config || basicRole()
|
|
1848
|
+
return this._req(config, null, controllers.role.save)
|
|
1849
|
+
}
|
|
1850
|
+
|
|
1851
|
+
async addPermission(roleId: string, resourceId: string, level = "read") {
|
|
1852
|
+
return this._req(
|
|
1853
|
+
null,
|
|
1854
|
+
{
|
|
1855
|
+
roleId,
|
|
1856
|
+
resourceId,
|
|
1857
|
+
level,
|
|
1858
|
+
},
|
|
1859
|
+
controllers.perms.addPermission
|
|
1860
|
+
)
|
|
1861
|
+
}
|
|
1862
|
+
|
|
1863
|
+
// VIEW
|
|
1864
|
+
|
|
1865
|
+
async createView(config?: any) {
|
|
1866
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.table) {
|
|
1867
|
+
<span class="cstat-no" title="statement not covered" > throw "Test requires table to be configured."</span>
|
|
1868
|
+
}
|
|
1869
|
+
const view = config || {
|
|
1870
|
+
tableId: this.table._id,
|
|
1871
|
+
name: "ViewTest",
|
|
1872
|
+
}
|
|
1873
|
+
return this._req(view, null, controllers.view.save)
|
|
1874
|
+
}
|
|
1875
|
+
|
|
1876
|
+
// AUTOMATION
|
|
1877
|
+
|
|
1878
|
+
async createAutomation(config?: any) {
|
|
1879
|
+
config = config || basicAutomation()
|
|
1880
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (config._rev) {
|
|
1881
|
+
<span class="cstat-no" title="statement not covered" > delete config._rev</span>
|
|
1882
|
+
}
|
|
1883
|
+
this.automation = (
|
|
1884
|
+
await this._req(config, null, controllers.automation.create)
|
|
1885
|
+
).automation
|
|
1886
|
+
return this.automation
|
|
1887
|
+
}
|
|
1888
|
+
|
|
1889
|
+
async getAllAutomations() {
|
|
1890
|
+
return this._req(null, null, controllers.automation.fetch)
|
|
1891
|
+
}
|
|
1892
|
+
|
|
1893
|
+
<span class="fstat-no" title="function not covered" > async d</span>eleteAutomation(automation?: any) {
|
|
1894
|
+
<span class="cstat-no" title="statement not covered" > automation = automation || this.automation</span>
|
|
1895
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!automation) {</span>
|
|
1896
|
+
<span class="cstat-no" title="statement not covered" > return</span>
|
|
1897
|
+
}
|
|
1898
|
+
<span class="cstat-no" title="statement not covered" > return this._req(</span>
|
|
1899
|
+
null,
|
|
1900
|
+
{ id: automation._id, rev: automation._rev },
|
|
1901
|
+
controllers.automation.destroy
|
|
1902
|
+
)
|
|
1903
|
+
}
|
|
1904
|
+
|
|
1905
|
+
async createWebhook(config?: any) {
|
|
1906
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.automation) {
|
|
1907
|
+
<span class="cstat-no" title="statement not covered" > throw "Must create an automation before creating webhook."</span>
|
|
1908
|
+
}
|
|
1909
|
+
config = config || basicWebhook(this.automation._id)
|
|
1910
|
+
return (await this._req(config, null, controllers.webhook.save)).webhook
|
|
1911
|
+
}
|
|
1912
|
+
|
|
1913
|
+
// DATASOURCE
|
|
1914
|
+
|
|
1915
|
+
async createDatasource(config?: any) {
|
|
1916
|
+
config = config || basicDatasource()
|
|
1917
|
+
const response = await this._req(config, null, controllers.datasource.save)
|
|
1918
|
+
this.datasource = response.datasource
|
|
1919
|
+
return this.datasource
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
async updateDatasource(datasource: any) {
|
|
1923
|
+
const response = await this._req(
|
|
1924
|
+
datasource,
|
|
1925
|
+
{ datasourceId: datasource._id },
|
|
1926
|
+
controllers.datasource.update
|
|
1927
|
+
)
|
|
1928
|
+
this.datasource = response.datasource
|
|
1929
|
+
return this.datasource
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
async restDatasource(cfg?: any) {
|
|
1933
|
+
return this.createDatasource({
|
|
1934
|
+
datasource: {
|
|
1935
|
+
...basicDatasource().datasource,
|
|
1936
|
+
source: "REST",
|
|
1937
|
+
config: cfg || {},
|
|
1938
|
+
},
|
|
1939
|
+
})
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1942
|
+
async dynamicVariableDatasource() {
|
|
1943
|
+
let datasource = await this.restDatasource()
|
|
1944
|
+
const basedOnQuery = await this.createQuery({
|
|
1945
|
+
...basicQuery(datasource._id),
|
|
1946
|
+
fields: {
|
|
1947
|
+
path: "www.google.com",
|
|
1948
|
+
},
|
|
1949
|
+
})
|
|
1950
|
+
datasource = await this.updateDatasource({
|
|
1951
|
+
...datasource,
|
|
1952
|
+
config: {
|
|
1953
|
+
dynamicVariables: [
|
|
1954
|
+
{
|
|
1955
|
+
queryId: basedOnQuery._id,
|
|
1956
|
+
name: "variable3",
|
|
1957
|
+
value: "{{ data.0.[value] }}",
|
|
1958
|
+
},
|
|
1959
|
+
],
|
|
1960
|
+
},
|
|
1961
|
+
})
|
|
1962
|
+
return { datasource, query: basedOnQuery }
|
|
1963
|
+
}
|
|
1964
|
+
|
|
1965
|
+
// QUERY
|
|
1966
|
+
|
|
1967
|
+
async previewQuery(
|
|
1968
|
+
request: any,
|
|
1969
|
+
config: any,
|
|
1970
|
+
datasource: any,
|
|
1971
|
+
fields: any,
|
|
1972
|
+
params: any,
|
|
1973
|
+
verb: string
|
|
1974
|
+
) {
|
|
1975
|
+
return request
|
|
1976
|
+
.post(`/api/queries/preview`)
|
|
1977
|
+
.send({
|
|
1978
|
+
datasourceId: datasource._id,
|
|
1979
|
+
parameters: params || {},
|
|
1980
|
+
fields,
|
|
1981
|
+
queryVerb: verb || "read",
|
|
1982
|
+
name: datasource.name,
|
|
1983
|
+
})
|
|
1984
|
+
.set(config.defaultHeaders())
|
|
1985
|
+
.expect("Content-Type", /json/)
|
|
1986
|
+
.expect(200)
|
|
1987
|
+
}
|
|
1988
|
+
|
|
1989
|
+
async createQuery(config?: any) {
|
|
1990
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.datasource && <span class="branch-1 cbranch-no" title="branch not covered" >!config) {</span>
|
|
1991
|
+
<span class="cstat-no" title="statement not covered" > throw "No datasource created for query."</span>
|
|
1992
|
+
}
|
|
1993
|
+
config = config || basicQuery(this.datasource._id)
|
|
1994
|
+
return this._req(config, null, controllers.query.save)
|
|
1995
|
+
}
|
|
1996
|
+
|
|
1997
|
+
// SCREEN
|
|
1998
|
+
|
|
1999
|
+
async createScreen(config?: any) {
|
|
2000
|
+
config = config || basicScreen()
|
|
2001
|
+
return this._req(config, null, controllers.screen.save)
|
|
2002
|
+
}
|
|
2003
|
+
|
|
2004
|
+
// LAYOUT
|
|
2005
|
+
|
|
2006
|
+
async createLayout(config?: any) {
|
|
2007
|
+
config = config || basicLayout()
|
|
2008
|
+
return await this._req(config, null, controllers.layout.save)
|
|
2009
|
+
}
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
export = TestConfiguration
|
|
2013
|
+
</pre></td></tr></table></pre>
|
|
2014
|
+
|
|
2015
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
2016
|
+
</div><!-- /wrapper -->
|
|
2017
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
2018
|
+
Code coverage generated by
|
|
2019
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2020
|
+
at Mon Feb 27 2023 10:11:39 GMT+0000 (Coordinated Universal Time)
|
|
2021
|
+
</div>
|
|
2022
|
+
<script src="../../../prettify.js"></script>
|
|
2023
|
+
<script>
|
|
2024
|
+
window.onload = function () {
|
|
2025
|
+
prettyPrint();
|
|
2026
|
+
};
|
|
2027
|
+
</script>
|
|
2028
|
+
<script src="../../../sorter.js"></script>
|
|
2029
|
+
<script src="../../../block-navigation.js"></script>
|
|
2030
|
+
</body>
|
|
2031
|
+
</html>
|
|
2032
|
+
|