From 4a906b93f15fc5b0162e13209b83bc03396d03e3 Mon Sep 17 00:00:00 2001 From: Jane Chu <7559015+janechu@users.noreply.github.com> Date: Wed, 22 May 2024 20:06:02 -0700 Subject: [PATCH 1/3] Remove benchmark package --- .gitignore | 3 + packages/utilities/fast-benchmarks/.gitignore | 10 - .../utilities/fast-benchmarks/CHANGELOG.json | 20 - .../utilities/fast-benchmarks/CHANGELOG.md | 13 - packages/utilities/fast-benchmarks/README.md | 303 -------- .../fast-element/observable/index.ts | 39 - .../benchmarks/fast-element/repeat/base.js | 32 - .../benchmarks/fast-element/repeat/index.ts | 196 ----- .../benchmarks/fast-element/repeat/script.js | 39 - .../benchmarks/fast-element/when/index.ts | 121 --- .../benchmarks/fast-element/when/index2.ts | 129 ---- .../fast-foundation/form-associated/index.ts | 52 -- .../benchmarks/methods/append/index.d.ts | 1 - .../benchmarks/methods/append/index.html | 8 - .../benchmarks/methods/append/index.js | 57 -- .../benchmarks/methods/append/index.ts | 54 -- .../benchmarks/methods/append/tachometer.json | 82 -- .../fast-benchmarks/examples/reference.png | Bin 243015 -> 0 bytes .../examples/tachometer-expand.json | 72 -- .../fast-benchmarks/examples/tachometer.json | 85 -- .../utilities/fast-benchmarks/global.d.ts | 8 - .../utilities/fast-benchmarks/package.json | 34 - .../results/fast-element_test.json | 0 .../fast-benchmarks/scripts/index.js | 147 ---- .../fast-benchmarks/scripts/template.js | 423 ---------- .../fast-benchmarks/src/clickTrigger10x.js | 30 - .../fast-benchmarks/src/create10k.js | 24 - .../fast-benchmarks/src/createDelete5x.js | 26 - .../fast-benchmarks/src/runFile1k.js | 15 - .../fast-benchmarks/src/update10th.js | 28 - .../utilities/fast-benchmarks/tsconfig.json | 20 - .../fast-benchmarks/utils/query-params.ts | 33 - .../web-components/fast-element/package.json | 5 +- .../fast-element/rollup.config.js | 1 + .../fast-element/scripts/run-benchmarks.js | 46 ++ .../fast-element/src/__test__/utilities.ts} | 10 +- .../src/observation/observable.bench.ts} | 44 +- .../src/templating/render.bench.ts} | 36 +- .../templating/repeat-basic-reverse.bench.ts | 33 + .../templating/repeat-basic-shift.bench.ts | 33 + .../src/templating/when-basic.bench.ts | 23 + .../src/templating/when-conditional.bench.ts | 24 + .../src/templating/when-switch.bench.ts | 58 ++ .../fast-element/tensile.config.js | 12 + yarn.lock | 723 ++++++++++++++++-- 45 files changed, 972 insertions(+), 2180 deletions(-) delete mode 100644 packages/utilities/fast-benchmarks/.gitignore delete mode 100644 packages/utilities/fast-benchmarks/CHANGELOG.json delete mode 100644 packages/utilities/fast-benchmarks/CHANGELOG.md delete mode 100644 packages/utilities/fast-benchmarks/README.md delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/fast-element/observable/index.ts delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/base.js delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/index.ts delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/script.js delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index.ts delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index2.ts delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/fast-foundation/form-associated/index.ts delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/methods/append/index.d.ts delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/methods/append/index.html delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/methods/append/index.js delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/methods/append/index.ts delete mode 100644 packages/utilities/fast-benchmarks/benchmarks/methods/append/tachometer.json delete mode 100644 packages/utilities/fast-benchmarks/examples/reference.png delete mode 100644 packages/utilities/fast-benchmarks/examples/tachometer-expand.json delete mode 100644 packages/utilities/fast-benchmarks/examples/tachometer.json delete mode 100644 packages/utilities/fast-benchmarks/global.d.ts delete mode 100644 packages/utilities/fast-benchmarks/package.json delete mode 100644 packages/utilities/fast-benchmarks/results/fast-element_test.json delete mode 100644 packages/utilities/fast-benchmarks/scripts/index.js delete mode 100644 packages/utilities/fast-benchmarks/scripts/template.js delete mode 100644 packages/utilities/fast-benchmarks/src/clickTrigger10x.js delete mode 100644 packages/utilities/fast-benchmarks/src/create10k.js delete mode 100644 packages/utilities/fast-benchmarks/src/createDelete5x.js delete mode 100644 packages/utilities/fast-benchmarks/src/runFile1k.js delete mode 100644 packages/utilities/fast-benchmarks/src/update10th.js delete mode 100644 packages/utilities/fast-benchmarks/tsconfig.json delete mode 100644 packages/utilities/fast-benchmarks/utils/query-params.ts create mode 100644 packages/web-components/fast-element/scripts/run-benchmarks.js rename packages/{utilities/fast-benchmarks/utils/index.ts => web-components/fast-element/src/__test__/utilities.ts} (92%) rename packages/{utilities/fast-benchmarks/benchmarks/fast-element/observable/index2.ts => web-components/fast-element/src/observation/observable.bench.ts} (50%) rename packages/{utilities/fast-benchmarks/benchmarks/fast-element/render/index.ts => web-components/fast-element/src/templating/render.bench.ts} (66%) create mode 100644 packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts create mode 100644 packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts create mode 100644 packages/web-components/fast-element/src/templating/when-basic.bench.ts create mode 100644 packages/web-components/fast-element/src/templating/when-conditional.bench.ts create mode 100644 packages/web-components/fast-element/src/templating/when-switch.bench.ts create mode 100644 packages/web-components/fast-element/tensile.config.js diff --git a/.gitignore b/.gitignore index 7e1c908a17d..01329adf86c 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,6 @@ sites/website/i18n/ # Ignore Build Artefacts bin/ obj/ + +# Tensile performance test results +.tensile diff --git a/packages/utilities/fast-benchmarks/.gitignore b/packages/utilities/fast-benchmarks/.gitignore deleted file mode 100644 index 454595dca2e..00000000000 --- a/packages/utilities/fast-benchmarks/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -tsconfig.tsbuildinfo -node_modules -dist -results -utils/*.js -utils/*.d.ts -tsconfig.*.json -tsconfig.*.tsbuildinfo -benchmarks/**/*.d.ts -benchmarks/**/*.js diff --git a/packages/utilities/fast-benchmarks/CHANGELOG.json b/packages/utilities/fast-benchmarks/CHANGELOG.json deleted file mode 100644 index df779f15bc4..00000000000 --- a/packages/utilities/fast-benchmarks/CHANGELOG.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "@microsoft/fast-benchmarks", - "entries": [ - { - "date": "Wed, 22 Jun 2022 20:17:50 GMT", - "tag": "@microsoft/fast-benchmarks_v1.0.0", - "version": "1.0.0", - "comments": { - "prerelease": [ - { - "comment": "Bump @microsoft/fast-element to v2.0.0-beta.3", - "author": "nicholasrice@users.noreply.github.com", - "commit": "f28cdb9fdba9cb27904acfad7444de82d447f39e", - "package": "@microsoft/fast-benchmarks" - } - ] - } - } - ] -} diff --git a/packages/utilities/fast-benchmarks/CHANGELOG.md b/packages/utilities/fast-benchmarks/CHANGELOG.md deleted file mode 100644 index f87ca6d845d..00000000000 --- a/packages/utilities/fast-benchmarks/CHANGELOG.md +++ /dev/null @@ -1,13 +0,0 @@ -# Change Log - @microsoft/fast-benchmarks - -This log was last generated on Wed, 22 Jun 2022 20:17:50 GMT and should not be manually modified. - - - -## 1.0.0 - -Wed, 22 Jun 2022 20:17:50 GMT - -### Changes - -- Bump @microsoft/fast-element to v2.0.0-beta.3 (nicholasrice@users.noreply.github.com) diff --git a/packages/utilities/fast-benchmarks/README.md b/packages/utilities/fast-benchmarks/README.md deleted file mode 100644 index 2976ead8120..00000000000 --- a/packages/utilities/fast-benchmarks/README.md +++ /dev/null @@ -1,303 +0,0 @@ -# FAST Benchmarks - -This is utility library for creating and running benchmarks for FAST libraries. - -Benchmarks from this library are run with the [polymer/tachometer](https://github.com/Polymer/tachometer) package. - -## Install - -```bash -$ yarn install -``` - -## Running a Benchmark - -You can start by running some benchmarks that are set under the `package.json` file. Or if you are already familiar with running benchmarks, jump straight to [arguments](#arguments). - -Let's start by running the **Render** benchmark, and from here we can play with some combination of arugments to statisfy different needs. -```bash -$ yarn run benchmark:fast-element:render -``` - -This particular script maps to: -```bash -$ yarn run benchmark --library=fast-element --benchmark=render --versions local master --localBenchFile=index2 --operations=update10th -``` -This means we are running the **Render** benchmark under the **fast-element** library. - -Then we passed in 2 versions: **local** and **master**. Let's see what these keywords under [Versions](#versions) refer to and other values we can pass in, the _localBenchFile_ argument will also be explained in this section. - -Lastly, we are running the benchmark with the **update10th** operation, jump to [Operations](#operations) to learn more. - -### Arguments - -| Argument | Example | Description | Required | -| ---------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| `--library/-l` | `--library=fast-element` | The Fast library you want to run benchmarks in | Yes | -| `--benchmark/-b` | `--benchmark=test` | Benchmark name | Yes | -| `--versions/-v` | `--versions 1.9.0 master features/feature-1` `--versions=1.9.0` | Supply versions of the library, check available [versions](#versions). Multiple options have to be **delimited by spaces**.| Yes | -| `--localBenchFile/-lb` | `--localBenchFile=index2` | Name of the local benchmark file **don't include the extension**. This option is only turned on if you've supplied 'local' as one of the versions, check details in [Local Version](#local-version). | No | -| `--branchName/-bn` | `--branchName=archives/fast-element-1` | Name of the branch name. This option is only turned on if you've supplied 'local' as one of the versions, check details in [Local Version](#local-version). | No | -| `--operations/-o` | `--operations=create10k` `--operations create10k update10th` | Name of operation(s) to run benchmarks against, **don't include the extension**. Multiple options have to be **delimited by spaces**. Defaults to run all possible operations if this argument is not supplied. | No | -| `--debug/-d` | `-d` | Turn on debug mode. This will not run the benchmarks. | No | - -> Note: Running all possible operations will take an extremely long time. During local development, it is recommend to run one operation at a time to get faster results. - - - -### Versions - -Under the versions argument, you can pass in the following values: -1. **Github Branch Name** - these can be any branch that is pushed to Github, including your development branch and the master branch. - - For example: - ``` - --versions master feature/fast-element-1 users/wendy/test-1 - ``` - The tool will make a reference to the last commit from the branch you passed in. - - This is a screenshot of what that looks like when you run a benchmark: - ![Screen Shot 2022-06-16 at 9 52 28 AM](https://user-images.githubusercontent.com/6309989/174124701-547e7473-008c-41c7-b548-2b3008d091d6.png) - -2. **Published library version** - any version that is available for the library you are benchmarking. - - [fast-element versions](https://www.npmjs.com/package/@microsoft/fast-element) - - For example: - ``` - --versions 1.6.0 1.10.0 - ``` -3. **Local** - this is a special keyword that allows you to pass in supporting arguments, specifically _--localBenchFile_ and _--branchName_. - - For example: - ``` - --versions local --localBenchFile=index2 --branchName=users/wendy/test-1 - ``` - - Since this is a jam packed keyword, I'll give it its own section: [Local Version](#local-version). - -### Local Version - - As mentioned above, **local** is a special keyword you can pass into the _--versions_ argument. - - By default, it would compile to the current branch you are in. - > If your current branch has not been pushed to Github, the test will not be able to run. - - :crystal_ball: Use Case: you want to compare **master** branch with implementation from _index.ts_ and your current branch with same implementation from _index.ts_ - - To run this, just using the **local** keyword in the versions argument will be sufficient: - ```bash - $ yarn run benchmark --library=fast-element --benchmark=render --versions local master --operations=update10th - ``` - - - The _--localBenchFile_ and _--branchName_ are optional arguments you can pass in with the **local** version. - - 1. **--localBenchFile** - you can pass in a different implementation from the main benchmark file _index.ts_. - - :crystal_ball: Use Case: you want to compare **master** branch with implementation from _index.ts_ and your branch with implementation from _index2.ts_ - ```text - benchmarks/ - └─ fast-element/ - └─ render/ - └─ index.ts - └─ index2.ts - ``` - - To run this, pass in the name of the file without the .ts extension to the _--localBenchFile_ argument: - ```bash - $ yarn run benchmark --library=fast-element --benchmark=render --versions local master --localBenchFile=index2 --operations=update10th - ``` - - 2. **--branchName** - you can pass in any branch that has been pushed to Github. - - :crystal_ball: Use Case: you want to compare **master** branch with implementation from _index.ts_ and **archives/fast-element-1** branch with same implementation from _index.ts_ - - To run this, pass in the name of the specific branch name to the _--branchName_ argument: - ```bash - $ yarn run benchmark --library=fast-element --benchmark=render --versions local master --branchName=archives/fast-element-1 --operations=update10th - ``` - -### Operations - - All available operations can be found under the _src_ folder. This is where the benchmarks are measured using the _Performance API_ for Javascript execution time and _memoery.usedJSHeapSize_ for memory consumption. - -To run this, pass in the name of the operation file without the .js extension to the _--operations_ argument: - ```bash - $ yarn run benchmark --library=fast-element --benchmark=render --versions local master --operations=create10k - ``` - -## Interpreting Results - -We have gone over some combination of benchmarks we can run in [Running a Benchmark](#running-a-benchmark). Let's take a look at how to read these results. - -The screenshot below is the result of running this benchmark: - - ```bash - $ yarn run benchmark --library=fast-element --benchmark=render --versions local master --branchName=archives/fast-element-1 --operations=update10th - ``` - -![Screenshot](./examples/reference.png) - -Notice there are 4 rows under **Benchmark**, 2 belong to results from the **local** version and the rest belongs to **master** version. - -1. For the results in [update10th], these show the _Javascript execution time_ it took to run the **render** benchmark with the **update10th** operation. -2. For the results in [usedJSHeadSize], these show the _total memory consumption_ it took to run the **render** benchmark with the **update10th** operation -3. The 3rd column **Bytes** show the total bundle size of the _fast-element_ library for each version. -4. The block that is highlighted with the orange border is where you would look to compare the **local** version _Javascript execution time_ with the **master** version _Javascript execution time_. - > Detailed Interpretation: **unsure** means there is no significant statistical difference. The next line tells us that the **local** version could be as much as 3% faster, or as much as 7% slower. And the line after that gives a similar analysis but in _ms_ units, that the **local** version could be as much as 2.10ms faster, or as much as 5.87 slower. -5. The block that is highlighted with the green border is where you would look to compare the **local** version _total memory consumption_ with the **master** version _total memory consumption_. - > Detailed Interpretation: **faster** means there is significant statistical difference. The next couple of lines tell us that the **local** version could be 0% or 0.02ms - 0.07ms faster. - - -You can refer to [Interpreting tachometer table results](https://github.com/Polymer/tachometer/blob/main/README.md#interpreting-results) for more information. - -## Adding a Benchmark - -To add a benchmark, navigate to`/benchmarks` and create a new directory under an existing FAST library folder with the name of your benchmark. - -Next, create an `index.ts` file under `/my-benchmark`. - -```text -benchmarks/ -└─ fast-element/ - └─ my-benchmark/ - └─ index.ts -``` - -You can use the below template to get started, make sure a custom element named `x-app` is available when you are finished (the generated template will look for `x-app` when compiling the benchmark). - -#### index.ts - -```ts -import { - attr, - customElement, - FASTElement, - html, - observable, - repeat, -} from "@microsoft/fast-element"; -import { data, RandomItem } from "../../../utils/index.js"; - -@customElement({ - name: "x-item", - template: html` - ${x => x.value} - `, - shadowOptions: { - delegatesFocus: true, - }, -}) -export class XItem extends FASTElement { - @attr value: string = ""; -} - -const template = html` -
- ${repeat( - x => x.items, - html` - x.label}>${x => x.label} - ` - )} -
-`; - -@customElement({ - name: "x-app", - template, -}) -class XApp extends FASTElement { - @observable items: RandomItem[] = data; -} -``` - -### Available variables from Utils - -There is a utility folder called `./utils`, where you have access to the `data` variable, this is an array of _RandomItem_ objects. And `nestedData`, this is an array of _NestedRandomData_ objects. - -#### utils.ts - -Some variables you can import into your benchmark. -```ts -... -const itemCount = 1000; -... -export const data: RandomItem[] = generateData(itemCount); -export const nestedData: NestedRandomData[] = generateNestedData(itemCount); - -... -``` - - -#### Running tachometer config file manually - -To run tachometer manually, you have to generate a tachometer config json file. - -Follow the tachometer defined [schema](#https://raw.githubusercontent.com/Polymer/tachometer/master/config.schema.json) and generate a `tachometer.json` in `/fast-element/my-benchmark/` - -There is an existing example under `/fast-element/methods/append` that is run manually. - -#### tachometer.json - -```json -{ - "$schema": "https://raw.githubusercontent.com/Polymer/tachometer/master/config.schema.json", - "timeout": 0, - "benchmarks": [ - { - "name": "my-benchmark", - "browser": { - "name": "chrome", - "headless": true, - "addArguments": ["--js-flags=--expose-gc", "--enable-precise-memory-info"] - }, - "measurement": [ - { - "name": "usedJSHeapSize", - "mode": "expression", - "expression": "window.usedJSHeapSize" - } - ], - - "expand": [ - { - "name": "previous-version", - "url": "benchmarks/my-library/my-benchmark/index.html", - "packageVersions": { - "label": "1.4.0", - "dependencies": { - "my-library": "1.0.0" - } - } - }, - { - "name": "local-version", - "url": "benchmarks/my-library/my-benchmark/index2.html", - "packageVersions": { - "label": "local", - "dependencies": { - "@microsoft/my-library": { - "kind": "git", - "repo": "https://github.com/microsoft/fast.git", - "ref": "my-local-branch", - "subdir": "packages/web-components/my-library", - "setupCommands": [ - "yarn install", - "yarn --cwd ./packages/web-components/my-library build" - ] - } - } - } - } - ] - } - ] -} -``` - -To run the benchmark, run the command `npx tach --config benchmarks/fast-element/my-benchmark/tachometer.json` - - -> Note: only the @microsoft/fast-element is supported at this time diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/observable/index.ts b/packages/utilities/fast-benchmarks/benchmarks/fast-element/observable/index.ts deleted file mode 100644 index f1ffc62da86..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/observable/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Observable, observable } from "@microsoft/fast-element"; -import { _random, adjectives, nouns } from "../../../utils/index.js"; - -export class Pupil { - @observable greetMessage: string = ""; - @observable name: string = ""; - @observable exit: boolean = false; - - constructor(firstName: string, lastName: string) { - const first = firstName[0].toUpperCase() + firstName.slice(1); - const last = lastName[0].toUpperCase() + lastName.slice(1); - - this.name = `${first} ${last}`; - this.greetMessage = `Welcome to FAST, ${this.name} !!`; - } - - sayGoodbye() { - this.greetMessage = `Goodbye ${this.name}, see you next time!`; - } -} - -window.runFunction = () => { - const pupil = new Pupil( - adjectives[_random(adjectives.length)], - nouns[_random(nouns.length)] - ); - - const notifier2 = Observable.getNotifier(pupil); - const handler2 = { - handleChange(source: any, propertyName: any) { - if (propertyName === "greetMessage") source._exit = true; - }, - }; - - notifier2.subscribe(handler2, "greetMessage"); - - pupil.sayGoodbye(); - notifier2.unsubscribe(handler2, "greetMessage"); -}; diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/base.js b/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/base.js deleted file mode 100644 index 32ca5c0a117..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/base.js +++ /dev/null @@ -1,32 +0,0 @@ -export default { - basic: { - reverse: [ - { - loopCount: 1, - itemCount: 100, - }, - { - loopCount: 5, - itemCount: 1000, - }, - ], - push: [ - { - loopCount: 10, - addCount: 1, - }, - { - loopCount: 5, - addCount: 1000, - }, - ], - }, - nested: { - reverse: [ - { - loopCount: 1, - itemCount: 100, - }, - ], - }, -}; diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/index.ts b/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/index.ts deleted file mode 100644 index a1fb48e8a2e..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/index.ts +++ /dev/null @@ -1,196 +0,0 @@ -import { - customElement, - FASTElement, - html, - observable, - repeat, - ViewTemplate, -} from "@microsoft/fast-element"; -import { - generateData, - generateNestedData, - NestedRandomData, - RandomItem, -} from "../../../utils/index.js"; -import { queryParams } from "../../../utils/query-params.js"; - -const { - template, - method, - itemCount: count = "11", - deleteCount: count2 = "1", - addCount: count3 = "10", - startIndex: count4 = "0", -} = queryParams; - -const itemCount = parseInt(count as string), - deleteCount = parseInt(count2 as string), - addCount = parseInt(count3 as string), - startIndex = parseInt(count4 as string); - -type Templates = { - [TemplateName: string]: ViewTemplate; -}; -const templates: Templates = { - basic: html` - ${repeat( - x => x.items, - html` -
  • - ${x => x.label} -
  • - ` - )} - `, - basicNoRecycle: html` - ${repeat( - x => x.items, - html` -
  • ${x => x.label}
  • - `, - { recycle: false } - )} - `, - nested: html` - ${repeat( - x => x.items, - html` -
  • - ${x => - html` - ID: ${x.id} -
  • one: ${x.randomItem1.label}
  • -
  • two: ${x.randomItem2.label}
  • -
  • three: ${x.randomItem3.label}
  • -
      - ${repeat( - x => x.randomItemGroup1, - html` -
    • ${x => x.label}
    • - ` - )} -
    -
      - ${repeat( - x => x.randomItemGroup2, - html` -
    • ${x => x.label}
    • - ` - )} -
    -
      - ${repeat( - x => x.nestedGroup.randomItemGroup1, - html` -
    1. ${x => x.label}
    2. - ` - )} -
    - `} - - ` - )} - `, - nestedNoRecycle: html` - ${repeat( - x => x.items, - html` -
  • - ${x => - html` - ID: ${x.id} -
  • one: ${x.randomItem1.label}
  • -
  • two: ${x.randomItem2.label}
  • -
  • three: ${x.randomItem3.label}
  • -
      - ${repeat( - x => x.randomItemGroup1, - html` -
    • ${x => x.label}
    • - `, - { recycle: false } - )} -
    -
      - ${repeat( - x => x.randomItemGroup2, - html` -
    • ${x => x.label}
    • - `, - { recycle: false } - )} -
    -
      - ${repeat( - x => x.nestedGroup.randomItemGroup1, - html` -
    1. ${x => x.label}
    2. - `, - { recycle: false } - )} -
    - `} - - `, - { recycle: false } - )} - `, -}; - -@customElement({ - name: "x-app", - template: html` -
    - - ${x => x.getTemplateType()} -
    - `, -}) -class XApp extends FASTElement { - @observable items: Array = []; - public template: string = template; - public otherItems: Array = []; - - private isNested: boolean = false; - constructor() { - super(); - this.isNested = this.template.toLowerCase().includes("nested"); - this.items = this.isNested - ? generateNestedData(itemCount) - : generateData(itemCount); - this.otherItems = generateData(addCount); - } - - getTemplateType() { - return templates[this.template]; - } - - getClickEvent() { - switch (method) { - case "splice": - this.items.splice(startIndex, deleteCount, ...this.otherItems); - break; - case "reverse": - this.items.reverse(); - break; - case "push": - this.items.push(...this.otherItems); - break; - case "unshift": - this.items.unshift(...this.otherItems); - break; - case "shift": - this.items.shift(); - break; - case "sort": - this.items.sort(); - break; - case "filter": - this.items = this.items.filter(item => item !== this.items[0]); - break; - default: - this.items.push(...this.otherItems); - break; - } - } -} diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/script.js b/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/script.js deleted file mode 100644 index 4ffd66ebd8a..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/repeat/script.js +++ /dev/null @@ -1,39 +0,0 @@ -import baseJson from "./base.js"; - -(() => { - const BASIC_TEMPLATES = ["basic", "basicNoRecycle"]; - const NESTED_TEMPLATES = ["nested", "nestedNoRecycle"]; - const queryParams = { - basic: [], - basicNoRecycle: [], - nested: [], - nestedNoRecycle: [], - }; - const addQueries = (source, dest) => { - for (const clickEvent in source) { - for (let i = 0; i < source[clickEvent].length; i++) { - const option = [`ce=${clickEvent}`]; - const variation = source[clickEvent][i]; - for (const count in variation) { - option.push(`${count}=${variation[count]}`); - } - dest.push(option); - } - } - return dest; - }; - - for (const templateType in baseJson) { - const isNested = templateType.toLowerCase().includes("nested"); - if (isNested) { - NESTED_TEMPLATES.forEach(template => { - addQueries(baseJson.nested, queryParams[template]); - }); - } else { - BASIC_TEMPLATES.forEach(template => { - addQueries(baseJson.basic, queryParams[template]); - }); - } - } - process.stdout.write(JSON.stringify(queryParams)); -})(); diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index.ts b/packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index.ts deleted file mode 100644 index 456ccde095a..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { - customElement, - FASTElement, - html, - observable, - repeat, - ViewTemplate, - when, -} from "@microsoft/fast-element"; -import { data, RandomItem } from "../../../utils/index.js"; -import { queryParams } from "../../../utils/query-params.js"; - -const contentTemplates = { - first: html` -
    - This is the First Template - ${repeat( - x => x.items, - html` -
      - ${x => x.label} -
    - ` - )} -
    - `, - second: html` -
    - This is the Second Template - ${repeat( - x => x.items, - html` -
  • ${x => x.label}
  • - ` - )} -
    - `, -}; - -type Templates = { - [TemplateName: string]: ViewTemplate; -}; - -const renderTemplates: Templates = { - basic: html` -
    - ${when(x => x.value < 2, contentTemplates.second)} -
    - `, -}; - -const emotionalTemplates = { - depressed: html` -
    - I'm so depressed :O -
    - `, - sad: html` -
    - I'm so sad :( -
    - `, - happy: html` -
    - I'm so happy :) -
    - `, - ecstatic: html` -
    - I'm so ecstatic :D -
    - `, - indifferent: html` -
    - I'm indifferent :| -
    - `, -}; -const clickTriggerTemplates: Templates = { - conditional: html` -
    - - ${when(x => x.value < 2, contentTemplates.first)} - ${when(x => x.value >= 2, contentTemplates.second)} -
    - `, - switch: html` -
    - - ${when(x => x.value <= 1, emotionalTemplates.depressed)} - ${when(x => x.value === 2 || x.value === 3, emotionalTemplates.sad)} - ${when(x => x.value === 4 || x.value === 5, emotionalTemplates.indifferent)} - ${when(x => x.value >= 6 && x.value < 9, emotionalTemplates.happy)} - ${when(x => x.value === 9 || x.value === 10, emotionalTemplates.ecstatic)} -
    - `, -}; -@customElement({ - name: "x-app", - template: html` - ${x => x.getTemplateType()} - `, -}) -class XApp extends FASTElement { - @observable items: Array = data; - @observable value: number = 0; - @observable template: string = queryParams.template; - - getTemplateType() { - return renderTemplates[this.template] - ? renderTemplates[this.template] - : clickTriggerTemplates[this.template]; - } - update(increment: boolean) { - if (increment) { - this.value = this.value === 10 ? 0 : this.value + 1; - } else { - this.value = this.value < 2 ? 2 : 0; - } - } -} diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index2.ts b/packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index2.ts deleted file mode 100644 index 69536545d03..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/when/index2.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { - customElement, - FASTElement, - html, - observable, - repeat, - ViewTemplate, -} from "@microsoft/fast-element"; -import { data, RandomItem } from "../../../utils/index.js"; -import { queryParams } from "../../../utils/query-params.js"; - -const contentTemplates = { - first: html` -
    - This is the First Template - ${repeat( - x => x.items, - html` -
      - ${x => x.label} -
    - ` - )} -
    - `, - second: html` -
    - This is the Second Template - ${repeat( - x => x.items, - html` -
  • ${x => x.label}
  • - ` - )} -
    - `, -}; - -type Templates = { - [TemplateName: string]: ViewTemplate; -}; -// These templates should be pairs with th e create10k operational run -const renderTemplates: Templates = { - basic: html` -
    - ${x => x.value < 2 && contentTemplates.second} -
    - `, -}; - -const emotionalTemplates = { - depressed: html` -
    - I'm so depressed :O -
    - `, - sad: html` -
    - I'm so sad :( -
    - `, - happy: html` -
    - I'm so happy :) -
    - `, - ecstatic: html` -
    - I'm so ecstatic :D -
    - `, - indifferent: html` -
    - I'm indifferent :| -
    - `, -}; - -const clickTriggerTemplates: Templates = { - conditional: html` -
    - - ${x => (x.value < 2 ? contentTemplates.first : contentTemplates.second)} -
    - `, - switch: html` -
    - - ${x => { - switch (true) { - case x.value > 8: - return emotionalTemplates.ecstatic; - case x.value >= 6: - return emotionalTemplates.happy; - case x.value <= 1: - return emotionalTemplates.depressed; - case x.value < 4: - return emotionalTemplates.sad; - default: - return emotionalTemplates.indifferent; - } - }} -
    - `, -}; -@customElement({ - name: "x-app", - template: html` - ${x => x.getTemplateType()} - `, -}) -class XApp extends FASTElement { - @observable items: Array = data; - @observable value: number = 0; - @observable template: string = queryParams.template; - - getTemplateType() { - return renderTemplates[this.template] - ? renderTemplates[this.template] - : clickTriggerTemplates[this.template]; - } - update(increment: boolean) { - if (increment) { - this.value = this.value === 10 ? 0 : this.value + 1; - } else { - this.value = this.value < 2 ? 2 : 0; - } - } -} diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-foundation/form-associated/index.ts b/packages/utilities/fast-benchmarks/benchmarks/fast-foundation/form-associated/index.ts deleted file mode 100644 index c62fb940261..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-foundation/form-associated/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { - attr, - customElement, - FASTElement, - html, - observable, - repeat, -} from "@microsoft/fast-element"; -import { FormAssociated } from "@microsoft/fast-foundation"; -import { data, RandomItem } from "../../../utils/index.js"; - -/* eslint-disable @typescript-eslint/naming-convention */ -class _Button extends FASTElement {} -interface _Button extends FormAssociated {} -/* eslint-enable @typescript-eslint/naming-convention */ - -class FormAssociatedButton extends FormAssociated(_Button as any) { - proxy = document.createElement("input"); -} - -class Button extends FormAssociatedButton {} -@customElement({ - name: "x-button", - template: html` - - `, - styles: "", - shadowOptions: { - delegatesFocus: true, - }, -}) -export class FluentButton extends Button { - @attr value: string = ""; -} - -const xAppTemplate = html` -
    - ${repeat( - x => x.items, - html` - x.label}>${x => x.label} - ` - )} -
    -`; -@customElement({ - name: "x-app", - template: xAppTemplate, -}) -class XApp extends FASTElement { - @observable items: RandomItem[] = data; -} diff --git a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.d.ts b/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.d.ts deleted file mode 100644 index cb0ff5c3b54..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.html b/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.html deleted file mode 100644 index 9df2f01cc09..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -
    - - - - diff --git a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.js b/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.js deleted file mode 100644 index 18e4ef5c818..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.js +++ /dev/null @@ -1,57 +0,0 @@ -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -import { customElement, FASTElement, html, observable, repeat, } from "@microsoft/fast-element"; -import { data } from "../../../utils/index.js"; -import { queryParams } from "../../../utils/query-params.js"; -const { method } = queryParams; -let XApp = class XApp extends FASTElement { - constructor() { - super(...arguments); - this.items = data; - } - appendData() { - // append 10k data 10 times - switch (method) { - case "push-apply": - // eslint-disable-next-line prefer-spread - this.items.push.apply(this.items, data); - break; - case "push-spread": - this.items.push(...data); - break; - case "concat": - this.items = this.items.concat(data); - break; - case "spread": - this.items = [...this.items, ...data]; - break; - case "splice": - this.items.splice(this.items.length, 0, ...data); - break; - case "unshift": - data.unshift(...this.items); - this.items = data; - break; - } - } -}; -__decorate([ - observable -], XApp.prototype, "items", void 0); -XApp = __decorate([ - customElement({ - name: "x-app", - template: html ` -
    - - ${repeat(x => x.items, html ` -
  • ${x => x.label}
  • - `)} -
    - `, - }) -], XApp); diff --git a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.ts b/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.ts deleted file mode 100644 index b5c7b158d17..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/methods/append/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { - customElement, - FASTElement, - html, - observable, - repeat, -} from "@microsoft/fast-element"; -import { data, RandomItem } from "../../../utils/index.js"; -import { queryParams } from "../../../utils/query-params.js"; - -const { method } = queryParams; - -@customElement({ - name: "x-app", - template: html` -
    - - ${repeat( - x => x.items, - html` -
  • ${x => x.label}
  • - ` - )} -
    - `, -}) -class XApp extends FASTElement { - @observable items: RandomItem[] = data; - appendData() { - // append 10k data 10 times - switch (method) { - case "push-apply": - // eslint-disable-next-line prefer-spread - this.items.push.apply(this.items, data); - break; - case "push-spread": - this.items.push(...data); - break; - case "concat": - this.items = this.items.concat(data); - break; - case "spread": - this.items = [...this.items, ...data]; - break; - case "splice": - this.items.splice(this.items.length, 0, ...data); - break; - case "unshift": - data.unshift(...this.items); - this.items = data; - break; - } - } -} diff --git a/packages/utilities/fast-benchmarks/benchmarks/methods/append/tachometer.json b/packages/utilities/fast-benchmarks/benchmarks/methods/append/tachometer.json deleted file mode 100644 index 21fcaa54252..00000000000 --- a/packages/utilities/fast-benchmarks/benchmarks/methods/append/tachometer.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/Polymer/tachometer/master/config.schema.json", - "sampleSize": 40, - "timeout": 0, - "benchmarks": [ - { - "browser": { - "name": "chrome", - "headless": true - }, - "name": "append data", - "measurement": [ - { - "mode": "performance", - "entryName": "clickTrigger10x" - } - ], - "expand": [ - { - "name": "push-apply", - "url": "benchmarks/methods/append/index.html?method=push-apply", - "packageVersions": { - "label": "1.9.0", - "dependencies": { - "@microsoft/fast-element": "1.9.0" - } - } - }, - { - "name": "push-spread", - "url": "benchmarks/methods/append/index.html?method=push-spread", - "packageVersions": { - "label": "1.9.0", - "dependencies": { - "@microsoft/fast-element": "1.9.0" - } - } - }, - { - "name": "concat", - "url": "benchmarks/methods/append/index.html?method=concat", - "packageVersions": { - "label": "1.9.0", - "dependencies": { - "@microsoft/fast-element": "1.9.0" - } - } - }, - { - "name": "spread", - "url": "benchmarks/methods/append/index.html?method=spread", - "packageVersions": { - "label": "1.9.0", - "dependencies": { - "@microsoft/fast-element": "1.9.0" - } - } - }, - { - "name": "splice", - "url": "benchmarks/methods/append/index.html?method=splice", - "packageVersions": { - "label": "1.9.0", - "dependencies": { - "@microsoft/fast-element": "1.9.0" - } - } - }, - { - "name": "unshift", - "url": "benchmarks/methods/append/index.html?method=unshift", - "packageVersions": { - "label": "1.9.0", - "dependencies": { - "@microsoft/fast-element": "1.9.0" - } - } - } - ] - } - ] -} diff --git a/packages/utilities/fast-benchmarks/examples/reference.png b/packages/utilities/fast-benchmarks/examples/reference.png deleted file mode 100644 index f035b914546a03137f4a61cd205801fd012bfda3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243015 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

    EPN%gNnEdr3`V7@z>1^>Y=pC$ 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%0A!$z9LzI=17SsZ!|zdcV@-&814P-DIVA3A1b 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%0DZW6hxu?jH_nekQsUX4 zk7vJAG9B(zb{Cif30>74N<&*d)1584K_c(u7y=6y{O%4WL9Y?+0%gVCThv$W?LNTz zqN@%NtGuBqihbNtsp%4-WscpRBo?_<4^^R|a9y{+{0v)$r;7WrSn4U9RJlue(=ee z)!DH7PAKLr069MTmW+PX3d>c!9P2Y|xrjxVs`OvXL@yi`GqE+VO^YnqL^FdyeBoEb zEW{TKuhLJ~@G+KG(MH{uh#H@STK8yK2y=~3G#2n+sLqS zv-lg8wjk@ph$p~9Bw3-!!h}Az-3EU;)s&ePBf7eh87KLU^vbBQV)JJ5CN%qpczE`T z@&MOr8?Sml-{nLN_aG=$^(b^$x5kyqU5N4Aoi7lWhU7iGcGi`oSTI%dzOUp3m4Etq zd~xw1A;ys_sSxYbTv*}BSPv@^Xoty=1kc9)OUFQOanG@>oU@M04(cb(_O1mKJhkRV zKTw@X7i^U}7?$#h?q4yufak`(ygf2}-Yiq6(2jxSANoX3yc9S2g4A!X+bp^W0zS+A zOhVZbSI#ni)a#Q%vqfGAL@J52x+o@ur=(qP*QsNSDldZwvMGMXU~Ly+9!MPIsa!bq zV_fq3R*UCcd;n5Udt1#E)8KHqMoySAh7%*e;Gv5DK^VmUx`Mt1<$9+9dD({m;FDs) zcP=WNPKpkfi;p6}dvA<@4yxP?oh&%vc5HnU{M6+4zFuyDH$kByPg4-hgIhSFpT2;< zt&d{_^Z_4HkZ@1Pj3Mq&Hb%jCd8cTtR@9iR8a!x9lrK&MxP%FcG}Oh!@9gG=^uSL{ zxLR}i(oY%5cgLPo@=V_bzOBd`d;AyiRV2zMt>&-6{lz{Ve~ZMw+BotGiygD)m@}M# zB2~PqpWuHS+-xUvNBA>&^M#=N;V@WlN))4V8UK!z?ka6wK!KxAsg!+Ujac; zl{6d68kDV|HXrvg@D=?=MSq+njyL|n2n3w`@{1{6oXEZ>@NUsW=U__x))Ox>Q-Wqa z2+UIKD8^75C+qBqi>TO9af&JP?77p8|W%VyNLHA9OL0u*{eRh|tccG4_E_fu$X_0sC zvEp#UTd?5O>1?=nNtu zjw!jbN-wsCS$&e#btbAzUE7za8ACL3xzW2%l|yuz6OFZ+Zd?h*)N%Lo2!@f8Uu$lDstrf<`a z-FkgDN2Pk<+v_uXbRlMgtoekgs#7hx)NmrKgCLa}z287v!ka7zet2cRAd7}wYRT{p zjFLqx7Sv1ql{~%@!PPzom!w7C`N)}DEm^N@XF~rL!zKp1B~rFgISp3KLND5cRuC0x zmkFzJq(%DY#Mn@ufJPj$E)7RApr!13GqmEq%14fe3;376AY6DtNE3!zDs<|1TTRfB zq7cqiOcc6_9z+|r!cTOYL(YUx>{f`W0vS3yS^QU-)3X~=3%RuZjPT1wb%|h<>J!Tj zWW?lTzc#gtFAmBdGTz;n;)$c=_VzJ@w2QS694<4ut>`sFXUt(oP#_~ zU(C>Dx;-4Wi9?3OE0@B;5W{F<+uvecUDAP0dK%f8HXy|4@jv&`+baGbBh(_!)B_2NX`5+S&K)$~zMT6vM#;X|0c_jQu`e z9TCGluT}XF7XPwVlH>ggkf{Cq;OG8%g|r-+%MaK2O(|`5o(TQ8o5R=%oInVO2_(XX zj~5~*NtvXRgH5~1SHSj;kmN4Wi8}`LPB7;Cf8M4#CCkC*Lig; z4*MdYDyKA3EkBv~Jxti!n3MAVIv&5RXRA+&EOYQUyOEpCYByCQ*7ti9#?=k_-py&G zu3p32mkYH@$2p5lrj^K7*QHp1!%4G}qLfmSw_VTF=NfWf?(R?uVDa~T{1<-0l%JGE z)t_=p*Y_KQPG|FCX!?FdXIXnsB>G2^*E<-A;N#y>nN-PfW~qxbnC=-AHJ&s2>~rAA zY^jiL$zc#Vn*c0ea7Fvcg-KfOUv-+T98)!salegp4Q3T5@h{GvWhTzM0Z2^BClAF{ zcB7PhInaK)tJ?eBY`bMO+APZuL)gZc&Duh3b}&pw*CN{TF=yR4jo%KdcSD_(bNu}v zuj93<=TXpZ$u)yu=eA|gx1C@wMnxB#_OkMXASSh2Q-Ys|lAIa94HXb3@jG`F%AyBj zYs-{h>BbUl+;Ys};A9BiyYu<)OPo*KmEvY5T#5~D{$AIN%;gq}4Tj;pkZz2+fUI_c zqKulo3j~P;wTnYE$zRf}EO#u?_g3Weh0}h6Abl;;F&R< zrsUP&hAr0Tq(tUNU|^8r;%aNUGBb5>lI)N;2f88Y3fUe~UvkWR93dTYHVQDDZ*`AB zjh_T0mpx!aG>eRe0JoBEe}JKd1(uTW%K*Q($fsTQVuvte@Q1P3aAVwJvtr=Q)kWvd z$shTAv5O7G%n5Ux#fbOn?eSdx%peXNo|Nqxj?2ACuUY8tJUwxJr?kJ4W6PMT$`6ce z!G?mVsBDbgG_KZjDv+cIw91)0tY9; z1Cj=Se-{RSB%UbCmPq^Pg*KL+m$=HI&sVwA9vm1u7(*-N*9>RU=qmuU#It3Bqd>W5 zgn*M1>cMhQV(w!XD8?a@Q#~#)VtOFti6YEk&E^Wgr%@n1yTG>4E{27izV|J}(9A%+ ziXf#Wlssgv%{*-FY#;ECBk-_H;4olr-p4H^@u&15A}>p%IIxu~CqK{pglfmfd`*5Y zt}J$?yrrL$QQOAKtcI;6MI$-0s&@n$dF12|+uKU&EB1&Z?A=VAS7}b1;rAwDc&m0_X-J(EMZj_bUDD5 zMCpx640Zwquh-J`>P#z=8M3=B(X{1Tv~NYjP2ySj1O!a)e@Jz{&^WOqqOqX$Y%Z>g zciSj%4v7_WTpX{z*qa^2m_tL$%7Z$}8LxCw z6Opj1E6;rQ(Vh>LfdvE9#J$ckJ7Q0tvW?_aTs6ruXh^JJ4pYz-I-?QdkACf*!F!+G z#WV6F42kZ|kIq|0C(pIi1-vv3N0zr0om9ArW~H-`Kl@vz+>M9xl1j8$9Nk=r?YA*K zJ<=OrK{0bmykdW(r6$jez&{oli$?kTCstjg8(LLU?cBwV2Q>M>>|70oXDWLt7H#ST zeqac%KLf@I9eemL`}ax$=m?7v!%ZvmA2Zq|O}&X}ZvVQnqqbKPwy$_y6|pyx!u=bm zIiLHhxmuyY_J|PigK)TjgGAXOx#2ksXPRlJ8+g3-U+PnMz)JnHDbHw_UNWqZ&qLRR ze19K!U3PW=O+GCnm!7IeJuVQP{A8!vd}y+A_jc7|Fd8}XDRKIr^5Y5!R=a*99VPE>mxEvrK--OUL3~&0={4w?uF_f}xF^8;H zs#OhJMKaxP#V}Fs|M2yeL2-4_x-KrkAwY0z+)04o?(XjH!Gmk?;O_3O!6mpuaCdii z?&3Rl*Zp(%`9l>{(LKA@oMR4spX0B+o)`bA{uQh;o3;yNAE8kZE1J28?${B2E+JOT z!8c*3wDk&5zKl-Gpln4u1k$)|^f})8twJJ4n*mdUWxEw|UZXj<5O~d%U$PY~YHrIM z(ZjV_QyyB$NP{V*kHK=;ywmWH zFgidP)M^!H3}^7>lX8M=)+)5X!2Aw3od4INt(Y=inSJ=@)j343x*!K|4%LZFNnunx ze6aQm@>j*kLIdJZdH#IwpX#L9xBxAizWH&~WBJJoSQA?$tz+m0>dd*%$#1wX~zq7eC)} z_me4MN%9cHP|uLI?A>qtX+3(9{r8D*&K$`;YR6Xkm*ltvv79w4+WYSDq`Q=ekUJ=g z#E8(N_l|d*c$1=hf~)!|-8zvUMneOa8TKzu(LS{N#;3oI`cU%8XO%$^Z%9^pvawpB zGt*}(E)Et$99F~X8NhX-oER|Nc`u+W(%&!8@K25+3ilJMIo7zh4E#6||L1o2t>n3O zqv*7RQb9w(1WB(GB1nX7_GF>Yy;s7huC9WtDS_$bPqjA}@`k~W8utP?abOO=KlOMN z{tkAiho-pYnW?=W6UjOX9Hv=_ayg%rEfj>7QlUEz+BrP)65AnDM{pEW56vzVaJY}RpRSZ~ls;&oJwxEt zjf8)(N`A;>@T;cqd|FIO5chIevqo(t*db6a$b>QwZXJw`H|SkAJUyoTE6-P-qkXrl zHh9=1gINdiHI@DX{k$U}|Lpf50)kAa2Z2cp67bmL3SWV6xE!)eXSDG%64JNw`L4qO zk)=C<*LZvi>Nv>U0!<3DJwp8PaT_~OT%pQ)KTiRS zpF=ZY;IwVr(q1I~ik@TEURT)kzcGTaKBk?8mBPd>6u+G>V6maiq6G4M%EV~%tm;Hb z@l>t>_~+0b)8C>qL1WkQvP-t!k;g`rnsfB2{muIYjN=!bihn;}biX{J+_*|`|S&QWMq#eXEiS?@U8Nv?vkC8oX7FV7gemcDIM>yN3B(X(64(eUws#Hmu!(f zhmHCT8Y%Wk#-4_{eN`clT{g<}Io&&biio+W-d98eYUQBg0}E6$0?puJ_pIUXv7Pnb zR@;o&2M37w%U2l*`1j;jCvKIc99~rygnWWs@?Ga;S*(`6w7+M*4y3t9&4CkIYn2Nh zd3~jz3LU!dzOJHI?xTeF)})&d(ub;XgtQ+t+TRLR?NpXgYIsU}M4{^5_rLxJkvZ=U z0ghEax7xg4EenV3)vcJa2D9@3g4%F`9C|05Ijxs8!5j7nJmRH6#%9!`e1{cbp|>od z+kK6WO^q}o!91^&w;4Fk^oBhmX#69;#xfia&X7ei=x2kvJf6GHP?-r_qE}zI8Q$ji zQ~ultGa;_RL!i!F-EHlf>mif*X2)!a74TkeI-6}hnof>^tM`6AAc3;sTK-Xba5#4X z5u&Ua?npw|`Pk=`s+OAdNXMLffYjy@uMQpL6NJeop)*H5BGBW4=?}LA`Bx$@c#{Ap z>OOO~eeCtG!Ra#6UE{LBdn=IuhmX&m8k3mVF(fJKlOj|r$Zx?ERizk){-W(pz5L;F zafjzClpnG(m6F%XC+p>?OzyH%PDmxqZx-eEYzary)Jd~E{-@)-{jfQEA7v5yuoVZ?)v9tAvl-?jAA%So2u$5r-(xw;C z{|MAWl+{#*2Ykg(L+`xF*Wxa_!V=$ceh%c~g}w{-_@4WtBw19)DFEu$gh~Gl>4j2netn-dO7i{HTas2tXB9^l&_!*PuD8dl7gXaVBFg(w!DhZ$WS(3@3Az)&m zpF5+b;}Ic)8z#G0rI=XzO^H9vRR)Hu-l?dVK=aqITH-4<3smg-bC=l@!`*q}F__8r zN_|Dec>NIxM%DV=ZjdABo4OX^1Fs^oQ2P?hYfnzo-=+D#3cPOT*_@%k1&*~AvKNa8 z!3PNeQXG)Bq-}?VGLrtO(ZNrsxD=uEYrPsRU76A~`ib|4#9tTf1>`1iQz zvcD5yi9}BipXi;rY3FhBhXjA-*HQq% zN{-`#^*A4!lUkQ3hhVWyl$ga`fq-1$U z%ob@uL;ti zjs>h%ksSp!hS!9KqT^yAy=W%{+J+qGX(m4~sab&r31w#-uhIfPQHE)#(IH5*V|?eE z5TO;2U6@{rcj>9fna)3@KIM~OxYTYOghFQnCpNS|;_;qA&FFo{ZHAsVtW80|zJ6&i z59>Yt!yB6b5-Umm6a~fGmBSh@U%{Lr6HCU!BQ+u#F2A>Bw5Z{O#B3p>B~PR$7j2+6 zLwIQ@47%DVFn^8SxgT&D1y7B-Qar>#!wmK!k+MTAzDoi%TM!ULhMuVx2Y!ba`9*#W z10zr~z+E|7mKJFh$-gSH@d6_KY4h@i7y{0a8iy^ZuoM@xjXw%G;^Dh{eRm0_;3N{t z8{3z}WHC{D8Js^&K7(`(LiL%ep`8IQ?ds!sBM;#sqMA|n*}puIZ{7(fhA^D}&ICrl zW46(MRbchl<4aT_#U*$vtU`Z0o@$gFh>EGS&k&U3omO0$@aJNUL<0*WD}Mqz6rBdBokm@Eq|3`BWd%vY=F$*l!}0wE0zX9Ms2J|8ul?Eq z%7?Wlo}v#gm)-_vrgH?2GqoAnq;ZK|ZSNB4KYC*C!Ip{E7(uJz>M`QdqF$F@LWfE; zgWKL8Q%*sln!Njqu$`Q@Cfb8)!T++|8ok5a44Eh zX?W$nmuLdXHCNs1_H}pT>qBVWlIfMZ+bSqpf{FRd0E!LFvIu(oN@6}LB+~=K2AAI{ zzN5@_ipla27zR7H<0ywjLuP?zvNXkFs7F$%o1r$oM8!G%$=~}}cF3>U52kN6rN6cO z@Qt-3TkRTilrydf{_Y1j%PEErd%<)RJ9B5+(>yGy)_T^n?6up&H>cV_M}MyT7lvB0 zk~Km7ZiF{tmW4IYrWcCh=!u?X3fE&X{T&q?WcxE|CvR08y~BeMk_@JZsW{}EaxKYP z?aNE{e3%i&NaIga2!o8X2&1V&Hk|vrl56a#aqYRgUw3o8QnRt}p_1{nYweG^g3B86 zN#^YGhmxALV^UqMhb&95d$9N29?vxX#t$9gVy$1oo`^TKR9`+BY0P!HyZ2cOW@CJY&;sK zEPWqTqNkRqc1TnH?!q)cEtbJuSm(%dv&kJ#x3SKVoF>gr6g5uBUFie%qM} zZZSwA&Jy6og~CX=nq<^=QT=(yKTll40aEjLK>b-WhN<&IkTVyqn%)X^Cuh5}JVHA( zC;;t|eH>{jvB^H}Y3p>vZG!X2wD-J@#j*R)WSf1uqI)RBMxUTwj^m5c6;~ve60EBkc4NALLx8dv9) z-Q&t33?brk)I08J*<@~xq@k6a+sSJK4c2$~k~JB)HD7Rza9q_h{HY`ygeui)Rv)n= z!8p=~U>9qun~SnF-XjZRVw>)OuY-*P~*V5u{jCD2}Ji`vxnu}`}?45OUXi-CE0`zT{ zC)1fp%Z@(Bmyc)q*(ef9jjf=CNBj$&9%p6E>9@3J3xIu7u4NNY4U9RXhk)uH(+dK) zcMWZpoAp%a+EkA{{P*iRTFVzMI*fT;+uRW$vAfpErEH=mT`|r~Sc?dSSu8 zfM`o@c3T4`ke@$4d3U=Y3U4^}YL|F6UA^>%950SjdHebg)Nc)JUwoYyyN3ZPe5&@* z6R&PECOSX?NHu@d1;(#bh<_PXc-vv6Yd@t_aU?nD+yKEMtaHYeffCP;_sffACzK6l z)5wHSz%NtZIH%_1Q6uB3f^)~$)j;Q!U<|L5q>JSAi0uyRv`5>W!O9}@6GBEb;L5kj>W{@q?MtJ|v%E{BZy4;V^DU z5uA5{nk+G}oxz6!dLVZPd8eG!P>@X*u?@3^a0IMB^HtmRz2QEKfS|v>?Yg7qCVFGI z2+9qWL>s{lI3s!*5lI6^cYnj}BJZ{Kc>jlUUL5frApArSzkpJIH}(^;a9R;Pp@?eR zFl2@W!i4QB+)5Z+Hhtbf#5Nzn*W6VgM{k3;%&L-_OR&Yc$6%7C9&995@AX7*=j>#t z6?DsyNQ_~#Ty8_fM86Vb@6+hzepy}dK>Unw2{!>yE5)NKL7Z{)0k2zzN!**mY zaoTRJ8}7zPEvMySPlhw@baOI`E@u#Ud7ziuxZ_tqpE zH?t=6hn}+p+p)tsiRZLZ`H8#u34Kw|R>zt>t-nnG)iZ_)&jflci-As@- zjRGA#i(@G+5tDm%VM`0Rv|AWI%LuU6qQ3f(IrKUo?e4-6cevB-_?b6sYh^z^;9bBc zM;Sii!HN%rL_;p_n8->gTztW~h_&_2gk*s1vt0tW=#(Q6m{E}e;uC;Ky)Be=gO7Sq z8ST_v4L7^di{?#><+m8k8$-({GnW1O#k{3x)x?Ap>xx75m53`X%0RdBFxlbt2#1+? zBl%NIFqVX2>QZhAW!0vF9~rgQm?iT^g88cK)+3skOZ@qXx0+U4E-C`~bHduvDP=Gp zg8oS3K+Niw8s=L-1WVHp8?co-52$A6h9pk_EAOiC2ilVC5>nabEl`VjKXSlNGry=q zKbG3?@tfskqZ?a>c2}>z4MF~xP;vqw7Ebn~Y{dtV>As-P;Nnko`IvM z7Vtl_Se&LA0$pqnC&8BlQfip6OCEZ1v;wWpnwkF+0+uK5T8T}-Dwe8cPeV~r&16Ij zo~7?JMrtn!de>E@JTgPU-RJ75M=xz9wgrxVnzgIOW;==HAXWESw!P4m0gNl9qP^me zFa7o-2%qhYl!h;3hdA-jP_)!g{KurezI1QMiB)DE#ujr@RGnpXnxugE_q@DBv-C+) z11mA>mA|mHt}v)3F;Ac8DLhgfyZ2T)Dk*Kki5qKK=8oFpQ7f|#wPaUd#M%nASO@OM zO5YviSd<7|R8ATzL5B0nKw~iV@B**uZI6?Y^u38q>tfr~SnR3O=GA3u?pc8eHL%7J ze??5&ziGdvMB-gk)TJFuHN(0pe!K%LQ3v)aKy4U+{N4W_$lpNI2Oz~J$7l`*N>bE! zhdP75#mPL+?PME0Zr9U15dAkHF%jO=vt$669wHdQj;DIQu;{?yMtq#1z;9e}uN^tl zv!{#VFJqmfeugRx`0)xw=aIbYSb?E<@AWv-DU>Eq#N0NU%8&ZS67iK&5L`yC7KM+=n& zdm3_*vI%wAf4>!ZdNHEhR6!Id_;%hkDNYWAMTRG-e{Y&n$ur3AgnD|GaMuhH?(LNn zHEpz2OPH4vjDL5wU59z4b(N5A3A_rXof>&G*2NRy%vf&1l9OYXknVNAp--W#w*Sk2 zd3~EWVsVJ>*MYr1IQ;LP8KUJR*ePLu2Cz2~KQ(bvA!RYhLXRNqS% zpvUD*Df0?=Fzzc+g`YpR73PPtJPZyfi46lt>GuDS(qor4ANWPBgJfqIzb&+l?5Kby zfDq-jR}!4B5CFFLa;p1yo-0R=l5bSSKw!MH;XPd^<$+pAc(oTivRlWRmd^_lOfnW= z+?(w^-6-NH9oRRxH8Fn(A|mrGvuysSlH42h1KlI?j1s^*<%Ni#(y#S}Obct=B z8R)Dp#ru%bw`DaPR>DB7zH8@3JGosRAOu@nkh~-0qJ)N82Z-x4EL;81D0eAg2_kjz6t<61} zXOvfB+Bv&MC}$>!zHtNz9dvo=$x>WhZmTGI)3y(L=t?)g+nh9@F_vVsS9UqFho0<=SS?%UhSl zhI7;znWR!_x4v)i%6;R>-zA^2&&5a9fUd-0yl`G6GnBhJT(*lOuA0n12noo^OmPaYI ziB+Rv$_o(c+-CNyj{D;YFC&)@2To1^HtXPvdq1DcyAG$k?!~3UtwUQP1+12I3w{^8^@*l?G`^1f=`TY376;n+K0 z)Y0~`C&qbDh^g~7>$z~?Hqt5o24u&jXso>`BXMbfE_Z*;Ti^Wr{Ls#*CS$``xr#%{ zP(wCh%aW$l#ScJBalywepQu{iOxH@%)q(Jg1w!+AUU_ckJ+>9v&s1A(A8_s_SJ194>}gw?`$TT zdWTJ_SUdI}{*kB-qu@sR-4e00#G44Zo2Dav72LcqrC0)OP67L;&k$#TDE-WMQe&r` zceS+c!#0Kk8UrzGRA!fRq#F5gqRumjlT-IOF`bbN&8qAi;C!{NX6|(X{#hv4GJ&b^ ztr+q7wNEmmp217w@$+96t1ES!$<{JDjRswto-EG;TQ?+dY8|fnMAfmhVeGWVk+WB^ zdL%#$Eup;Jx>Y-?z?1a%=E+Uc`a}|@o;Uq~Y-WN+T)(&;)Ciq+t>U!7DcAX##npKe z-yF+7=%a9%wd4)-e{1n8aWhJ0{l$JSU zqd<@p!p-#U`K?GYe@@`0685UOKHz9G=GpYX*Y0xIS@Ih%hh1YYCApNPW@;&UvFPvL zazMdDQ%74nn->^ft&*%AZb0S~X{Ztz2_DsChxsX@c4UU0e5%zDE%53tiM_BTLfXUL zH6bRO)k<~lU5iVz$e-eI|G8NHc;pCZV3s+7j{T-0n}MP-d-yMT1K}6BJz?ZONUW}P zB3_2eLAC9j4JrUnRD1m#&~vY8;noWH$kw;Xj7SiyxZqOH%1qEI2b#&ZC{om?N;w3U zw^_gqH9Kp?FpdmYeJ(;7?bqH~#$z&F@VU4=oj==jq?4&zwsplqK942jv^i-#5jKaP zAi`S~^kkYanQO{ zMhpH_i`oWnglM`R{wb0tUu{0}fSufej~T}nRDUNkF&N)?poM%gFXV2-18=yOyMN9e z&9*i5Y$nbYuf=@8hv&L>lo0i| z&H)acLdU4lF-p7PRgD4`xD1^>F9Irlw)~n&7YFJ%)15^p3m$MF%j(!l#BVw7>;G1T z2J)S#wjOHpnF}jAh+^n1_!1`|Pql$*q@C`?xXrbCfq_Aw3i!HpbQE!As|IcPuB(Gq z->S#iXj^i+bsy{#jkx1tvYZj0PWsG*MK6=0$)As9(UVfAnRMKF)Z5$p+4^cmNp2|N z28zRlZM-(-c3n`P$^TcFvQWNeH}ikFxFcWS{-9Mu0GK97(~mw<&_ZyW z8g2Jr8Qj>zO<4I>O!Apfz~NE^9yaEg$O=M-3rz(GZmb}ZI{0N)$MgZ*^~wZP+DXO#8O{S@>1nTB1@`&np5 z%H}t|dy|Ep@hUr4w)RosamwEeH)V-fm$OOHr`t2S(CTX*zqc@=barukrtFhfIn|-V zYlE#%&Pw*-6&=_^>gF-k@hk77F`Qm6;x{$!Ly30x-COf=&yk42d93y@5R;}dgk(be zZ?=m=w{I<(-R@PL_n}S@Q%v47#D`FQ>YkppcLXI{mXU8{@CJK-P{JcrTQ|0bC(eOG zhR(9*5x{>c>??WS1*T`?8f4%p)?fya9@39U;OnafTOY8`TD)_VV8vo_A|GAJu#_1{ zqTh&;o^(Vyc)#2ZyIFcu5Ss&{4c9uFF`1}(@#2ewUW`O)t!P3N@V)9VqU4V@9WEw$ z{gK+@@G_%8U^drxNlEg~8sNehC?@f3sgJjs&ny+cF)5353=uL~iqu+TuSb|>U|6l& z=c=V@6Lt=Io)N)l&1SjrkkUn6&;5|RIW~sQ>~CD9o&IBAh=qSQ(HYmfUrKdc3n>Ct z71LY?pWv|P$NlTg04Sepa_j&+J&u=?_NMz+Wv92= zi^BbyKw2CUhliUKn_sNWj7<%yJ!Bg_?|H6Vcd_)|@Z^v50PziokVkXW;%>NVFXOZw zF2BM7H{_F$nM+$AYBh`=Q_)MWg3u(a6`jw^ z^0CA7#+$stEjo?T`(^+0kHrI$zf^U~-XoD8}n(yi;aTAk33(JGefBd8^FOWyzk z)dT~9Z^gXfx-uv*U0`DsA;S|0I^=~)s^&51qMI$EoD`MCXT|TPsQ8?GQEdJPVV5e@ z9d&09Gxm2Mo%K3Czio>U<^)@<`SU=Bo~mh3evuACqm79#{IXNyh;qTzckCXroynSi z4$s*gvHmqjggY_3QOtKc%w+jqX;|i7RhF%T-ZQHC{T%LF(kY5tR542y8*;P%=g zxSL}W7#}$v9d3hCs%92DyjpeX8EwZ>S!1)%>6t?K1#g}_J-KrdokejN z%XpYENh5G0`|r#cgNED}gbRwys4brJAU;3-=TRp|0g+1t*iu%@?NKP%5@qR>1ipIF z>H<1*l@o(C^)>2=LcLAtP?FA6E#M{P4yL@?vO;}<>VG^LG71tXn9*xH@)%r$9LP5O zq^v@Dynb`CxLW);STjQ=wUn;qV!)h~x17iQ2o) zLo)fXEjl=MROVGe;DMY=bXegf>IzkS%5@X)E#S93@f;;tLr;_XIdl>RJ1QopPZlZ) zoo&ErVQV7CH&S%3DxJh{2vlYg;UB7R{hmNIJp=AX`79L^zbMivtkeZz>CXD^nl%sc z-K*zElr9EtY@?O1b5HSb%}N3; zi!u6tS(ByQH=D0Vl`d%Cy@qM1^EUp=3qs`AJ+4fp3EnvX!qi=#tn?z2KVNXj&%Sid z2|beL8qG-Pi@&eIlp^RdjJN)leuWOg5cFdBp&i8-p}JTJobh5O32y8uA2fc7#P%D&%XTvHa&@ zWa0g{&td*=`Fc^~qYze)CVXY;vm zWY{@vcY9Y)(zhxqLQI(nvuIy`I}Ng|WngawI<5KhW^0Sbe&bb9XD11^0fu&LJH7$mJ(=(5N4t>j1d$oE);h5olQy6$P^>=PgZ|Ifr0no z8^)@(00)y1C1S-Cz5O(u^DBcO z|C9gB4kGpKhex*N(_oq}tV|+rkmFm-N%S!YnbFkk-n+8Jg#gh=h)y>qbz7Vr*v&%H z4tIUy^f5Ly9nsx6=W^T2bvmEcg+VzWSwH0=&8k?W@@jESlpxmU({0AWxVcTRHo=7{ zBueITtcCHBkKsIN)V*>o*1RX;B{>_UR6ptQ#(vi8D>r`bcfe`_=)m+s-U!GP!?b7??u{PX z+PODRW(3Y!t^BnGqc4;6?2;e{+4m_C zF5TFCS@~a_{C>{Q8y(XO`M9!WTUhpv0 zQh0IFr^laC6XT~QJCkp`*Q*uM}x1 zu+7A9;D3o(6)Vc=qdN?hI&(7LAH05zRvM7weX&ORjGSc5aMk8;b@lt6uiKYZ0e%BU zeZAF63B_rGCc~Q39h%-ZL^|p89O}VBXv;M+QlX(T z(f7PM^owpBTLpK?4Bv$b0I)0y9Asrwl50|>;x6@dFU!v=kD@yk%LOo`wLI1f#{DrE zv^Mc)d)vys{hubyz_U?2O+H70Xutp`XwBvMNFJMIdaIM>ZDmjL6$?gm+Tp$@HVk5_eCh|Nv9#YT+3L8up}zaMvE(@1EL#%KyWsPi)Xj;6d#DI!c% z+80Fo?tmyjt}B`7U1L#JzV=6EAY-LbrLM5r{+z)Eb@Js7cEn`q0qyA91?dtWB`hpK zQIc{z1SzJ#K=UC-EKU}+&P(b@o8NYUSY0D@t4fG?#yfH74DHo;Yyxy69kkfD{})D` z^`9$%?DW58C0{;+$CiL3tMt1h5dJLwJB!wp7f5eMWvF7%&XpWbQR*KC=Jxd$kBf&D zmo!C5vS!a9#f)F)xtzD6!anUuzamjwXtE(C2KE~71agpF%~LVo_&36-OoxcBhAd8q?Km+Tzkjj)~_Z$8UMT(6w}* zTbdz!baUBc1q=xe0mC!zUV1i!u=mF$svW=a9PEyL(wGjJeKNl5*y2dTN5ndnaedm?FYvInH|cn4SF391-|_R+Fv~LVV>Q zE5k$}0LHA~sml_`-XrA~BX6|2U*}M8cd?0DnaUj8PiM5RKGnJ0ov$@I@Ah|LWaL9R zHH1y!bHxf7a!(C+qMY+-@M?nDt|e$)L{KR?lRuhhwu*Iv^c%^>NQ@GokW#aY=Na5T za%k5veSEq*%<;Uy^ z$pp_X;q0W4bT80=zO1ts&Zo&na&+5Lp+GJ!JP0?Kj0ni$GSm}WqKNqOk^XW-MZ!nJ zKoDfnxK5fYQS$eimJ3&|wEL8_4j!A5 zAPLkhbRN>An4YNK#FL`al4y&@gN}MzQJzRg>6hTx5iwpa;H|v#> z%ZX!C^Oy4-h(p6aq3Z0%4^3$+%Qs&Byg1jNAHdSCkCx+eIPxlw^w~5MJj==06DY@+ zn3@=PB@+g%E3x($5Qxvfc(=WIHnbV9GsCJceAFs1Ij^GxHWCH9mI}WKFidY`!*K4k zI{XqgA)RjSHNRjO2+$VSpVn>TIdSCC)?wxU)tr}7)?9C|BO+juriy|rH=3{nb=txn zstlDVJODCpNtqcr{GrgIz+0Ga5JteBU!2pxF_Hvf=082WKlM*##ogT!FHKCu(mKcq z9xR6QhyRVau7Jo)T+P2)}*g&@kd+w^#t&A&c^x-28Xo>5Oc zYV3Mm&R=BEiHV^68i+*pk?!QmU0QxIhF(j}y@nsBVXn;)`qaI+QSlAw%pbdS{+h@; zzFuf5SF(OYxF-Nks9_f&bM^n{O}UVDT@o(C6&4ue%EK6ZpZWU-!$>Z2|IZIEUUBKA zkZUgVbZfZ^;X+&EA|Es5FYl5WSBm zqti)aJ#rDGv$FTW|K~%>KL3NygLp3YOpiaZgILqi3x^L^A%t9IDmCCn)93S+B}+f0Gdm*p@yeBR#v{I z<|RP;ZH3NY5i3$At}g+kP7}WsYa^fx@{;~x!W|C&mvps`J)E`>i1M0=c|ATjt<2ci zq$~}o!p~ew3ay0%@o6b2Fmpvrz zYJSF3C)LSa@q^yB8%QjHerXP%!h# zRCE&iSJ$)Gv(XI4ao4baD%P=PQalZ;6MD@=K1FH%x zixKC&W3wvh>FM6~k&iuqR{%(!OF&Ie|0{5KbhtV($}>4Chpyf4Lc6^A(HW=nprc32 zO0R=ES3+$hhLm{Em&H&tArcbY+FkWW+EUUo)yZmI(%spD*3R>r$QB0r?W>mdli8C( zEt+`W)6+$WpCSb@|9r4wK{_!?BF$m|TOKVsgzZ_SVvTmOa)r9?dfyOr2|5NIV^XdW zh=oR!dv!IR`%aC9h(b3rGd4YzG^wgrYG(HfzN1KS=E6V5;&$aqR0f3sn*a8r87MpAD-@% zardtvC|^2zOYDS{G!Mi{f%TB{TCG27ko@rUh^{FiDcS!f<-kU&nC0Vfy3P;*2s)B8 zb?LovzZq!!F{~(GuZ6r1A2_vKtN%F0KsA#dBK{Tj?ue8gcRr4tLK-N?jjs1Smn}eO z_HcXosBc$=g-pIGsc? z%JGmo$L?A*6WAr#VW_9Fm+t$oCg8(JT=#^r-?XbBj9Y3kK{9agw6TnBY54J2yF~x?b5IQ4{wHttq_g$NU=^ zjmOfzsE{mn=y9bLgbRv7L2XT&tE$RaU?9AA$^EQHL}!^sjf#?_tABPD#|L4q z13x3+%Ry5;k+xsvk@@PsqLiYaYp@Tqh9MW4( z{Jj9+s=e^|=w1*>;}FWnLgEw40=gH($gG!|f&t@pnqzdgE7GM%>#q+wTCa<{Ih%$7 z>6iZbtBwt6w6=HJYBJ}qqR0jkhq*nY$yjC^cr(8I;izWfxIMRewHiBXSzc>4lP9#F zy!mRfldX#m4Vj7Y4%yv_4LVxR@}%}GVl5$J;NfbF!IC+Wu%POV>(n6rXX?YqORQeu z4ZQp>uTS+K``~Ah1OjW_uJNR~+hHge@y<+we7X6%SSJ~mg3Gre0uPfte@vRF zSpb^u?qo?%pv9hGt$+3j;;Hu#?s0!Piz?>i)9Cebh+g{zE=^jar6vlp4fxgVO5fGv z&ABq$?i(j-sifVT94{re!3S97r1HJdc{UhJiXf z7@j0yvWcwD8`#B~d*Ykvr7L15waQi}PWvFTi<*CCCR4+=lTr5}T=)i8%U8UB67IU& z{jRIGLMJ8G467L833WvpYkc$uzl7XG?~<$To`BtY%d_t)F-4}_Kt@b}yJT4*QoQuu zBQUF4<9W;`+Q8+e^I^R@EBuGYY}K`@o7z&Gpp? zqyd{#T11#gGR4iQ*Wh4LY9nh>MTD=IdtW|eP-QN9KVt&vzdl z6pzy=uNEAWWwqcUDk~yEaBN=$?6;LEu$y5#B7ttim>_4XFoZVQd4K$T#ko8qD;2u; zw>>djRs%+d_^|1PXBeqEn1Ua#zm%+} z+$7*$BCvd?B;gW8iS{%SLsrbYi)F=QU5X#K_dp?3!Lb!zKV$hLhy6I;n&tOh21|_{ zdk{4w;*48VnO_!*V%4~f0P3Hi^*1ho zFBxo}{ERqjO&{Pl@!!uJ#PSE_P3IT(32qDXFKm%sz5MAYxoHZP@iLuSZJLE$QxnU} z7&|tf?$!guZ^lC|c#2OQWyL9~y*Q_)rhb31uQO(R>rikR^E*lKYR79LZN&v_u=Un4ar*%w_kE#}`E+<<(EG zqyFB`x44&5Iun>Fi6$&oyU{G`w{kden87+riFX zJAdy#`x5Uy?vpYM-SNO~if%LudTT=Uxk+O~p`vHnX}|l4jk|cv}M+Z_8(W9*l_!^8xuJm>Z}2 zr)(35<|0PVX6=|_LFgtxa>)uig_ga72{AZtqbr0RA2K`cCubzFA-~NyurREsB@kX7 zJ0~cuGea{|A?j&ZtTRI*EvkHkf65a(&^FI$NDk=tTE%z2a^q6h9fs-1TCKl{F*BW^ zi_}g4AMx6z;+l__3;!)Nu!SJvBuXPpzs&(zhQW`{StV79(6#4NdDs6VdXGng8AC)r zCK1qa^?-=u$e=(Lp!wNd`nl_7e9yt9y%fVe1-m=uU4S4@ERBl0=8Vs(Pi>x+L~n^v(so9aT*QqOq0y5;Xh?tgp{RJsYuz0o z)}3bZqnpe&GxFCa&$~NI=}vVw7Ji-@px~M=Q{P=k`Sk$QMREReUP5QWMn#TKAv96? zvy(^Ab*$Ky^WB2SzLphf20rYOkf89><%BAue2d97h!DOc0>d_a=zHTAlZOu4%|Hzn zm$?X;GTp%v6fTym{V% zhoPA@BnuhKOm0^>v%d1qh`EmE&e;hPa=u~`|6{f-o~WNGq>m3uSou3I@`evOG2ztG>IQplvXxe4W54xapJF4prnllPU| zj6&;j$ohHap56{)f!x9YnVBNDT10A;Rwn3`uCb`6MuO7J;8fj6-+jyX{B8mvOnf+$`Y-VL+MNOZiS=w zL9rg>+R#O>$y6jEP~6N${ed?SsqiP{W8wq5lk1zbAJmZy!@t_9&B58RBiwxL(u_&t zdW~GSh9VmeV)rHejTp5_DmckJj5;u)*;9G0T=FtB2Zff-h03F#DOlI~wAkC6Qx%P! z7gc``IbCY~sV7=%ljD@*gb2C#4D{Hm?H%`zj7h1FVK-oI`n((;0Yw8JuZo0m0HPSe z*^Y7@kZ;P5R-`1>h&7-H+Pyh`%Z!E2vDIF5D4|C@AUYa80Yly< zchvj{Ii>i3oz9o7rWFd@IqTLy^7X94rZO0b+sL`)1Qsm8N77sAP z`)meG3|QA$bH#5*=eM)A2lafQ6nYmMlG&R<`p>RU6@Yv3QGa`3JwRe7N*-^}qa*LM zkGBCa+6#uh9Je|iUeyA%Hd?{7ffVb1V@EU-<_%_*haYDwe|Y_w(|_FFF((i1t?IVf zTx@cxBoXsexn{_oxK1(IP@E8^T5=rEEs`}LgqD4iuhpsZV>&Etuu zGI<$ac853Dj-TyCFn=4wHN?B`o3V}NV)Eq}i`>4#o<@MY)jvL=$_M}1^GQl@ZkE_T zVJBj7he*~YK~rP)U>BQT$vKm2mvz$O+3^-Lxh_KEdf;KW)M!&mHZwR}b?7@#F8>2g zynv(n^f@@0#+s8v>Bom3&nqbZP=1B`HY*ouOU2B*@Xg6}I&A#9ZdNieDJ+!z7tRrQ zkn6X)|C5v4GAH)yred-a_#88CMr~8oDEjO7&4$#C>O6>od-%($B-3Cys) zZ(WWl^cS1r3;Sqh0@FjDBfj>$Jn=FHbI+k4uEH5Wie%c2B>wfce(qt%n092ku`Rw^tF0{eW{b)8)2 z);w5qVd_RBzv1g{d(@TrhP1}%)DQdrpS_xXx;FCpvf(6E1ix>?YhlULeQDUzAZb6gh+umWfNUaf?qbmARpt(dF2g&VKeP{8CVp+Rb%fJybw|p9yt)D^NG9r`<1oaEh~*HhlK$m@S=meM07R z-C&Ir=%Ql2xNkmXwZ&@4vV`MpK6~eVuqf~XdS5HtBljImZ!esYlg6a&&ZA;*?5#&{ z?j1pnu2SpY4==rX7;LUzDVAu>=~Nmt<`=7VBMmMF&5?N@QO_g1{9XLS`hl57O|aQA zkANe_TS+hT>M$fh_TLRmwn`L5;}e^ zt|*+^qL_dO$~6|@6G$z!sVG%&YA`(p=sm2UM2WfSA7c2+%|LQ~ergmkq`%YHKUDsZ zcL5GTQu*M%2A;iLi$(ejBqdf9lS|>l?}h_081wn4I-vxzTHD8i?BX)|9yO<=Q@(Tc z^T?b|pjE_U32L%g;2i$m9kF~WzwGV{R)(YYIoCiVSaBiUPsIEzeW)i@$f&VP4qdg) z(AuO-1`rwiuUV@F$pA0-=t` z8X782hqV*{h>5yP;@;lJe|B2qRY7N0nzURD0?O&sZ4GpXpVZTQ0ie@5-!z*9r6i4c zuV7Q;OfKhJCwK&UcXPgT1ni+wWTMG3ZD!2ib*+!@(|#RGnk4;`N-v2yqc3*0tXiw8 zRKFA|`=}z9b`(s`7Cmu{(4PeAh>mulk9SlXaOS9)#TisKHvd?7cpO{0S?v1awhHiFa!!tm zWC|YSTJ=CUUupEv6IxYbtcU_fuGF;j!YN6=-eOep=!R~6W9&MXW8ra~yXAE26PMm^ zv#?@x$ESZ(yC8Jje4D^a5W+kS$GO>vdHAX}Tr|~527>cquO|;(0S;}S3V%C7D^&7O zqd{v6A{8T3ykUgxb;2Byj=^3Sy7e(}LDQI2Nf@m?k4KF+!BWr9B%f;vqRbT^MLP5LnBGKKr-2kng9_t9PAZ9V zA7eAwzx!dTLWlT@$-%pMO|KO?OA^5l((mIGvo6;sjUz6ruV~8umPJ;(k%ADuP zhOpoTa@AGN&#vZ>X!vyEju7ngRrEN&2B^XrWu&E9PdD)pzxUgb4CXm(q8w7GEm!J~gx2Nh$xsQB-f;Kw6ms^0*ayIwB}qGScS zk7T3F%6eQsK1Zr_MV*WA6gU=yEBH9!Xe^sWA?B}$2(N4}-^($CBaQO&5BkN55BR?v z$d5Jj?f=y;o$kQcX6EAL5Q^vhW^B;%o};skZ=}h?!;6yTF2>ZkRI`}Mi;IDS%=}eD zR#A5M&D?^SSw6xB&w9^BaN_|CmF2CXPKA6!Zz7GENkx?_347J>#8aN8@(zmWwaCv) zLK*J|y%0e!wTZ$PRVr72JtnLi6s*{rR~Q3in8_L;Vsi~0%Ig8nYe3Ez9R`2pBONLJ zepg?KZV`&y7k`7J(ysg4J@EA8XJz2r&St+!ZIvV{V zqcV~rPyM3{u!9A`4irwhHD3c+A#k_7m|{u)lK2G(1Cu_HTs4{rc+@o)_3#?XWLMCU z69tZ&kCsfMgC9`0$MB&?5ql`5ISQd2_!E{>FacQn0&L#nCFl;g`NQ#OLn;0%mUwy} zPO7zV@`Q}&kD9&9X2XILT!;zG)DCCk!Ve?Z5QgBn-i+jHF2Z{`85A>m*S}Y?z66z_ zK}ZOU&NGS?HwTrf@bM^gnll_Li;p?JOhEE-QkOxAb{Q-CnNPM*6lI6!O_&JLI}vf_ zDf$83Dy`Tu>UU>|IjTBw>%jV;fOpWJA-qidL|+?S_O{cQ~A6>+8Rx)*&1hgzv63+)^u5 zy0c{#q_Yo=?`6xY}5H>Y)C7TZ>g-R zvcpHwWy#Yhel(;5AuwJ{`LUB z*$gN`BAP*$#XA&^6gTRLhJ)&sW~6jk6mUx2w35!E;+uh2sT3ytRI|~ zfMC0#a-0=4s^~Ahw%pC!cRexZinXgQW zF9ilo=s&>RKqGA(9PAn@1#efYU`|Hmk8ydh$KDPG9tbMs%*J&nN5okw_Z8~RCSG=C z9CdTDX4jPW^LZaN_37MB#i+=?y3~R z+|FrxKhcSs?X5#H!IO5Ke0f+L9YBjf_=()scBY>|edN5+ein{l=sB4t`)N$_9(C%` zY~v~Uh_5_W_B|LfnD!iTW7?0@eZZ~k101si=i)s~kEii-JhfbBlI6w}IeBnZ27ar_ z$mYITeEtg_<7-4_xk7j>3o>WB4^hiLhgF9k&`&YP1~v1q}W73o6!dM&)Qp4R(YT8 zA?%8hR`#x|DaC{=JZeN$86&oZt>yQv`%IPJ*SNKX1;V7QVwE1eVpT$}HHMshFDL(} zj;;P*ex&99%#XZvk9UnG%MD6HlSv$a$f_R|vURw2Ke^@ENVGNeh>I1fSuxnA^91po zAk2g>P~sP`Ss&vbzK_l+geqA9??vb0%FL(K?Q`4w*keWaipVkzB5(t- zjRVE{dGf(HiLoCJGp!E>ZlwItg7vlO#XnGJj=HAQhKa)ETw@gXwre2~TZXiV{TN;zj zz$SWI%5ATPc#z>HZ(4}1w7a|+-d8~$F%vZ(p+zLW_WI9S`C5_93RMhL$<7$0z){N- z{Q_`8vp@h$3+M!k54An*4pUM5CPdY(>eX~_hxZ{rZ(WidOZ(+Z=tm5q#Z6KC=Gu+X z1?S4Pywm#La2cuHP#MX=q?{hW%B9I^1aKN@F36M4yj(4|rW+^~x3V z>kN#*qzs|}Ewh*z^e=A1a9FHKTZaK8gp=K=#mK(rYp2wj+wYXkEA}Z+>54wte$dA^H4tpFEf!o(<-#uu4qy4awP+#5 zx3ef`maIb5#4GqFQP}SL%!x63mq`U(^tdU*5C7L4OInW4;YkPa2Lxlx>d9)s8D5k} zy#tc&ticru6>GmQ5BA$FcDxq8N6gJTzC_kz*EtAS4`t6L?Ka@Y*Q~_Uu~*2DzSU3K zizWJ_NCnPMRhdzW8^0wu&m;S7Oi-&xmtK}UO6ls$W8z#^+;>dF?=WH5)^sLq7)oGkb3F9Hw;d@L>|5|H+$n({7LKXpwcdU%TV4S$~7HZ_6DNG-o zIzE6tYi;@A4=uuN211WEyqNz-!DTcmph)x2kaPh_jJlG<`}fhh>>@%aB6ecgf~aKq z_zl|H{xj<)=yY>DMdo7E0@GjL&^Rg-RkC#0eP&`JPDd5dF)#Rlc9hLYG>xlXdgY=# zz?05X5yRbVtM&6~ZwZ&@A^{{=Tu_N>>O2#_T89j`&fV}+E*MdQNaLUrZ6_8x*-wrQ zzY^kGt$;3F=y%ueLaUe-`$Hj}Z{UK$sy>7=Yej4=J;J*9um)8MVYj~|ccL$j#`v8y zX*{z^P&4O|^G7t)V2-->ZzDwCO5$-C-aMQ4vBeZce>g_UPk^MXW}X$@h#(o86SYkC zK2U8^%OKC~u%oeiC4q}og}Kot(RWN&H)kV~#w6O-Fcg;k0wTg{aw%HLA)c+^A7;{L z#y=2a{gLHP&90A1jVQ4j$K+NYyu2->%i2MO2zj8x)Ka0Nm=`aFzJB^^MzY&=_Umo4 zMU%OujZdh*Ca@szfQbA5d-)|g3d33{N^v2~NehkB?vs=F(Js2l=8Qmuk6a}J#=0Doh_>|Y@iQ*_+6HLKwPsvqF6ysOintLyaRowt)k{pSXTqQ|r9@5Ppc5WBZ zr`(Nfrg5wKOQT;rPPu-4A3R?n#dJynSU@f|@SlGh8u&a*C4ZEQHISa!y^ffnkuD5U zvJLRM(d^QHleUqd6;|Q#U=xBi_GF1nRrc>^@quALIvp%xYS8!LeJlAWi$pa=W}#D0y5b3 zblw2sg?B}(IBg9bCPj2J9O<-Mm`mF=Z+0ktJ94J2_u)2)^brFka^&}KoBeu;yQ+3j zSx!_3jeTy{)lX_ViGP$Rq+Umg4uZV-^F;v<@2AU?A6u^pFwv zRO6VztXE4Wn3Gu5zO&)+(9`MLxUGahMG2Ae-gq#NZ)<{y)T$WE=^1VoJTfTQ{xE-g zAt&+jgo|nAvOn*Pk6)_!yojvsv!4CyYS7=;FEjIJn{3d`+63{|5iOHA|HQo??Uf)H zg<#Mkx`32ZkW|E18>lUEVO6FkZKL5PB52sRVRCH@U9 zDi$;5L|^S9#$~E0$!*5=Ju>2)2Ix_}!-l*EqjWwC?|wV{4X=S1;=-I+xP=`#QK2{? zcK$|ghCHd%R7Bg`n*4kc=xGZnlshjtMR*39MC_erCL|=(#H~dL-)|=-z*D)N) zy{h|@(P}zJYI*T+P$gG%M#^wY3cqiOa#)r%bkeShI|dT(!1qk2o+0Ik>cxI}tEmUo=RXK-v~ zMh^jxR&u#zeK!>Q5l)r<9)O1)cajFR;a=+r4&q{zUJ!)#TPQfx(VInaC{21%{`wcFdkX ze1>M=#8tAt~QaVl%_C%c~h zK~Yz2OjaxSCo@=7Ff_%146$T@1>cd}_H@dLDN2c0cSV{l-62m(C~Dg#?e8-wpvC%o zgb0Gi4BJ4*T{clFc4Od0z#pvs63jkeH$hIl$%uF0ljHf%k6>a8oId%{G+v4x zkpp`&#U-=g$)TNZvG=|gjedpV%hcP61pR5s_J5$5xnT<4>ONYEMtfAk?~d$sDJm9y z&q&+Vm|b_Eg!KmP4?X0Qr7_&NC_5@RBx}D7i$6^vSF>fJ$WoHl&`~Kcv|kX6bbWC< z4mDoF)WDa1gM5NDWTyS-jh%LloQXv)*+(=SQOd+8_?GjbS!L|dq3}_Xt6muC{`i7t zA^GO#fCILo^Tu|!@-pvsZ|@7*?|&MS&vKFu;zP1ndV078pX=GGpKF@T+9)u|q{m<(TYX-3guC`KlyRZ_IKPo*EtVBpZfG zYr^CCnY_7|7UkHiubl_GIIxI@2y9+bIhzj-M1{2Vh?B_QHfQX2s{MWRxL_SBHy-57 zms%}yiX1&U3V5rWZT!)uFsD5i6!cYOGe4v13_Vl|)ed+n$P}KD`r3;rPx#>(Kg@gQ z9C*uGH*ETHAuOP#b0Z-l9~GR&%JHjD=(Xt8lX6H&T!K8hd+r4=7-C<~yH#C$O+FLN zJ(8ghCd&Or+#4ZoG+0^Ad`Ax2N?gto@P|A-7MaJNj~He}W@hCs1*sLS4!f%vol$}h z$A};!`7p{A6Ax+N(x*On;tWk)T_VxFm-D-=xL~=M1QA*P4;t6UrQy4EwV&0_azZWu z@RfD$4?}1QvKFe5CzFBje`J7nWC8@?k?V4&-fHAYmdEpPZBqus)BRgYJ6+auQ!DA}x;J*3XW4@>+3R#&=;=x=C$G6L&bInpPF5JYN zRRpVpPADHQE4F(5Wcsg&!FORu+m6k3j+t895EHIs-05wvNvz0oj*pHsLkf&1G(Lo5 zYQ)l<@1zov_tbU%QTgHIayuC}ARbL?hrwjSvmF9B2_{hzrol1aPx#4=t_eo_!oDZ@HGYhmZ!Sp~=f-;`7K*g&M)-XO1tH;aS#OZ_ zB&=sz+NCB{6=r8tDtrfSJnf8lf$2n`b&iJG2%P^wA(?WmU0S{|pTiz8JaKrU5*TXuKBz7jkS6_UF!2JFw1?mwUZ@*GyV^?ucm;8rVOV~| zz-4Fz20J6tk9`zj=}aOlDvW+uyrkNN;E%C{0VhgiUBQS=XcD>IJIfKn3g=IGJ`o9h zq7m%IuMCeII4L0rgA+=0$&4WoG({&0!G(QwpxZ#Cx?F_a7 zSuy!+n9a|oI_ndD4oq@xJlGJF#QQx~selPFJ~QFXhkkl5Q60T@0>W{gqz7EZc?VL| zP$^hay*LsvSW>!!HUrJL(Zj&a+cPuBk-$Vs3`7x~ULG-Wcy4 zz1PSWFSu)L#-!z(@_)Gl?_-VO;Q0JhX`=>feHr;@qzK^U6H*X(U&gF!#?a^s=30f< zta84SB^w{|3dgQ#zRQ;!h=F4omM1D9u$9<3k#-m$TEJ_@lK1%z0=55!3P(W%?O8q_))6YScSUB71qub3# z+N`Vq^xNt6k#lGAFB@x~=Ue8b5j|{tPNC`pqH^bora6K%j{~Cb-GHVcO^N`|Wbr$gW*_ zOtw?*Fz+CCtuYX**%>D>#qHH5buza`?x|Ph1`}&OPS-}&q3pcxdc0QweraZ2c&lvH z{*+AvuQ&u=XNhTuW5)bx^FB%9FQTlyi{NP6_gV?okz{@6$BFYAdlIp8W4KbTSVvIz zUmfcw5>!);&9B2bBto^#XZ5rhoI8c()>S@zO@Bon#WU%J^x=z1#Fk7RJO1%atPkL2_uGFr7-nLxa}DfeKA>vL=^vF^e}15o7pXGVLu`3bH!K_< z*~`eNyu4?2?ra!0ChkDs%a&bwOam z0`P%_`UV$~1m<~lUiK=6kMCLr`7m!=XB_*$(fu}^=$j> zCK+B)y*(*Q{*lUcegn1Dd}A#~C|xLxq!d&LLm^dY5I+1r3NyxVE%Z99hAP>X{Q0Q2_RE!PV>>`nucHL$i_`Dzr{D#Z+L$p`gB`FiEkV?&~$WVtjwRXgF zapW#>_pU*#+wIcN5GzbD_(z{%u%m?S-f?*41dzQA{eC|VBnw-Jfpgs93i~Jq5%uaq z=|0G?#_;-tRjb+oeFU+|Bsjn8(ers}5|lS!v_)Z%QO7ixl5=&q|MIT!+0eTS5DHz! z+AVL#2sC_r`Xv7D+NYfKOE>8P(C=;Gp{mrE{_wu(!NgZ5smcC>Ms+j99`30hAC{L+ zZ+lS|Tx&e2pe>p7Pw;{ZobLVUq+1wh=I1dZNBae!yLIgUj~uK$RN*)(40zK2T04Pa zJ!GMn4p~a;MII=fLfEWFvp_zgvJWnV-P|x)En``RpCP5Nr0Qfyy0wzW-rzd zp%*U-17!k>JAnrqsX{>_qvZOol=rfL!Vrl(>a5&-CB$fvL>X5NvfVkT%=V#ItOUI=ea-W2R~#Kc-v+?>jCz>*dYPvw z8ySw!S?qob^DYN+R$i5UrukGYIFSkcFu)Q?VKZq5A$87jJ)&? z_V@NaH}8*}UZh)6C;+J0)W`5EuxfWYwK+9aKa_E4#;Pgd;%+mo)YfE8OYXy=kCTwl zHw!2Z_nQSNILT5xPI~ZJor!1&Qiy-><@ur@kPHL1%G_7DXvnA~g!>K)la`jIvACw1 z?YAxZxydZ?sl~S0gNUwmlbxp+6S{JOv2*{ewSPghgpr-U?fyX-{m0!AsDTC>@r@C~ zomjzjkY9C{585L@k)6PTmt0SY)IxDk73G%H<*s6yoYX;!)W!PsU!KcB7Hg)S04Nj-H@UQ^Lx{t>&Vt`6U@dBPyznlb9G| zqoK4r;L-~<1k5l=oiOWin>z;#VD;1;E0tJqHwkL1QQVe+TqH_rc+T0 z#Mn%=5&>C*=>{mI6IgPv01594uO-E7xmMDB{Bs)N_`=Xjzmb&^Ibe|92iDuNrT(o= z3xrxagutc19u{1Pww2)=wTYJmC?Jgp(rnDAL=1dvadj*?W!2QOccY^@gJR4%$~n|R zH|fCdL3GxIyl>@i;WVgUPZJ?dn^&Ia+z_xmykt1psGxkOU^5{6D>zbqsx(pwKD5$! z6vT6xZlUUd!Ls~hNKWp{Ml}b!Jr-Bo6F)f96(+~i904_=pWx(Z;F2-oyG34Ge(QJW z`u)92gn$n}4JjW%2g4x|Q1@EnCsO!v8sXxwJ&^|8^u3<4)!H{sp<-gdf=7za?lGnQ z4op-3f4*2qPxS|l`grYl*Sh7eLp;)lw(028&`{>A96L9!`~QO&Dh0O+lMX2b1Ippb zghEy|K+7E$ftUybOm|J=oA(qh`*}2N?Tz-doox-teBvhkbTo&L^Lh9@F~o3Hl;X0< z;j(B+oTcEA>%ePuK-Jj}6KcOFk!lK+z6Nv)4zuXhYR}m(1aha6#dcL#uKl;Po_3Mc zZpi)5M|Mf~^uqX4gB&z4=x1Kf3; z4@&KpfnELo-FLKf0>10|X46s^x@`TZp?-yX{r@Ur{(m#zMxlV7*>as~!~U7QP7E2a z*wd;b58(OipziE{BQHYNMJ)6MVmN(vDFU7vf{qDsb4vSo$1v zgOA?1Tc1xPzR{U-$qwE)m}ke&zj zJAE3`C)Rl_5oV!3r<0jbxlm94bYKH~=Yo3f@p|J2Gw6FF!YR;z6{dzJ=4GJ(Rwtzj zKne;Uu>y4k@kXp?O{b$nc=DAgAvsx5a?v^<%re1?f7^RlzQFXZ(LU+#v-zXKVPzm^J$U1up~+^y3Oa= z<5_LUKO!=`yO;l7|@G^{b>O)zIUJd zMK3}vB`mURpC(87(#OZd^o8U0>I_Rq2mkqZIgbB0<~vEdzMSVRj#mG@ad72P>aU*? zrV72a6taMcZOyaiez|-cxb7`-yJi&3F`tkf>7pLo;T%wryuPh_XHJ!Ti?|ndIr_Ne zwp!h6?e|@>(CnLDhkyNfZ>^`N*FI67Hg_{wvZvs(pIZ4Uye|^sm=8I7u>7Xo??&OR%3qPHTlnZ)8Wg~>1X_Xf9f0? z$AA9N@w&opHm;~)Rp#-g`3s@{>dOjb;(eIqkM0fxe#!m7S_iULUS}K8RfBmkXT83- zJ^Tjj9JDU?^X$n-@{%*r9beO9YQN>bB#vh7nPQ^Uu@uL)*8uRkNsVLezYPS1TK-4G z!lD;IQWJF!jowxffk_~4*rS~Ke`x{i6r&9(AFvmhs1H440q~ONEae{uRT8;y&?6)c zd!!i>^eiETO%Il4j7e8MoPWEat*C9k$e7AD$cX%rprBZ4lGSAEpZ}2=dXaYH2q3bq zibG5s_p`XK2+=`Bc-9__&jH~_@SKlsqncq%UQ8N8Guk;c^&bd z_B19W;nljM->~tQHfTZAR4}smX(1HO|49A0Ub=cdFt%kBjZ>WB2 z*0YER3BW2M^AO<0xRX`nj&S=nd=$R<^nFKi=g+xj0z!T`@vWyvi;-|8ExfNTa29K_ zydFz$haMW*Q(|0Rs0ylvmTAj({?sNasO%hDJHF^;Mrw_#0CvayAT@Mkd~9A z!RO;}9vaj=S&$((Vo0$qcDq^oY|&-+OzN?*TqlL|?c2j`?2Py&Ke%j6QN+Mcd}TTi zdQ%u!Jf|xC$xqF!>kq@j3=h$N(^2*DC1R6N(SJSc(UnXX{1FAesW5CVzS~Ia#CsQf zeG=WYfuK?Tw#z=?cKrAKsO!qv`Nc2S=X1RHYn5BWaiTE>EGZ+ASZcl275P zhTqkEa9E+x{yinW?C~ly=ztyx!;txbr%d}7N8l%>Tmb#74}8RayySk^MTY3T9NbDL+@YuH-x^)l>}IQ zWRz30yduQ_(exKo>w$4g#+l^FzI*eLoQjBb_)j~Y9zKVU+ekiHoS zg_pmtQG5RF+2z5YJFXwmCp4{inw4vP%X+?xnNv$IECp_PO-M*QHrR68u!xvh3N5r8 z1P%f%?*KRC#bl9Yj1J?@2eS|l4%(>E8C}wpT-mTe=-krqDkf2tPu`Da&a?LV$!gb+ zC>fY~O@M=PHqGrIXF?DT?kI$ZT;?xtvUyi=>Y^GPEQo}Qi-SY!dTok+B>lB4u z)~Itrfd9N3i|eX^_p7FW?@17&{mohPINiaYGE3O_EEXQl8QiePX3-aol$RO?z7b?> zTYym2`}{|NF`2DgDx!semTBG=++WUTp{0Ryk|qk&(n}?Lw*ih9+y-vZcdCLEISP^2 zK3E)FT(;^iF8N4wgQYf6Vw$w6Qs8j;r@S6+^R9ZAIR%jUWQ@$ke!@Xn_Rl-u+>B4`4y-QPFb`{p#GAGI4^J_0g2 zH0cDhf6-$R^%r?l7kSE2=Bx2vuCqx*96_Y8L^D+km>8!e>IXit!){~(j=H;SU#J0{ z-qbhozSM}ue#=Ilv&#CxyS)i2DEIqGlkM;f5#jbqfAgbEG)Z`Owd^lizlQ&?!58EK% z3Wx8J2 zJ$K>ZTLxi?;Bu~r7iQYcwbxDJ_{rL-x2FT)XEu9!W9n#f*<}1qN@lZ`&G2wZ;Co(waN0xE>qhoLJ!3OA4Q~Kld zzf>IngwvAEw_b$mswu$0xJS!1MprEew1PjS7{!H&61~08K+v-mdvyz|{qsF+qpRZI zasya6_3^V7QaquCUb~5l$GBL&Tg3@xDKn%D1JyEpE>lOB3DxEeQFX zmpI>=K4c#RJ6D-m3yL-=J0%#`4uFEW9&?yP_rCAZ2v)vuvDn!iYR5Z8Yj5By5Q9GIiuiKrv~En&aZ{vs9sGMlq-RIi|v$i`6um?at8J%Oki+o~rpB zQdIZrIkG3Z$x78Tg_A@|LgCrv<$y<6!2TH`_#q{G!gEZhd#>f;F-x%!K_QiwrBJc` zJ*WKvX5AZ_H^XS-q^FqaK^0ob=?b|1T+b}E5BIAhAAK)22d#0WHYXxj627yEK1YCR zeK}oIKnS$d?`W%yZH04e6Y0&C94V+z4wgaLekMsBcMp$HEqi4)tLt!ry{4Ru;8HUYj0#}g)M%(UXl+`%{841UV73gkIiZlMS^@zgHrv**15%pih^htvlx9*c_YoL>K(wa|5S$Pr3{Z zp08(~L*8gP&que2RDC%lTuOp~P=UYSHEAUL=U=``_M^wUmzM?^j|;3hhBt{BvpS+u zdQx_SZcsDOlk-N}r|aTrOTnZ#7|zwzJ-PeEJSZWJCdX>NG+!)Q!_>uHb-DdmmlsU9 z#*&hTnxaS_>v;+6xO>!8lckej3ccq-{|S}9-C8-$Aiu>$58H1_R86|c7esIOL(I#3 z%RfvNXj-T7I_KHkS<-Rh&b!OBpcTe=P? zXN966;&%PWgIi2A4pT&zrcgn|Zu_=kmW5ySHj@}Ah(*K1Nc8dNd;vu^ThB?Kkp9*0 z3UmII4J%uue2KtWXzz~IT5c+kea>A-v@4?X2Y6E}R?%?nnA6g`Drgp76PA|5}xi#hAy?s~l zsA=xUwj_b(-5bzy3=m>!idLS4&*=MR1{MRuN zbN$4@6}01E+}ZA-Y$qJ%Jh9iOPW;%1q;Docz~@!^`;Af8>pI7>;_N!XAH&thf7Z0Z z!SPL98lmh0VLW1Rmn-lXJYz(2DgNEJ5E5Z0g{7hDIG=ewJ1kZ044AcNsI>q%=>~xYk`Yt`nL1;3t(RkTc}cSKjPaF-Wk#R4B~zo{2|^a$M68WHw)HS zb(Nu%iA%RbZ(8^`WTtX+bX9D;L{*CZ4LGwbMA}X+#2l*)HuSM2cRH{f33^uN-1;1O zB%?3_le=hzvOLlYkv$K6TgIra8iPhHJvsp;8Fo6c?Y*e{=$bt+r zo=eGdNG_>#l!M4~FhYb~QU&f&N&;0}q=iJjudJx4Q{+T-1YQu(&2mt%ONo zWqf%fLiF}yxs|EqQa;BN0RlDA2mR>{_`8Q8I>T`=tZW=L(eRh_xpEftKVA45SfFnj zx4F+*7CCS>4qq*e9tL&y$)|7cDT~PDd!kamePw=CA2;kM3>)lN|C}Rl(hyXeJQ=jc z`l(o&UcUB0&b@^!>e2LYmOZfh-_VQxc$MqJGV9xLbG6#ayt{VXq@a>b)!bct^W z$nx!n5kW@nIZ9cT4B8pI6$J-omY+U+#zOvO%cenXCp+^MP%yYEd5^Y8(km}*1jdVO z!K1yD;5U%4`dYkg8?u;>emM8XQSXh>$jo=|vtVz90waP2_(_AvVA^utp@z?EOvB>8 z_G=NttU`9hR?}%Z+Zz%M^p{4GTRc233mD|gzZe|;YSC-g{zx!3$`qLJR&qzF4<0J1 zMr3+IJ|&w@_01Jf&64|hK&SKdtNCj)CH0i^O#zirA zEWRvk$cP*%sLTvFAg*>5#d=QP=>Lf0j%hF@uXm~wce}G#6S!enx`j}tnbWm z$97N(qO;k#*x_E}CJDiKM-QqvS#+1fpzviKKKT&A|Lsr_c7{#$Y+}nDPkl zZz+d|MrM!}jGo&Rb)rvuCUH3r%3C#>K|GL9x1-szu+kL@0k5Y9#=r{aHXLcp{|8-X z*%Vh3cI#mn2KNM)!QDN$yAvD&0fG!p2oT)eJ!pcvySoH;cMI+=FV8vkR-G@W_8;il zRlB?Qz1F%G^hD@&qfHIxu9JJ^tc&%TgK7s&-;h*mf!JW6C-#_ z)Z2odMEm$-fg92h3D%&K4Va`iKIqBrmCn>7>w!_{d6BXj0_7Rb}(^ zsMH=BFPjyJSMwz)45k@OP_4uELnP?cBjQ13hgw)_rCN$Kfx5E{Lx0C34`S{8ET>z4k34z><^%TyFkSQrI|{mb@u5`Hla5e7m%cA=XKXr^ z-y<2d>or^1Dirwtes8x70hIcizY|*A|7zMz-NXhIl-*Wf7lrgzgcmN2F5iYQ%&m{v z@7#Os>Qdp4n-Ci{@7+QMp}yHWEk|M+wNfqYo_2ht@F%~xlHB3HCpXY2^>FdXIZ3>{ z5u&m1-x0-0GRzMl@(ybUw3e~GGqUJohp%QZ&^CR^(IO{j>64R5WUf}xOs@il{!cSo z9)-}`W^C*w_n!@1Uxl*ByE*u`M{IJEdEbN8(xMcbRXxpRO0_pM@)vcf<1NEnY|M3h z{b)c1DJTUcw`6k&pq;MSF3F*js-mw zLSfps3CN*htW)Facwt@qk$1?`>r3JHwUtj?9Zf+`506&8|9U9Eot6jU0u?RShTbo` z1qr;bn0FFL=^=PUKM|!qjd`>1&Iq89KcY&lYerX%4>lpa(DI{5q)5hjPnW%GJ_33;_-GlGWZ!*){cl8VdsLx+X?MmU- zraybA?Y*+|9BT6OqEhbjc|&-*;17xUvC84ZK4DgEb~W{0*lIh?Z_N^4LSjPVX%dW> zur)QshP6Hj=Q6v9uG)X{Fbv~mF^?v}A{F+g`_h&lmx)Oe{qGZwW)s2dkEz@ESSew= zefZ=GNI6MnTC-QZg4ylqdbm>R*FHu{B12E>1+~I@!Tdgl-wAEuSsDvq3DX1HoO2o(O5R@)XWj z!{XxxLu{qwNrduT$o$e^#7EG!E>b$3a`###Zq$huWZ-do$@%wNf}|d$yX8U&z~Dek zs+q_~^@4MUE3O>wzYHw`S*+kI%#>bG{yuf4E`$Yp3b{Rg;>LvWS7N zgD4z`uge6ijhP#9mMcPz`b3!d5%AAw{qPo|{ci)K-MX4XnmENC|i-3aw~dd0s7 z8Nhd`T9bw-rbL5i^EZ*gSpEB-r{uYR1aeN+?2o>*q@^_9b{W4Im6lSBw?2P~tad{P z(z>;LPqxaO;g;>-QGoF;QX|qLRQaEu=W;Ev;D38h2pX8u{z=#}N`d@S0ZSlGgOw;T zQL1yL3p8ae=4F|ECT=Z&Kcy%lruWI`{!+RIRlKetnquaTuZ-|VE5oyt9@TSQWS4m znTVJti(v(>m1z9AFHi3YZ(74s5*bk)T}0Kd_RrTkk+%6=zv_+zL=}>{UL^m#ExY|q z5GlbnM4c}Q`We<0qVTB%GYBVk*xmE}bzw#>fTBN<8?wDo^87;(sScSOJYUpOt1v#% zy&QZ8rQ9qBLUiWjEv1%ytz7|_D&IdDHSZ>8xof<$1}Y@(w`Py}#;5g)waO6KTbrdi ziF?}QOnw@YI}?$I9c_{r4}T#TP7!m&mN|KcTGCdH?N^Fs*h}R8NSJa#j2&ikYVVIC zVw^2bntlpiVh-ifikXi9eL>zbhy8P#DZ)voZXZ{A4vyrJxV(Iv#Y7$Ya3C*g z#a^9p=gagbe0|i_9sV#t<1-34cT~vx1@P??~0mnvIus=x_0!5Z(F6X0cdkrWw znH$V?lF-8_5`S`;e$UK9`VVH_p@TdaLwa0-JVy$+-%h>WMd9ClH$G!>85<#v>lj2>eamFMk_1lN|GZ*YC!_6fX64F(uVTWw$N(bh~g!x=dN5(<1fR?I!Tz zuxywsk*iIX{_>^QJco}c_g=}E-m%^3AX@_XU6@?`p9kw#5oJU~QBO?-b;^g7RbSP| zmW}JG4_CPUoIU#MbQI?XiBWgKgeb4ml{h5)&Qi-Y{gy{OPel>CEI;Blc9QEQ>7pXf zxQEfuqX|OXE#vdkzqQSH3GxpnhjivqU}V5vw|Bdzj04oW8~i9b2h_hAM+%pZE;o0` z%&?z)+Wqq?L;6Br4aW)8@pzjMig9B%Mav8x4Z(m(yU5F>ssoz^bsuyxS*BHouSJ{_ztou2}}moS5&( z$S*4*d&vLg@B#CjArcu#G;`H+xGW z6{(K2itMQ_^xV{avP1JKrhb|`;%Gl(nl`W~2*?P9se+o33 zjO6tcL$iKSHCtb)Tf8N(_JxLMAR}HazaK(_AD=4xX1*u-l9}a}7Np5J{F}&XJZl;J z>xdD=&QcodYfq1_E+ip4-}?ST$&3-yL}tHLg6jDfK1Q? z2zw@UzVLYkaQvqS{ah5$4YG^_ftb~hYArC)Vv<2K`La>YuFH#(+npB2c}ia=T*{DFj0PYjy@1fscLCck=$Lt^+mnSorq zX+yMluCgD9`Ml(EMGdxZai+!a;dzj?8O=r z!pK?y6hFI%U!#ua3y6^$zpG-oSn->Dn}%0IgoLIS4v*F3WS9QKPCjU@sgXO6RKnmv z`5%a!_n3V`JK$B*6@pucxNa;qjzMZwmOb{yGeaM9MTpQ$9GxT_+juNL{jm}kIjGmH zKI$1-w-OYU!eU#B<$`+=-NIm)>o8#&jSqz} zUMOmH{AM*ro*NK3(G2B$_D1qRCl)L!^2N^>7|g1=L!F{+7=mEFTo~x(;+vvM5QJ;l zEHJJvHGqvV87ToNVy^i8-@#4`<&xNLyKjQO!JBF7Pf;+K3kdg&QUTOC--F1Ds~P{$ zq!Og4eqFJ~PjiNUt&+}-8}tHV)|4_mULIj5;JM)x(c}Am`Y2({IQTCX_Dqyg|6^a4 z>R=D}T0~Cmi{f}nY$g>Yfh@%9^+q64?i7wZNHy>sewnl5=@}EV<{E z2R3Jmkp_NE8Ie^;=@+-wP`0T=EXQy)Qf8ky>o|>a2E3}Ua_A_}>utK!bnJ`(&@mnj zRo`b^Qh!P>WoQ3BI0zc%lcoMdUdKZub%1hyi0nPVS%|F4!-*d-KOMbNkc&;RGVU8= z6-AIisYm~rmf;YqH?&Oj?>xnOM zD2q{)=_*wkNl7U?D>_O)gHl}Apv+&Q$haRelikMNB)96@p>F=%O;ghC z++o2@ngl%u>@{rc5)dC=+y91fFCO%G$(44U(OC*}44XlAFeqxCEVR13DR|BuGDGXR zx6Eya0xV^Sm<;Le72Janccx#{iEsbKMA&emR)BN#>(&c5P{yn!ecji7@12o}m9McD zQ75k6WWwZ)RMc0ZRb04;$L=J9Lj%3$&xnz+T3+I{ZGS8F*M6q3GI1Bv-V&7U3s-ud zEf1V$jNifE?P7WI9gbY@4XAT5am<%}h>87R*@`hK>v%;(WQdpd2urSy-gB|hHvgJ? zWARXKOdarRkVw=oqv+3x=xg?F|}rJcr*gxsgA zuBEPWMJ#6?CTKD1m31z*x5DS( zhOdxggm!lR^%6d{&4_AAT!J-Suu+I@D|5R>GH$uM=YO3VrvgCzn)?-SP*UPgMZGY> zHE;O(7f|N3tQDsP<(PKCZERsLKVz#gHl1EkF(p;MJb@|l8@n0h1rmFlwSLZ#OONIW z2Ai%Vv!6hl>n-OWm6vlbxmfk!TX~hHOSKOCIoncU_#f7@*7S7*+~D7bjP71bw8@x@ zy2vN>!}Hv(JNvL|2cn~<=a*~F%%)u>9vBun3ls=b%Lg@(3< zgt)&4+I$q=z3Ukr10x?%fqfrgJLGT*El;E{d zT(ep-H{VBwN|j*mlzbbLG6`njl>_Cp#|0JBrWv4P#3G7Ah~$20JLs?vp~>qEjnp}n z6HhXcup$a5GJ{xW`5h+%USj8SKFng8q44wwHImb7Vqt#Z;^kENMUIC`#AsTf!51ZT z>GYwR?^JZzij>iaAdEP6>7xYw(WvL+EK#KE_dv%n-vIxOL&RDGgb(^=#U01vpOiaYCx!F<4Fwv4Q{-phPy{?}3i5T(>6jZ5rTZ?V+`x@eeq z90#Z7nUtyN2N}hD;n)4F0VvYYNeddSX#a<>h{u27v}~{6K72&QrNp!}{`OOLPFxVS z&$o_qaUd;p#?WBNVrla-WX&WOCFe7Km)=LDUR#WC1yTjaBxiJd%iFBGjtL9JwM9-x zXru;4v;zOrupTzoEGtE}#rJPBXya6t#^c#~7_pDMp&Am0?0K}yKW`_WV!LbTr(~HW z2sT|MQ10eK^5-Xcuu7tRc+C_Sxk7$!uW-O~?_b(TAaD>oHaXnMFHT@QAV}PXa_lG6 z+J?^jEsewjY=x`pQ9|1TMV}xc2Y(Ag2Omsry0q4wwKL#S=HevOI7V!|W27UNs5XDW z{`rkU9)kC9KON=C4tvk>!Y(_#$AeLHq$13Y;WV#$hMr#+;jcDuof3I8D~4p~9T}nv zxI7^rd?d5~V06;n@!|qR$dWN2k-0wSos%)krKD)o5x$k2*|`dw^khGj$dvq!2fg7c z)_N)rm#GWU$e&jdf22m|L6^{k=n@9#yh9Z5$?m$$Ij)-^sZ!(OpzkJ}8@wwyl(RDImy2f0dB(M-xmVe12An5$*7{gP zoQ|AgEMO9jbf}afI}`W3fY5t&^qC2jbR+j{O zzAXm|g)=-EhO`iZTwGjeZSz!UZ`2OkmruMIT9!}e>Q8<^0ntFu9+sWIJREjwE2(Zy>w+lHr|=m?qEej!-2B^A%8+np8aI8C ztP>8hP4I%l+_TvdHw=vs1r-xc%qI^KW#YG?YT-yDq>pfh_v7%N#`LPIK_3vmI;0ba z-1TK;2_xs~M$8z$n6in8Mp2nIIF_2es8WBB?CV{GgDq?S43;r_>y8=fdy2?@o@Qw) zKyg`$7TM&$Yp|4#f~|$8Dtvb+!22we*4e;TErOG`ZVRq?*QNi(%xnmX?83-#bUfdh zTd)uw&%Hj{rX#6DGrG3JXEvT`K3qQiTQYRfuL+p>z-wN*e@IqPk{*jkiLSEgGd1rq z(E55OY`HZB<8wsV2{dT4OlzkpN$>JB5;R>}dU$iSwT&Sn^IutAy?PF-$wJ`$W^U#O zlNspL9P_dBg)h_^ZEpVyNvn8ta<~XFc9`p!o!2#2?j(9~n@8vQ*>a74t=*&oxiPF? zR7L9*VjR&Q&aU8KMq6PyCl0r;J5yL0cWevuNF#c)b3Q&lbKg$3zl5y#*`ItSmj_U^ z9@f2|pFCR!*v)uFUdzwZw&LR;o?CzJjD&pFK$PBfoh=>&)=C=>eH}t5h+FY8YW&5r znuPTy8dO2Z5nuO_VRM(*qIAp{?eUp9tA@b2LCZcGgNLU}wT8jnV5Hoyr?p;n>D~GT zvPZW_nIua!$lC@%Gj=mX?5(HO{vy;q6G;Z{v>3nOI(V7*V612T<1jwL39~8t^>oSD zz=Mlx!jIRgMF)n0m~_P#`@y-6Z;$saswMT0hT4L5`KCsU`(jO-gFkQblybg(0vAxx zSaz$5*oTZM{)r}vX-ngwYqXk$GK~g+Wtc|atJzI_g)`ysMsgHvo$tST7ZK8Brr;9$ zd)L5rRh7w<^TXWW`Q?G=firY32+ z=h8z#2x6tfgoszx9N?=Tenms)>r<7sA~M;%nQEg&Fljd?N-Gt_G@=)Z>Z^Y0*aEC{^Sdq_?FBAueEvK zu6@TP*GmXk(fl&_IUG4tnb5p26GgSFJArBxzLPp!Y8;sA$WjqiOn}MF5Lsq;!+N~N zbm4Y)47?%C7@QmoVJHF+-jikcIj&01J38X?7a|^9FYOPV^P)!S`LN?*`NND+^S~WW zU~{-n&9T&<<-$t9Kj8B=B!nRgxc#TanXP^PqbfyWywPw^9NcjBraQs}GyL=*JdCX$ zqF`6?!Fovv7=jB~P}su~RX81J{xN`I@eOsv(5Ou4wPBu;V2l<&XuFgC881S)T9lS_ z(DU_XFBnU{pEUQ!02(QR$^{f;>(ALa1~~%)k`vk}w3E=o&O&oFKvs7Q96@#4gAspL znEmV48e>2`+FG?RR+W$22La<%iC+@cl%Sp}(S@%yz2r31B8SFsOvCK<0 zzXy<7F!}+iQAN4H>k2e3qH}K{7S@b1MODw`BvD`mbOS>jKYLB?v+=>lv9zjR*TQrG z>pPjq#BW6ovqrXaB}kdBYl;Ul#F@i~a83Y(zOGO)$qBG zo6Q(9c{^;2*`R>e@9Q>5*0Hg2kQ+3ag6h}lX_oe~QrbC>69gk`{$pis11A~!IGbDQ zL%d8-;q9@>U19ENE{m52KjwiQ0L%)rpK=fSx7LJOt)2lRHr~@jqN36VR72cjM~Kpc zXVi2tTVMtb+4}65;0jv{r7E{8*7l7@Sgz1EI9Xa2{S$WI~^6_1T~F7rr&iZbAPH!V5t0Zw?O1!3@r~^e^g`eH{i3n- zfI<0-&g4ZJtj1yg3aS@mjlJ#7R^|`>>NomxC}Dw;fej&IEoZVy=2qr&5;1<4@ThJs z%8XPY_K-q#6F%xJq46DE;e7}uq+3LwGJ3^Q}4IbN{S$I(Z0FR{}jFL3m+xx zL5q!IT78N@LPzm&8*bolN5`#j>u~Xb^Ul$NArLs9?BakB6XsNqeuMAR(=*{skDg0r zyxH>4iR|xB{k%l@ujx6Qwvd!tkW!J{IcKg5qA9a}6^_x;H$my@ZA7D3y0HsC7R`42 zvTXLG96)e>O&7|5v(+|svMR5BoXe#fb|yv=|2vUV;f|*& zHoDyLP2out48yXi6&$L|39_sM<8rf?f}5y6&Q&T|;6K2s=}!zI@rTg6Am-`915CGp$je)GyWMQR?#Qu!Wcokfqfg@=@Xk~@J1J@y z#|@LGdt(bQyoq&>e{0RTG&cFn;}an$>fD~=+M$Az!lgP-J{fR1Qfi{mw6erSe*No2 z7>i2%;#hLCO`TvHn-~_b5fMPA<&z<^^wqnrp#IGw-lG*3c>_Md)LjX(*pO+kRIGn< zH@!Es1}hyqqCxmNAoAHp8;Ldj%tYuaVg4pSeer_{VExR4r>38MeVvhNBl;=cGh2WS zM(2^oWBnZqr?Vb-E!%!?430zmy32yTLdJhfss;yF42k)uz|EFLS{?HCa=ITE>=iBH zr-WPRB+)Zq-~SYHtX)rt4yogcW1&51A(@Zu^xVH?+As7F~IKtfzjA{T3=s%u|0zReHo%r;U@c@dBzCYVcwAQh!g#(M$&fD&+mnoZM@}V=u zk*+_Vd@!4ps670|y7M%1sIk<_f*y}(erq^BZ+P)FLR&!MOAVI%tZELWt7&X50Fx3` zOerf>$PEg$w7l1YYIUa^RZqfY_XX;{>^3%VZhl?F|u) z1fv@%o%lM0JJ+2?p!9gOA^Ew{>AofSHvTj!zwJ(M;dri&W~=xT**p6wrQ)s5OOel~ zNsG}#T&|0)bKsMn5cB7{F-^{eB9ygQMA3dI{PDO6mWH#lUolcYJG=HgAR=;rmj^6j zML1%R^!vqbqoqn&f0%-yfN)C~Hdi-^wIdQP0*<)=4khL%UzttR`@LaTud`Tr9p{kP zX2V^w+iuGd2s!*}^kdm4ys2y4I8sCIX-+~RV;9X!(oYAxWfglq`xE@o{dSrB#mBdD z2N*w_S@cD`YZ^9W;EDCy-i}{2D)X=elSl*?*h>@XoFGZY=(vhQWa|4?fXr7D)Xz!g zGTr8K$Y*eL0U}m3_vY^Gj=SC=t1XcJK|CVw1Mfuh-)GLdfFdJSEJn!mmWhvf$(-G6 zC~M>-27oxV*fhT#1qWV~44gC+u?aZ^?SGeeTSEZXC(^uLG|v^8j*e9sHLH9|#!@rj zuLJwDN-VmX8m@Ts7_sIw7iut<^%LZvgmqk>(!@oGG=sH69Vt@e+(ZZ`mPNZdT~yy} zv9(n}U5%`+XF-4>!gQ-!EnIz&*EdLtunElZ536PU*XM5UTCYtTlORiH`u3caE}C^3uwp?2@U-*1j=cAi}>^I0!kY2Qv`WX{*`d? zzP+sNBmJ6efBx;M6Q9I`tiw_^(ce~RF8yyfx+4>OTfzcdcZLM=13C>1bgI79cnF)c z-?kBUMpt(lmuGPVE6jzJT z!=Bl?0!V+cD*1NpclHaQJ_)irv<|zfktd7L!@MW;gA98fYR2fGw{^gC1y)MZ{dL02 zFw^4pAOM&DT(n}Vj!sTiCm6IP4GA#-=y^sQrTQb{K)(hBzZ+JCM^zyijPI^QVb=le zwqTvN=>2h1Urj*Uz~<|Q=k0C5I_*YhXS1BaSCz_Rc9$YnCP#8PTq}9O20bZr>Z#oUV9^bh*uKw3!^sxM2=~+{y0b@D&Z!fwiUw zajDl>c;lePEYAdy;)>xCwemSYQE6~`MP2fcJx$E;Q{oUDVg2dEQos{r@u`R9Dv?j> zpT%%ib@{%bj2$~7IaantJox6??cZuy#$00_C+86+woDuRJBiK+#T^EMqw}v-DB;5y z;5>bM_S4{m7qU z`D*(3oEL)-rOC~gg*rzR*>~0QbDKM{d2eClXFZYsP(J0oY|@4I+XLl-%fQY)UpUP7 zK8C^3_K)NXqCR#5?XbVz@fOCi5CWzG5&Ae)?ww~>HlkliRC=p>IUjsFwQt9UrAJ#M z&stLJrL7ff@?AJWJ%PA@QXmm`7}hTqQFh{X(%p7$Cr(iY>yIht;t49md8Gm#%O>W- z)i8h7aJpp4jpqe-?)PYkzCS@HNIoU*Tsom6|BQHDWpV*f!!Nyq!BYezIL?`#+WI62 z>Z}vRAI+Ej9>?)rnj0k)6MLmdOk(*cQ->1lj+T7j7g*uAeAG(Y`qPUe6WufJ6_DKm z2=Lg;b1}Plv?;c}IIM{-8hIiIjJCkIs%4O4AL|KCXIzkYybe8m=rt$axW|@7I(0c& zAh@e)5yCwJVCac3$&*yx(hXeD8O2;act6Irke#&a!@#a}lp?;3M2w?L&Ot;h)wV8n15cfb#q(tq#T@+H<$MD& zH-EaV^jbUEN;Sk&<}@M2YIfF+ZqU-u;%9BrIQr269Jwm|-R7#In*(gF;i>x|(YW@8RRcf=p(|uNz$EH3JbRlW#(S{%%SCvh zs}39_ezs9y^SNqG69Mm1o=y2nbaO7sUZBz11WaiNS<3pj&s!~ASHodSi9#V}lnuKE z67$R`oVD7Qvby01y!f0U@>O3EV@@m)glaS~_G8uF^e9$QwDx-b{&vQh^CkbPq=DbH zcJjUUnqoF5?nJ>GP)S_aT+NxU-`q`LOnl{yVcwUC#PEwd0K!0TBO zZ$Gsl^2&-;tg{?56C@)=L^|vml*H`MSCu=& zV_f!|UfC=h&_tNJc1%-N*nbvQ&uCBA0;<_fQ@Jd)wS0MiMaRNWgE+E2kslSOCy8da z{kau@h6*H@y;VW%#-@SrghOOl@mxj$Nl_if zA*K2)lI&v%L^ymk)()a!C@lh--AI26YMHXB zfD;uyBg^EaTX+uAOua65K2n&_Vu;|Mp#xK~VGOafpAk^DesYo5kx-qru&B_~Q){aT ztoQDGa3j4lC-fOjm^4G3u`3v>gDC30U(vl4&Nu7UUxs%u^TkE z=*^x34`bAXEOI!0l~h>kC=jKL5m@(y?nFMHBQFQ>SpdGjOqe>PR9zOr1*;IqJxag; zWyM(b=0Lrht#EgU9G`Dw+??z9)4p|6{JD+bG*GYZl`2(V68atItQ4+!)!&^1_Kw9D zs4TPNW-O)z;lj9MI19Dmzong!IQQT9!Ba_K2V(t^9-#p!dao#r{p3nbm+Apz3Aa}$ z&1!t(E`xc&_wir`sc|&{OYgG2v1ssF2;G680!G`oua`d6@r#B8fIEP~xtn+1wiCUf z5J(N)_rw(m`wDmc@gNLVZD^$o6Em!N`XsUI4$0I2otQ7kr&v+<7X*Xr6xY}~#eWAA z=mW~&6~e5{=VXVPSHSrvS8o$759OzUJ3~0T2{4Ug_DR5+1`Lbt_l4DKHkW^W3+agS z9T(}0W;q%aLU;A-i0J>uUU&T(X@y5P#yrkXXZ6-+dyQR9i@y6yC-8rVp(wKND-(X% zGhYmGNW{9SVY$H%OeTjUqlWi$owTRO~}PScc$3M!?*zc5RJe1rTx(%ztoqK ziAw7XBrfz3hWIwHRJlEx2qrgfRrY5Ma(NGjvO)lpejO=j!nMO`WWUXs@R-Z(kVpsa z-I}%>A5*>iplahIVkizM$BsqlbXlU78EyA-2)OYddPVJO?1iQxJ*lI$;o_wyq`jO; z$A3h~W4w7EU8?T^D9sJVD^+Bk*4#_lTlh|IKzi)pGb3OT(YRZej$SRCl~u+1Wyu=+ zsPTJ$#+7~B(uS@I^^;&L;k>WS5Y#Z~M6S90ori^Jim=n>{==%|3_I#Y4~9OT?r$&g z9RGULS$5Q>IUtw1AWxKe6*(I!ACV(yysu-FYp4E}&o)C#(h6lwy##VEGJXr-!D+;HQcVORQ?+21mPdoxa|+QRC#ZLd)aEYfH@K=OIw zJ>@bqp+2=&2n`k-lF2}Zq;p$E97)Y0P~*qWemZ^heMG4u@o+ma_nE0a#j9D<-eA}9 z;gE|UwmsL<{c%c<8C$2C#tFly;&O3wm3+;~TG0tHi=3gh`4qylknUa&l=&=Wr3WYF zVx!AIr(%XsL{jub)kh-zGNr55;-F3kkg4?SAsF;Emkqx)xPEdvd4iYG9Y!>(t(LNa zoslui&|p_f9!n{X(4a1M)OQ$gulihYiWQ(+UZpC1?)0IqmaguUITep(JDOD75&Hv7 zWm#LG$uHyFrJ5KWbH?+5Du9%5+4OESWxHkygQPKu;+N!+nbVMDMv1R?R z^$2nWbob2YLUY>p%AWo&iHgl6L#CxvSwXJ9dGUu+_v#ObAC2u_F!?L>lENbI-%nkCVDGO|N_H6kfL0mPa>u$67E7IIQ|BnbAOs*;b{%9^t12#7D zJ>9+i?j;maIzzzAGstC0;XoIB2?J{k$*8@h{4Wb&gFx5{!)LgNfYv(n1>fQhhFl5I z4G&iC>bqYz7pAqJ!z;z}`{HcmDxzn^_K6|qAI;!$8T=6yLN*n?JP7z24xsiQH0??- zCySB(r{(7ik{nbr7FO#Dct+{e;mkF9+H9=|ZndLMhkkknVf^r|<3;S!k$b}g5yA#B z!44(#-1NLUh}^E5psE5;D8RRB_GI`xvDjA5F$S`sa&zXZ2)DZA_$yG3b$Qjl9qotsikf<{$56pYZ+~99)F7(C)6n93DAD!h5GvGnvTSwx@@1r z0C3#_5QoW5jt=umw@c-kgf91<%Gco#>J9mc6lX`emPh;@?nUmS`wIfsjmX6~HgD3MExj?aL!dDGCSVDbm(5itcL zgla)~&d`u-0a{q#dT$ZIzK76^)k^Jp8rBua$mb`JP-e>1sdJ@u@G`Djmr#|@XiqQF zC~4&K0s>=;;#EHl&Je)!&-7f-aWxU$z`4Di4&ps<_{3_ks=d7~!4IFm!sDsK7}2TN zUUzQNmNm>Hb;9YCB^0JB3>`p;WCTOIQUR;5jXcvZ-?3t-ufh?51FQ$tNfe^y)x&Nb z+&0?MFwo_jJJq>IPF50hz=Au0h%rS38z@;n10iOAn8iqa3>HJOpGb7=lz3S*tR{J; zyEkLry8qeC^%ZAJH!JAaS~!t~DrD5_;(^-4j=Pfv7-3qVPST2j{oU`o$KJ6Z%PxLH zn4J^b`?h0g&-gIy-ypBb$Cu<6HgdYr~?fn zIz7J`_XEx59FG~jj<@E6ysre+Ri)nVLZ;d--S^&q56G(bH;mo3+gK)X%@xte|7LOt zBBrxX`kzr#qpF^IOeG5+xW|}$Hi$SO>Pg$c&(?)aJpn0M`nOjK#|PMB5eTsKHrcG# zDCYw~>*$)SM@Z|QN3>piUPUF3Ai*r4|L?8+c5 z1?1*yz1{LIz#R~lvqbs*${qsLr%E{2ez#nYi_q>mbFDZh%4)phE?c%e$%I|s;i~j= z7#{v`HuXDCXaFRI-)KS(o<%_uMzW`(QQ@ZyPx4EcpbWS_Lxj#iN=aY!$%FQ?; zSdeRRn5o`sV4^HMnbUjO7VdgjyaNY7HuRk#HcFs2v7O2_fGDRhfo(;n_$YS-ylD-Dek&XD0TSx$8zc^0rGP>PNxdZ=kqV9 zz4WIQpB1UR=x*eNe`W7SSJ6N=(_ot#ia#;4rOa_mXdN0et0KI)6Z?5G01By1UfFp+ zAdZAIfJ{b)`(5h@j|1Hh_WDeeR)N`vo?InELL++GEeseYT3REM`Puo0a=l;mhr)c& zmr-ONN_PYOEh}yD_edEqI0X<%&!|TpmW>R>E!T$@##z<8=k*4NR^D~OY#mzU788p`t~5M_j6PG2*0kYKsp8a|6Bd6h z#vkshHz~{@q6Z6@z#2i7(2sTCdDPUv)&W{ah|tF`GAd0dF0Lh%?{8)Sk#ies< z+o@8$P4lYJwqRzy$it|Z-Bd8<)Vw7en2IEb=rD^Uc<4)jPokv;ER5bByF4MAiwf=j zM7f0NZ}Hj0@k6~Lbc+H4Jiyq5*irFslrTtgaB)mBhyzxYiWH#lFAnM|F zYz*D5K7F35gfS)1$+==JSEjDsabt8h0-khb^XL86fwCdb{~)tMX0MD8hcdN%N;!`q z?t=)z&Los;+%g?|E~ji(8doZ0G$E+5dLYm+0Va~~5$azhdGpIygfAU-VFa|a&IkZC4v@xKwK0%raL8&r&gaRmC`gF9t z8+l~c(r=1@mHpLI(a*Q^Y*^^D>!mXfaVJx!&dH%^UMnGX*dg?eF`nlhrFx9Y7h`zJ;hYlccgJP3fFXi_{m~U2J7zCiQOc6> z^sO}A8m@|t|0seoSV88M+Bi;;HIOUQ&C`{U-G`2!FybP3Tk%8YTTi9%*$ZogU_uks zQHsI?(ab_<{|%LRq_yT8I@NOY%O*$P`fX-%c-70hHZQ;u6`x>y6RZI{Ahs5cM7{N} z&C%QLxI#5J=pK6u(F+VEP%TuHuut^)fx5Du0NJgB+`E1V1zCEKZ3{UMIDchV!sthd z3J1|PkuIKkltaIMnKRm}((d7gGZ9)xO?b}RVNZ<*xrUQuL9n0>Q|(lXYU_G{FAs)W zb^LzNzNH3_`XgAQ-J0}}qrYsm2I2XSQJcB`p#-41!4>nZaJd0k4=R!Is<^HL>xdx_ zo(sc2g2OfXC^2&G_N{vMx|ox(0dvsS$}N{FCG!Kr0n$U z5D>qy38{U{-2Sv%`VeLE0I*u0)e{XB#h_!BDdKCW= z+Q!jHs^CvarpFp~NB$9R@O(^!RGU-)Fg|Ko$??!GFY(6vV|Rmuw&G>jWP58_TZB{R zj|WfVmcFZUl|U!+O#PmFHFZDSBYEpvYD5>oLF*~eveQM>4`*j7cArsU<3Cd5W1%KU z6{u%yYq+3&iju%Xb3^m$GPk!Y4x4W+USxn2HtG$}PV>-lg7tq2!0iR;tRUyDMQUv5 z0mJ!=G#^wB3XKDnC7QEE%v@>@S(`B0KQP)8nE2SK#N5M!#Rb78 z*qtiOaCqob>hWBb1GvKkW9Kv+=R5-_UpfE|-TYikd^!zRJ+EF1SwmbJ@LTPrPQQ`@ z2)526U$SF*NO5apgG;}(GuWKa$dasgxt{&ZQ5=h-`>3B_{1e>nLj%xYkwI@UA#%Dq z7t2zTRnnw3y^K#J`+HHGdsmS;xcG)bQCG+{V*Wk=gwgduQLFwyi#z}^Kvx`AZGC* zpJ4J*ZODP?sSZ<8aDZ>j2$$Vn=WTd{CZu0CwW?4R=v2{1B%fL9<0gl_F77`X9Kc5r zh2UWgr#%zW8(shYOPE!BP&IPf5B%>*dY9|0bh_WqZdRO1#trb7LLrX|$UXP9|G}MU z*In4V{1vvIbSBwBkM};*rHo1Km+-!q#y>A;v}=4c42kVgmp8S>5N^_zUXKd3bGuJR zd;5!Ti~YhmXB_DtE!7cqQjIDHSHt}xdvAA<(xGM$fYnjjM*w(ZM1CR_V~moQY-4#e z)RKtQ_>mcJ1|GEW)zde6G41pg#T9c zc8m@K0?RpdJ{yrDfU#W>QE%YYzZc5=U3;79xb`Rk8nB3T>7#>o!%xRg@Uy>t3A@c2 z!MjcMg#x1maQ%c#jo4L`(kA*>$}zgW4G&$m;$PFas$4%K9#(my>|rb9yxjBL)!`Tt z)(<(?XEQBw1R_Zt-1reUp+5Z$Twjb*&7Su=qCJxR!GK%x#?AUW4D97LT6&a2xcCrl z;|?Oj-;#Ll-cB_cRAGxs(_VrwfJ#PFCFaudxy4WfcCVqcKvC=!K5k>)D;DIik zjNM6sA((gj7jCGPx)uBl+YU{c1C_VVL5d}ikI6>x(L>Jq_lrM+EErD5J>5L-6WBV( zZ7jT*iHJ(CcGp)`Ix5`aA0J!$dZ~SPUrOd&O$oLBs;NR|o4*lB8xho@+jK)ap`+va z7UG89LQqh~6byzVaRo~jsgQXs&Ei4p8ou_pdw3`D-DbT2P6f-E`qAUUQjH*~N2XgO z9}Z@%$;)T3tfhCo-Kwy4@LerMQaFrSnV0>SVYKP5wRubMcl3)_`mU#vu=)CStIMt9 zZYSC_qxj=Q^OH)g^G&F4^^rF9`*F9~sEwpHL*}s?R66G)Y7LZLZe@+A(Kdp@wWP^g z1M@85FXpSHE6JC|3Q9)a3%EcP0q(cGm#(AnvvB5>tV0APS9I;|aA%L#Jui>jzb)r@ zAI);BZ8A%o-_8w&DRI390$+?e++M6@K}wB5g)fm#)IP)R>C2b;59#MT9XT&eECWPx z6i#2N&xe92?MK|x?u0864fz+sx9J+Tf7f{~#M|s|KJsRGu3f*1cDSxCnClS|d82eP`Gh^0#s)avuiQ@MduTg}0pZ0Y8Gto8ykEcFe@~^$kxk@f?9XZ`@KlysU zU!+{k7h$M1t2*XdWck&i-cVw6(I`?C-$ncqI94I!<4!`XGlJqOqfCH(Hqx-LJ<3oZFr2(M(e!Sv}ovMN)S86^8px~4S%Th2ly z?vAs+TV17TQ>-&-TWvDX3+1V^@1t68L99`)(7EUMR{0*%uIO>lR4 zn{)5|cyGM(P1C){*sE$)%{gnam86SaMJO5Ai@HT`{wwUaP zwZ<58y2aO|{pD9E{%7Hvbj!~D-i_TqWi-R&29t)`Z0L<7hfHXH!C#C zKeIxF32%Sm-XrC>pO=Lq-mi2>0=gdwqsBbrEKp_;sXR3L3-OxOu4|;;Sc@W(94Zha zx?lmcgBAK^VM5P$Gze3K(E|+~CXB7m2+XG+bob?#if%l$x<+c%PakhQEw5NhIwE}s z&AE%mx;aJbevk*xd?4_5%pwrwrlf#hPq<{fy`A$E`RRxlD2K8BdbR6g8)UZ@qQAU& zKhE2%^H|^HaO$4C*z{Q+SoBcW_a4-!EU23+KJ8F>F^Pwu#_TO(x!75Lxh+h-T=Ny3 z77c6LVe3s}8KCjN4rg{w9a*U6x=&e1XFeE>0zU0R?0w7`qS2#2St}fC>1a^bSl6Uz z^H?#~S=gXEeLN>Z+tEC&VtH?UsJxl#@+H#anr~VE&^Y>VF%Cv8z+CA(yrvt^3g#{u zkF+@|8|G214NjSMdADXnNNO4*>)9SWd)~;A6AkE0{Ow?tqg&PTp^hZ&LtSh=$hsTx z=y7^^x?`y?*BVA6fGm>PoBV38>DIIl6b(9d*Mu$6J{8t9n@3quwTe~9O?x+DnT2#O zx66Ny1otGd+xEeBGoawpN= zd0<0|(@TF!_p5S1C8WGu>g?P(h(=&ChmoGJ1EMIM+58G<-?&)Thd4Jz-boH#^nyxa zYRYWpfCJav`Eun#MXV}ny5~$_Hhm0NH1m!v!Lw0ytF)`~;!L!+8gKL;60ZKl&ZX5n zQ*3&ZP&T;CFM>*v>vHn1dBsZeS?!matN}7{sV)WpcU7EGRc4I0r@z;l(IU(k7cwDR zwxoy1BH*Xwty_=u=r3zNd`$Jnl)F$n%ks-N;NMTF3t)>QveLz88p48~yE~8bXp;S^ z?MrR}o|O+cREQdYP5lY0WrLnlWAZnvJd-pUj-|zd*{esa18Uvjq1xuDM-`ZAP%Z#e3~L&5$e3;27y|dhWo}9X`8+I#;qDH zo-oqCaH4Eo2sa0MPvHb3cb0Ik3ydXs*sp*v?X~qpt31hOb8l~t?Ya`bCwO<8KZV3qt#@NQf%64SX*3~S9q?- z=FiMKYVXRa5oIbeZGhv#f6wpj2v;Dm)C;UK02=R7;r%rC0od&((4%Tl;oMJ2+BYmZ zzU{&=DK0T4%*H(eQz-NawEV1wy+N?F-B4w_D(U{dzwpiVGq1Og#rvD;$4w@VJR6_0 z(=z8H%jxENB|!zPxgs8oG=&ASLiaIHcv4#p)WKUXSv~Kt_x*j$Vye?m!0X+ZA3ZQ- zIq}g0o0Imai5gQxL?b6w$5B===KxBE{mRGUxol>4TdmZob+Of$Vf>XMELm#$1ohLz zyukL>g|Pj1SPvMA2hSegRj302E zG0>196+|UqdtbAJOc}Y3V&DEEaQ9?!rd)pO7QXeiO0}oM2CqZK8`j75w306;Fr$}0nv)`5MjWtgxTzxr{ z?63_EZceVNmbAIfMMrx_JBK6Muct*Em&xl`e@zTu8Foxe6m%2~@a)<6!gImwTi_d9 z&MZ3bjN0Ys*JJzXGF3$D@*erb_L6;aGP3_sznK96*WiN4BWAmOu=}S2J#OzKYR1)} zE}*WyDmModa!F9wOcpN5#(>y~nL2sF63zT?h|B!L=jW#he-_@~dL5}LASV_AZRt$8 zxG+Bkmit-#B2Fyj(>4e)0U`%Bvh+iO0r-;WcopKP+6&GsONhPEM$8K@62Bp^N zRzSDjtm3V$iaz4S9+NvKm8dTZ;$sd1n5Ux`c+}GItDOMg;^>D(>*oGE-=;4e4U@%_ zo0{dSwvuVM-5_f`bh_}4NO()&??NR)0*8US0+oKy`qqP`o#o>W*~Z=ui{$+!4n3L( zGsH2OKT7)}$K*8c(CB39z@_bI_nKj$Uxw94H9cI=7$UF?B3&e)g)}w>4$DAMpvkcW znlsS-QU92Yo1i?7Rq#5JuaRt~swgvzHKp8$9hHO4Xl%g&tRZde{HwDDTq7p?0yfEN zaYBhu4O;L`U>k!}Pd`+H-%>sg+#3(~ z={thn{e7d^JrvoubvBrOZuzUqhlYoBGq2W;c}>#A;=>BnDhYCl5t|J{5e;fLm{~0J z&fQk7PU@0Im|MQ_V1X4d6-fYW{mt@xWJGTEq`l65w{hfDQ3j|wd|+T|2j zTWA(PBg$z0%6JB}9>l0v(P*zuQeQ~u%&~DvuwAhILZdn{q=Z&F&zu$^+TECAuH)oq zC?yjv_fg9s;_b<34h=J(_NP|=xc9;RYq_6TBO>JEa;#Vr@(0b6la-|cJ_MU>^N&nG*skup$oM{@Ya){V-i4C4^^q4rGH-j zC@UkQHb*lM)|DZmj6oiQGZ2VuD=>5I5|$7_FJ^ofCKSVcN1)64{-|wJDqX}eeXKh+ zye;F-2y#a}C%N6Z?3m>EV`uur$FwJ(-tlO>W4lKX#TjIixXUu)&JYuDr z$J(y&FZCL8-#>>V6gbxZk{*D=Q4}vLpPMlAzFhGaE>WLk<$h)2D&TV~wf6aGvKD2r zTRJb#a^*{4t<$!*1*)S)#86x}NWoTFKuEqBlq=!RF(7d76NM`_tq2mwjMqh6?S}82kNcr3cUb|`6OQ~9Bv9U?VL5ri^ z-I7i2VzE>E1fGqA>RVx&2SP_-nWm#m$St>@9-9U&cOLL=bTL}qLH?AM2C{sT+<`~U zJ-e;^3Z8dg6_lNd2vHD1G3X{uk{@Z1-*}Z6_wS}^WhG0`k z*L<*lDfjd9-h3t1qmPFceqURTKm9(h-H3aKfNbhj#a1#f%Fw#tKX&qT zwu59mT-@_mPr^;Wn#w8@a(aH1QaYhYC7P;T30xPKW>tBMlP`ER*GmeqEVq6sc-ry7 z`UqXG&YD3~#y&^Ri=De*UmnX83rowN$FLtGy_UV8QW_|XXxk`v9>)xD_ipiyMdP7* zGC>cU!}r@{W8xWnm9g&|m$=M(xOCf2wJ%rOJA~XOc8j^0mqZ~p73A1VkGb{|&wD;J zn`)=QVx`+YHE!=kFS?8;W6q}M)m1&di#})U{ zE$|U^e)PhJD@YlXvm$vpE_S{D92d*C|9V^uJ_i0O_9?y8f6XS`wMLh$|DhCCL#(#~ z7UdHg+u1@#lN`<7kIKah<^sReA@l2%JdmZg)epB%%W8|orxEmTCFjYA+LBC1KqU2V zTV#}E9HK7oeJS3du%d=A^gYqTT=Dkxd0FVhHN#S7q1*g+C=T6=LGi)^Q9*87a-RcX zM9zjnGBoM-Bo#g$lL{JOkPBAM$UEr2)s!OMM`{&lW7zkY3u6_aVlT5Qg;9$#;yYi| zSs!Tx6+(t~X!IX{w>iT8X_mYq6Z)anG+o@_elp}ND=C4fn?sskODQ;CVNTNGaG@eQ zIg-HMnS(LR??}Yw0%i%-(9gjC3eznx`s1*TmY_kCQJes^u@6G#BTsh!k!txydt_k{ z{oPGUjn3mfQk*ACg07lM(;bOS`LXb4jbJax-M+V50!g^5-#6d4UQD*q(v*xp=octS z3UCLGU^#A^4wuT-9l<#iX(i6Je%JoVpV{+K1*Bp~7o-L1KhZt=A9GhTy*kMD)IChU ze5vQlhZUHUxI~i7?Qf_Tra&bDA!YUxr+PJ@#9u49P8vm8?lcWC;X%@wbbi1VWI58k z5EqdFy+amONhmGJ2*o(@EJB8B`D=Xqk?UW(^0wZsLf|fK6aN8$D^qcpT6`3H-88$q z&tCF~zHjLgoS$@-NN2K-Kj^168c*-%J_dKq|L`(zx!+M83CrU3!3Iqmp0KalKknY) zD_XpPaC3TciJ7P9Hsg*^0Kk?+AYAM@Ud&R@rn@*219s{-y;!vL<^>kA1e3D8?jU5~IR$zBBl& zi``%4#B-tBNKc*vqk9l=Y>itrP?rdXwPY6wIGKB`u*BVmM_Jwh;OhUW!whus*UyQG zurX33k!JtwmGh|Fu9m156=I>m!G104`BYu=iX#S`&i`8BVcC(CO5KWO3Pf1w@8jvf zE{Sw8n<(hZLd=t|UWnV>C&YpA;@ACahXqoTzm-cGANl5y;x&CJYauL-e-ej>A&a$mj3!~_ZbfcFm9 z8h=elTV}>fSb7u(Vzc{x>b_;Zzg*hVw$Bi zL~^<;xDYd2MoywTk&qzmS;*&fo~f}^x2&&}=(wx;F{Z(hWMUyJk2glfo_su4<|^p* zxmQtd*A3zI*LSHbdp?(8k;9UnF_LGeYPz+y!E{Gg2Qx}x=zFx4GTnltc)@*bxHG_P z&zP68dB#^;Bs$8}1Ho)jYPf>zrqEjppssiN`Z9o++}7>;z0rO~j4qmj)-m7=-6)%L z*QhbsZt=j6k;MdP08Kyq8tB&pK1yK6Uk9ZahlQ8T>gIJ=q*K`Ac@+;9!(@d2(j9sx zXF*S!Gn9fCg&{BJ5_5CoEtiPsz7^j#INIKCx1|risY}8$1=YTD`^&H@*nl0N@Fg~1 ziLx%}noNWaHKj_^12@*a#{!E|98bYXSg4({V?R{3Xw*>*&gx)iJ11%E;%$~2J~T%` z1M?sNw}77n{B=)!hvja9BD-HUbJTfO_yMuuV}kNd6dxFJ2a=)a+O=8?_>(rKSFaYR z2KjIZtt)f;1jW(q$;JsC{>;nu#q&s*K^|fsCv>21_Us&;2Q-LLdOv*u&bpShTR`KI z%3ZKN!1M1~O~qJv!S#mbzAD_3{?qYqLCdFvIWA8Wnl387LE5)8DuB-#?P^@e=~&dU zoSVd(g|Z{HCar>K(kbag_E$=HBhIt(<6-4Dy?Ay#$ijI&Jsai(%hY0fuTc1uIj~n& zb*!VH*~YJ^{8G`iJ}7x0LXt_5w;=da#Q4O>l$QcyvBV?B#=g?JC8UEDv}l+8188kZ z-}p+|mAfw3G~j3YmPZYV^BS3H$M+#I8br{voA<)Ix1(C4;e(kQy*-LNS1Mh9?& zE?&3!YHP|>9^hyLV`Cf`^*Xfmia+hVLLy;d=di8%_?EM-7@OZ;K+^e3!?rNT0RDBA zQqT3s@Oa8WbTk*9c$x`mva=k0P?VhD=6g3=GDMFqud8?!}3+X&PsohH1y z`SR={Zb=262m>1LzMpvy5{e;7S#VI~i)L zX2ic^1G}syFeMJl+KF_my)+E7=PP}6OmyJe+fW>eRH~?5@}%YkG;rLU<<`2$%nx1a zTjv1@j*1i+EV0@Bcx+O992UkBqT-BiEW!7eQ^f3?LzTkOD4Uu6%(QryQWXa)=fc%~ zE}?yis33%(R>*th9+k0eLdsFW^fIE>G}R|7ZPB%-@1dr*kQ-DOX+L;ve4oD*L)E0k z2lob24_aV!CzY44a9J{;$K7R&nm=*iH|Md6Q8s)Um$7_*akL~(RQzj~T{C5`Y*OgW zbWH>orpd<6q0fcTkltbVU4GJ?-|w%Ov{a0`OT3OWkCdtMRtq(M2utwE-xw}8^}I`C za*pG(?kM9iX-Ii@W%^M1N~#QXA-l3zcpR)deHtrX?|Z>13ibc0Hqg$H%vY_H$EAh%ena3Bcd;X1wWA;vKdrG*-<<|LieQ5So5hFM_?eJ`+19uvJ7{SO zO{R?0b0Q_QQ;}DUt%`+L1RVghnD0FJvf5s;c5iXrNmpco9=tv3=*M)AL56UnBaJ7aqeLaZOWs}3W-woeIvdP2=egMETE!*G z&uhdXV)jrTbo+yOCxFzPAId7wnH@B#0lsw>JFB3zDFK;G?X|#`_6lON|8O}A5B2?Xk z={vV+z&1tqPOb(y451;W%9XMX6tubMJsb4sJRnr9 z_7v2OA~sL#yir}mg`CRWJAh|rSj;>5@S9~& zDVd`;2OQOh>>Zqaa|6urr%xy6=5({Yor3HUz-Qb8&X6wNC;-&yPPT@*W9|fzEt~m& z-c_X5eB4xrWYWjo%}Xbt$?{;)XKYiZ@ zn(k2icjLr)ackRM8!&>1r=_qeH1~ns-R9S8Z=laY%32O9rD#fsd&A&2Q&@kFk*XU| zxLn(Y^6-jHgCh=vn^q_%pLZn{@Xg8SdL~uO$h$*Y$v<&n5sk9_Ip5fNyNHt8O@{l? z3Q^Q)@T|zuxuAgh=UV&Q51!J+<>sJxR5X1x2u*GOE`S^;1H+)}7874cf zL}eA^7#jx4ELHzE5L@Ys$}!YWtP5bbiA5A0(ppu}XlK-!&Nv^Rz3+k+R~wp4hZ(_Q zUXGZL#&Vy?UFm69S!gDq=fpFblMLHSps$ zBAi+qwhIBtt{iw*r0dJs_C-Qmg(9RoTsr3I)H1HM%#_;49HQ0_A#*nOL=qVAxo zlP!X=9=$6RbU`h!4%!78oVq4#Fp$Z+J7Do-BHH4SgEI;l^;sXz#zH zKWfvo{W{SrY8kGHnw0kqzi1Fn@+%tHpn$kXV3GcpqSQdMi7^F9pfp(kvK1 zolP0`%6@)R8^*Xl{A6uqmAV)J9PXRibTWX)(njS#331P&UlSmX2Dfemo^H?-I4b8& zK#HKxuukq}bYJ4!y+_liMpk?;vnK1GlKa0m4Ri(d!piJ=Bmu*l3EVP5{5W{|GcL@a zsT67AYcn))P!Hx+o8FGm5m`O09e98N&;qq1+(Kby zR)fyt?mJP!+MT9oawY^qYD}_-lu+jRlJ;!<_`{0F$Y)+LTj!{>|4es>15xPBUv3{` z%Hs5wrF-f7CmF2{vglciif?&q?MR>@Uj`~X2~P9CF{669WRBu9P7IWaA}Zy+7Hb$^ zVpPHgUxGU$hi`oG;dC(sd^E{5N{@0kpHNe)rZM!Fja%2EA1=+^zFbQ zgZO*h!gaBLS>Ex~P3Kb(je4Ay{+D6O(9dLbamjLYrF^zOHc~C}*;_!|2AO4f{&sO8 z8-qx=?n*AYRn<%j#edUo)YKSxgy9m+NCczy7Xl#u<1ko0LToUX80v1oytOVsLG3Jk z)B1`)Y6%mgYcV$;9WCZC%aP19iPSt|{WLYbN&Jvk;Q7%hP9qliLp6)~RgkJlnb)2E zlRu2DWhi(~$%^S(R_u+efo}rh0x9-Tz9QilSHyjhw{KNS!^34=%jWi6r$l_ zPJYDz9cA`dgA-_YB}!`U`zXNkmXK&rprqI}D?Z(w&B^9i;D1pA$d;sEA}gl0+-6>< zn-f3xSYrBY$ktSinhVWU-WY-Y?@!X0$Z0QX&A@l51pp^*KX~-G7xg+PijykFb(St} zkd`t7&1My7R9L%Ie3#|jc@IP%1!`>hashpc-ltDWC(aFq$+GDMpljN(c zU9q@8vB-v#%!L40EO>ul&GpDC5V(3;Z-H2-Bu70-pM*nA7U!gYa2g(EpQ;H2wtl*z z{XSRp03*Q~(th4jJP4}_o z3zglz4ZtL)jody!tfLxOzF@=KY-xbp!CF-M_=S1WU#NGS1bVCnYqGito%QPm5dG*p zlZ+{N7J9wLC0&(?z@|;PuSW(qVkat{)0Mx>e#izeJvJ$vP?DGaYzFvW_X2mt<(NjW z?Y%)*%k=R!$-5Q*YO>VYos<}XfJXi7&3!41n@La!21lvQ%!|Zhq#metnLQ1GO8EcF z_!8K`1X(0eZoD7owU%%Y7(z^@*;aobTnSHzNJ?#>^R~|~RmXGobZ6D{PEkutxhQWi zK5eWD>tamw;i>}dD%sHS4NDxVvQ<{+R6tA?tyMMj(h{{i`I=m3lvgqW-!5Gr_-e&| z@G3rQH1@z8Sp(Dnmdiu-&fB`+N&H>fqsmW&iKVuW=5qNh5|9*g(j2}Fp)1BA^JQDI zbN(G(Ex=Hqu6Apj;p-@|if(a@!lKSd)9KCbcKsx`_-(ZQOsi$XvronDZCxkVVNtE? zji4Z(GHnmP$1f?;=g&{16bz}O=OYutfqsUg?*2kyJe|{8<;M#5`p58g9V6In0#PJu zjP^NQ75kq22j<|}QBzA-v=?}M1AqPIPh`z;2@?GfB+F-ewUJ4;b+zE} z>k)0^s3!?4kC;yAUmxAh*vlh!i|InC@)Nud+uyDoRDwrhEqpYb)mb5A*z&WX{a za#_FErNw4)`8wiSdDY1IKb{_FZ<79LZ$@qYrM+n*M0E<%t@Cc4Ezw2q*)M%H<6N7b zkixj^dH73=Uwm=~UujE161G6gg6H)5ayo(wZq@lT!sV@iQfX+o%w@I8>E&f_Uvzqf zb-iLt;c3KhLRykbC8E5|V6$4M^>IaELdXz#Y01GPgV`-zy1gIw;lv?V%o|;T4gkuP~q>TrWBVsCiosN=6>CecaJG z|ICTymS}gh z6W5HPFB~X8Z~C{=S>P1{LeX)R3f_G5>XdRlb*-sX&F#wRr1$OUcpb7qqL~3_vjaoNUHO?z5n-|pEiOEm0tp*P*+l3Q=d zw+F1)9T#(p`rSnXbM#+UB6Hru20VlxKn(9OhWDTEB^LFrUsugHF<2ctT(d*BYz;0qA>#oJKm?#&5yE!3<6b*T#5qL zk$L-*et&Z@$5QC_lTfYg;qj2)0+D7Yh1sUG)MOhLy>D;X`C*V2Sc#co0SVf+#q@c! zh%5Ii`{7~;$TJ!(%}*t?E|+tBnSbrF;wcrRI|$`!(-Td#F?a7FJFxQ}g|HZPh+B>6 z|1eRtIV5=Oti9qED?MDwc&@@g<;Z}-9ZcQ1+YR|OeTA63J~kEU3y+Z+o^(wa31b!H zxy`2-C<2Vy=oD1 zkCsc>B5*0N108-yu|t5tl;vP{FwW~gm^sb)7sqpeO!Xq(Fw0;|l)@iai}gu8MaE`u zcVQPb*T>|TZKh0KAAO1Qc1LzWG_kQ))EGQ_(Q^N@^Lx)z0;*OBu1;Ci@6~$$WhG0~ zB*;@?eGZJ8d|mDB+KY}X{zb4vU17J>Ig4*{Mo(1C!)e@N_aIXe+hRN+TTR4iEPzkO z>`G9T0Q_!*V8VpA`@loBzVs!xk}2EW^*p`lQM2@}_|;v%`N`uNI*7zC_y_tP!{*%b zPxa0m5#`Q1n-sd5uS5{#R!`e}69<@wulcIZT)5}8c>8>IGuk$T)xJoT>_-83hT2O{ z$+v4~hWm37Nj{Eb=w0+GXX|Ze&Ec_RsefHlN0t-?IYci)ptDAPRo)Gy`?o$lyN_GT z#xGVgGEJ%;c&1-JX=?ByID!I8l_KgHHjMzXZ}D18*~z zQCSiKr3)#{eP+`k3Ba};lZKzx@Rc$__P)S!{nAd~eWouBoqwi~K5FpaRQaWp^vX}5 zR5-)Tkd>9U3PaqeN{q{;{uSS5>QxPg#|0VpVaBlHOxHyP*o=%qgck$a(kDUI$6bEW z7Xu+_=}Xu{nI!Z4^Ke-gl(P{tKE)pBXsg~jRe*u5U1nngufwzt z8G#q-MaqvmL`6bmi{Gp%?&bZ3KZ=edCf2ART?rzB6T97F*$xXZ2b!~-61gYDO9q>1M$Xv6dJw%@DSmW<&vPC7@-?;HoTDl7da&2s95&&UaTL@7|y zi&2;jF!6KIYX!DK8l_jF@6W<+ZoR_^P`hZ4im^+1%*?XCs<9Sr+jQZKA_kCB@&6#D zsr^7{*}-DPi`4QSf4wcMGoq@A&o|t5kECGJZ>_=4j%cPTH_<`>9zvDMr$U5sg$+qX&d`bHRs_%*VLTNI04i;}Ho>{R2G|i(_M+|YMj$_;i z*F8pWf#R-GLx4(b1l~HRdo?~u2&;3yelcom*~XO?nTh!se7udJ83zcmhR@vflVC`5 z(h8oeWrv3kxR*u0Qq+Q(4(cR6uN3aTysR!V8o z1n|uqgypvgw`UvrIWo)miUlZQy>R-k*ijX5#tvnEV0Ks2i3fkS*)>1Dht0HmR}j+*j9{VCls1avxEb@NYb%X3zllmZ z{xm|4K=tnABqYNv;eM|zNAeB7A&kOOX+fxQlRZQQSfYx!-uof!>X^}3Ii0qPazB+4 zz02oeP2Xv)@(l384r^DXXu%*_2nW%$U*BHOw43@N2p|(;Ykq%Zp#O%9WlkG}n#56| z%W9za(;pp6$%6NPUH~Ac=4JsKlfa(H4@Jq3hjy3xI<>Tb*?6N56d6=J655D!*v9hkK#a%N$hV2=}fYvtUE@*H*|n zWq{YAqw>(%97#{LaRE>1XNB53ekrxaBTEi7Yc@S9(Fq;OTWdR2ZY*h8ce#EoBpsP6 zI~cHT40V#s?s<#ly-|HCH7l_6P)m_mjwiYX4UBDXP;Fmv!0)uc#++L_|K-YjYIL|| zPgiADSD?v(>IJpDeYhv$vitqY@^|Omf%zHkM3w?BguxtCC1id^1kX9_@n@zc`JJ|N zf>txHX`HnGp0Q(=WkKX@mAa(SLs$4V2|NY?n=#V;!cx&2eKL5H<-lW7f$Qumq!bXL+2s->6xqxjh8 z^_4|B0+-$}u~Kh4FTs2jr<{<`eP74kZbjIVjQj#^tzL0y>69n!{yWeU>0)U{z$%>2 z&Yy=Qf5V0^D*WmQ=ju0=sHqi+hH(^?Uydyc{0Tfmw1U2KoF`l%#;F*ph z)r?s)A-vVFZrTLL?FnaU3#YClCa>24Z)EKzbuZ;vyX*h>KiK34N(S{7O!}*6;g8108TQGp0j4a`EXy*B^?s>Vb8Ecbgmk~gHG1RS-IOFoQr3-L z?bVbcVhw>k>A~%iRr@ej5S!t#VSH^qf{0#=<0uNNk4*=Nhn%MM+a$|R&xc;!u$Bt% zlue%vE;=fUGNOC=y>cBCESm_eZ zJ=YDioXX;@BMG%=94ns>CkW3GR6e(zLK2pDrN}1N@=!pug09N9JHL8wd6b|z(_m zOEBK7yZO_1T1z&G8$bwtgL~N>&rq?gfs2NMcpo!3Fd9}NNQ1YjCt(&zDg_a>>~SRF zMic*Gl00DvEAMX;`<^!8_oE3@e0j$oau4-yFfD?)IHP6j zvzF?UPV*6mnU8%DyUdylrI-@G5Aj--Budk*h0s*JMc~uj6d@m>zQ?4{?5-qAP@rGq zlAE8t_P(m|abgj@r1i)R^QlrgEVM$0Ey*4!w|J9+>I+Br%%rPJxiW%60a$FtfU!<6F}v6E$@${4GkrBlwQT97{#?q40Y-BX`WTB26J z8dtw1;iE#&v9D(XJ1Msf>^5fbS;u2jwjHua;OmZMS?T;^vOQy+WAa&aH zwKR@NafFBP$&EWT5i0z1(MG%W(dx9u^q_C{-rM4Y(*5wL`LR_`Scs2G$q zwTHg^dW;z!*;aYr3sGzEoku)pn#S!tXiO5T4aAkC-}A#8sX>IF$ed$UE3seG=wY9_ zm^zJF-HJ7?BQ1K>{g;fT)wHKm4gQFV7hGC7CX?^kqd859aB_mpG`=|3g| z(%1mRDD|Y;WOessn$UnfS7uuWD1% z<65NK6sb4HE6< z90D8gn7AQwL&I=_8<*Ez??IE212KQ9j$ifmwx?)vWUFfNzhOa+M9fG^zMF_r{@aj- zq$Q^&$8?}g!sE250Xx4xeKuWNT z9i%h+^!GdXfIwyS^CN{aB^8T)=d)!eX^4T7FoQ*PG)%Jp$Qjwegz)HZALjt&YAI=q z132B)Pay8!ZM{wD(KOYMCgT`k$2`cL^!sBu*TR!x9p;U6Qz=NrLc8~QN`8(vowT&r z2@ZNq9_U1nuBQ4Ay%*AnMYeyx`8X1>dWBvXs@@HZlZo;IOQubD9L8w=cp5*6G8B;} z8}G1axij7w(Q}AeE{4}0SR1~O5C64UuJrnkcy!^vaM1rd6{bB4s|9Y?9p$i@daDx@ z)Zu`uXx|4UB%M+lM*dotVeH|_iXgopqoIxQbAjaqDkC(sht`p8a~&=ndMl`SlaOWFN?_Ln}9 z0UKNKZZFaKVyKw8zkjwxK~WD|C;_;_BCnN-K@`6>{wqh#73e-GjyiUjbX9199TBa_ z(Og+Zi0*U^q~}1?+r%)$ZwE-;BgPCywF(zwSASciTsjSP)`Dkqx{uIdOa!)Ck7mAG za-$%Tu)wLwmgCCo*i!B-9|*f?^ajJyAYJOFqaW-X&}EAt!&2(}#xM!K@4D(@-`bg$ zv_PiYfRAeo9&R=JiO&zq5#q;uYz9m#>5bTX7V3fz5afp3k7uR!q$DIrTr7<#8O?bM zdOAR07c^@9hAuM7GPdhMQrd5%n4zZ{UgUjy9sBpBRQ-%}Za25+!o)u>UeK z0#{W*5NJ`|5OA2dDA_ABXVl0|WBAzKIkK}mg6gvgg!V&aJcfrS5)R78P$9bWu?`&5 zz34dJfE+W0?NCpy!WLV@2G}8- zsC_{wgyFz%HswW`JPf>gX_4{(%)hgZwDv7JTHs4!971H1I}e%V@sJfms zMkk3W>>llluh9#1#fSYCxnGw(Mo1=~b&EZmPEI%%s~u9ym+BQ=dR&TOPxO%7%D6oM z=4&p-c?=k$d||r)3=@O9!e*fd-^2!tALnrh7gq_>{m!vkEda5Y_qJ#;E!FGK3jJFe zvBY{gIJKyWtUvNjY&bz)lTJzEf05jyv(j*t;NHpKuG3RA8)B>rPjZ3EcNcLYiJnxD zA{Awlc+&W;z+9Mqd=s=kgWzbz&pD3OpJ{TF`PLJQ~Ygfl)gox zn}tZ$rjz*2$HG{sIh!9`!l_nu2A2nla{Ej(9Zndlx~9m{s#~)r)JH2gXjpgrN!)J3 z7sl~}+Mf8Ozh7v(4;5pY#|0fPR|Kzo@p`hq@zUToOE^9>59{^pHy}&zQ!vXvmb;&; zAVTR+{&@J)E+D`lh-y`V!{_{JRd1A6m`tRI>>lrsLKGksn?H;}{}F_h|HGKb0}bc@ zR}jW*3!}8tTyIN4rKle!uk#K(TX!I@RQ!r6@beo^ef-H)cITROldoEuVm;{K^(?-x zag~Sqz=GAR18I(&gfHc(dq^c8Dnf%O-v$aQ*$xx8lDi8sj^F&{>nesnqy&2?Vh?4* zayb3E64nz;!b!~!yP9i#%dMKTqd!Yu;CA>PRFcFZC!w-Nw%A*a>J3{?rNR{dsE_M+ zBej^4bY&{sPHCSJiL!CWDrhm#Zs{F!AZ>%n9hU|3>0Pj_ZBKC@IdTD)SaNDAvvu0A z0h-2^w{`t80>~BK9w&siluD4$tTO=|@mYwlzGNtxPLKy7pvhLvc)(ax#~?RZL6;g5 z$N0W&iDfA-q=4Px`@4u;pOA(J7RovcN_T9!T>qIWX=%_f86}(^`r?Z08P47aMq6c( zoUIyp3!OzyE!BMnI!EdiHFr#H=Ml&fdHrGcu?kD(B;^yCzWn~P^|1h`thDwp?1EfP zM&cEgH%iC#nh#z-Y!KI#b0>Er(V&P2QCl%3vJ5snb^-9GV=OgU`hp%~yYRujG{oQH zXuA{d6RtlQUaz=LF4|Q!>_f0H6^`;ZH|DN9IU^_*u=OXXMbU0ssMJs;27R@0u&d$M z7euFAmT}YX(e|P{0;;E8Igo#ukg*t4AMVyuHvH~AsT?n-FQC_J6x6|XFWDKjSakVk z>QztsjxC-b?qgO?Q!3;{ zl9|v1i$_bs3c1d=(w%O97a`0P8#&l4(kPVnn8h^i7FDkbUHAco_au}Y-A_pup7U^u zo`Z1EeD~n_^Z3E&ulSHa_Vac>{D)#vN)&}cDJO7Fv_#J1Xu@3Yx*6`p@Ij79#zp?a ztA6^bO9(Gf>Z;dfw8|h^@rV(-m*`Hf# zDZ73U+--o4Q%+audmM%DpMMri= ziOy*uXqGtoSOf2b26hR5&4Pn!X?J?vOT+hcej8X6K#+mCDNqx7bjOHErd9a)?}eyO zDqSQ#RE)8udSpJ^!7Y{seRjXw+emjtNQ1wU@#`e^H0C1u!qI$l50=EGNGu zT=PGbmHjY7zTf?6U?Fi+1QNNuki5wj)AjCZbJxIy4ts}2&1QQvv{F%{&*h2GlT-Z1 zW4p|#*6ataW8@^wFJg}xDHvur869*mM%{!Jc`3Cw{yV-lU$#tQI!ZUW1>;7Ga?!Gz z2xSKt3{_wEvrGnFujt(4pwtntokBWy1p@3r_VE$w0QN zrXgd{y>GU9Mud4|@+sMOD|7!*aDyb9wB~m$JF4EW156u2P0=y1$u3 zVMdvlk_)Ups>pv;K}MMx8yrH}(;d1=$45Yb)!$%&MmM5vy86~!1g|7pjRY6sgLIW- zq7zc7*Yv^asaAnJB=Tzr0-hu5_j+o^(WUy#ht^;P%HMKtk}uH)gTc9T>~%4$Hw})9 zgdXzr+n1PKS_dqNw!-PYPv&1{eZia*sWR|428qq)<7I9ay7jo$(EhEUSR+3S$ntL$ zsq(m=#YO!ESbFy}ylv`j_-9SpYucBM%t4ZkpQVWU?9{qq;F0bm7qKd2aZXjH)bXZY z+Xf5ye5v8c$P#8T8ZkU zSa|*&;KkY(D~sRm55bTRlL)@ilypJG%iia+E)!lHte&_efKI~Ov`8`iAM(B`D$bzW z64&6tt??j1gL`mycMIZ=@O@yF>y~Syxv@MJWX3ZCc{c4oVFJUq!#9+d^p`SFnrr$Tt<#h>xNl!@S za#^BA!zcF1{MWllD(u*fT@UKQ*04DVri0uZF+P62ia6#G{ovPEK3Yf$!#We+C<$}2 z2NF1^Y!Rt!m7+(i6x8V~{PT1|@ZCuu+4n&swIL(kz$EPl`kJb$_Nt%)ZZmoBQy>Ai zp-4r@lr)L!SL+<;Y)l?P*I^fc{-)11eRZG=9%Y3+_BV8Ol zn5+7-mM;6Y5zIGE}`z3Z2BOkgR&{4cDVj2iX}Vgu^{lPbt!IbC*2BJAUah zLDZ@n30<1aUuA2i2SwWUI)uw|g^mxI& zP(D-hdEve?DrPmu!3*t=#EuCc&ncpau^Xkhyx>$;loD|p|dP(1#t+n zzmk!XGm{xrl~X_$E1^3amdK9xSyZr%ZwHpnKvSRrEwap*>`r13z(j;H7@3DE5|l2k zE2)rI!&ShXiFDJ;YMTWbR#%B50E!(H;qAbD>Xn9pb|SprVyz$`fjZONva6M40UBHr zGIn#^`${<3u<3V)pPH{z+qB@VZ~QWvIlST}IoU zIOht#o`A9i%4t%I1|9m_N|&fV>Bl2FEvyg4?mRe@R*!txFC&l_sYy}wDE?|Wi?nDF ze8G2$6~X&*P~9tM0Cz@Z%&p@tnMm>pFOT;#%4q=PR{`3|*lMg~t3~@3+G_r2ew0i3ePIGp^dcsIA*Xfe*4Q(ml+C9V%Y+x_*LJ#yz(2* z-3-1sCzxr`ra505HrZIvM6_M3B{ZC(e6pPwpHLDGF}GZ#GAO2ZZU(J4+ty9y^?ewh zSJzm=zF8#jB;$3L9BHk_u%!qlWvjDb*PU))$yJULJ}hAoAOOhmeSY|9>*%V>G|;co8%Py@xm9L#zUM_>{`vZ*431YAwUM-+P7joocu;Gij~R z3c~Br{atPaN1s|WiXu|XxD%VUM+Inkv9=DW9OK?}BdA<6nNb?9u6B@~Gf8`Wc0IBp zj1f3eV!sX&P~N3;(Km50QuTvm<=Uq0t>V_jbN*GcWsdYlw+LEJ8&!ikzaOr@lZauWd}{z4edn5o`HHet>|pS~#ko0Io`0zc8l0sVyl5 zpjt605OE&(tUtq9>763Go6~*oIhy}%UiIZWo%8?=pzsVIc+R1c z8Yukw4~cqtacFHs^X;Hj%A`w9g8sAb@i+&GtOl)41L!eOD7Tyjjb{k) z`neAw*Dv{6Q%Z()N$HC?IGvSlXM;($b$3JDxCYb_!|LtF!E)c!68Yb38o|*WEGbJz z0t5Fihsq_rw`awwrK*X^kse$gd?RM;|7I76IiY8W2y~ImhcL{vEWZ~55s!elHY>~Z z*9HyWV&jpeHu*(}7HhKX{l7a~(mLgFStg~6ZrwF~{4Grl-8d{baoZhCErMOaMZj_e z?xQ%4EBSO-o!)Q>p<|tIh>~%DWos+rbV51k&N=0H^!|I@f(?J&>7Ih%1ly4g7o}Sd zBIsgAt|uA}ans9!j!fq^@{{fE7MK?dGh6bahH~BLz;a#vx~^UuYzvWSGkcQ~#0o4B zhd4X)JL`D=m)m1K4q&W8;Zyt#0DFM@{KA^lvJg#EV{D!OQDKz~GcD(zkJ;CWAf7gU zND(i^Vb-M5q6QeGSY>%G-fh#DEIFjG{1Nl>(daoMzr&L3k_h~hy)#}fb?hVxJBojm z>K|0W(u=3Xl~MU+kmq~hF-yNk6e}AW@$CF_+5TE23Nj1HF!!6@*m;H3YJH?s*6JR6 z3lhfU7e6v!YcMZ(#b%X(UmjbD-1qMp#L$^@P)>2Cs2D>Iz^)F|p-aRY>}Ib0{lR|m zr^WD>tNj*saHgiTdQXz}=;*k5cQhkMtF@@?vsKNcnF>7#4sjih=0^U>=<5))TakU} zE~{LYIr>Z-s5jC$UxSdKNiq($x+pnWZ6V-MAPT^+gVHRq$T;*(jzW2gBU1{S1HtB+r~E+a_duL10>Yn@UzF3NCmKSr&1{y5@iC4CL?6$ebj0#wrD&G^gkLL*0peWLjv|M( z$1NB@LI>eP$g$w)n{HRiFD&}MgN6rL;9iJMWBzs~ERCM>dtB>#9HYV=m4mjrLN6n| za^5Hs=Lv!Mn>5e0Lefebj5{+c^B+zO!uHARK|46f?yG>Ui9wuR;`TrUc*1$q+O4-f z-{9U1?yUB%;-3V$m^**pAT~7OF99X(KL){OUmIyp{yoc#;^7L5mFO0yW%(09)K~bs z={tbQzL`M{$K)zG{ivNBhFs7J_?tQEjddA_U6drfxc?lwihb9O?W-XcN<$^6HbT;x$&waM%C>o^62JQb=qR3C%hXKo(H!c&v6wV{wfSt_rmQ!AC2>*T^ z4cx=S)>8$wVA$iAx+K?cJ2MSh7Y!^UBb6aTURk9K1o&I+sY`Neyq5>PNA+KqXqb6N zYHI-jEWuua3E(vXGp+Q%f)Xw)vpTC!zF8z0K@DaqSG$iy5|smXukUtMst4SMB;9U) zJILAHwmh$S{L0O#S`*i}92fxc>NthXAyo=up*Vtc=n_)cD+zXSbT|-jbf2f93GflR z2`5b?8SoW7&e?voBsLr)IW$dw;Lx2&oQEYu`c;K6!fUb%moT!;_aQUIZm(6poRupcv9lzw2?1kf*WU`zi$;aT6-!{7K7QTbuSeH> zJTlZjbE>Z$4f*ME^&`hsOeba@xknV1??qYEgb%~gys#|;q0shQrfv0yKDbPXx?WT%M{3L zjWo^nFenr=BZxz9B{TiXg#N;qVCxNPHzJ#BbjnzZKW!x6^AQkcxFf7K^=GU#!{GFr z4w!Fzsd>(LxO!eb_5So%K6Zz?#{+@K+pqTbJ0aMjgg7Ud z<<-d-JHK0MX=`3?^dg_2pAp>k;z|mVSVO#5;EbMX@r>MG>4;k{=TJTJYmJ`{o+$2+rK|jTrK7uBP+S3-7YVMC<3A zYJ+Ajd8fB5Npj2s^98xg2Ixl&pYskUTz4~L9i*RgZoc&1AAcF}smtNF*zU?Pld?4) z@xLbFNjSLcqLj&yX~e%F=sFb_>)N$**2lAY4I}{*Q>IC04naoNo(qxnokx*|3x3%9@FCH3OUO~yMunK~x~Mu$M(^slgbH#SCI>`LJ`%#o(!HDTx%UhDX`=lA zWuEsI2~|_XdqWnJ6%s*kD4|e|jm&Rp;}WlI!Quk5AicW+VeyaCkk0GzARn~gHGb=Z z>=_Xmsea4~niuq}8xEvY#rNBT@3N|c;k{3%_ZE-jH?;RgD#YG`*aOo47keNV(z)?x z$Okr`&8Gt1BiG6AYa#bU%6@2x`RQF&Ep8iHt{U%sZojvjzE2XpH|Rwn0~qQ`f=q%e zU~yvwvtm&ac-9Aa?;Mlwfd744>q0(Q&>hWwc~=ZHq>#y^-}0MJ&j6J9upsk2?yfti z`~c~5;Jvj?kj44lP<;=b$9htsCFu%0SNF6~KrX`imPAf4 z=X(r>?_H9|o})SWq6Kd6_Rp-h(Uiu!FBSeS{sA_2+y8`%;ohZrDM|F-;bO=#5t}r< zg}jSi^eFQZ(mAv(M0=^*QrLoQ-*08N_sPs&Ch`i0iX4kW=39Exn_cxD_d${BuN1fO z@#*yAvyR{auF7PwTc8LN|7S5FOGOEjF*jRksvPvZ*^aosdhBX3vJtv-wr4d&m0oLb z6aKeA5zX6tPx*0c;&Oj*8SR2CEIJ*1IbBdm}iU6{hn&T zeW z(I?3IPl9ST8fwHaPnz1Wu;&XN$pd zY?lz50B*?MbP$F)&LZ47-KX*IY)MHwZ5@@-p5p@&+O8CBL^pqTtN5rc`i>PwO|MBW z&x|#7{FopSK67%K1gzDn>ikl!hXab3;8f{vtsawY- zQQ)W8F?Ygp)hScR#0lW4qeZ@H(ms(|68>pQv4gNrfXIbjBgd*a6C6SI|M`oHkC3y# zZA(C_!2mxoLjay5oF4xEayfs_I>L#x#))KZF!nWPQ**?SZYC#VivK>deZ|1_ekz;@ z?!p0%0Kd+lCT70IKw$$?M7x7VymDwI;||H1MH)U+WoT_3ZA!mKw166rn4M0W77Dw6 znGlzZtY$gkG4IOCsTvz#sZG^FA>HX*FZmPy`AY3@a7>#DpHzggPNwelf>c)~AA&e; z!RQ;WP0F6A+8i%4_6W?N3@Q=m`2KqLH%Y8O`##lE_(zloS&cthl1~N~vgTzd@}EN|9%S}b=-(-OBWZHIB4spYk*ZVAvDoW* zot|k%40nM7$F$g6C%~`RdcMH|!H;m6)phMm|A_qpktYx6P6isRn$%u=(SlU|(=y8As>Lq{d6KZp`mre@7s72meTpA*#5u(Mb7Ag)si$_;Z~8 zlMgAWeB3f|(4Wex^D6G*#wPKhJ4pE?NPO=m&(pKOPR>jHfX^VO@?) zF)!cW#+aKJ#VF_yH#D_$EU)9*cJ1h6%=A#>^uy;Gfdsc)H4f4Z#WXb+-!2$ex<6l> z#+jN&&6{#sH*h75xBlLjytGxRtE_*)2l=ZcsQvK~KnRSPo7r!BTa_reey(v(xbAA5 zy?#8mGV?@X6f4=F-E6t zH@9VUbX>~!@72N!{`-%O*qqUMUY*ak_c}A2fImKEFHna2aJuIio^Q8#)TtH zNSFo5^cj<*gFsLG_fs<*>>LuT6x(}Yp>V`M8ciK7%gTn_*{@#qn{S0l@^SF%T*v@| z_WNJeC-3g=GALgoGkN%Uq?N<3XCc5ENQD6y|e1UE!A9jwYjH&mi0dwZWUROfEHAG^Xywyw^dF?#$3Xx?K&2C|>IOa}dL z%2c#JSCA1EE%`p_hn+!aLYar@PBtZaE|TR-u3xQ*`vvy}+dwZ&4BvQ{7}1lmgHKK0 z62r+2e{igzfdNAJIyzd-f=x!0zee$K`kLCBhF)40z%!tcy9fFDQjWl|m+*aX&SBP# zXKf(-%i_Kp$QNB&fS!szqdri88{Nxcd?#zib+Gla2!LpDvt6bDRkITCw%X%yFzf))bN=~ zD>xTkxRvpOpY;CweI)8u??${Ai4fHy;M_Hz?u|>_#;`nd24epaK;I&3vDevh&wA??+YDe7UYld_Er?aJmd1l9|G4HCG+n z-q|_27S4EkLyY!%ZDBY)XOPWV&FJ6Rnl@PSQKu!Kib=0aXXemjLoXT2V1-jl9zr-p zi;O%*pv@y=98?DfpSl!;cd11^nrcQj1JzgcWKa<3O^-+-qxh48)$PQson+`f7&wd% zq@$skNZKvK&96)ob9>`UGT%;^heV zE6$93MF3Jp;VExub-LS>0?7q@RHH+mK?bQa-hQwDbnN4}R7*`0!=#2stBum3f6U1S z;93almr>(X*!AIt!Z^LH@Be8?Ss};0>vUN1;T9{o-nd#ed&3L@?S`M4{c**J`j?uj z?hg|D^Ybesg6%c*Qk;@>s@3h7e5JIsye50{i(-M1x3d&^a`ZV>5zF{vl=QjOwe7tC z7i`xBFmQ?icW8A^&1~2?dKoNCj`cZ1)XS%Evs{&48$#xcD+@CCd(<}I{G6I9_lT{s z!qUmJ+wt$$UB^TP$F`4RJfQt#v6lAYXoj-bbRQCn?!=%a4BNh8ZQdsoW|1UMW2&8= z=BbT@)B4w^Sdc;xt0bK~cQ|nOv^;`mLC*|1kg@(=oYYLLDmxDqP1)63K{D8N35VJn zWh6+7zA^~Rkje$=M?f!s#68adzstmbRYXM9ml(d!0gtNL;!vwi?Sb;G#&5sEM=&IX zadhdC@{JaI69{yAXD$h7_FeM=OSe#-QXny4aDZfTiYQO0*EeER^jmzROP6dr?1cNv z_?}3Vp1w1Def^vghLtjwdOBx+`hE7iI4gT{2xD}oQNFGH(yY-nVeA0M$6!##ch|8? z!j3c`A?2NBku}Hyvz-%(_0PecDIGNKT1ie@v6m0;Zche1UBaNOn>xxyStkESj)#K- zlLR*pO!{Za@l4L;@@IYMw3Y%tR#nqShW7O5GdFe3F2lMSq_ zbczvHvN*+=kN+yN>mMyee`8hzrt@1&-#B~?Y7j(3B)%E}PMod)QOS>ijO>(zGQV{) zf8ZuO>;b1|HgT_heUXusPWkfv+`+PY4zt2jEtYHPKdy*)!5~(}2bhBvZ9^1qf1^L1 zYZ?2#uMW#X$f8@mPo5ct{#|1uMlXQK_35G^7Q}gPnOLx*i!F%>y|1FM8xqHv+rDemT50^h}FqaS- z3v!n1mW2~6blL@B2dSYtx4j^=fhq&ntH;6<5R}Crt~d;GrN?I?nM-DS(I_};<6O9b z6@@Mc69J9SMuqbHmx#)L9nKizT@dnKM0C=T7L^v8V)2pUdkn01Te~eVupp8adSJ-q z^+^i)jp9+Hu~e<<=WMTnTGq{}%cI4WO-_D_gGC3|#H-8OR2ozMzQA{jm+sz~N7A{c zWxoy#Y(*9UUZO#5cnCg*Jk1RqPV{ewg6r{OLs~LF7ob=xXplSsQoZZL<)%U>jFBZK zqxwa1y?(Dll^>h+&kx5-5`3)=v|xVb|M-YxfqOapA7m;94hWUE+mX;)>pFz$oJzgNYm1f43nv`N!yQ(lo|~q4@h1h zZexVb$M;Bo!FP-2?UM_aZE$|koh_5|z53^r7A-s-%5ayNtd#DL3%Z=buJAUol1#!hLewJMV;VVlL}ZpYzv$?PLvjzyULXjUz07Z(2M~xdh^;fquI{N!GfUa1X!yRDrX-_QqBeZo>QNnS7nzw zUCHy{xjQUHxT$5rWW0@7Zn+6vp7(eKb|=hN^I#uap~-%XFP%t}L1HYJ3aSN9DUO7+ ztdlu?;);|NVPJnJFC&F7e=phQc-_vzCPh^d(`M8w4_a6Y!;#TmI@>ZLAZ0YTt#0JB z>{E#V_W8c1U!+y(bV4l6Pu9W*dKcmSEfUaczKrdJw+SVoCjG^Raj8*gl4SodBaE!3 z(MUN)Nra58_KhX+yzBnZ_j&D5orE&YKK2k;=ZolVUhHE$7nySq3{G3V&DOjZa$)u=uL=LPHuRVZ&Dra&IZaO@v7%(1&q*SYNJvcn}P z!M`O68CVSVlerxDg+1T@u$FCC>&V(PwO;MWN2_&wWbU(fygL+lOA>n;?aw2<%YEL? zP%{@!rVN37Zg#YELCa+&xSjcmaAiyGAMW8%*?(pL(m7Kj_qA#lBDae@L&YEwqQLn% zg%v0u+|$*Xg5ZVkM1fuz7GCr6JXH1N@5yZkYNh$`DOdWK~U@^&)%`MjUA-4Hps}nCYds>Ojv^Ug@rkF49jxTV}Gj`t>L`-dByY!jG zo-cenk96C`*r-JRyKMNbEQlbF_|*hV0-iqg4fw{35XfQ&L0SD*9@&!)rlXS?o&xq} z!Dc#s7AxAG(;#;cb!<&4>9&<%%o3cU7QUIHzn{DWO23HR)CpKht9uz~MC)sM&btBU ztnS?jE=_ePPTSu+tz%Yr7n%xjAg$@Z%_gO8>upFpp;b`z2GnMz#E4UP+b=ENxZGl5 zx1=2P-u5|T&uHd@NiYI08d7RQFDu+|?R44Z)jIDhqF*E?HVm+^y@fiq8kX)t|78fr zPc;e;dGGNcPFQ-s*hbBFE3@VQ2jKw=LlYytAC|Kir=!*Q`GhH05aG#6X(VvjM6dU7 zlM4w?cb@N=nS+rZM~d$LA@5Gi+Hu64P<;u&8=n#ud>sWXC}QZoWPF~4Q#OC0GPAvM z<$5XncJrGJ6KaMuYIHrws>f;Hrj;)eOv^iF+n`TemwTB1LbU%Ud+EOKhOR@>)*w%c zJyqZAg7nimRw{Xd@eT4P*c6i%Y4(Z6J%K<&U&^Q~2nol89*YqDr5~RP>=rd!1;T#k z8W-IwZ`+~gJ;rg3s7EC^qX-4>%b^6jJLoHos?7KAJ&u@Bt&-Psb&R(pGMx>Y$Bz}J}wsjUq$Tqr%m%9xc3k}LoNcS+#&_qpC6%vUd|snQm|p-1$(cI+sEAMoJqLdIc)Q^A zp{h+K6STAV_b8TC?p0TBaz}f|4-a~Iv1=oTy-fERhhLw8hS&Uo*eG!WHgcEK2Mf;P z|C0;AzNN=c*sS+V(A=MLVb-IzUoEB2b^Gz!)9^>>3u~e!uV-xv@!Q(chTsS$2$^RhqNpmFg8DXAuE4?oAQwXyU8iy<>+kPP@T% zmV5eMC3frXP+`ekx95vwn=G@3IpZ_kcw|2aQlijmJ|czteYr5uv7YNLbc3hoA+)zT zKOj}+UxN9iC*yI(A5`GdN!AD9D`t0o(tmVc=JRL1S?R;BP)11}t;C27RqD(ADZAJw z!1DoR67x0z)qLzE&c~=RKY?)vfjw>f8QAXC(nTY)-03VvINKNd%nH_8?se9!nTLENP7sqjF0bQEJ8Ju?>Ay2V%J6jy1;V=VR$X=hpI*rb&4m7cEaREPM z*Y}klF2k@}5Y{l`bA?cCAD?k6>{8UX7b|o$UilnKCbRq0H#M3KFN4k4#>{^&uCFLH z1fIdu1v3NIDr9?teD9VA2^+!vSU`m3my6{_fj~FOdg?Xp4TEkxX8p+fjoG)45eCk^ zhfQOs#ciB*la?0&PN!JLo?i4c3Y820l0@$# zOuo}JdK^11_rQ+fg4|Mmb)(|BKHoouyarQ;#MyfUC2XoJ*c=nLlWBZ>&Rb2EuGt(l z;=8Yo7ukScZavNs&ru3VBRw#DxWHI-eOr6gg-QZ{GaBL8(wlan<(&y0VX}hU;s2Fv z@nnHf&u{ddxG?#14~0T}>zLEWUr2uai^tgu-st=WumAYKn3*zd^=4#N*jW#xaE4(G zYZuE4@8Rmd?UTg=5Z>+VXj=-11NZyn)Ht7k`$o~gUmap!*_Hz8$N>pP5RHWR>3}M< zpHv(wfpaZmw$v}EYK_0M5J+{=;Qd0l+}++0f{NW!?vm6tY0w=)QB#uDF9>o}A0H!iU6?W{qk zwgF#rpUn&Xq3ln%tCZQf-Y5BQ@b4)&2-3wgN*#exaJ}gqx8lIr%|&@atTMXD)YRf{ z%$*I*D3nQ0=fV(tCC^IHg=nHXI4_h>$5FkF7UsK&3v%#37v<`!9gx`Fs0eFx?@1b? zY}HRRW0jLCaeR9e!9w)M9q=-sIbJkwk23CLK9%)slQ0aw29a=ZJ@_TX{Q8c8t~sze z{-#(XzpJV#IS8N942x+KaL6ofv&B~D@wKRem&sBL26k`6yN@1g1$(jE9g=+EMA~c0 zGhffvC}^*$F()~HN@gxCw{boHnd?G--Z)>ODWUtN5)pe&N>#*ILllq>eleY8q5%?7 zXiosXgyK-6Qbu9GY^-{aCqA`QohrFw;&n$rDxD{Nt7wJ&l|(tB?f80sRrl739z02ne4tRx@y zxi1CySKJI4{xPLc zmkKR4Tvt0slm1gv{USfaedcI&4GIeFJ-D5AZlut7o_w+TV~D&yBw7Mg3kG+5>bl=( z5EOL)IL}SEHUJd}T^WnLi2R)F&C3k!@l~GxUVsLo;~KQYNyvWXfqlqfv1CgOl4M%= z)RFgc$9=&W;^TO*4oi7B@ebkkR!k@zS?mmYev(W1X9<^#`v_4_Eld1QJIv$hq~JfT zij^ywhn`R~V|qx_uE@yMK_JUw&Is=pg#z{3NRMG(Dfj)N{nLG51;>nwfc{sNKB-4I-e*_=UCnD$2)00^RnBcCVvN#yjlz1#S~J;Xa9Mvh_qQ_{G{z%C!( zirmD{yB4LoD4}|+)FH?NB{oIu)JhMja&(=#?D3})jjwy9mSm#XzdXt%@flTahf$SA zS){)M<6qCnsDCBuXFpD0x4<0wkJklm9cKRv>P_YX>OYWlKQA?~V<02l1nAK)x7W$L z6y#o7l*`+08+P9=N$qhrn}8B@H#rhs5BZW}EUUQGTZlzbRtn$Fq1eweN~@d#+k&6t z2Ed~R(RC;FZTnq}B(2rzU9-JyFlXI*+zthmHyFJ+-_2_0ERPkayU&3B%6Lo$pGU5k zw6Q5~VXhx%rZ6kIg$JWbc6W;}lU5eQ?u6>=o_$V~q}!LvE-Sc=ys*bO`b15-R4%b_ z3{Y&9&TfE?$@=DjQsKvv&BqbSO1-y}1h-hH=Eo;fPt0YNX$;`Xw9qv3Rw@4#B@ubL z-#cvzHwf5Um!Z9bhNorh^uKW-Ua8*wXr7o9)?Q!HWt)$aLIFHq=yiivSwl~K{_c%s zP56WJ_MGP)JPX?V8qLOD+CE*XIUO(*yyu!{aK0RFVJx-s`wuXQC z4cwZ#+AI(jqB;M^?Ddr7Yw@InYVmo)=&zT9bj&yNZ{??OI9LNV8cA9kVAV^;2`J^U zsn_hgK<{aFgt~CEeu__~I!%!>ypY_JS{pJgoU`8@M_wF(07trc`~d5h|LH`uAwqk| zkyy6(gKBgY$SaVC$^(PC;$J9PsK>@|@b}NgyrSC^t2bRq7lAu2^n?~P@uA8*n5DnE z`i(Kl$;P7-@=>2K=ReN0GnB;}q{8}Am7;`rQKSjbd>T~qE9jOEYau!Jhdd_nIdl3h zZt~WgTctiE=l5c8Yan*IsW!5E>)Y#Fo{m(NliviyU1L5Nwg(RS%){HGADEfMYQQ!NQQ+m z5W%s6!xyMUuTmx0oW6EOL(8HzX5GheSC;I_>lj}Z<`37ffl$p+W zOcd6k?B$bvrqoGY#%f4Ks0W0=x!z%a#BdHQFp7$;suh(P^R2q|u zdmo35@TW~)$TP}Xj z(2U1_KBQ?cij2>N5fe~ug?8qi?^cRZN*n!0&FjM|Igm7YpfjyfseYG!En1sNmA=rh zzC4HQVilN*-7X4jWd~iJMRd5^(2`u8B_26YHIp6yW6d~GD}IpsL`Y9z5Z-h^vf9ck zSfAL$8DJx*8&^0TnGE=w|KOvCPF5F>8Q<;c0M3lP`CObF8-@UB?&sxja$z>7tK@+Q zY(6>&ZkJI|zDg}BG{;}rQ-dGxh29K9gVh_?Q5%_|Q7|i6dql`o(60CIg~ymNO+Q>D zGc}6VC!qik(kuEO9foI!%Bi9MK--K=pJ!Vmn83_ngb|K~lLzQJ#r{so zc;strMGnVk3n^vsf=I2AvqE>B)0-oJ>V8*LYI(@TULb|oqAoA`4+tL`SSbvl=x7`? z`y*T+B}KT_g_>#`Ez9Q>`pE?9P7eDQK(4dZF@B}soQ5Q=_x135fTMLndegmS65$ zj>3;7<%OZL>4;Ey#nfxSKk!a(EA-#7KKxKW<0eSpnTCnG$NZ%=7w{up_8wGI`gzgB zfzkG;p_a^EMuzLkFaeUej^2`{M&jA#cWi#MSH4%dI)wEtc5W}D4qV3T5K6&XwA-jS zoFiy0r9uGBXQxxQswS576LnNO%d9G3wT3g-kg<3pmu6*gD)IoyPsQgcP!PvSTA+6-o z9x`FTLJW%KE}L~c8jfL61=$~($?ntAVSvJJ({ntU$;>rY6pso{=NCwh%eEFEpHZ_y z{X>MQCA4$$Yf0z!4Ha*cIzzIK(me(6l^rWsyYZz#p-voa3-aI*QN>WR;c}ypChApL zqph*kiVs^Pz5q=zzw0O-tKtlk6Fn&45AotU^}J8fOW!ky?g&vDX7x=mda{o(SUvFg znC-}{b+m3`>1z)@oWus;mPW2c=?QFxVcn%0@$^To04U%O3PG^Cp;RMOJ_sFp4ZV-F zPw==J>MkG7bo#9oCTUz8w$jYA$bmLR7Xftgfzlf_ zYFMEXilzE(S7YNt(zqwfOu`tM*yFBFj8|`y@M;l^j`25c}+@?x}^Jl+{ohc)eOL|Wo5TK72>KC zWOpt;{avt;>;7_6uJj83aR{PP(}Eu+M^@Dqe)(ar{mybAkWbZ#I*hdkLjYU0v#2S} znew5`q$oh%Y;$#WN(d~l_rC{bjTM10<)e z$xlVp8Gotj#JyZ~wcIU?=b^)&rj^+}2v+TLF2F85>&rUw{Lt#bm_hPen^r8l4LM12 zD#WQaJ~_k~fNVe;dqtA*Ss=!k3|q+s2zMA>4tYxZb;$1h8IzQUUBWx`i3 zC`C|=Ejgk$VRI@vDhZaLjJG)DcEIcGSO2wa=Ye{Oiy#YTZfN457S7FQt>?U$^BI89 zt(jLdb~WtPx<0ijIYL8rRPPirxGD-bW$YJ#DSq^IP&4B9FGhl0o8-phqf8c)4_p|l zXG2^9Tr+ieJ0Au5s4-h=rDI|zr88Qb$d^Na7;TLIJNDUz1?@&Q?cgz6AOmj={DOI- z3#ZxObcTzQOUW-9Mkb6+oCvf(+#!9aq$kK7XMQCVXf)fsJXv2 zXEubq7)2gqAymM?%6PDDGg^|%#xzivg!C`J>JSlb7Ue`BKP8(=#uw-|z~29cffjtB zdUt>oLn``enfKlX4r{9xQT4E0VTi5JP08I)bE(p^CLP65OWgCs%Y5L3C4g<>K?G$ny8!xWnVS)$if^@uYyW9>FTAZO-62z;AHx(6qrj}JY351-JmWmK7`N9$><+e}uO=R*vrsIN1>i_Ctv zIf;bS>>Ti?oW4X-&sCpOtKJ^C}ORdk5 zhl%r5M_U5=(~HFM@}te=U(xgVYM}iVkL6%1M!{cU#>m8_3=$jO?lTbG__0l>#XJ7_ zR{Hf|{UMK78HALAO@l!G#>IhEok0(QSSXx3f~f9{W=U48c$}Y?Sy*L)&oi`>oqBT@ zd#OVnFv+0XDMd>UKiFI=`8d!kC#hNJAkXZmmE-urxC`_JlhWDy zZayAz#Nb{kfo_OOs8P;^I-GJxL^NB1OV8h`{Y}o}cG(HHS^@=_ouxN2-&SRBEi?8Y zcvTJ6BoxnNT?G-3dx@Iq!~!Uto`4@hu715TpQznszXY_b3mIK76jCZ!%wB%*~!pUb=D(^xzO@04prA z`jc_yJ_>LIM~`vI&pup(v#`-DEc2Pqoo2G>$FdX#4T5Dq83_IOqNcI?*aEFsFTK@b zr*CAN92ozivMsxRv^l(v5e^=+lY-;H??xIrxbT;{<*ietNAj;K^9$?!i|TPHc6HGU zSITaspkPeF7KkS!sa{bVw33ZXPu};Mvsk>}6`_c&LA3Hb)ryfBNTwA#}zwkGU9b5jcY?JD8E*ktn3&zpNTaqfD3HW&N;Snos zkOfMViaV$xulPx@U;g{uF{Mgu+FZij27dgtAZtspwP|~myIa)cZ;@6X@~+EhjYjl zT;bw=8ZqbcDqqxmfkgL%sMqD$syZiVd>)n|QVyW*X@{(pW*sh4PFo3<-dARcj+a(} zxt*l1G{8ywcs}1#sUEg-`w_;M+LTc&c)Vc!q?Atmaiv+K{);skT+xD}si~?+FYU?e z^0~vN3wm@-7EtMzc?g9nq~r*@6em)uI2?~@(~#1qgVkN-MJnvwh4V}^6&hWv{PX@C z(1&5J_)OwGiISgG4rYXrnfLuR83&vzkmXe=x zL~@)afg1qF3Tc{-PT~@fZ{kasRqtnjFL!ZODpS-uX!V7gsq1Nd< zf*7UL0Pi3{PpOSCT$xaMmWxP5S1|h^duZ>d|1S`R zUzJ3Y`VW1PBUx0pzPdo`p&R`hTbsrAVYXBQtvr?328YatN1Ye9qlkVS?yyVjDQ+xy zw<4wIV7V#R8w>j~m2A3hzt_2ZXlT4T{a1sknZUO~41*@^G`~zJl__hbb_*)%% zPvN&!A0*xRLhY?T%%Z+f!0&^LSQF8Sb_76vQ-_Ig?hwL;?Lz!y{>xHG5&Z#g@Q8}Z zn$pv_fcWbtqSnGs*C;$olH#)5sf`~(Ksr@K@bmoT+Vg?p3IdQ101Wru0zveqlm-d^ zo3nT{4nXtCYIQ~ixPJ=LC@>=Sszjtk9Q>M_j>_Gq?4vL*BNiJO(wrv$F%c3CJXxPX=U%A?{q;Zc~VJEcqc;u!y?ZJ)tIJw@9*4@44@sW8-EnX$R& z!okw2SerBrAF(H^;bh7COq%$}5(&n2Zy?<5%B6OV1H-d@V#>47WYcbiek!>U(Tlqtn&3U3lN!)#5IW4&;Z}KQPt;5KBM!xEw6r`X?BHSULQR% zQmdwW#EE`&eRXV?yiAHQ$A?e()?l{t@NnLc>&lT7SM_^m76f+rDy z22F!8tAO>32mUX zYn4~v%wm|8)ot)`Tf&>~Eneekaa4-zi%lsG19yftHp+_}Z%qKAeR2`G!YA?eRSzNE z+&`JF?+&>%a!5#^F^I8j4Z%(-0zw*efco=`ihe8y3;H7q~JyAnLdH0^&)54EUU)6060@yf%6N# z!yR|kR&FbWvPi2m;q!lo;p2dbcJt>pH&8NWr9jCO~7i9?#tz zE|8TFngg*5_@hjHW~W-2-JR0bLd%9^dV`t(w6vd*1b9f0kON?i zVLq6n8jxf!yt1-%9GI&9mtBM6tmd>|t+-fydMt&Lqsf})+|Q+Zg6pkm+H1+<`YU< z!mcXH=Q@j}Gy&`MLBGiW?^8;YDOchzmTpz7Bw;h5lLuKqhkBX!j!6T4xk4nFH=X-! z4R!TD4zb7i1cK7owx`T-px%JL&HP1T7--<}v0Z8~vmj1yT|8T4c}%_3R3}*3QZEeK zu%bt0%IM$3Dgu$MwEGPCL=Gb*J5Ne52v$4&FDo!;CPp%nUc(wkX^;Y82^t)#hgFycPO=F)r@ zm|Rto8!BtF;Xnn-;sWP-Js3vHnYik{ozBqoF6BJo^tOwulm{#SC_li$?In>~6npFe zvDE9ozmS{xjwtmf%q& zL-9Cx)nwp?T#GLEVd_hzIh-MkzFSGOR?o?fjQ$vd6ubNN$Xt?Dx^!L!X(P^d07$h$;05tGh2^J@ZSj*I5 zlfdj`rK`uzBH6>eEiMd+(wi)EfrWOd^Zg$#?m@#l%byFN<8T1gT%57Lgbad`xyhhz zg^k>j-#It1{+sEG2`iI=_e@)+#iz?+rDcC}$ybd*c}V=-7W}fr+!8qDB{Z{^r}W}s z|3${+I~7;8-+d#5UQH@UY49}cXZz0HcQ!`6g+mMs6aB0;=$&)ESrt*wd%04C5#Acwit93VP>B5Y zc!I!rXn zVP+l3;IZEn;RGhA57izLGD>VoVzfh!NQ|^KD#UKJ=!sFbd#-LoJ5Ds& z5;-V;6McF8*6B-cCdwOKJg!|EhHl^w9<8)U`5(VR#!Pu~#Ulc7tWrkjzI86cW}XLWIibx0{CfQ*9}Vt27_LXSN89fMg9Otnz0iKRf; zm^{Ul=}WA=-8INSt3@#RiK;`!qfmlYwKDA&;74Q2f=*(LY%n+e$6LVM611jsiYRbw zJ{Dv-lbbO=@LMWbN1DTYy`BN&{TgZ&-&lF2`K!);(L~t<1!9=g{W?GngBZ;YFzYnhN%^e`{2eZ0?CLHp|H6w7rAbBf z+)Ijtgk7EDxOpgbEKHcjn0}tuR?v;hqL(cCD0zwW(@&sqlF@miKp~xJ^!y27Sha`B zq^ymayR3u-MjMF^hUg8`I{DxMzoR#JbI_1+7vvTJipR@~hb=ZHP@SD!12cOy?S0Dh zRg}gDJU?prj<;LG&j*R&fyA>DFF{(Nu;v!rN~s7nS;e3bhLnAthsp(D@xn{>KE`gc z%ywoTFL_BJeBY{xcMaEathh}9quHLBu#psU9r&aY_mU+T=LEsKuZ?Ni1jzds-@a@F zG!n5!jPJ*reh;6h;btsHQh>3>6S&|0Becr~ZU?YRW|@i`(@6NI3-J6FgGY16DC8Pb z|HYNVZDbic8y@_e$Hc+Vo%f0L2>PSIxFUFG>lT>q5ahgs2!K?}|FyAfioz~AZ^pNa!q}aTpRWIvNMs=CQ2d7Xcu&=M*mKRRk6%w>`xF% zf*sI5Y~s#r0oUV{@6Pi`ENTnv5_Boj;|e~2v1u%e!vQKA6lEV%&Y0i-2p;dL^1^^G zRFwa4V2G(rPU%2%E@1^&Jd-hEF&Fsibf9m!NQ022_K#`@rwiqkzL+H+i&Eyg<{Wjq zYC+iI#RLry9vhe}a5<}KcWz?OF_?SlK->`aJbG*Rk)Lj~p`?^M;uRrzg&HYiv(2wh zSis(BVPKI)M2?{C;q}onTyM{(%LScv1a-on{378uC*||4lyOZq>yo2&0k3QKO7Ox{_nWcO%?8}>3&$)Wfpu&xo8 z-MuI8QP{u};lcxA^PE5SLnyc`z~=^m#Vl#}mCny(cUgL_c@J-=h`teyFuyuLP|7xf zw`QHh-5;C{VDPEc+it7zcS_NbgcuA8i6J6cx+d7t1jGuvfHZF2ElGOO;)5MY`7dIJ>M=Ta|;dr}Roi?rY)0)YvVJlBxe#wSgGABP<=!}XGT_@a`DzA+O5 z8$oJ`16?G*=dc^wkc5!$j5X%%-Y&DKKlxi+H{fOuMRAHhizomUH7cycLsGA{#VU0Q z$t!=h+r-XA)^Pryw?6g@Y5YNJTLb~_Zgfo2)Y@rfz9uY(H;d0^LlOnz96`!CQA0q zi@igB(}YnJR*)r&l{6YC2#*5-Zp<5^Uw~rd3i#6Lui8NlGK0(Pfy;qFAL$H zuK#2%f-N*T?&h!5#+*f=u$B`1WIsP_fg2Q@f#^!BUsGH7|k@_t8Py>7AD#PlMFy1l5-}Wf(MbQi*86P^cj_g-N zG4l0WppDhXu()G(t{nBRfeS z^VQ#<>C7X-S237wu4#ZngPD{qTIH+MIe5+~(&7jE!B02=1S;*_|$=IL%Hux*F7QO}< zzggs^QRb(+PbTZ`TIKVhos`LVPf|q=aygpFN6!eW|KW5Izqcp>ExE7;UPNu7^IW^0 z$+9*J>-@W<$=D+KQGy5*#v*n)BEQsZLt9%#M)Ve!YdJ}t+;2;3)ko`mo?v@Xc3i1$ z+@C4pH(69mvaH}LfjXFs$EPXYBba~#HsUci_EoR%FB(}ZODmKzq|fW17$WAJ$OJc9 z-f9#4-I(4D20FOE(RCbbiT6!pZVCi=cjtp0`R}vUz3Ha?#fQ{H68NYhTF3TH0xFYG zDb~U7<3sz0B7$n>S@+C0S-^5_Bxu)r2_PV(5d~tZCWYk#L32qL5iwIv!z^Bw`t{&R zssA+J-{Q=%I`2Q=4D4Fphry>P*DH*h z%%)cd4)}@y^1d@9awtWrY+P0W!O_Va6qB@D$K|a0)_9cQX&EH|pufQ5wxQF72YH7@ zI2(jph7dNF;*?M*(iArCoNT-)t+e&2baKp@LWyI*{P_DR$UK$A+*Abn$VeZp`GgXk zvGV7y^bVzooH2L&Ry>RUhqEpj$)HgNw8z;U52g9SK-wY`QizxxB!QfVBK2@V6j5f5 z%BR6|2nQdfT?Y=kK3@EkQZe~_Hum5y52M$k+ZnB~a%Qo19U!kIVA;zkA}aA6qOeG#L)FeEGb)Rt9By*&XHHDO zIdk`S^duOeZT_*k(mE6FGZ{wN0C@^P!|T;PzoS^%hGMqrWQ9*XW$6j3rhOUZ_7}+R zkI1Gg;Yh=%O4ji2)mN$sbfMT6DEn0lvD`XbfpIc916=e422@JwLS!W2U=TQ2ER3qa z#N`2;>J~PTMJ#bi9VZOrOApP>DV*3A7MhY^xJ2_y9Z9zGnSr?U+MUDaF?MxLtJ(y&l^i&m!};|2Qz1?GU5$-}OsK z*)39J_OQD;_X`2r-+zqofxL^4Z-Z=F!<3JxTmy{+b@WbNDhWTf)7NLL1+2`a4d_{U^BBA&>#Yn>^OW# zAOsu^g^XBg`cTS#&{71){(iA97KKO3nz#FIXkl?I$H=`DmhoM?Lb0^T17D3G-`h6o zNs>ZWT%=M#k^Uy%2RQ;K;vW)d<^+X@7roqkzR?0p4@a44X$Xj!8~hhCfM`4B0=h-8 zJ^b5dmp?!s2}0<-mzQc#d%mz@LGt*TRb;sT2WNv#B`d0o0KR&GUE_K8t_^LRhhCq9oh0?gH*Q%>n|A{LQ3_&en}z1cIRCTt6Y zYi?BrL`wADxmPHQv4ZfM73No74G%n4m*S0*Pi?5Y>8ZubmNV%{-iSXf6qnL?Nke^* zQLQVU4_yNiG4OcWx;+!-cb(Ko697R}C`v5&Wny{mzxoEAW8=Fyon={5+I!)4)sLDZ zncjDZy^7!hOA-;yF(}1C0k~)$tk=N##CL$iU$2n>s-KAp-1ectX-(UeWGeh?l(?T_ z#%8de;94*n0t@b@A~nmsC!36KHC9}g4UJ{#5k?<`=PE`<@;fd0A>z788TOl&EF%i; ze^k>YD({rs9EEce*%2i!^djuY!1rO zBu`&YQ+cK~U}eA5JTbe%3MZoXClNS&q?EQO3_&(WE-~ zw?n_73=IkFVz9{(NW4PjP6YneZh>j?K2U{aE@ych&%5_nkg)RT)wj}}BH6>pdF`;B z`ubI0O}&XH!<&ZGp#Gc@YSFY-(4H~Q-You@E(+o<(?mM+6E@YLm$oL`Lk5t0Im$yM za>w~AO=Y)gU-C&a6C{zEf*y!iRWLD;6w319jr+3>!ia9$emb#ME5-l>G zNQga}0LqoBR!F||_=iW$8jAF(>x^rL_*LeUqf@j#VzKr3bINFQ3NhjBC2>#uP7uC% zHlZ@0khKqkl*!}$YLDrLhq!>Wcir0wrPecJ!kZ6gx-LYN?%z zJ@q5vmemkx%N=6%zziQK-i=q<;IizZngG8`lky+aw$N-*%uj?5AK z7&-e$`c@UIl5hZ**O8(+ zjEA6T+1%&Nf|}^vm?Km@bYD~NJciR*6@z8Q6xPCCBf6JH>%Pl_Q23?B*+5#tJL}%S zf^OE~c*A6d@B&bUxWaZQhrZ6h;xA*>yrIKsnRJ;#375N21bu_dR8trN!j1ms$JmVI$I)c{Dc$k)XgQ`1!7ik9M8Jd`L_1@F9vLL9{3`coDz*0@I^1 zzzOV_|9BS{8vT@D##$MouYD`zpyJ@@#x*8o(;63?Ss#ABsZ->-aKumwV0|P7kYb$23G)d%gh*?oiGv4$xX(oW2rtjg0!f$YCApx z)D*mxrL0YnL&^3{pcCy=7}atxZ1g_z`%^FnRBkj{9;BZt#vE{ywwD5Yd5|HHJZ^$C z|M(?qy%3_$Ig`^jp|va^jlB6-gSpG>N+R>K$$+RH+#lO+%`(P(ha?66SKut$Ull$f zbakGpT?(+l-XDGq=YOCvw_qG8UcS6&oE$o4f@=T>S3tE0Vfo<_ZK+lEywu@GLOA#W zQ*@llvXt&u{|AZsWBq|7uhLveOSA5p4dDf>RV#ZSojfWU>e2&H9G1je#lNFH6IzFY zVOHsl)Q274%Za<-WQEXFkr!dB<6+x9caEuXH-fPQ&Y8Mana3NjMld5)1roB9H3ge7 zyFnFWP?`HN5+t(olb@4csU&?B)Z9;6v2GQ~r2}Iu=}YhwgLQ7S7bkqaY(Y6fE)^@M z!c@}v_H*gwE4dBpEpYepzO&i(L2JDo09GgfdHohr9uzyj_tV80BpR*!Q&M;HN{{wD z4fDt&jSDP~kNTEcCzh1;^A07&0nlHzuRN@)49L6e5T12a)W{<&6QOU|bk)?_vd}^VxEm3F=4!q)bR_Ptf{NP zMoc9;?t_2Ju-Z6f>3fobWBy3%iJxlC6D*V8LS~0aJn*fIH(ztm8mWA;>+If*r`4r# z?hWpx75x%r;Zxw&$eFm@WIt1e#7$&+2nsDifGnWp=c#608wiw zwA(LG;|`(ROqrXklsWAA$pk}oR-zgyEX5;KZy|o~WCNI4_JN14%Bf72XRBHunR<(= zXke#;f^rwmE3(!pohTGmaJD@oC(~HXy~CFqU_?V7e&6DOGe|X8M96vvwmv%YB}#ruj2Kj6VQw z{Q({6t9ODwtCF!9K5Mf_Jf%n;l%oyT`_b@5!!R23F`}t{vlgS>sF+bhDD0>sUD;SJ zvUvg+X6hEq0zm5!y3rhLre6PzLsuKB_)=a26+P2zQB`hRiV*K%Pg_N8%K4bh>b-t9 zX+*2xB~h2zZya!wev7s1r{b$H!ii`)LEXU4pzI?*D4_LI8Q#q6CZK=*qEm_AN)+PI z;k0(Y{$)mkQt`>%#OpHv$$qiUF!$+-D~~hqruXK17vU)9d)lT9SvMfGy6?P=94d5Q zd&~`ur^r(+md-fbCQ)zlV~a3bc4PX%Co36SK4oX1mdf|#26b6}*^KEyG-xMXxJE$v zoA)aW@V!@LAI+p_an;$kURs$@i@Aa;fnQMmMQ-WYCxP;u(QXKZcE?&%5Xu9TG*|Fz z5^=&SgY))f3U>?Zght+3(ASuazQF{uS{_~D(segQ4noxUmPQH7bhcG%c`$>Z$Z(L{ z-=F117u#3H-zVQ1wtcO(Tl=Ow-l~Oh^Jo1B$I5)dv8LDIQ?2~r`%-H6VBlJWe+f9c z=}h*L59f@fw0JY%bUBwc`rqmF8Jsfa&v=vdynGeLHf`?5c%N}R7TWo$xD*7RKSe6x zqzCWjtYroD^EcaZ#+#TKEl2;kU4Vv|Bs0|Iy>IRFhW+1El5bVu5^bVpq5re4vVz;KZW~eu;8MfM?p%U!~M18~sVt<@{ z?f}J?p{*GNdxC<35I%7<#*_xSRlKBecJ|k`fN6X@JoNBI zC8hIIk#D*R?O$;{4VuX;fn_nJ(VO;$$upv)KC(}~&H=aX=3WZ(g(YJ*0A6$jY3|bB zUEzSyQe1R-V@%{!jLfaZ|EmSC#OC;xFNnDI2h0f6VjZpN-0x0BpUeKx{nr6~0?H`7 z#1=a&frZbA(u;z8f-^`n-Se8hweJ{Y@+{ASa-des5IhFvrIO8qje zS2}Vecf@?6QT{s~C{G^&?j#0HtHa4KVr>kyj{LnIY&2ck-X0xwVYy{F#{l8CAy35H znEvfI`gw707I=pBX!$)99bvFTI~zlxlS)uLeo!MAbJ0QWy+T)dmUQu`MhA+MAFn!m z>adGE6K*_4LWRV_F~O zxU&HA#NI_t4(xbiM!uM!Y_eV*y^N`}$jGt=zM-jsf}WT6Fp5I=2Onc89TD!_J~(*#(Idgwyo*ZJ!G z12ry!K?5^amv7>|<=HO~E=~uEV0X=7uhZs)O{6Vk(E46ur1hek)>mD*ztI$mn9ES@ z{B9Pmyl0SPu$6^FF@>>u!(UVcb5@fFcx)pl-#dMU;*f2eI>AMJpQvmXi=PjkyId9$ z3sXQX4tlqSvTG_snN_a+x6da$w2ueZ!ndn5yC75hB38E5V70$vIR5Xt5NY@x!9qCT zFBa&>1tmVgAF#Tj*;0}$>k0nw9?t`&M$o4@fEF=dZijY6JYp7 zs2-DdlJ00$fn_e!dP(n=U_7)=fXukg%Wr9WN$d5RGItG^LxckDNk+?sGB9+?a6oz;4j~iK#mfKyeVIr{$Tpj8=pX-nm$>}TmQGni<1b5G^`RTAS*!dOs>}R0 z`>UoP=P>55*l!ygJk+U+jt2wKNpA2R_Qq9*b^B|gLHfyM~X3?R&$r~yBE;`&YZtDC`LoRR< zDgi+q03iyIt3kGRfd#9sHapu`3vikJYY-zyD{#VwYxa8f4}K)AfwD>i^c`GgbkC+W zZaFxKiE>;PJ|^u^7%oU0pNJ@QGmpj&X9&(KE7?{$GM8kR{V5TPVia(dU5!c zyk#G@SO31|E4R)VpdT>jD zsL3!9{5;;4;der@ydfo+aUyVv$hBk!KMoU)DheAILb@|(J9OcrxZof@t6@@d$Xj}! zlB7N%ACryj`BOpzlD=*0Uh6yvApFD>zWnf78TXC>p{MG?ucn*Lb~*!U`-^5zXH}*5 z!Brf9OUfdKw2QJQ$(z1MPDO=WybnAHx?OaHPUm&%5IK&DVepd#Uq0OJ-2zO7(w?uZ zBr{#VL`vbui;_UZFK%yye5-7l5Lo?=JrEz@YHYRD zxRq|OhrUcNf_}wFmcM`@=t41(h9Tif#h_D-v`|~gJonQe`=NaVvAnR(O=RzJ|C7V( z)}j@SwN^R_)b5_vN&NgV3hnR~ba0CgpD=D?UuQbt3;;hE%H zw^O~pBi2`r6BKU?N5dPfxCnp8kA|Nj7t)RdJ;WtCy1&|$ePSjah?o5cB|7c5r^58y zxbWY!s=6?kM1fiv886dA+}Z1Wu~#mhg}Pi{gjB6Zb|GfNC!TTaIO2FOF~*-HretUj ztR)odoQzYcn9K$=E_$yf2jDq7y1mp~UJY7u_x_18bhsO_oE(N6O}Y(4GODyS1vBS=XN#tLYr7`>Pmq^YXEs*< z3Ga#cmGfM>`3|e>J@f<P}1IABW!!{`ww}bZM;!Jo3c}fs>{cz4~B~G!#}2>F?aj@g?li&aQXQ~YGa=G zzh|Tal{=rGLOeyn4vPdo-(XQ>j!ykSV6NQjK3<{~#D9p;P5A|zsO|hkT1;(0n5pQ& zOmvye$`=BCju$5$zUcRk>lM5A;CvB2?wKr;-fg0UVxZ|!FQA}Y4O>+e?w8}g$!u&y z%;NW3Qjo(hAj64X?QKz5GQhRz`FHO$DF+tP?B9Q(4EfoR zEXz?0S8(<(TyWbFnqE5h@P$jaz=g8u?Ad#b`0S-8@^Z8^inTCcUMU<1jgT^({vBr6i^xW-NR zMXyw|Z;K4SKeT#V|?Q~Rrmxs0bWZS zKvD|-2Vj_uBT*m1bLFVH*r8M}{?>Hrzvpbw)VpSQ=n%^GS%;YZW-QM0!D!Ib_kmi% zUnA8ofU@}cRa=|B5n!cFj5%IcU9zVQxu_ocIFQHkWW0L6OC`ae5#1i#w2sR%j5_u5 zZChhXg7a8J!FmEXyov1)rV|(M*I3raoN@2(U5&<0(K{wJ9N9Uub9!s z4q4a{e2a-6=zvlrw0J{KRF99toK zcQYBuuUyngS0ywfsTiuZq*g`IM_Y~$1%|i_^<^!p2VwRs^j}se z;KL;4q1c`cOU8J{-CbhpW<@U z&ru0CP2jSS!{J9^J~!LWDL*YT14_nTWx`XySlHMQ^29BC0-`v{ocQB-G4>020=#ns zp1?Pog_uOpwc3}nn-+%QWL*=up}hpBFdxpH=cRS8sG-5AO>I^&1=`u(!H0vr#XSC-+uk0P__ST^QpfI#YQ7? z;!HRAwiri_u@2eI<~?2iWD?|0)mQ&dMMlwVHp8V6sNA=MR*i1aL(5iTj5jbvbkYj3 zT^X6+En_*Q-=#o5&Ock`R4TyGSOrsuu-S;XyNhK2o(^sE~4HP0S z17Ko?Nw|ycJIQ>%BvjE1hmyP;2oDDN)GDS6zM+NPw`grbf^v{0$1jb29Dp4EH^>gO+oA(vU&8A-y zX-uSex(jl{fB15OyjZMN%!FP=h`(Gka(>9WHE%kT@8-HVh&w9mrRaVVn}TCCkc_M$gXJ+om;zGby$^J@Jgy@6hm2)pzf2G$0 z3-SP-htuth?{Wy&YH^XUPrMn7GJQwEA1}o!-zHuCFsSRTJHsS;SM~ z5xy_Kg}oeyC^@8_vzSjqH0X7WviXS6IcPXKGyLf_#~)q~Ykl+xbba&kVuKEE3xzN& z$8p+s5tC_(Ghnf*bLPDa4C}cGe0TCi865h2rKZ;V9zj_94J9^5hEu~~>P|E^#YD$6|Fc_f3G%&|6R7ik`J$DQ_HT&;g9*H;NhIQM4LU&HNM!U`uwP}ZR(;iF^Vy-p zt41b#YBu*Y^G^h|PDQ^3~a#JeX z*C%p#*iRJ$OJWOGbM>wNJ=0~dm$wn@WY|=TSC%HFQ6&yL8W_eY3Xs9l)*53o0Ve}I zn6O4(%c@irnk`7ZYp=$#)Z%(Z=k@Xu-{@-~Qkp?7P|6^#$h9a)eW(R{+3s0 zb$Yln4q!YIuuns9zHmVa4laRx{;FN16}#a-)6Gq6i#+2bf8|`ytRBhI=J(+4N)e?06_vq zfuxay`T5Dt(MK0viqqC`0jyXCEEYsD3 z1TdkfBU${JrxKi0FSjsk^X{aSTS0wHjY&(4;Fx$NO+1XOur>dm>k|0ib?Mit6Z-F@ z^-`GL;pbP^>z|6e$xSIXsNi8WkIe8q8GIUpq#WFwhF`l!YMgy$Ve?lAD*(GN zeBJi!H;BFwJz29?Drg42JY4>airJW5pHtInLbKpv4@YGR(#p*HL5o9*|L|e}a1m7A zXfsz1qOqHP)sagXn+xn#jh_9|i5_ww^KR#ZFluv#!`uH z+AvvmI+z0!*d>LvHg?5*>_D@G5mT%0)MvLwdG`3;pUwUD$@G3xzFNvy|+F%*LjxA%bniA5brk6|73~3Vhjz?WRebA z#_?Ab^{qc}B?eYcoG@Y(4=5O5@6XBkFLoMZQ;CO-=E@_*+0be?E5J4-bsoN382Dqe z4TLbeof?h_-RyuuZ?{bmcL?Xn=YB^;bqOA#IiT)xn&m)NfAjI5!lZA5-uMH@a+A>N z0{emOyV#@;Lai>CuVyeZn${c*&YbwD?roM){g#h{f|`!RFQG4{60txIOrob>xGi0H zPJ2)1zoMQTJpG`4qgIZxHlww599VENo5J${lZ_<*f7z&o5)MD`ZuO(0&ojrHd*N&q z-p`-L%q`9R| zcw}K7b-tw$W=|4-#vHKW^-g&-^mp>@B-C>J4vWZ;x*v^5f zJRjIs*z{bp_by^K!`lFv)=@Gq@s^G|ubdKYsm=32U$4%EBOaD#!ng5F!jX@v{b31aG&LbwiO6*5p~)e51vTs+zRD z2GRT67iSi?17?B3VY;Pp*w%>=Es}Cg%HfOE-k5YLj0~o$Ut|w6d*eiSBSxn_sbgF8 ze6X3Qc7AE&tx+R6Sg)meg!-4TE{d-SOYNpGXMx1O(Hy%rZc37gRd(-4i8YZF2dL#K zvnb#^UK(>6(Ou<%EL$i362n?KnUQ%4_%wPalR0Ca&DLbK$VN0WhM69_+>r9n29XY>yHmQA?rxA8LK;bFq#Nn3f$!#d=#@o!OhX3C@6pD8C_v2vVzx>KadY?s6e^Zr2`!XS!~J!%s1W* zuMk>44>ErE!Q@U7Uh956Ar0V)J&_MQu$ zIr216@78wq+Ha+(rixns3T6{2hQ5E7)%<(dU^g=}@SCAK9&lxz8F-4EPttTAD?;V@ z$~ATGHBUt*!3OSVTkfGHEq+_G2JWuurHD6JeJbI~HTn|wLUaw3}SRh1=F&7%u zrEtaU^?1p=K;*oOB~~Dpa;3=9Lm|Y#m_xh>v(93JUx{2C4*`$7Smmc}K%l-VqJjA1 zQHPJWIeOo;v={I}GZ5v+jn;cBy+h3$I*uTFMT6;=D@qR&8{96NxRw#NC4OMcUc$rS zbwX=1fkt!f%V8Tjhdl2qX>b=c)6WNZU?OA$$6~ozR4806t>^==Kv45h<4$C!KmPl# zyX#3sq(^G?&wsFcDdHr(TY-F>@N~EM`1s1wrgxC`nkY{2Sm)2k z#lU=)bhs%CMx~_!Hmja|q>e5|}26Z6nzM{Z!-ukPMhrMb+dc>L4nsLsgI8~gm?Ti;nx0D&?l=9nMzV!5D z8Uyq2%s?7#8_6o*yKFX1?z`7fbbYv@C&6*ZVFY@^_RQ_LF98G&l$q>6p; z{hC%j>f0_x!(3hq9O zA4ogOSdfPpX{7Plzf?@Jj{}QcRv$>^Dgi+ND7g>9$Vs8GT2l1BDOa}j7u#>4csDM; z-W;}SL6#tM1$?v(T+jm^=~X9`RFrqMM!%~OyFrz)<3`#|j^C#u!ar&-!U^vTpy50u zxnj_wgMx?SS#WF%^@kFqtuL4>HjCQtBcFtpR=y_43vPqs8X(&pZKfEO;IIyE!PARCR!OF@+hjidCp|wC) z45oV4TlB^_@0@>mQExqgX+{;eVmXdvQi237JxDo*o*pT3c|Xf>G!(o4*R{@}RUJf` z50_4jv!nljKzg-B7U8Ps6%6O@?zZgEq~!SFYLD%J@t$+XEUVd0<<#oK->|8&@WOA; z(yMYPz_3z8*f!I!E@6H?C(<=E zwU)~2E?oIgm5*o>L7{gag7Z}Z+$lG1YQNo9we?G7M-l4gOv0C6Rf?*`z)e=LpXs)W zotUOX1S=D1wB_*iIMOHv$Gp)th(=+4H2iGv)=kCB-vuW1BrucZZ_PQWWi9O{$X5~rmW914cbi9>|MO2y4#F0sLP&|MR^%8lo8qXU~WT0{Bz8;0aR!Oz= zEva0U(ii#H@~PZ&JdZl{-ey&wS$Y_vC}_~KIWhvdyZa}yPSRGym<=WIh7E!bei4Vd ztM&GsIUswuCIOkOs}>g8b&h3ikB^Mh#>f%vZUFa+5oc?J&V+O!Enis6jhgT$VAb9| zkkH(Ol-2i#u=Beann9DD%)rSSeWktGvIMWzBTr*P(}nNfB|Cit&y_BXv2thk$3@8Vu^f~)b!$AAsa(8D)o$_Q?%PAT zYtz*Nkqep*FPHJ?|NgoT8MG3MGGrP?cl+1lPt4ud%+>C}Pk+LuUipR}q5#;k6X;l= zXyL5)mNNTEYc3U6+_aZEG`9WB&y??f@yr}@eqExdzqF!LK+MDPchuEV<}`^&P=Q;C2}M3cg`Ti|Un&3p|OVH98$&7lP;Cif-E_(SGQA!AGw$z z>P>2EI4YGf{ifi=!?OBxrK%%lY;;iD>q7yGCo;Co{4nPm4gxUPP~+d@o?%r9OKve` z)hOG4)9Vtwa(-8#7=#ZhPwO-qdNn`Xu!_(7qsdWnO*6fMC%2V3ax!eADMt_f=(T>T zS57}m6Ls4mRtQCU+-fQ+D~(#z8oDa}%Y`0b6u1sBbsM|W^ab4~JSIAeD`AuU2Z}prcfbyKp zezDHi)JV}CJew&rHI?) zulL1azisv25x+f5xE>tdm2O$P&%lRb;<*=S{d-sg3yUS9b^FxY&1gkasKmQk{Ep*k zp2tU8Pu!6cHiKl@$?I+0$+++2&6g&dXK5|`h_=-kg4Cnv)OBfK!%IRL{LnMYeaJQ7 zM*!ws$}#*L8()p@i&xP6|!AsB3UIMXu=Y4F=G(tmlwE^WCI)jh2FhNmgMyb`H7nJD0^JCg=E z`qq?KQ;r;q;+m~Y+WIx_?|&<0JRV3_<30v#F+{7!IQW;TZ2Ao!-f$YC;rnZk3Hts} zhnl56Y!9O41B;L8r7C*g3O@b*ozOc9C~on3?2CQ4#e(S7ZFW-3GBI1! z^b8v@Kvdz__Rvg*XOBYXz{qe?SGDwYbcgmRjr#_~rj1QY8Ra}1gddm1FFB@olkxZT>?8gyX#eMBmv<|Ju%04C-%tk7e%&W_4k z;2_=XEg-z^K*>O|DxN^de^sh2fZHFd3^RJh96USd>f6kafB$_ z_tT2sIX|A;D@(@fWZvYmHP=0UxQSa5X`B$B80)x2v@y>tD?s)dLrA22+RD3DEc^5g zMCkp!>0pj7>(_Oz6|8u&XOskhO4P<+pnhc6(g6RvdF#3hEJT9--GBO2um4Y<%0hQT z1(4%I(^cx~_c@<(rWP^-9TmCwEulnNvy(dUn9;YA@HC9|Gr_yv8a7>ik4r}y=6U>x zAo;{Pv(Cqpnhk1@dV{Ye;li^ zE6uReBzCO4;Ok=+O@$%0t6cRt@(|1{JajEb~D?9m3S?@xMGI6k)BFOCk>p$oz= ze4R=#3M@ej^qZU81C{Ne^*Gc7d~>?>pT05CD{1o!V26`}wD?cg6{t{aM!c zhRMa#vy*sOH7l%~EYes!LQmt+h43e+=H~y>0dIb2olm zrq2ZU>f5;b6)gWDe*{}p+h_p~6ybd?d_-v2ZReGv7}0{n0<90)rW8^_V@)>JWRm7- z7S+y9plORdQ3jP_O2Xy{7`)(?i9s|PdHyAAX1&l1i26aF_mJ)sL%N{Z^_=)v{nTp8 zb2i$NnDOvENnkfiaO>-NjQryI!Prhywtcd%uFAvcZJjsLp#H~4rk}fadUwehuQGgn zRwmG3Ln>-P~fTC&T7MFB8L{~_GMrsl|io|P&Ffr79b&=&S8E7NT76*Q=d(z?{CqCj3~9b+J&R&| z&tHHn5ztDpz$(YKGNna$ji*aMHF(B#`o`!#U90JdMq{Vpo`gQ>Po@;g(K z2Af1tvuq}&>e4IUb&Juv?mo7Cp6Hyd;h$i|Dxrce+OJY%$dRSG{QVcy6WisHOFyz( z6+4|b2jZ|+zc7Jm@3!`zgIs#Tdg_xGdxdH*wwgsXOO))XIG2DmYEpV(Xd%ouxP`3Re{HfJ^#igNy-Iu&wFZZFnepAE)2G*#F>w)4$w zI$w6^bLnz4ur;()JWnQ+2C83#(bnQhbJJ~s3cax;B)6E%^R*0 zoGg1^#=N!clEosBk#|)xLd6DES0Xlcx~d>6NVdWh_gle}bv77~<&*#zYgU)&oGKWc za;&(bbh;sg)IojIR9`nwRKxU$sejXa#kl?W=o5kE>w0UT*)PE1!ys$lbsxI(u*k?T zw0+oWb`?NRROvi%KS%l>=7t3cxWYdMm3`hZ0!|hEv(km%1>JlHoa~qHo3)H(teSsf zCb{4P4=pJ9_A(xYE~hzL_saijX=vb_R>1XVwqyhWs%|u6VfJi7)>Pk}M}sxBAad^I z6tltyF`Do}<~arpWRD|g`DhRE*V2He2HSaPsRl;;<|cIBbGI6`1qp98A{?_{)Jk6K zGatqIz^TmbW2hKC<%-Z~!=pA|ry=Q71@k4B>lHP9T-uLhj+dPrcsr?R0R=82OeKaz zg+W0m!|o_->Jvp5yEQUGnTh2n#Uc-3x^9<{5`8+IT)OV0u+>W%aRp{ed<3Uf)%FFo zrcY7$btKx1oRnGrmcDuO)c`=(D%a9f9|xT)^#gbAC*>fZyG)L?nwD_eTyOp`v6C>C zD=*W1^Hwf^zUN7?s`Q~6Pl8&HFlj6%gO6TJfux5|D^3_U}aK;T&4?@*_fo4hecikm{L z)mGHpB9;UM^+|uK2erFOQ21WmJ6ULoM>WB;bm?B&xR1>;OxJsC{Xk_r7;fDeGV!Lj zk18S1QLZ7B`~K&Q|B410%n?`Ks$Zb+__y_dwHNyd4{gJbZ4A-#`CHRXd~Wq{c~+M@h3I^$5hI8Ycj)T8{iwk>s);31L4Q+%Z%d*_9{Z z@yfn9o__I9MNtFnORuWw-6Z>I#4xvug(dPY`v-|||F$CE$86qGLtU75ovMM4MGNZr zLgQyz>AUMhfEiZ&U{HB;e=`)lgtnQMvOH--IT+HN{2j(EuN@`-^Kk)bKr06xf zOlTeU-mJbI`M7Rij_CHphC;2`v@5sksQ~(V??BMoUj@4T{6sOnn38h^Wi>t%icvUs zEn!BVAIF9x0HsWGqq6pGB_n{ZKXG|Kq~^FiE+|6HoHaZTMTj|hcDyUhUd%q9*wUV( zwyk%23prRej;Yp9@KE!<9gHmry|#IA&TMxJ-nxjKmKy=9NrzsF{oP@fWvexK&>k85wP zFgSh)`f$ALDKCC=p>!Ic-+J5kI9Xt7joVn9>BmNh-vrHM*K5=Pa5$Z(gs^It?wk|f zDR66X1s&Gq;!+Qiym><#c;}Mfm={t^C6gOHNc6q&FcFyTlUKBA;kAbvhG6f~0~xGx z-Lm;?S}i({@H;fcQsHZRRlr342Y`MzIAR69$CdK?Ml8C7^rTM!AH++OV;wrvB-(LP<{;s#uZkj`ldI*psVtG_)@^bu^Ln^7 zxeV3evu2aF+ogefe2uSDKJcq*c^b#NT_IYA=>Ds;LOZoyY757F;R84%-bv}ED!<^c zSIJB!9Byz9Gwldq&&&Edy!IFZHbr`5m%c%NW?YM!E(rpKi$V!*L-rg(OBhMPSUo6*@ z*k~+AlTWI=4BjztCn{h*=i-acNEwUmUlrLZ31yTgiybj!qvh9l?OUq&7;;(`8WNCN z`9fJn!vSO_zd-4q`)z{&FZ$QhPr;kFopKL135f4d;T*j&1^yU})L*lao&@vz?X%n@ zU|MZ@AIq1DL8|^E&s}IYb*E=$!NAicSVgkrEBTdmQE7)A>4Hk355LMbn;r)Z`cI;U zagGouMzZhIEm19)-vDSi+2a(kFA`jhSwB{-(CQnhqzjaAk~JR2>e+zneeD~%jz4^7 zK2Is1=^=_QtL**(7GJ6NtsnMUCix8ZJUXD~@6@=OQ9695dd~W9=K&_gw-0{0cs-D# zU;AZDvUr8oe6Dl(Y-sThUs_0zj4HGctOqfOQW5psH=Z8B80h8Nt zi*9YU7L}8>?e#sjOQ7EmW@UM5 z;H#;{ZMx+B6?ZDOS%4A1wiMY9btzD;_(3^8>4b$`7k-P_^*vIzY^X}+zpx{!6%Qb?v%VA#5wwTk-QB?FlEK=cH5RKNiKk+-qx(DAetg}Ibcz5u-rw+oIzDe9O-$|w=qr{kp<-nok#_(nb}lAEvR z9tEx+6LYAks)9m%VvkW>-(@x`x+>obrJY(itv88eD_*UtCNbm*sm17fb1lvFHVg6( zWp^yitprv@w}w^Fv+Uw#edbTM*K|JOkoamd^M!EC#JLI@uJLwCzGQ~Z*>L|+h|aLmBYfe0l5)00HE;nxB7V^9eHhh! z4SlZY?vV3$=+aPa4~3thdaQbzRx4&%yu9c{ol%cy3k$nAsg*waeL$iA2MHJbuzMjwMm)hj1 zC})~8e3&!5Nfr-!pnO9Vg~8l4#jUOy~h&z*qrH9-7Y9^OZq ztdh}G>~F<;Znw$MR=uZn9&h(OJt`uUxL7b?jmMWU2;SrjysL3j+)sEAn-y^nbe5ot z6mWpN7y?y^WV_DfODnr8qrzGz@B+;P#HHvF@gYFVxsR z29*rtMi!SveVA0#bRic>EB=B7``=&LH?rQW?5rfBGjZwi+oBhUDO#9TLcQ;Di5TI{ z_8;xXH*xL)DRi44PaJ|w5*uTo*i=blaWdU*!Hik{0Wj-t1M{*?cA-kyZTyG_hFnSrwQ zz#d4O{nQMko`NcLrC;113?CPB&i%|OV-uM^FTauU%zV-9@!}*>cAY}u>!p4T&P$_( zw+rSAS?BW9Y~jaNz>(4%`)?yP@RBF3u`E8jc>Mk&589#p-z-)o7m6Mt{5*YHh4veW zY#6G>e7T;_tYZ)zA@QQuK4fV6EP@dg41 zj5_{hk|^A(Qxq(-an!8yF}&wf3dSq5KY#Ua!ectd-CMEV(P(WCL7m}cB6<&@imKNN z#n?1bNzw^-mwqY;0oNH@yh#55w+@3?t7L)SCTa2peC0_QY4AI1hx?gN;(-n8mu=33 zEo%XJhP!w|OhNAKu`$xA5_W>V=y9KLd#{u5hcyd=9Ei2wSti=nA5NmOp?{d@0lUTf zooW455!}D^{q0-4ZU$4h*OJ#JOJz;zJKJ%Ew;Dk{BsaQ)_N4a(_|y`7>bN%Mx`{qs4&B7JH<7YBEaw6-D@FVV zWl7cz^)}=l`=__eH<*sT3u?)HJCD%n!b0X>p|+>p$gjD^Nn&%Py4mG4On4E$)l?iS0vtmEz{ zvx~>n{)!>aL2HRBh)W@^^~A^Rh52e=obuU?cast!sOmR-pR6Lbvxf|ZQw%f3rz89f zl3Ga_^?@gzmJSJd|w6Ppyn-9Z>VxX z^dauq&-)2$-&#r^cT6dv;({^s~^v3Fzlc;Lk1=%&X0Rbo)Qnze{83V6BuB^Je zfTus~s1S-Nn905O-D?@P-7fg&TmPQTb2JF!u9EFspMo6}Mx}Dos2bStYDlh*NTU51 zhs^Dr?Y{pUov=j{EN2vR$e776E&p`4y=ia(OV@ldl!vc5mbfm4tqRY3!|JEc^*1th z_O&drNNe8L3KSU&O@1+CNZ)sYWuot+ks%8eK%*nsby_zCONvJL$lN zc3ZZvK)jL{cr_jWVXdh}+9Y3}6 zDj@$k3NQz$X-{6G#zrb>R?Olzeane8qZ-r9mOq??HDJmyFEmo$yFEFHV~*R0wESzh z{`7f%#lzXU)apl&8tON1NZ9~y<$HyxE_8$skDsHH(Xg>FT#`IR9JEwg zsl(%_BD>|WEyR$`b{cF7&j+`_Bod%``RM^MQ+qWHb)9!1r9$A$I$X(ykX<}MB)agA z%ti`>q1iVDiZ+k4Wl(1qB&+Fw_7?eiu51+~56JP6A`(PW7;_q%_E#CJk9BtGomH<6 z%5Lq1bVcA_=YLG>?CDPHLD6DQ{|L`|+MAS|i`^Bz-XV1ut;(JG4e?%?d7h4xkW$TeykB`Yq0ggb$?$Z6JAeIV(qjgW$MLw)RV17YkIiJ9zBt-#C=RrWWUZ zO59rO&FPLO$;Qr1AH*cBhf|cqj*1wWh}Q}V3Y>{O52ts=44+lJ{kh?%8yFoES3+ix zt|U?LmBnUj06Y&!R8UAd7q~dcJ&r$Yz0M=wMr9Ax8^3a7J6b6=uwDK0-a~4wm3;Bz z3lha(W?Q;zixPMI+`m~X-{e_VLb!kM7`ZA;)*ftE(4oFsArwW!rv(`+K&PU@$Hk|i zfTzD{WoVYQBOzGnqXIX+mlkCz%FRor2PG*p2iOJteVii5hM5`Z!r5!pbGl4lnzHTu zqv*=zChtSRNHx7Z%}Z8f@i#98Kl0`J_TjfF4|p6sweKX$Z}BMjRv^DFgno9F_Elkk zG%NZ=E-#Md2){Fh_7aDv{d9JG;Ox*rwo6yo`+uB~sLoTamxaf#=)HtXlg%=O17ERD zueN?j$#FA`LYNLNSAHbOFGdRXv20oHqCzyyAnZa-N9nNYk3uFryp@-t#jt8C0D zqk#M2i_NE{h~j)vy|dGs&8JNO}rwOwua2{1@? z*VZ$tWWC#KG++1=BMCYhbG)Goe7^g}0?RXS_ zovL3Sv^cR5-o0#CmYrY_H* zp}|#@?W?u#P&Y}lHPAXrrT2z=KhRg}_{B46NKU@sInJP9T7k?8KCYKuv5U#L_wN(` zGa%o+_VX=i!%OH7#=;`YJ%wb1LefhvMJ@gcL(M@g7J;m%;VO+d7!FJQH(l3(S0FRU ziz*aLym#^EmoNMYf+)u{%1{kHVa$16yxw->W<9TU{=qp`^#Wa?vH9~0PYpuQc4a%7 z*)>dyT{S&ua$V_Tm3r;G#_~nKYiOVfYoZmEaCXtrF%H0ph}|a{QEO+!CL*1E$w+40 zdE}FbIurX-Y0h&CUxCaJ1iejgEglfbOlQ*=^(<4&T=~wau-%V)i-C zn?DIR*$TiE+_^bss#qkWhiNmUd8YyZ zis0%tbpbiq;0ecrP5m$nt0Oqok&WYFsVmmkdJA!mqp^@FN`A|O!Ku3HaE$Utw$Dtt zyWuaKCB|#%aFte>_4%AmL1c%(h*hK8;sl2*K<_D? zR(Ak`X%Gd`)to6O8|q<5&J=6l+<|oyS&$j(&{l0d$#C)ux|0TzrFR;7YV^G~1l^F* zbR()!J(R-FXt$LnjZcCoO=!7tNmO@WTZz~fgNk(gZyS(HiC)5MhMFOXnXISF^!WS( zo?h5T!<;sH&+tsys$v542lcp~Y~o?0z`evitbaM18@%k6gOlPJi%s$9iFHbW-Cvdp zZA&}Xo14`&?u?bGVvEI@nzw__2H1hr96uJ3`}!Yp5c~-~Z0Gs)RXJ{cVQ%G8q>kr- zr;~BW#bi2jE8dhTRnI7s>U=rg6eR>y?|+xfl5h)=P_;}#R7*17o3oEX3Bu?gH)d8b zk;_f(`VfzHKqo?;&**u|E*&%HuJrM<1J7%7t~^=?uODM>7uuk!tnB0UaWW4UpM$Yp zXJ}G&xxGd#2Q;b858n-Xb#*j@_$qlDJrh+4Kfs&qepoyL#C(SKh7)hyQ%y7@uq{GI}b0WB8J+UnUYavDqBIx8%=!Y3!zJ4xnBQ zeRC7PJx~pn=@s`Zczh`a;fcLDA)Lww3AE+tv=UkkXJ#xYaid4>ec2v{&AG7;x}&{L zl}m^>2A83GUfte!SZbedL%OLDYD8?eMH?bPIO*L6wHFLZNIZBUV%nD182Uy}ZAQ{w z#yp?P5^a7~)3DQolP2H&9uZP6wlxE59%{duOo&iR7R_pPqeox0-}3djEhc}jJURKR z{tt9w(&uej$i6B}Bus_pw=37l+9NdB8}_-`@K8o_4eRm_|va}m$OY!v0OIgc>H~3@@<+$ ztMU8Txpz|xOQQUxzxT^PI88}^G7{AA>^9%9HyLe0KI$IXqw+{DIDCR>OXT!wq7(`a zxBV_XGGAh=q~Z6pQ&FO`4vg3m>H`bz@6;CFA%+`VV9dw+zob;|{v5gdFF|sY(qF1k z_VQUv zSH;UdHZSmI-Jfna=LXCKNLhAOx@s?sUF9n9j> ztm4#0?<1nFexMB-S)GywhW6s5?*`F$U=o&t75J2tw8#xTCZ4#itT~AbO#QfRI3^`B zxKYp#+;mxpmZ&)}IqJhuF|>;>ECD)v_W9noa~7=RT|%gv#MF9CmLdT&j!wv7Ql;FP zK39bFr-|~i2vPoLebf#@MFapBJWiY|W7WdKMVePN_wU#@2*J3m$M3bxw~cCEeX7JE zv#hqF9A(=1f6?;2FHfF=U&Y||PiAL|P{Sp0v!usW231g=NUrWK39d^@H{c|OL)%m? zIVcvScUdp2Ek8Vxiv_7?3`24WF%CuTXgTyPL8`TCWjUJv|f2D&T*|{I;!+Zfh0}}E5Pbu2YRcEFl z0~f@Xj+`DunGz-gdWrpi5qfu4e4lvcF}RN+dxupiMGO)^sW;DKoVYaMwXYQA7r@E8 zpK!+S`(kFe+rJR`B74^8KAwhVm9<3PQwgOPyCe;blH-E1ykJ_5hs#A8h#oGMoE)@# zFI*I3H}SIzI80TOlU+`5eP9BnjVwwe2Nr3kGt?*^F4l}yu=BXz(w3*R;n1DZEUsjk|HeuUN)6N;AR4t|&JTdNVf5rDBQ-Rv+bXx+pUi zt>}Y(%|$D!eiSn@oCQ7)FExFWcoCS#ZPCRo6a||fdwlGu-$(Eqa1tHeAcFL&He6GL zX#Fln=`T>K6cGL4CRpw zgb}@z#;^8L`EzVSV!ynjEY)hciv_V1NLmp+r(y@#wo63Zl1SL?$2rD&vG}48sgc3u ztb_C47ONcfw5h-tqn}Vm`k#)f#6kd6P6PZ7JPpWlpsi z0s;Om0sPv~VEhecaMB?x3=7VoT#tL6dle;<+uDosh$$cnEOI;5r}AT`@ZLbU)K7y5 z5c`;kL1k|#MxU4-C>ynZI^Q5@`#laQt*O+IqI=WFj|vsTYRz{j=fhD5ES8ngb5^Dr z%?WJ%tDO!%x!a!g?~gh9yeFNB^MSzXcHnw*>dCC&01%FeEI6HC{N<2I{N@82N&dd} zTwh`5{=1ai+eLUe zAN~bwnydJLbl#2MI7(<*3q=4w()+c>K*DE{5y@{ZOO|#OrG(hb1QOjkKMNRDcdduy8`2FrkKjnwIZO)0`J}g3G)CltHiQX9=G{s{E+RzxE zn?1eTi^$%Aaf?D%3fUl&!7!`g+blt;^VH@cTivWI6_a38!lV_L4WuZ1i6Eh>9Ha zG{})CWwC@kF(A`Gj|ON>(u>>_c=P^DF-_AFuhv_0oSHxgU$CTYub*gO0W{$XS(OAs z@9A%qwxJ5bY7BzMd!Sv9ct7 z_wE)yfA>eQ65eiAfCcxvBT4O1%8Z4<4;LT2uL_zr=NyZ>@v<$n6^~S$nTCId{Ce{@ zI&-pa+xMGzKWomXm^iTbWwv-I2)o3|{0!qIRx%2Vu)rsVK2SdRbEY}>{IO0rG`5h9 zPt_jPSj!>v*&nMrj4V{cWOduOkRGQjC8*--G&1b1Fj zG%-kB9ImEx&fOehb&qy>WOS>173u|is|GMAsro(HRKg0F4{vk-`V9Fs0F`7d-QBLf zJfe!Jm9(9QmL95f#_m^?WQ`<=6(hxle>oiEE@Wzd$fM;$*omZ!BMO5izk9+r<5SSM z%FKU%I9{42>arrpv>-lXn#>#511!W?rb+VjWC*Qc<4Bsj$WxPO6!MXX;jrBrxduy@ z%(gG^Bn?`OjDwSoFHtV|eMs2x=KiG&+9RI03j1SvAHWvrxtI_X&$l3TK84~hlQNaV z$ariJJRC+RCt(+2a|w^Z0!0Il$fpZBYy8mh8@EvtkgHj7Z6ba1({-;vfo}}QzAGp{ zA6_g!5<3G*1%X;OsONum&Vti!{Nzq3f>W2_&Wk=1z}k@DT~=)m-SFlW*Ybk_xK?^g5yFuBTU94=yr z{h$JN18kcP)N7w_nclpI=9~#a2Se!wV+uNtWiWy+A(7l&<3v47RcjR0m%nm6idr)G zzqc2)w|m!f54X!x8wX@Z%FFT*f@&-+4d==~QL7nx+6zzpnx|HyoBE{g4y=Pe9Fl^8K$D0eiw6fnE8Ndz*QW^I5dnL6L z^H&_t7Vl&f`o%tV;F*19GuGvwY+`*kZ-yCaiwq+_VX1z6t4oN@Hu$b#baU@ZJ|Fj~ zT;3Qo#f4piK7VTgSI;DEer%f~#KTDdNp5*y=s3)1N(;+|NB(i}1#OZfHRnUWTJwWD zqX!UoG4~ETPlX~-8$@kSK8L|F;*XDo?=QoKEd9OdFkXR){Q-B`ISwKUD&Q_#kPc&utd|%GGkc_N{1=K3=4sH;ekiv zwwOt7EFf8%3`s9Rxh3h;cx}j5D#`2y!L=DZ^!W7dXn{tsovS#e@2)yZESxghOGYR! z6(G^1e^orOYM+Q|KFEzbzZ{wz36YAF?DqF=m3CH@4o9E_V<67Zv(5~P#tNy3JD@2B zdeF&7Ob#$PYGRqHrAewaFnHv{;ag3>Fn#FW4O^%-;ms+jZ{Q^C4<6KvtMR7zK2PuKd235= z?WVjSdNkIPZnYbek&(d~>gb~`eyi4)O=OC)Od=);QTb_`Zxft;4c=86iO;#{wIs6? z*~me*sNvcE8$nH4^Fs zQOj)0r6+s6n5Yxt)sl$4kdECM;#3>NEcY$;``->$U?iSgG^bWe?lEQ!3gSjQxm%|* zKre&V@3C>~ovq}o1KxeyX7=V_^p9$H?vc=_p$e|*Hw(rU^*uNo1w~(_o|7ejC;73! zzBe2SvQ!X5d!pu_1c%hiK?`S~`14(`-eE8b;}fv>H~HM|MMLFA>tx>qM_Xuq8x;DI zc)X}Aih@sT`cRpP?x=OmxBcu$u6Wb&)mEf*&O2M2sD8D-5j_d+XA?hyBj^tgM-DGW6kxxaNL%c_fTA0U>R3 zrq11pa)s^vw`h~WdzzcsG4v>g8?YE6Sn(-0*sNdVJ0S2R| zb40Q9RFm-{f6@L9hs;7S9fmzyL39NK;gbrma zwb~%iOT$tU9SNE~3G%@qH(Yj*F1JIbo)&)$-11+Zm%YJ}_B<6?l?>llQV{zrooSZF&$=sfC8n1v5GoF*?41Z3U7?8$XtOmtAb>u#*);NcLJ9G1j#fn&C>pJ2VaT0p#UFlca12JMH?H7rHlIr)gzx0xaHK1q0^&+Rq8VlGEy;K3HJrTA;>sJ_A>*Du887&zeRQaqqJoe7o0PBgdR~jKGl3g#pvh)j_>Ft-XZGCpu;s7CC)~m zS!+a~?U4dwtwJ2MUhkjW;lhHH{c@F!&kCfvHm|bas8@jPCuIEDB)n5)n^nSW7KEKD zK+%i`Pq{97Q4v!6V_>Xs&|Oe{u;&S7_R}07lsEVnk*^T?knMC8fMBd+f5yh-eC~T> zG%m&rsyAu(Dg)=hz$zK($U^j;)UTfpxd9aB(Id2p_Ge1OHG{w(?l zN#6Pd8h^ig@@={B7#H$YeMxk87=I*6pm>a%@a^9};^Uu$?pwpuIUCHq`fi1?+&LaH z8iO}c2MK3)ICLX5gt2YuVk9qF;A*9VfH^5EehO?cq0pAM-A>D9L-=>mx-Nzq)SuSb|wKV+slTssv!eM!A zw7vZJ7GsPLjzVO+_chLGRlN(flU01o}6Kn=}DT?d>oZGS~|6b zNHVd-8KN!Zvf65aGGG&!`uMx@2P0whY;@zVk+nX|I(dOK6Jw{(9Usghp>3Dq;`e1s zXae@Hp%5Uq1We(K4>J zelqkw9s<^A4V9TjJ|9wk;80fBX#O3Y#VzhZAD^!>Y)uxuJXtz>WX#G7`fca@ne{EG zK-l>|OVs#Q=EA0|v70Hlr~uHpjr_}poe&8~9n1gFeORO;h{k~l(H~Tsfmdy&j*9oL zY5w)FAa?~XWn{HFAN75mNpkjm);bO?%w@C7#~|9*uA!}r{VxBny(8rLX_Kf4}p`xz4%HbDrlpzx#f!bI!f|?vR1C=~n%#bbu{QT__SZ-3Qo) zjk-3}H9@}NZ=Z4VdIR$7F=b89HNSk8(uuJ9x=EjNo>?2b*x<$t7_F8XJG_y$7@*Bc zENayPc*|hVJ)Z)RfG8-Ch23Qy{A@N5$WY?3M7h_l{yO_53&0_iM-zvLeU#({gb|L( z0Vl7yQuGxWkd!2FtTrB0S{#8DX zr6#W*S0@{|8qm>xd0>ddrsgUhjpw$@e^2$s|EK!Dqna#E#e76MaT=F58SE4ecf~yY zfOSH4lD7*lRy0ajTrV|C8K@C`^OHfu(>iV9gNq-ka3F!gu=zMCFVA`n{R$uT}AMjQq!@$&P8lX&aRRgfOw52c4aG+6I?p%wlNYge@j7umM`;mf!_Dv!g= z{YX^(rnj;%`tfz|u}d%pwBjm|HJLuPG;09-2oCK#ii$tw?7T996Ki=@3?E}wC$_Oy z<7u&SJwOC4?I380vC5t~Fygc8z~*1G2s1PE4rJepHFWx-?H#eb-w9)^Chnml{FwuF z285-%e#6#{Xv4J`^a6{e3D~vMX2bxs<(T4*_*$3TJ>SZO_ca3+ zp|O6Jy-LH)(bi9~bQxamp0x>p(EJf%zOsa)b3{nZHkrTb03Y5Isy~Y7-xC25Jld7s z4k;tAey#MLaLQz}wklG8L#DO|5M>$+DO-wZ@NDhggU!tHUo7QszUFl> zaP-?ksg#rn90maJX>2Rd#bAm zWEGs&7h22d318x6kN{Le&k~D!H@3Te$W|xL3&fBU1b5VvNT;tzbfd92OdrD|Bo@#F z2T4KC@VW(}wt>>j=Hn0~GAYe(cM}p<`cD^SHA>#XS>5+Dm+2&T172pl2AUf9*|#}3pES4DTy#P4@e9%{a%j7PYKunBp9Cvv90C>BAcIPB5AVMS28oN8iUsuD z2eG@A{2Sh%6olMx3v(p`3Bl=lUPcd{78-&rK%z!5z|am4&F zdVfS#au4K~KdNuLAgvOm@oL85@jZG-F-9Qx_vkoLOLhWBq+w231I1563cU2_2BvGt z-!Dla{)r#?Xrrvo!sS@(O}$`TsHUb?D39n}PF)}RM}L83U8in9Qq~{)ZDUjgfvNES zuzS9(Pc~?o1=7`H`FvQh!uJV53P|aByFmbseBXDd9nn4u)bg^j&rqy)Zg;n}wP@sY zOSW)y<6%u^3PolXj-T0?xNwup2a()zBOiz;(uKFSK8Z02t|+-drIZopvsV#C>#BbE zT50A_Z70OPNN4L)D3ms%snyk*fdOrIr%}o@l@eEJx&J^a!ZO!Z6K0o0Iaf$Dd104( zF+g|Y$d;#ppmMID230J*^bKjAt_HN;ROanlJ2OT+EZ}d(B2V6#LeKB`@#!I`Ay?4g z2yP#xP4`%LpnkD`n0S$7k$f<^3TD}G2X#3$iuKWaebc9e?Q^EDgcaJkoD-&UJ2)#I4?*Cq8#SbwsV0@^b$&1gzhrGBfJAmBY6;8TvhD%jUhM))SJp0kEyJe?1YBiJ90 z!`Vx(UHy-+ct^hS(H|EsILCKg?N2^54#hfut9o_e5E{`=))f0L)xU2+2@0)w5FFXI z?y084uNw?eC^jCa94b-vdW&!xpx~HzOnauOoDOB8gYgx*TSYp0%a}$cISUmfr!u@# z!m8s>4R?LHV=|+ zSA(b<{sz>PW3f$E$GHmWVKoIdJ|}L^5l0^A6ndxNjsLxve^l?Bj3^PDd#wfCt=gf} zWy7>Q#Amu3WB3k!X>eL6d?;kNi%LddNLJJr%XJMO3OPR3iSg zQabzo-Q%x9wgAHi@&-jnbZ;C?H*X#DzfGYqhllf|rKLZZhh(c*%+9?i`Kfu9(DPRX zxe`<^m;2%Ud#lPb-7_ void; - } -} - -export {}; diff --git a/packages/utilities/fast-benchmarks/package.json b/packages/utilities/fast-benchmarks/package.json deleted file mode 100644 index 3fa31a26fff..00000000000 --- a/packages/utilities/fast-benchmarks/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@microsoft/fast-benchmarks", - "version": "1.0.0", - "description": "FAST Benchmarking utility for FAST Libraries.", - "type": "module", - "private": true, - "author": { - "name": "Microsoft", - "url": "https://discord.gg/FcSNfg4" - }, - "license": "MIT", - "scripts": { - "benchmark": "node scripts/index.js", - "benchmark:fast-element:render": "yarn run benchmark --library=fast-element --benchmark=render --versions local master --operations=update10th", - "benchmark:fast-element:observable": "yarn run benchmark --library=fast-element --benchmark=observable --versions local master --localBenchFile=index2 --operations=runFile1k", - "benchmark:fast-element:when:basic": "yarn run benchmark --library=fast-element --benchmark=when --versions local master --localBenchFile=index2 --branchName=master --templates=basic --operations=create10k", - "benchmark:fast-element:when:conditional": "yarn run benchmark --library=fast-element --benchmark=when --versions local master --localBenchFile=index2 --branchName=master --templates=conditional --operations=clickTrigger10x", - "benchmark:fast-element:when:switch": "yarn run benchmark --library=fast-element --benchmark=when --versions local master --localBenchFile=index2 --branchName=master --templates=switch --operations=clickTrigger10x", - "benchmark:fast-element:repeat:basic:reverse": "yarn run benchmark --library=fast-element --benchmark=repeat --versions local master --templates=basic --method=reverse --operations=clickTrigger10x", - "benchmark:fast-element:repeat:basic:shift": "yarn run benchmark --library=fast-element --benchmark=repeat --versions local master --templates=basic --method=shift --operations=clickTrigger10x", - "benchmark:methods:append": "tach --config ./benchmarks/methods/append/tachometer.json", - "help": "node ./scripts/index.js --help" - }, - "dependencies": { - "@microsoft/fast-element": "2.0.0-beta.26", - "tachometer": "^0.7.0" - }, - "devDependencies": { - "chalk": "^5.0.1", - "commander": "^9.2.0", - "cross-spawn": "^7.0.3", - "typescript": "^4.7.2" - } -} diff --git a/packages/utilities/fast-benchmarks/results/fast-element_test.json b/packages/utilities/fast-benchmarks/results/fast-element_test.json deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/utilities/fast-benchmarks/scripts/index.js b/packages/utilities/fast-benchmarks/scripts/index.js deleted file mode 100644 index fb549b6e453..00000000000 --- a/packages/utilities/fast-benchmarks/scripts/index.js +++ /dev/null @@ -1,147 +0,0 @@ -import { exec } from "child_process"; -import chalk from "chalk"; -import { program } from "commander"; -import { spawn } from "cross-spawn"; -import { generateTemplates } from "./template.js"; -const errMessage = chalk.hex("#ffb638"); - -program - .option("-l, --library ", "run benchmarks in library") - .option("-b, --benchmark ", "run the benchmark: ") - .option("-d, --debug", "turn on debug mode, will not run benchmarks") - .option( - "-v, --versions [versions...]", - "specify available versions, you can also use names of github branches" - ) - .option( - "-t, --templates [templates...]", - "specify different templates you want to benchmark" - ) - .option( - "-m, --method ", - "specify a single method you want to benchmark" - ) - .option("-q, --queryParam [queries...]", "add query params you want to add to url") - .option( - "-lb, --localBenchFile ", - "specify the html file you want your local version to use, only valid if 'local' is one of the versions you passed in" - ) - .option( - "-o, --operations [operations...]", - "specify the operations you want the benchmarks to run, if none are passed all available operations will be run" - ) - .option( - "-bn, --branchName ", - "specify the local git branch name you want to reference, this must be a branch that has been pushed to git" - ) - .option( - "-s, --script", - "specify if you want to run the benchmarks with a special json script" - ) - .parse(process.argv); - -const options = program.opts(); -/** - * Check to see if we can reach the npm repository within a timeout - * @returns {Promise} - */ -async function checkNpmRegistryIsAvailable() { - return new Promise(resolve => { - resolve( - new Promise(resolve => { - exec("npm ping", { timeout: 1000 }, error => { - resolve(error === null); - }); - }).catch(error => { - throw error; - }) - ); - }).catch(error => { - return error; - }); -} - -/** - * Build tsc file - * @param {string} configPath the generated tsconfig path - * @returns {Promise} - */ -async function buildBenchmark(configPath) { - return new Promise((resolve, reject) => { - const args = ["-p", configPath]; - const child = spawn("tsc", args, { stdio: "inherit" }); - child.on("close", code => { - if (code !== 0) { - reject({ - command: `tsc -p ${configPath}`, - }); - return; - } - resolve(void 0); - }); - }).catch(error => { - return error; - }); -} - -/** - * Run generated tachometer config file - * @param {string} configPath - * @returns {Promise} - */ -async function runBenchmark(configPaths, pathNames) { - const promises = []; - for (let i = 0; i < configPaths.length; i++) { - const configPath = configPaths[i]; - const pathName = pathNames[i]; - - const res = new Promise((resolve, reject) => { - const args = ["tach", "--config", configPath]; - - if (options.debug) { - args.push("--manual"); - } else { - args.push(`--json-file=results/${pathName}.json`); - } - - const child = spawn("npx", args, { stdio: "inherit" }); - child.on("close", code => { - if (code !== 0) { - reject({ - command: `npx ${args.join(" ")}`, - }); - return; - } - resolve(void 0); - }); - }).catch(error => { - if (error.command) { - console.log( - errMessage( - `Make sure your local branch is pushed to git to use the 'local' keyword in versions: failed at ${error.command}:` - ) - ); - } else { - return error; - } - }); - promises.push(res); - } - return await Promise.all(promises); -} - -const run = async () => { - try { - await checkNpmRegistryIsAvailable(); - const { tsConfigPath, tachoConfigPaths, pathNames } = await generateTemplates( - options - ); - await buildBenchmark(tsConfigPath); - - await runBenchmark(tachoConfigPaths, pathNames); - } catch (error) { - return error; - } -}; - -run(); diff --git a/packages/utilities/fast-benchmarks/scripts/template.js b/packages/utilities/fast-benchmarks/scripts/template.js deleted file mode 100644 index a926c818255..00000000000 --- a/packages/utilities/fast-benchmarks/scripts/template.js +++ /dev/null @@ -1,423 +0,0 @@ -import { mkdir, writeFile } from "fs/promises"; -import { readdir, readFileSync } from "fs"; -import { exec, execFile } from "child_process"; -import { basename, dirname, extname, join, resolve } from "path"; -import chalk from "chalk"; -const errMessage = chalk.hex("#ffb638"); - -/** - * Creates a dist folder to hold the generated config file. - * If file already exists, it will replace the existing file with new config. - * @typedef {import('tachometer/lib/configfile').ConfigFile} ConfigFile Expected - * See https://www.npmjs.com/package/tachometer#config-file - * @param {string} name - * @param {ConfigFile} config will be stringified if not already - * @param {string} ext extension configuration for the file - * @param {string} dest destination folder where config file will be generated, if empty string means it's rootDir - * @returns {string} path location of newly generated config json file - */ -const ROOT_DIR = ""; -const JSON_EXT = ".json"; -async function writeConfig(name, config, ext = JSON_EXT, dest = ROOT_DIR) { - /** @type {boolean} check if des string contains any characters matching a letter, if it does, it is not a rootDir */ - const isRootDir = !dest.match("[a-zA-Z]+") && !ROOT_DIR; - const configName = name + ext; - const __dirname = resolve(dirname(isRootDir ? ROOT_DIR : `${dest}`)); - const configPath = join(__dirname, dest, configName); - if (!isRootDir) await mkdir(join(__dirname, dest), { recursive: true }); - - // if ext is JSON, stringify, otherwise leave as is - const str = ext === JSON_EXT ? JSON.stringify(config, null, 2) : config; - await writeFile(configPath, str, "utf8"); - return isRootDir ? join(process.cwd(), configName) : join(dest, configName); -} - -/** - * Create tsconfig.{my-library}.json file and add include path to it - */ -async function generateTsConfig({ library, benchmark }) { - const tsConfig = { - extends: "./tsconfig.json", - include: [ - "utils/**/*.ts", - `benchmarks/${library}/${benchmark}/*.ts`, - "global.d.ts", - ], - }; - return await writeConfig(`tsconfig.${library}`, tsConfig); -} - -/** - * Generates the html template for benchmark, inject compiled js script in header, spit out output in dist - */ - -export function getTestName(filename) { - const extension = extname(filename); - const res = basename(filename, extension); - return res; -} - -async function generateHtmlTemplate(operationFile, compiledJsBench, fileName) { - const name = getTestName(operationFile); - const benchScript = readFileSync(`./src/${operationFile}`, "utf8"); - const defaultHtml = ` - - - -
    - - - - `; - // generate html template of all default suite for benchmark - const htmlFileName = fileName + "-" + name; - await writeConfig(htmlFileName, defaultHtml, ".html", "dist"); - return { name, path: htmlFileName + ".html" }; -} - -const DEFAULT_BENCH_FILE = "index"; -async function generateHtmlTemplates( - { library, benchmark, operations }, - fileName, - benchFile = DEFAULT_BENCH_FILE -) { - const compiledJsBench = `../benchmarks/${library}/${benchmark}/${benchFile}.js`; - // any operation listed under 'src' folder is eligible - return new Promise((resolve, reject) => { - readdir("src", async (err, files) => { - if (err) reject("Unable to scan directory: " + err); - - const operationProps = { names: [], htmlPaths: [] }; - // handle if specific operations are passed in - if (operations) { - const fileNames = files.map(f => getTestName(f)); - const match = operations.some(f => fileNames.includes(f)); - if (!match) { - reject( - "The operation name you passed does not exist, please check spelling or make sure you added the operation test under /src folder." - ); - } - for (let i = 0; i < files.length; i++) { - const operationFile = files[i]; - const operationName = getTestName(operationFile); - - if (operations.includes(operationName)) { - const { name, path } = await generateHtmlTemplate( - operationFile, - compiledJsBench, - fileName - ); - operationProps.names.push(name); - operationProps.htmlPaths.push(path); - } - } - } else { - // run all possible operations - for (let i = 0; i < files.length; i++) { - const operationFile = files[i]; - const { name, path } = await generateHtmlTemplate( - operationFile, - compiledJsBench, - fileName - ); - operationProps.names.push(name); - operationProps.htmlPaths.push(path); - } - } - - resolve(operationProps); - }); - }).catch(error => { - if (error) { - console.log(errMessage(error)); - } else { - return error; - } - }); -} - -/** - * Get current local git branch name - * @returns {Promise} - */ -async function getLocalGitBranchName() { - return new Promise((resolve, reject) => { - const res = exec("git branch --show-current"); - res.stdout.on("data", data => - data ? resolve(data.trim()) : reject("Error in getting local branch name.") - ); - }).catch(error => { - throw new Error( - `Unable to retrieve local branch name: ${error}, make sure you have "git" installed.` - ); - }); -} - -/** - * Get script data - * @returns {JSON String} - */ -async function runCustomScript({ library, benchmark }) { - return new Promise((resolve, reject) => { - const args = [`./benchmarks/${library}/${benchmark}/script.js`]; - const child = execFile("node", args); - - child.stdout.on("data", data => { - data ? resolve(data) : reject("Error in running custom script."); - }); - }).catch(error => { - return error; - }); -} - -function generateBenchmark( - benchmarks, - name, - newBench, - url, - template, - method, - queryParams -) { - const queryStr = queryParams?.join("&"); - const fullUrl = queryParams - ? `${url}?template=${template}&method=${method}&${queryStr}` - : method - ? `${url}?template=${template}&method=${method}` - : `${url}?template=${template}`; - - newBench.url = fullUrl; - const tail = method ? `-${method}` : ""; - newBench.name = queryParams - ? `${name}-${template}-${method}-${queryStr}` - : `${name}-${template}${tail}`; - benchmarks.push(newBench); - return benchmarks; -} - -/** - * Generates the benchmarks array expected by the tachometer config file. - * @returns {{operationName: ConfigFile["benchmarks"]}, {}} returns benchmarkHash, where operation name is key and benchmarks array is value - */ -const FAST_ELEMENT = "fast-element"; -const FAST_FOUNDATION = "fast-foundation"; -const libraryDependencies = { - [FAST_FOUNDATION]: { - "@microsoft/fast-element": "latest", - "@microsoft/fast-web-utilities": "latest", - }, -}; -export async function generateBenchmarks( - { library, benchmark, versions, templates, method, queryParam }, - operationProps, - localProps, - customQueryParams -) { - const tachoData = {}; - operationProps.names.forEach((operation, idx) => { - /** @type {ConfigFile["benchmarks"]} */ - let benchmarkName = operation; - const benchmarks = []; - const browser = { - name: "chrome", - headless: true, - addArguments: ["--js-flags=--expose-gc", "--enable-precise-memory-info"], - }; - const measurement = [ - { - mode: "performance", - entryName: operation, - }, - { - name: "usedJSHeapSize", - mode: "expression", - expression: "window.usedJSHeapSize", - }, - ]; - - versions.forEach(version => { - // regex exp that checks if string is indeed in version format: ${number}.${number}.${number} - const isPublishedVersion = /[0-9]+\.[0-9]+\.[0-9]+/.test(version); - const isLocalBranch = localProps.branchName && version === LOCAL; - const isBranch = isLocalBranch || !isPublishedVersion; - const url = - isLocalBranch && localProps.operationProps.htmlPaths - ? localProps.operationProps.htmlPaths[idx] - : operationProps.htmlPaths[idx]; - - const name = `${benchmark}-${operation}`; - const bench = { - url, - browser, - name, - measurement, - }; - const dep = `@microsoft/${library}`; - - if (isBranch) { - const ref = isLocalBranch ? localProps.branchName : version; - bench.packageVersions = { - label: version, - dependencies: { - [dep]: { - kind: "git", - repo: "https://github.com/microsoft/fast.git", - ref, - subdir: `packages/web-components/${library}`, - setupCommands: [ - "yarn install", - `yarn --cwd ./packages/web-components/${library} build`, - ], - }, - }, - }; - } else { - bench.packageVersions = { - label: version, - dependencies: { [dep]: version }, - }; - } - - // add fast-foundation manually, TODO: need to find a way to extract and add dynamically - if (library !== FAST_ELEMENT) { - bench.packageVersions.dependencies = { - ...bench.packageVersions.dependencies, - ...libraryDependencies[library], - }; - } - - if (templates || method) { - for (let i = 0; i < templates.length; i++) { - const template = templates[i]; - benchmarkName = method ? `${method}_${operation}` : `${operation}`; - // TODO: revist custom scripts, currently not very extensible - if (customQueryParams) { - const queryParams = JSON.parse(customQueryParams); - queryParams[template]?.forEach(queries => { - const clickEvent = queries[0]; - if (clickEvent.includes(method)) { - generateBenchmark( - benchmarks, - benchmark, - { ...bench }, - url, - template, - method, - queries - ); - } - }); - } else { - generateBenchmark( - benchmarks, - benchmark, - { ...bench }, - url, - template, - method, - queryParam - ); - } - } - } else { - benchmarks.push(bench); - } - }); - tachoData[benchmarkName] = benchmarks; - }); - return tachoData; -} - -/** - * Generate tachometer config file - * @param {string} fileName - * @param {{operationName: ConfigFile["benchmarks"]}, {}} benchmarksHash - * @returns {string[]} array of the paths' location of newly generated config json file - */ -async function generateConfig(fileName, benchmarksHash) { - try { - const TACH_SCHEMA = - "https://raw.githubusercontent.com/Polymer/tachometer/master/config.schema.json"; - - const defaultBenchOptions = { - root: "..", - // Tachometer default is 50, but locally let's only do 30 - sampleSize: 50, - // Tachometer default is 3 minutes, but let's shrink it to 1 here to save some - timeout: 1, - }; - - const pathsPromises = []; - const pathNames = []; - for (const benchmark in benchmarksHash) { - const config = { - $schema: TACH_SCHEMA, - ...defaultBenchOptions, - benchmarks: benchmarksHash[benchmark], - }; - const name = `${fileName}-${benchmark}`; - const path = await writeConfig(`${name}.config`, config, ".json", "dist"); - - pathNames.push(name); - pathsPromises.push(path); - } - /** @type {ConfigFile[]} promises resolves to array of config file paths*/ - return [await Promise.all(pathsPromises), pathNames]; - } catch (error) { - console.log(errMessage(error)); - } -} - -/** - * Creates a dist folder to hold the generated config file. - * If file already exists, it will replace the existing file with new config. - * @typedef {import('tachometer/lib/configfile').ConfigFile} ConfigFile Expected - * See https://www.npmjs.com/package/tachometer#config-file - * @param {import('commander').OptionValues } options - * @returns {string} path location of newly generated config json file - */ -const LOCAL = "local"; -export async function generateTemplates(options) { - try { - const tsConfigPath = await generateTsConfig(options); - const fileName = `${options.library}-${options.benchmark}`; - // special handling if 'local' version was passed in as an option - const localProps = { branchName: "", operationProps: {} }; - if (options.versions.includes(LOCAL)) { - localProps.branchName = options.branchName - ? options.branchName - : await getLocalGitBranchName(); - - // check if user passed in localBenchFile for different implementation of local - if (options.localBenchFile) - localProps.operationProps = await generateHtmlTemplates( - options, - `${fileName}_${LOCAL}`, - options.localBenchFile - ); - } - - const operationProps = await generateHtmlTemplates(options, fileName); - const customQueryParams = options.script && (await runCustomScript(options)); - const benchmarksHash = await generateBenchmarks( - options, - operationProps, - localProps, - customQueryParams - ); - const [tachoConfigPaths, pathNames] = await generateConfig( - fileName, - benchmarksHash - ); - return { - tsConfigPath, - tachoConfigPaths, - pathNames, - }; - } catch (error) { - console.log(errMessage(error)); - } -} diff --git a/packages/utilities/fast-benchmarks/src/clickTrigger10x.js b/packages/utilities/fast-benchmarks/src/clickTrigger10x.js deleted file mode 100644 index 83ad6691eee..00000000000 --- a/packages/utilities/fast-benchmarks/src/clickTrigger10x.js +++ /dev/null @@ -1,30 +0,0 @@ -/* eslint-disable no-undef */ -import { - destroy, - getTestStartName, - measureMemory, - updateComplete, -} from "../utils/index.js"; -(async () => { - const container = document.getElementById("container"); - const el = document.createElement("x-app"); - const create = async () => { - return container.appendChild(el); - }; - const clickEvent = async () => { - await create(); - const start = getTestStartName(test); - const shadowRoot = el.shadowRoot; - const button = shadowRoot.querySelector("button"); - performance.mark(start); - // click on button to trigger event - for (let i = 0; i <= 10; i++) { - button.click(); - } - await updateComplete(); - performance.measure(test, start); - destroy(container); - }; - await clickEvent(); - measureMemory(); -})(); diff --git a/packages/utilities/fast-benchmarks/src/create10k.js b/packages/utilities/fast-benchmarks/src/create10k.js deleted file mode 100644 index 720bb91957a..00000000000 --- a/packages/utilities/fast-benchmarks/src/create10k.js +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint-disable no-undef */ -import { - destroy, - getTestStartName, - measureMemory, - updateComplete, -} from "../utils/index.js"; -(async () => { - const container = document.getElementById("container"); - const create = () => { - const el = document.createElement("x-app"); - return container.appendChild(el); - }; - const render = async () => { - const start = getTestStartName(test); - performance.mark(start); - create(); - await updateComplete(); - performance.measure(test, start); - destroy(container); - }; - await render(); - measureMemory(); -})(); diff --git a/packages/utilities/fast-benchmarks/src/createDelete5x.js b/packages/utilities/fast-benchmarks/src/createDelete5x.js deleted file mode 100644 index 71b13c8c413..00000000000 --- a/packages/utilities/fast-benchmarks/src/createDelete5x.js +++ /dev/null @@ -1,26 +0,0 @@ -/* eslint-disable no-undef */ -import { - destroy, - getTestStartName, - measureMemory, - updateComplete, -} from "../utils/index.js"; -(async () => { - const container = document.getElementById("container"); - const create = () => { - const el = document.createElement("x-app"); - return container.appendChild(el); - }; - const createDelete = async () => { - const start = getTestStartName(test); - performance.mark(start); - for (let i = 0; i < 5; i++) { - create(); - destroy(container); - } - await updateComplete(); - performance.measure(test, start); - }; - await createDelete(); - measureMemory(); -})(); diff --git a/packages/utilities/fast-benchmarks/src/runFile1k.js b/packages/utilities/fast-benchmarks/src/runFile1k.js deleted file mode 100644 index 40e0cb5e166..00000000000 --- a/packages/utilities/fast-benchmarks/src/runFile1k.js +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable no-undef */ -import { getTestStartName, measureMemory, updateComplete } from "../utils/index.js"; -(async () => { - const run = async () => { - const start = getTestStartName(test); - performance.mark(start); - for (let i = 0; i < 1000; i++) { - window.runFunction(); - } - await updateComplete(); - performance.measure(test, start); - }; - await run(); - measureMemory(); -})(); diff --git a/packages/utilities/fast-benchmarks/src/update10th.js b/packages/utilities/fast-benchmarks/src/update10th.js deleted file mode 100644 index 000868988a1..00000000000 --- a/packages/utilities/fast-benchmarks/src/update10th.js +++ /dev/null @@ -1,28 +0,0 @@ -/* eslint-disable no-undef */ -import { - destroy, - getTestStartName, - measureMemory, - updateComplete, -} from "../utils/index.js"; -(async () => { - const container = document.getElementById("container"); - const create = () => { - const el = document.createElement("x-app"); - return container.appendChild(el); - }; - const update = async () => { - let el = create(); - - const start = getTestStartName(test); - performance.mark(start); - for (let i = 0; i < el.items.length; i += 10) { - el.items[i].label += "!!!"; - } - await updateComplete(); - performance.measure(test, start); - destroy(container); - }; - await update(); - measureMemory(); -})(); diff --git a/packages/utilities/fast-benchmarks/tsconfig.json b/packages/utilities/fast-benchmarks/tsconfig.json deleted file mode 100644 index 0f334c97618..00000000000 --- a/packages/utilities/fast-benchmarks/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "target": "es2019", - "module": "esnext", - "lib": ["es2020", "DOM", "DOM.Iterable"], - "declaration": true, - "strict": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, - "noImplicitThis": true, - "moduleResolution": "Node16", - "allowSyntheticDefaultImports": true, - "experimentalDecorators": true, - "skipLibCheck": true - }, - "include": ["utils/**/*.ts", "benchmarks/methods/**/*.ts"] -} diff --git a/packages/utilities/fast-benchmarks/utils/query-params.ts b/packages/utilities/fast-benchmarks/utils/query-params.ts deleted file mode 100644 index 54619768d38..00000000000 --- a/packages/utilities/fast-benchmarks/utils/query-params.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Object storing query params parsed into their likely intended types. - * - * Note this avoids using URLSearchParams for compatibility with IE11. - * - * Examples: - * - * ?foo=true // boolean: false - * ?foo=false // boolean: true - * ?foo // boolean: true - * ?foo=5 // number: 5 - * ?foo=mode1 // string: "mode1" - */ -export const queryParams: { - [index: string]: string | boolean | number; -} = document.location.search - .slice(1) - .split("&") - .filter(s => s) - .map(p => p.split("=")) - .reduce( - (p: { [key: string]: string | boolean }, [k, v]) => ( - (p[k] = (() => { - try { - return JSON.parse(v); - } catch { - return v || true; - } - })()), - p - ), - {} - ); diff --git a/packages/web-components/fast-element/package.json b/packages/web-components/fast-element/package.json index c2f602e5357..ddbe7e27500 100644 --- a/packages/web-components/fast-element/package.json +++ b/packages/web-components/fast-element/package.json @@ -91,6 +91,7 @@ "./dist/esm/components/install-hydration.js" ], "scripts": { + "benchmark": "yarn clean:dist && yarn build && node ./scripts/run-benchmarks", "clean:dist": "node ../../../build/clean.js dist", "doc": "api-extractor run --local", "doc:ci": "api-extractor run", @@ -118,6 +119,9 @@ }, "devDependencies": { "@microsoft/api-extractor": "7.24.2", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-typescript": "^8.3.2", + "@tensile-perf/web-components": "^0.1.14", "@types/chai": "^4.2.11", "@types/chai-spies": "^1.0.3", "@types/karma": "^6.3.3", @@ -146,7 +150,6 @@ "rollup": "^2.71.1", "rollup-plugin-filesize": "^9.1.2", "rollup-plugin-terser": "^7.0.2", - "@rollup/plugin-typescript": "^8.3.2", "source-map": "^0.7.3", "source-map-loader": "^3.0.1", "ts-loader": "^7.0.2", diff --git a/packages/web-components/fast-element/rollup.config.js b/packages/web-components/fast-element/rollup.config.js index 26903582298..5ba4461ad03 100644 --- a/packages/web-components/fast-element/rollup.config.js +++ b/packages/web-components/fast-element/rollup.config.js @@ -8,6 +8,7 @@ const plugins = [ declaration: false, declarationDir: undefined, }, + exclude: ["**/*.bench.*", "**/*.spec.*"] }), filesize({ showMinifiedSize: false, diff --git a/packages/web-components/fast-element/scripts/run-benchmarks.js b/packages/web-components/fast-element/scripts/run-benchmarks.js new file mode 100644 index 00000000000..15207fdd4dd --- /dev/null +++ b/packages/web-components/fast-element/scripts/run-benchmarks.js @@ -0,0 +1,46 @@ +import fs from 'fs/promises'; +import { fileURLToPath } from 'url'; +import path from 'path'; +import { execSync } from 'child_process'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const rootDir = path.join(__dirname, '..'); +const tensileConfig = 'tensile.config.js'; + +try { + const esmOutput = path.join(rootDir, 'dist', 'esm'); + const items = await fs.readdir(esmOutput); + + // Collect all component folders + const folders = []; + for (const item of items) { + const itemPath = path.join(esmOutput, item); + const stats = await fs.lstat(itemPath); + if (stats.isDirectory()) { + folders.push(item); + } + } + + // Collect all .bench.js files + const benchFiles = []; + for (const folder of folders) { + const folderPath = path.join(esmOutput, folder); + const files = await fs.readdir(folderPath); + const filteredFiles = files.filter(file => file.endsWith('.bench.js')); + benchFiles.push(...filteredFiles.map(file => path.relative(rootDir, path.join(folderPath, file)))); + } + + // Execute tensile for each .bench.js file + for (const file of benchFiles) { + try { + // eslint-disable-next-line no-undef + execSync(`tensile --file ./${file} --config ${tensileConfig} ${process.argv[2]}`, { stdio: 'inherit' }); + } catch (error) { + console.error(`Error executing command for file ${file}: ${error.message}`); + } + } + +} catch (error) { + console.error(`Error reading directory: ${error.message}`); +} diff --git a/packages/utilities/fast-benchmarks/utils/index.ts b/packages/web-components/fast-element/src/__test__/utilities.ts similarity index 92% rename from packages/utilities/fast-benchmarks/utils/index.ts rename to packages/web-components/fast-element/src/__test__/utilities.ts index 7f87b472bc8..54bc8c3fde7 100644 --- a/packages/utilities/fast-benchmarks/utils/index.ts +++ b/packages/web-components/fast-element/src/__test__/utilities.ts @@ -2,7 +2,7 @@ export const _random = (max: number) => { return Math.round(Math.random() * 1000) % max; }; -export const itemCount = 1000; +export const itemCount = 100; export const adjectives = [ "pretty", @@ -85,9 +85,9 @@ export class NestedRandomData { ) {} } -export function generateData(count: number) { +export function generateData(count: number): RandomItem[] { let id = 0; - const data = []; + const data: RandomItem[] = []; for (let i = 0; i < count; i++) { data.push(new RandomItem(++id)); @@ -96,11 +96,11 @@ export function generateData(count: number) { return data; } -export function generateNestedData(count: number) { +export function generateNestedData(count: number): NestedRandomData[] { let id = 0, id2 = 0; - const data = []; + const data: NestedRandomData[] = []; for (let i = 0; i < count; i++) { data.push( new NestedRandomData( diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/observable/index2.ts b/packages/web-components/fast-element/src/observation/observable.bench.ts similarity index 50% rename from packages/utilities/fast-benchmarks/benchmarks/fast-element/observable/index2.ts rename to packages/web-components/fast-element/src/observation/observable.bench.ts index a96666f787e..5df0e1b124d 100644 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/observable/index2.ts +++ b/packages/web-components/fast-element/src/observation/observable.bench.ts @@ -1,13 +1,22 @@ -import { Observable } from "@microsoft/fast-element"; -import { _random, adjectives, nouns } from "../../../utils/index.js"; -export class Pupil { +import { attr, FASTElement, Observable } from "../index.js"; +import { _random, adjectives, nouns } from "../__test__/utilities.js"; + +export class TestObservable extends FASTElement { private _greetMessage: string = ""; private _name: string = ""; private _exit: boolean = false; - constructor(firstName: string, lastName: string) { - const first = firstName[0].toUpperCase() + firstName.slice(1); - const last = lastName[0].toUpperCase() + lastName.slice(1); + @attr + firstName: string; + + @attr + lastName: string; + + connectedCallback(): void { + super.connectedCallback(); + + const first = this.firstName[0].toUpperCase() + this.firstName.slice(1); + const last = this.lastName[0].toUpperCase() + this.lastName.slice(1); this.name = `${first} ${last}`; this.greetMessage = `Welcome to FAST, ${this.name} !!`; @@ -44,21 +53,28 @@ export class Pupil { } } -window.runFunction = () => { - const pupil = new Pupil( - adjectives[_random(adjectives.length)], - nouns[_random(nouns.length)] - ); +TestObservable.define({ + name: "test-observable", +}); - const notifier = Observable.getNotifier(pupil); +const itemRenderer = (): HTMLElement => { + const testObservable: TestObservable = document.createElement("test-observable") as TestObservable; + testObservable.setAttribute("firstname", adjectives[_random(adjectives.length)]); + testObservable.setAttribute("lastname", nouns[_random(nouns.length)]); + + const notifier = Observable.getNotifier(testObservable); const handler = { handleChange(source: any, propertyName: any) { if (propertyName === "greetMessage") source._exit = true; }, }; - notifier.subscribe(handler, "greetMessage"); - pupil.greetMessage = `Goodbye ${pupil.name}, see you next time!`; + testObservable.greetMessage = `Goodbye ${testObservable.name}, see you next time!`; notifier.unsubscribe(handler, "greetMessage"); + + return testObservable; }; + +export default itemRenderer; +export { tests } from "@tensile-perf/web-components"; diff --git a/packages/utilities/fast-benchmarks/benchmarks/fast-element/render/index.ts b/packages/web-components/fast-element/src/templating/render.bench.ts similarity index 66% rename from packages/utilities/fast-benchmarks/benchmarks/fast-element/render/index.ts rename to packages/web-components/fast-element/src/templating/render.bench.ts index e22424b3afe..be2b41d07d6 100644 --- a/packages/utilities/fast-benchmarks/benchmarks/fast-element/render/index.ts +++ b/packages/web-components/fast-element/src/templating/render.bench.ts @@ -1,13 +1,12 @@ import { attr, css, - customElement, FASTElement, html, oneTime, repeat, -} from "@microsoft/fast-element"; -import { data, RandomItem } from "../../../utils/index.js"; +} from "../index.js"; +import { data, RandomItem } from "../__test__/utilities.js"; const xItemTemplate = html`
    @@ -20,18 +19,20 @@ const styles = css` display: flex; } `; -@customElement({ - name: "x-item", - template: xItemTemplate, - styles, -}) + class XItem extends FASTElement { - @attr value: string | undefined; + @attr + value: string | undefined; onClick(e: MouseEvent) { console.log(e.type); } } +XItem.define({ + name: "x-item", + template: xItemTemplate, + styles, +}); const xAppTemplate = html`
    @@ -43,10 +44,19 @@ const xAppTemplate = html` )}
    `; -@customElement({ - name: "x-app", - template: xAppTemplate, -}) class XApp extends FASTElement { items: RandomItem[] = data; } +XApp.define({ + name: "x-app", + template: xAppTemplate +}); + +const itemRenderer = (): HTMLElement => { + const testRender = document.createElement("x-app"); + + return testRender; +}; + +export default itemRenderer; +export { tests } from "@tensile-perf/web-components"; diff --git a/packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts b/packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts new file mode 100644 index 00000000000..b729f55e2b2 --- /dev/null +++ b/packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts @@ -0,0 +1,33 @@ +import { attr, FASTElement, html, nullableNumberConverter, repeat } from "../index.js"; + +class TestRepeat extends FASTElement { + @attr({ + mode: "fromView", + converter: nullableNumberConverter + }) + count: number = 0; + + public items: Array = new Array(this.count).fill("foo"); + + connectedCallback(): void { + super.connectedCallback(); + this.items.reverse(); + } +} +TestRepeat.define({ + name: "test-repeat", + template: html` + ${repeat(x => x.items, html`${x => x}`)} + ` +}); + +const itemRenderer = (): HTMLElement => { + const testRepeat = document.createElement("test-repeat"); + + testRepeat.setAttribute("count", "100"); + + return testRepeat; +}; + +export default itemRenderer; +export { tests } from "@tensile-perf/web-components"; diff --git a/packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts b/packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts new file mode 100644 index 00000000000..15f60239765 --- /dev/null +++ b/packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts @@ -0,0 +1,33 @@ +import { attr, FASTElement, html, nullableNumberConverter, repeat } from "../index.js"; + +class TestRepeat extends FASTElement { + @attr({ + mode: "fromView", + converter: nullableNumberConverter + }) + count: number = 0; + + public items: Array = new Array(this.count).fill("foo"); + + connectedCallback(): void { + super.connectedCallback(); + this.items.shift(); + } +} +TestRepeat.define({ + name: "test-repeat", + template: html` + ${repeat(x => x.items, html`${x => x}`)} + ` +}); + +const itemRenderer = (): HTMLElement => { + const testRepeat = document.createElement("test-repeat"); + + testRepeat.setAttribute("count", "100"); + + return testRepeat; +}; + +export default itemRenderer; +export { tests } from "@tensile-perf/web-components"; diff --git a/packages/web-components/fast-element/src/templating/when-basic.bench.ts b/packages/web-components/fast-element/src/templating/when-basic.bench.ts new file mode 100644 index 00000000000..53e15388c7a --- /dev/null +++ b/packages/web-components/fast-element/src/templating/when-basic.bench.ts @@ -0,0 +1,23 @@ +import { attr, FASTElement, html, when } from "../index.js"; + +class TestWhen extends FASTElement { + @attr({ + mode: "boolean", + }) + try: boolean = false; +} +TestWhen.define({ + name: "test-when", + template: html` + ${when(x => x.try, html`Yes`)} + ` +}); + +const itemRenderer = (): HTMLElement => { + const testWhen = document.createElement("test-when"); + + return testWhen; +}; + +export default itemRenderer; +export { tests } from "@tensile-perf/web-components"; diff --git a/packages/web-components/fast-element/src/templating/when-conditional.bench.ts b/packages/web-components/fast-element/src/templating/when-conditional.bench.ts new file mode 100644 index 00000000000..9e167dfb24b --- /dev/null +++ b/packages/web-components/fast-element/src/templating/when-conditional.bench.ts @@ -0,0 +1,24 @@ +import { attr, FASTElement, html, when } from "../index.js"; + +class TestWhen extends FASTElement { + @attr({ + mode: "boolean", + }) + try: boolean = false; +} +TestWhen.define({ + name: "test-when", + template: html` + ${when(x => x.try, html`Yes`)} + ${when(x => !x.try, html`No`)} + ` +}); + +const itemRenderer = (): HTMLElement => { + const testWhen = document.createElement("test-when"); + + return testWhen; +}; + +export default itemRenderer; +export { tests } from "@tensile-perf/web-components"; diff --git a/packages/web-components/fast-element/src/templating/when-switch.bench.ts b/packages/web-components/fast-element/src/templating/when-switch.bench.ts new file mode 100644 index 00000000000..c42fa8360e8 --- /dev/null +++ b/packages/web-components/fast-element/src/templating/when-switch.bench.ts @@ -0,0 +1,58 @@ +import { attr, FASTElement, html, nullableNumberConverter, when } from "../index.js"; + +const emotionalTemplates = { + depressed: html` +
    + I'm so depressed :O +
    + `, + sad: html` +
    + I'm so sad :( +
    + `, + happy: html` +
    + I'm so happy :) +
    + `, + ecstatic: html` +
    + I'm so ecstatic :D +
    + `, + indifferent: html` +
    + I'm indifferent :| +
    + `, +}; +class TestWhen extends FASTElement { + @attr({ + mode: "fromView", + converter: nullableNumberConverter + }) + value: number = 0; +} +TestWhen.define({ + name: "test-when", + template: html` + + ${when(x => x.value <= 1, emotionalTemplates.depressed)} + ${when(x => x.value === 2 || x.value === 3, emotionalTemplates.sad)} + ${when(x => x.value === 4 || x.value === 5, emotionalTemplates.indifferent)} + ${when(x => x.value >= 6 && x.value < 9, emotionalTemplates.happy)} + ${when(x => x.value === 9 || x.value === 10, emotionalTemplates.ecstatic)} + ` +}); + +const itemRenderer = (): HTMLElement => { + const testWhen = document.createElement("test-when"); + + testWhen.click(); + + return testWhen; +}; + +export default itemRenderer; +export { tests } from "@tensile-perf/web-components"; diff --git a/packages/web-components/fast-element/tensile.config.js b/packages/web-components/fast-element/tensile.config.js new file mode 100644 index 00000000000..69981d7e8b1 --- /dev/null +++ b/packages/web-components/fast-element/tensile.config.js @@ -0,0 +1,12 @@ +const config = { + // Browsers to test against + browsers: ['chrome'], + + // Importmaps for your test. + // See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap + imports: { + '@tensile-perf/web-components': '/node_modules/@tensile-perf/web-components/lib/index.js', + } + }; + + export default config; diff --git a/yarn.lock b/yarn.lock index 6697535ff72..ce71c80fdeb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -163,6 +163,11 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" +"@assemblyscript/loader@^0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06" + integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== + "@aw-web-design/x-default-browser@1.4.126": version "1.4.126" resolved "https://registry.yarnpkg.com/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz#43e4bd8f0314ed907a8718d7e862a203af79bc16" @@ -3966,6 +3971,18 @@ is-module "^1.0.0" resolve "^1.19.0" +"@rollup/plugin-node-resolve@^15.2.3": + version "15.2.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-builtin-module "^3.2.1" + is-module "^1.0.0" + resolve "^1.22.1" + "@rollup/plugin-typescript@^8.3.2": version "8.5.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz#7ea11599a15b0a30fa7ea69ce3b791d41b862515" @@ -3983,6 +4000,15 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^5.0.1": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rollup/rollup-android-arm-eabi@4.17.2": version "4.17.2" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz#1a32112822660ee104c5dd3a7c595e26100d4c2d" @@ -4876,6 +4902,55 @@ dependencies: defer-to-connect "^2.0.1" +"@tensile-perf/runner@0.3.12": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@tensile-perf/runner/-/runner-0.3.12.tgz#24fad3f644482f520126363d678a8d14a3f82631" + integrity sha512-8NSxj0RYZT8NijnxSjXQ05Q6GacCivu8E6njuVRQUMIvvp9XjKyCn6ZyxaPdEuaYW3SLnb6+aH8P1YZHmm3xWw== + dependencies: + "@tensile-perf/tree" "0.1.7" + chromedriver "124.0.3" + cli-table "0.3.11" + edgedriver "5.2.1" + ejs "3.1.9" + express "4.18.2" + express-useragent "1.0.15" + geckodriver "4.0.4" + markdown-table "3.0.3" + mkdirp "2.1.5" + safaridriver "0.0.5" + tachometer "0.7.0" + yargs "17.7.1" + +"@tensile-perf/tools@0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@tensile-perf/tools/-/tools-0.1.7.tgz#27ba71213b160df4b2c35d9496dec37d1bfd704d" + integrity sha512-b2jOC1JHQ5ecNM95IlQw/6s3ET743yaQ2zMIOnPCtXdJJaSIO6wwCbgK82ESkA84O6qJv8IHgyVhsBsXXPR4vQ== + dependencies: + afterframe "1.0.2" + random-seedable "1.0.8" + +"@tensile-perf/tree@0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@tensile-perf/tree/-/tree-0.1.7.tgz#32b5d9af0de3235f277af8319133eca71176f12c" + integrity sha512-mpi4B0RHuvCTA51wYM/x4Bf49Kb1F5FqbFotW1HORwd4v+FtdWf5hdlioBoneFOpKwAdDwaTtzpo5pbwRSyX8g== + dependencies: + "@tensile-perf/tools" "0.1.7" + +"@tensile-perf/web-components@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@tensile-perf/web-components/-/web-components-0.1.14.tgz#f887b2c677db7bc591621403a025745bfdd0600d" + integrity sha512-nicZf5SCIgQbGcKFw2YjVqJsCSgEPiJSiKvbqPiSwVdNwIinMdgPzGoBOkbC/hsDummnUqW1w/O5ri7cYaheoA== + dependencies: + "@tensile-perf/runner" "0.3.12" + "@tensile-perf/tools" "0.1.7" + "@tensile-perf/tree" "0.1.7" + tslib "^2.5.0" + +"@testim/chrome-version@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@testim/chrome-version/-/chrome-version-1.1.4.tgz#86e04e677cd6c05fa230dd15ac223fa72d1d7090" + integrity sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g== + "@tokenizer/token@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" @@ -4891,6 +4966,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -5384,6 +5464,11 @@ dependencies: "@types/node" "*" +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -5462,6 +5547,11 @@ resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.4.tgz#62879b0a9c653f9b1172d403b882f2045ecce032" integrity sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A== +"@types/which@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/which/-/which-2.0.2.tgz#54541d02d6b1daee5ec01ac0d1b37cecf37db1ae" + integrity sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw== + "@types/ws@^8.5.5": version "8.5.10" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" @@ -5488,6 +5578,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yauzl@^2.9.1": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + "@typescript-eslint/eslint-plugin@^5.0.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -5582,6 +5679,16 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@wdio/logger@^8.6.6": + version "8.28.0" + resolved "https://registry.yarnpkg.com/@wdio/logger/-/logger-8.28.0.tgz#ab97ee1a9f6a30305e1a07ff2b67fa23e1281e73" + integrity sha512-/s6zNCqwy1hoc+K4SJypis0Ud0dlJ+urOelJFO1x0G0rwDRWyFiUP6ijTaCcFxAm29jYEcEPWijl2xkVIHwOyA== + dependencies: + chalk "^5.1.2" + loglevel "^1.6.0" + loglevel-plugin-prefix "^0.8.4" + strip-ansi "^7.1.0" + "@web/config-loader@0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@web/config-loader/-/config-loader-0.1.3.tgz#8325ea54f75ef2ee7166783e64e66936db25bff7" @@ -5874,6 +5981,11 @@ address@^1.0.1, address@^1.1.2: resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== +afterframe@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/afterframe/-/afterframe-1.0.2.tgz#c63e17cdb29e4e60be2e618a315caf5ab5ade0c0" + integrity sha512-0JeMZI7dIfVs5guqLgidQNV7c6jBC2HO0QNSekAUB82Hr7PdU9QXNAF3kpFkvATvHYDDTGto7FPsRu1ey+aKJQ== + agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -5881,6 +5993,13 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" @@ -6340,6 +6459,13 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== +ast-types@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + ast-types@^0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" @@ -6417,6 +6543,15 @@ axios@^1.0.0: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.6.7: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -6563,7 +6698,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.1: +base64-js@^1.2.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -6586,6 +6721,11 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +basic-ftp@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -6621,7 +6761,7 @@ better-opn@^3.0.2: dependencies: open "^8.0.4" -big-integer@^1.6.44: +big-integer@^1.6.17, big-integer@^1.6.44: version "1.6.52" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== @@ -6653,6 +6793,14 @@ binary-search@^1.3.5: resolved "https://registry.yarnpkg.com/binary-search/-/binary-search-1.3.6.tgz#e32426016a0c5092f0f3598836a1c7da3560565c" integrity sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA== +binary@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -6662,6 +6810,11 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== + bmp-js@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.1.tgz#5ad0147099d13a9f38aa7b99af1d6e78666ed37f" @@ -6672,6 +6825,24 @@ bmp-js@^0.1.0: resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + body-parser@1.20.2, body-parser@^1.19.0: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" @@ -6842,6 +7013,11 @@ buffer-alloc@^1.1.0: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" @@ -6862,6 +7038,11 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-indexof-polyfill@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== + buffer@^5.2.0, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -6870,6 +7051,11 @@ buffer@^5.2.0, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== + builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" @@ -7007,6 +7193,13 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camaro@^6.2.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/camaro/-/camaro-6.2.3.tgz#e03767667d3f575d8d36a55d1cc426af702961f2" + integrity sha512-HtgOb4cXhr++JQX98bv1UwL/eHJklrtalcD9v+TW3Voc5bsT8ph4vJBS/kcZRjdpqT3fyywRKjasNcWo4vOqIQ== + dependencies: + piscina "^3.2.0" + camel-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" @@ -7082,6 +7275,13 @@ chai@^4.2.0: pathval "^1.1.1" type-detect "^4.0.8" +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== + dependencies: + traverse ">=0.3.0 <0.4" + chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -7118,7 +7318,7 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.0.1, chalk@^5.2.0: +chalk@^5.0.1, chalk@^5.1.2, chalk@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== @@ -7292,6 +7492,19 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +chromedriver@124.0.3: + version "124.0.3" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-124.0.3.tgz#2818408353ee97005acb887d9f488fe34d5c6d10" + integrity sha512-k6Xu9fwDMgi//bGHB944QMmDHF0BBWGk4PAyVZBEuP6wnZMfQP4V6Sv+l/nuAPA006RllS6X07ZpjPwRPS4BaA== + dependencies: + "@testim/chrome-version" "^1.1.4" + axios "^1.6.7" + compare-versions "^6.1.0" + extract-zip "^2.0.1" + proxy-agent "^6.4.0" + proxy-from-env "^1.1.0" + tcp-port-used "^1.0.2" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -7374,6 +7587,13 @@ cli-table3@^0.6.1, cli-table3@^0.6.3: optionalDependencies: "@colors/colors" "1.5.0" +cli-table@0.3.11: + version "0.3.11" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== + dependencies: + colors "1.0.3" + cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -7557,6 +7777,11 @@ colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw== + colors@1.4.0, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -7657,11 +7882,6 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.2.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" - integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== - comment-parser@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.2.4.tgz#489f3ee55dfd184a6e4bffb31baba284453cb760" @@ -7695,6 +7915,11 @@ compare-versions@^3.6.0: resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== +compare-versions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a" + integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg== + component-emitter@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" @@ -7912,6 +8137,11 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + cookie@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" @@ -8565,6 +8795,16 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +data-uri-to-buffer@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -8686,6 +8926,11 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decamelize@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" + integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== + decimal.js@^10.2.1: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" @@ -8826,6 +9071,15 @@ defu@^6.1.4: resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== + dependencies: + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" + del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -9168,6 +9422,13 @@ dotenv@~10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== + dependencies: + readable-stream "^2.0.2" + duplexer@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -9200,11 +9461,39 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" +edge-paths@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/edge-paths/-/edge-paths-3.0.5.tgz#9a35361d701d9b5dc07f641cebe8da01ede80937" + integrity sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg== + dependencies: + "@types/which" "^2.0.1" + which "^2.0.2" + +edgedriver@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/edgedriver/-/edgedriver-5.2.1.tgz#5de7d397a247edd1e8131a0a11f415f110f0a3da" + integrity sha512-H8mF7UYMR/r6izCPgQA5d+pHdIF47wncoTS2KWogoZ4hbNeFz9VbCPxPFoGPCCfizk/e4H5DhXapcYX0yyZqjg== + dependencies: + "@wdio/logger" "^8.6.6" + camaro "^6.2.0" + decamelize "^6.0.0" + edge-paths "^3.0.5" + node-fetch "^3.3.1" + unzipper "^0.10.14" + which "^3.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +ejs@3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + ejs@^3.1.10, ejs@^3.1.7: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" @@ -9577,7 +9866,7 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -escodegen@^2.0.0: +escodegen@^2.0.0, escodegen@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== @@ -9830,6 +10119,11 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + estree-walker@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" @@ -9860,6 +10154,11 @@ eval@^0.1.8: "@types/node" "*" require-like ">= 0.1.1" +eventemitter-asyncresource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz#734ff2e44bf448e627f7748f905d6bdd57bdb65b" + integrity sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ== + eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -9972,6 +10271,48 @@ exponential-backoff@^3.1.1: resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== +express-useragent@1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/express-useragent/-/express-useragent-1.0.15.tgz#cefda5fa4904345d51d3368b117a8dd4124985d9" + integrity sha512-eq5xMiYCYwFPoekffMjvEIk+NWdlQY9Y38OsTyl13IvA728vKT+q/CSERYWzcw93HGBJcIqMIsZC5CZGARPVdg== + +express@4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + express@^4.17.1, express@^4.17.3, express@^4.18.1: version "4.19.2" resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" @@ -10052,6 +10393,17 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-zip@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" @@ -10102,9 +10454,9 @@ fast-url-parser@1.1.3: punycode "^1.3.2" fast-xml-parser@^4.1.3: - version "4.3.6" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz#190f9d99097f0c8f2d3a0e681a10404afca052ff" - integrity sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw== + version "4.4.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz#341cc98de71e9ba9e651a67f41f1752d1441a501" + integrity sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg== dependencies: strnum "^1.0.5" @@ -10153,6 +10505,13 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + feed@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e" @@ -10160,6 +10519,14 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + fetch-retry@^5.0.2: version "5.0.6" resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" @@ -10450,6 +10817,13 @@ format@^0.2.0: resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -10495,7 +10869,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.1.0, fs-extra@^11.1.1: +fs-extra@^11.1.0, fs-extra@^11.1.1, fs-extra@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -10564,6 +10938,16 @@ fsevents@~2.3.1, fsevents@~2.3.2, fsevents@~2.3.3: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" @@ -10612,6 +10996,20 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +geckodriver@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-4.0.4.tgz#0a7685e4a801e0ecc032053bb58b1013fa0a0f58" + integrity sha512-WoNn5wy576YKWOfUf7Hi4g5jWPKvMmN6zOt9KpDlCkr1mUbdqP056/eZKapyG5xfJQVDKC/sBx6ejH2xdt2BGg== + dependencies: + "@wdio/logger" "^8.6.6" + decamelize "^6.0.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + node-fetch "^3.3.1" + tar-fs "^2.1.1" + unzipper "^0.10.14" + which "^3.0.1" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -10714,6 +11112,16 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-uri@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a" + integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^6.0.2" + debug "^4.3.4" + fs-extra "^11.2.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -11052,7 +11460,7 @@ graceful-fs@4.2.10: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -11215,15 +11623,6 @@ has-yarn@^3.0.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -11366,6 +11765,20 @@ hastscript@^8.0.0: property-information "^6.0.0" space-separated-tokens "^2.0.0" +hdr-histogram-js@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5" + integrity sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g== + dependencies: + "@assemblyscript/loader" "^0.10.1" + base64-js "^1.2.0" + pako "^1.0.3" + +hdr-histogram-percentiles-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" + integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== + he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -11583,6 +11996,14 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + http-proxy-middleware@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" @@ -11619,6 +12040,14 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -11795,7 +12224,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -11903,6 +12332,11 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" +ip-regex@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ip@^1.1.0: version "1.1.9" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" @@ -12019,7 +12453,7 @@ is-buffer@^2.0.0, is-buffer@~2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-builtin-module@^3.1.0: +is-builtin-module@^3.1.0, is-builtin-module@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== @@ -12412,6 +12846,11 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -12436,6 +12875,15 @@ is-yarn-global@^0.4.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== +is2@^2.0.6: + version "2.0.9" + resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.9.tgz#ff63b441f90de343fa8fac2125ee170da8e8240d" + integrity sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g== + dependencies: + deep-is "^0.1.3" + ip-regex "^4.1.0" + is-url "^1.2.4" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -13394,6 +13842,11 @@ lint-staged@^10.1.2: string-argv "0.3.1" stringify-object "^3.3.0" +listenercount@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" + integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== + listr2@^3.2.2: version "3.14.0" resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" @@ -13657,6 +14110,16 @@ log4js@^6.4.1: rfdc "^1.3.0" streamroller "^3.1.5" +loglevel-plugin-prefix@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644" + integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== + +loglevel@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7" + integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg== + longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" @@ -13712,7 +14175,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: +lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: version "7.18.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== @@ -13845,6 +14308,11 @@ markdown-it@^12.3.2: mdurl "^1.0.1" uc.micro "^1.0.5" +markdown-table@3.0.3, markdown-table@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" + integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== + markdown-table@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" @@ -13852,11 +14320,6 @@ markdown-table@^2.0.0: dependencies: repeat-string "^1.0.0" -markdown-table@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" - integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== - markdown-to-jsx@7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz#f286b4d112dad3028acc1e77dfe1f653b347e131" @@ -15278,13 +15741,18 @@ mkdirp@0.5.5: dependencies: minimist "^1.2.5" -mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" +mkdirp@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.5.tgz#78d7eaf15e069ba7b6b47d76dd94cfadf7a4062f" + integrity sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w== + mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -15466,6 +15934,19 @@ neo-async@^2.5.0, neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +nice-napi@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b" + integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -15486,7 +15967,7 @@ node-abi@^2.21.0: dependencies: semver "^5.4.1" -node-addon-api@^3.2.0, node-addon-api@^3.2.1: +node-addon-api@^3.0.0, node-addon-api@^3.2.0, node-addon-api@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== @@ -15498,6 +15979,11 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-emoji@^2.1.0: version "2.1.3" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-2.1.3.tgz#93cfabb5cc7c3653aa52f29d6ffb7927d8047c06" @@ -15528,12 +16014,21 @@ node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build@^4.3.0: +node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: version "4.8.1" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== @@ -16287,6 +16782,28 @@ p-waterfall@^2.1.1: dependencies: p-reduce "^2.0.0" +pac-proxy-agent@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz#6b9ddc002ec3ff0ba5fdf4a8a21d363bcc612d75" + integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== + dependencies: + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" + pac-resolver "^7.0.0" + socks-proxy-agent "^8.0.2" + +pac-resolver@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== + dependencies: + degenerator "^5.0.0" + netmask "^2.0.2" + package-json@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" @@ -16349,7 +16866,7 @@ pacote@^13.0.3, pacote@^13.6.1: ssri "^9.0.0" tar "^6.1.11" -pako@^1.0.5, pako@~1.0.2: +pako@^1.0.3, pako@^1.0.5, pako@~1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -16638,6 +17155,11 @@ peek-stream@^1.1.0: duplexify "^3.5.0" through2 "^2.0.3" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + periscopic@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a" @@ -16699,6 +17221,17 @@ pirates@^4.0.1, pirates@^4.0.6: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +piscina@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154" + integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA== + dependencies: + eventemitter-asyncresource "^1.0.0" + hdr-histogram-js "^2.0.1" + hdr-histogram-percentiles-obj "^3.0.0" + optionalDependencies: + nice-napi "^1.0.2" + pixelmatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" @@ -17269,6 +17802,20 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-agent@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" + integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.1" + https-proxy-agent "^7.0.3" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.1" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.2" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -17389,6 +17936,11 @@ ramda@0.29.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== +random-seedable@1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/random-seedable/-/random-seedable-1.0.8.tgz#d233ce5d49f64a20be398bbc3faa695cc39b8aa8" + integrity sha512-f6gzvNhAnZBht1Prn0e/tpukUNhkANntFF42uIdWDPriyEATYaRpyH8A9bYaGecUB3AL+dXeYtBUggy18fe3rw== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -17406,6 +17958,16 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-body@2.5.2, raw-body@^2.3.3: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" @@ -17682,7 +18244,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -18174,7 +18736,7 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.22.4, resolve@^1.9.0, resolve@~1.22.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.9.0, resolve@~1.22.1: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -18238,7 +18800,7 @@ rfdc@^1.3.0: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== -rimraf@^2.6.3: +rimraf@2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -18382,6 +18944,11 @@ sade@^1.7.3: dependencies: mri "^1.1.0" +safaridriver@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/safaridriver/-/safaridriver-0.0.5.tgz#280ce80575e24cdf8a6a2c2e61d8e66d9320217a" + integrity sha512-997HUPVHdOk0019Yz2qbX/B47bC0LcUxMrHU2PDY8IOO7hiT1uhBQEeEAF1BeCrZKFgx5cmsbWYmFgFN0TfqNA== + safe-array-concat@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" @@ -18397,7 +18964,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -18685,7 +19252,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.5: +setimmediate@^1.0.5, setimmediate@~1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== @@ -18973,7 +19540,16 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" -socks@^2.6.2: +socks-proxy-agent@^8.0.2: + version "8.0.3" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" + integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== + dependencies: + agent-base "^7.1.1" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.6.2, socks@^2.7.1: version "2.8.3" resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== @@ -19384,7 +19960,7 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^7.0.1: +strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -19599,7 +20175,7 @@ table@^6.0.7: string-width "^4.2.3" strip-ansi "^6.0.1" -tachometer@^0.7.0: +tachometer@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/tachometer/-/tachometer-0.7.0.tgz#1f3e3ab0b68004eaf3e564288ce1000819cf991f" integrity sha512-163DdzoNkjZlr/m3IpaPMYBOTUc54hzfGSUw7pv9ZoO3OkjDcoGqJGImcrfEDNsw3DD0J/FM5AWjEi2/0W4YZA== @@ -19675,6 +20251,14 @@ tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2, tar@^6.2.0: mkdirp "^1.0.3" yallist "^4.0.0" +tcp-port-used@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea" + integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA== + dependencies: + debug "4.3.1" + is2 "^2.0.6" + telejson@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.2.0.tgz#3994f6c9a8f8d7f2dba9be2c7c5bbb447e876f32" @@ -19920,6 +20504,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== + tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -20055,7 +20644,7 @@ tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.0: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -20212,7 +20801,7 @@ typescript@5.4.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372" integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ== -"typescript@^3 || ^4", typescript@^4.7.0, typescript@^4.7.2, typescript@^4.7.3, "typescript@~3.9.0 || ~4.3.5 || ^4.7.0": +"typescript@^3 || ^4", typescript@^4.7.0, typescript@^4.7.3, "typescript@~3.9.0 || ~4.3.5 || ^4.7.0": version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -20544,6 +21133,22 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== +unzipper@^0.10.14: + version "0.10.14" + resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.14.tgz#d2b33c977714da0fbc0f82774ad35470a7c962b1" + integrity sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g== + dependencies: + big-integer "^1.6.17" + binary "~0.3.0" + bluebird "~3.4.1" + buffer-indexof-polyfill "~1.0.0" + duplexer2 "~0.1.4" + fstream "^1.0.12" + graceful-fs "^4.2.2" + listenercount "~1.0.1" + readable-stream "~2.3.6" + setimmediate "~1.0.4" + upath@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" @@ -20888,6 +21493,11 @@ web-namespaces@^2.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== +web-streams-polyfill@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + web-worker@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" @@ -21146,7 +21756,7 @@ which@2.0.2, which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -which@^3.0.0: +which@^3.0.0, which@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== @@ -21502,6 +22112,19 @@ yargs@16.2.0, yargs@^16.1.0, yargs@^16.1.1, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@17.7.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yargs@^17.6.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" @@ -21515,6 +22138,14 @@ yargs@^17.6.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + ylru@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.4.0.tgz#0cf0aa57e9c24f8a2cbde0cc1ca2c9592ac4e0f6" From 2200b0ae0ff0f14fdbf3181d644b3e5976efc853 Mon Sep 17 00:00:00 2001 From: Jane Chu <7559015+janechu@users.noreply.github.com> Date: Wed, 22 May 2024 20:12:27 -0700 Subject: [PATCH 2/3] Change files --- ...-fast-element-247086ae-c5c2-4272-91e3-508ffa0f54fa.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 change/@microsoft-fast-element-247086ae-c5c2-4272-91e3-508ffa0f54fa.json diff --git a/change/@microsoft-fast-element-247086ae-c5c2-4272-91e3-508ffa0f54fa.json b/change/@microsoft-fast-element-247086ae-c5c2-4272-91e3-508ffa0f54fa.json new file mode 100644 index 00000000000..5d8ad4f4216 --- /dev/null +++ b/change/@microsoft-fast-element-247086ae-c5c2-4272-91e3-508ffa0f54fa.json @@ -0,0 +1,7 @@ +{ + "type": "none", + "comment": "Update benchmarking to be included in the package instead of being separate", + "packageName": "@microsoft/fast-element", + "email": "7559015+janechu@users.noreply.github.com", + "dependentChangeType": "none" +} From d560ad120e6cf5cee3e39b91ac98d49545ea413a Mon Sep 17 00:00:00 2001 From: Jane Chu <7559015+janechu@users.noreply.github.com> Date: Wed, 22 May 2024 20:15:39 -0700 Subject: [PATCH 3/3] Prettier --- .../src/observation/observable.bench.ts | 4 +++- .../fast-element/src/templating/render.bench.ts | 15 +++------------ .../src/templating/repeat-basic-reverse.bench.ts | 11 ++++++++--- .../src/templating/repeat-basic-shift.bench.ts | 11 ++++++++--- .../src/templating/when-basic.bench.ts | 9 +++++++-- .../src/templating/when-conditional.bench.ts | 16 +++++++++++++--- .../src/templating/when-switch.bench.ts | 4 ++-- 7 files changed, 44 insertions(+), 26 deletions(-) diff --git a/packages/web-components/fast-element/src/observation/observable.bench.ts b/packages/web-components/fast-element/src/observation/observable.bench.ts index 5df0e1b124d..d927d08039c 100644 --- a/packages/web-components/fast-element/src/observation/observable.bench.ts +++ b/packages/web-components/fast-element/src/observation/observable.bench.ts @@ -58,7 +58,9 @@ TestObservable.define({ }); const itemRenderer = (): HTMLElement => { - const testObservable: TestObservable = document.createElement("test-observable") as TestObservable; + const testObservable: TestObservable = document.createElement( + "test-observable" + ) as TestObservable; testObservable.setAttribute("firstname", adjectives[_random(adjectives.length)]); testObservable.setAttribute("lastname", nouns[_random(nouns.length)]); diff --git a/packages/web-components/fast-element/src/templating/render.bench.ts b/packages/web-components/fast-element/src/templating/render.bench.ts index be2b41d07d6..a1657698b30 100644 --- a/packages/web-components/fast-element/src/templating/render.bench.ts +++ b/packages/web-components/fast-element/src/templating/render.bench.ts @@ -1,17 +1,8 @@ -import { - attr, - css, - FASTElement, - html, - oneTime, - repeat, -} from "../index.js"; +import { attr, css, FASTElement, html, oneTime, repeat } from "../index.js"; import { data, RandomItem } from "../__test__/utilities.js"; const xItemTemplate = html` -
    - ${x => x.value} -
    +
    ${x => x.value}
    `; const styles = css` @@ -49,7 +40,7 @@ class XApp extends FASTElement { } XApp.define({ name: "x-app", - template: xAppTemplate + template: xAppTemplate, }); const itemRenderer = (): HTMLElement => { diff --git a/packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts b/packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts index b729f55e2b2..8f9373394c0 100644 --- a/packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts +++ b/packages/web-components/fast-element/src/templating/repeat-basic-reverse.bench.ts @@ -3,7 +3,7 @@ import { attr, FASTElement, html, nullableNumberConverter, repeat } from "../ind class TestRepeat extends FASTElement { @attr({ mode: "fromView", - converter: nullableNumberConverter + converter: nullableNumberConverter, }) count: number = 0; @@ -17,8 +17,13 @@ class TestRepeat extends FASTElement { TestRepeat.define({ name: "test-repeat", template: html` - ${repeat(x => x.items, html`${x => x}`)} - ` + ${repeat( + x => x.items, + html` + ${x => x} + ` + )} + `, }); const itemRenderer = (): HTMLElement => { diff --git a/packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts b/packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts index 15f60239765..1972ba14a9c 100644 --- a/packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts +++ b/packages/web-components/fast-element/src/templating/repeat-basic-shift.bench.ts @@ -3,7 +3,7 @@ import { attr, FASTElement, html, nullableNumberConverter, repeat } from "../ind class TestRepeat extends FASTElement { @attr({ mode: "fromView", - converter: nullableNumberConverter + converter: nullableNumberConverter, }) count: number = 0; @@ -17,8 +17,13 @@ class TestRepeat extends FASTElement { TestRepeat.define({ name: "test-repeat", template: html` - ${repeat(x => x.items, html`${x => x}`)} - ` + ${repeat( + x => x.items, + html` + ${x => x} + ` + )} + `, }); const itemRenderer = (): HTMLElement => { diff --git a/packages/web-components/fast-element/src/templating/when-basic.bench.ts b/packages/web-components/fast-element/src/templating/when-basic.bench.ts index 53e15388c7a..a26fd0e4845 100644 --- a/packages/web-components/fast-element/src/templating/when-basic.bench.ts +++ b/packages/web-components/fast-element/src/templating/when-basic.bench.ts @@ -9,8 +9,13 @@ class TestWhen extends FASTElement { TestWhen.define({ name: "test-when", template: html` - ${when(x => x.try, html`Yes`)} - ` + ${when( + x => x.try, + html` + Yes + ` + )} + `, }); const itemRenderer = (): HTMLElement => { diff --git a/packages/web-components/fast-element/src/templating/when-conditional.bench.ts b/packages/web-components/fast-element/src/templating/when-conditional.bench.ts index 9e167dfb24b..a4910893282 100644 --- a/packages/web-components/fast-element/src/templating/when-conditional.bench.ts +++ b/packages/web-components/fast-element/src/templating/when-conditional.bench.ts @@ -9,9 +9,19 @@ class TestWhen extends FASTElement { TestWhen.define({ name: "test-when", template: html` - ${when(x => x.try, html`Yes`)} - ${when(x => !x.try, html`No`)} - ` + ${when( + x => x.try, + html` + Yes + ` + )} + ${when( + x => !x.try, + html` + No + ` + )} + `, }); const itemRenderer = (): HTMLElement => { diff --git a/packages/web-components/fast-element/src/templating/when-switch.bench.ts b/packages/web-components/fast-element/src/templating/when-switch.bench.ts index c42fa8360e8..4aad340b2d9 100644 --- a/packages/web-components/fast-element/src/templating/when-switch.bench.ts +++ b/packages/web-components/fast-element/src/templating/when-switch.bench.ts @@ -30,7 +30,7 @@ const emotionalTemplates = { class TestWhen extends FASTElement { @attr({ mode: "fromView", - converter: nullableNumberConverter + converter: nullableNumberConverter, }) value: number = 0; } @@ -43,7 +43,7 @@ TestWhen.define({ ${when(x => x.value === 4 || x.value === 5, emotionalTemplates.indifferent)} ${when(x => x.value >= 6 && x.value < 9, emotionalTemplates.happy)} ${when(x => x.value === 9 || x.value === 10, emotionalTemplates.ecstatic)} - ` + `, }); const itemRenderer = (): HTMLElement => {