@analogjs/platform 1.6.4-beta.1 → 1.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/platform",
3
- "version": "1.6.4-beta.1",
3
+ "version": "1.7.0-beta.1",
4
4
  "description": "The fullstack meta-framework for Angular",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
@@ -25,8 +25,9 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "nitropack": "^2.9.0",
28
- "@analogjs/vite-plugin-angular": "^1.6.4-beta.1",
29
- "@analogjs/vite-plugin-nitro": "^1.6.4-beta.1"
28
+ "@analogjs/vite-plugin-angular": "^1.7.0-beta.1",
29
+ "@analogjs/vite-plugin-nitro": "^1.7.0-beta.1",
30
+ "vitefu": "^0.2.5"
30
31
  },
31
32
  "peerDependencies": {
32
33
  "@nx/angular": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
@@ -0,0 +1,3 @@
1
+ import { Plugin } from 'vite';
2
+ import { Options } from './options.js';
3
+ export declare function depsPlugin(options?: Options): Plugin[];
@@ -0,0 +1,62 @@
1
+ import { VERSION } from '@angular/compiler-cli';
2
+ import { crawlFrameworkPkgs } from 'vitefu';
3
+ import { relative } from 'node:path';
4
+ export function depsPlugin(options) {
5
+ const workspaceRoot = options?.workspaceRoot ?? process.cwd();
6
+ return [
7
+ {
8
+ name: 'analogjs-deps-plugin',
9
+ config() {
10
+ return {
11
+ ssr: {
12
+ noExternal: ['@analogjs/**', 'firebase/**', 'firebase-admin/**'],
13
+ },
14
+ optimizeDeps: {
15
+ include: [
16
+ '@angular/common',
17
+ '@angular/common/http',
18
+ ...(Number(VERSION.major) > 15
19
+ ? ['@angular/core/rxjs-interop']
20
+ : []),
21
+ ],
22
+ exclude: [
23
+ '@angular/platform-server',
24
+ '@analogjs/content',
25
+ '@analogjs/router',
26
+ '@nx/angular',
27
+ '@nx/vite',
28
+ '@nx/devkit',
29
+ '@nx/js',
30
+ '@nx/devkit',
31
+ '@nx/cypress',
32
+ '@nx/jest',
33
+ '@nx/js',
34
+ '@nx/eslint',
35
+ '@nx/webpack',
36
+ '@nx/web',
37
+ '@nx/workspace',
38
+ '@nx/eslint',
39
+ 'webpack',
40
+ ],
41
+ },
42
+ };
43
+ },
44
+ },
45
+ {
46
+ name: 'analogjs-auto-discover-deps',
47
+ async config(config, { command }) {
48
+ const root = relative(workspaceRoot, config.root || '.') || '.';
49
+ const pkgConfig = await crawlFrameworkPkgs({
50
+ root,
51
+ isBuild: command === 'build',
52
+ viteUserConfig: config,
53
+ isSemiFrameworkPkgByJson(pkgJson) {
54
+ return pkgJson['module'] && pkgJson['module'].includes('fesm');
55
+ },
56
+ });
57
+ return pkgConfig;
58
+ },
59
+ },
60
+ ];
61
+ }
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcy1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2RlcHMtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUlyQyxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQWlCO0lBQzFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sRUFBRSxhQUFhLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTlELE9BQU87UUFDTDtZQUNFLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsTUFBTTtnQkFDSixPQUFPO29CQUNMLEdBQUcsRUFBRTt3QkFDSCxVQUFVLEVBQUUsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixDQUFDO3FCQUNqRTtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osT0FBTyxFQUFFOzRCQUNQLGlCQUFpQjs0QkFDakIsc0JBQXNCOzRCQUN0QixHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dDQUM1QixDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQztnQ0FDaEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt5QkFDUjt3QkFDRCxPQUFPLEVBQUU7NEJBQ1AsMEJBQTBCOzRCQUMxQixtQkFBbUI7NEJBQ25CLGtCQUFrQjs0QkFDbEIsYUFBYTs0QkFDYixVQUFVOzRCQUNWLFlBQVk7NEJBQ1osUUFBUTs0QkFDUixZQUFZOzRCQUNaLGFBQWE7NEJBQ2IsVUFBVTs0QkFDVixRQUFROzRCQUNSLFlBQVk7NEJBQ1osYUFBYTs0QkFDYixTQUFTOzRCQUNULGVBQWU7NEJBQ2YsWUFBWTs0QkFDWixTQUFTO3lCQUNWO3FCQUNGO2lCQUNGLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFDRDtZQUNFLElBQUksRUFBRSw2QkFBNkI7WUFDbkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUU7Z0JBQzlCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBRWhFLE1BQU0sU0FBUyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7b0JBQ3pDLElBQUk7b0JBQ0osT0FBTyxFQUFFLE9BQU8sS0FBSyxPQUFPO29CQUM1QixjQUFjLEVBQUUsTUFBTTtvQkFDdEIsd0JBQXdCLENBQUMsT0FBTzt3QkFDOUIsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDakUsQ0FBQztpQkFDRixDQUFDLENBQUM7Z0JBRUgsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
@@ -5,6 +5,7 @@ import { ssrBuildPlugin } from './ssr/ssr-build-plugin.js';
5
5
  import { contentPlugin } from './content-plugin.js';
6
6
  import { clearClientPageEndpointsPlugin } from './clear-client-page-endpoint.js';
7
7
  import { ssrXhrBuildPlugin } from './ssr/ssr-xhr-plugin.js';
8
+ import { depsPlugin } from './deps-plugin.js';
8
9
  export function platformPlugin(opts = {}) {
9
10
  const { apiPrefix, ...platformOptions } = {
10
11
  ssr: true,
@@ -22,6 +23,7 @@ export function platformPlugin(opts = {}) {
22
23
  return [
23
24
  ...viteNitroPlugin(platformOptions, nitroOptions),
24
25
  (platformOptions.ssr ? ssrBuildPlugin() : false),
26
+ ...depsPlugin(),
25
27
  ...routerPlugin(),
26
28
  ...contentPlugin(platformOptions?.content),
27
29
  ...angular({
@@ -33,4 +35,4 @@ export function platformPlugin(opts = {}) {
33
35
  clearClientPageEndpointsPlugin(),
34
36
  ];
35
37
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxlQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxPQUFPLE1BQU0sK0JBQStCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFNUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFnQixFQUFFO0lBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRztRQUN4QyxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsSUFBSTtLQUNSLENBQUM7SUFFRixJQUFJLFlBQVksR0FBRyxlQUFlLEVBQUUsS0FBSyxDQUFDO0lBQzFDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxZQUFZLEdBQUc7WUFDYixHQUFHLFlBQVk7WUFDZixhQUFhLEVBQUU7Z0JBQ2IsU0FBUzthQUNWO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxlQUFlLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQztRQUNqRCxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQVc7UUFDMUQsR0FBRyxZQUFZLEVBQUU7UUFDakIsR0FBRyxhQUFhLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQztRQUMxQyxHQUFHLE9BQU8sQ0FBQztZQUNULEdBQUcsRUFBRSxlQUFlLENBQUMsR0FBRztZQUN4QixhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWE7WUFDNUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ3RCLENBQUM7UUFDRixpQkFBaUIsRUFBRTtRQUNuQiw4QkFBOEIsRUFBRTtLQUNqQyxDQUFDO0FBQ0osQ0FBQyJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0vc3JjL2xpYi9wbGF0Zm9ybS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxlQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxPQUFPLE1BQU0sK0JBQStCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0IsRUFBRTtJQUMvQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsZUFBZSxFQUFFLEdBQUc7UUFDeEMsR0FBRyxFQUFFLElBQUk7UUFDVCxHQUFHLElBQUk7S0FDUixDQUFDO0lBRUYsSUFBSSxZQUFZLEdBQUcsZUFBZSxFQUFFLEtBQUssQ0FBQztJQUMxQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsWUFBWSxHQUFHO1lBQ2IsR0FBRyxZQUFZO1lBQ2YsYUFBYSxFQUFFO2dCQUNiLFNBQVM7YUFDVjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7UUFDakQsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFXO1FBQzFELEdBQUcsVUFBVSxFQUFFO1FBQ2YsR0FBRyxZQUFZLEVBQUU7UUFDakIsR0FBRyxhQUFhLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQztRQUMxQyxHQUFHLE9BQU8sQ0FBQztZQUNULEdBQUcsRUFBRSxlQUFlLENBQUMsR0FBRztZQUN4QixhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWE7WUFDNUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ3RCLENBQUM7UUFDRixpQkFBaUIsRUFBRTtRQUNuQiw4QkFBOEIsRUFBRTtLQUNqQyxDQUFDO0FBQ0osQ0FBQyJ9
@@ -1,4 +1,3 @@
1
- import { VERSION } from '@angular/compiler-cli';
2
1
  import { normalizePath } from 'vite';
3
2
  /**
4
3
  * This plugin invalidates the files for routes when new files
@@ -10,43 +9,6 @@ import { normalizePath } from 'vite';
10
9
  */
11
10
  export function routerPlugin() {
12
11
  return [
13
- {
14
- name: 'analogjs-router-plugin',
15
- config() {
16
- return {
17
- ssr: {
18
- noExternal: [
19
- '@analogjs/**',
20
- '@analogjs/trpc/**',
21
- '@angular/**',
22
- '@angular/cdk/**',
23
- '@angular/fire/**',
24
- '@ngrx/**',
25
- '@rx-angular/**',
26
- '@ng-bootstrap/**',
27
- '@ngneat/**',
28
- 'apollo-angular/**',
29
- 'primeng/**',
30
- 'rxfire/**',
31
- '@tanstack/**',
32
- 'ngxtension/**',
33
- 'firebase/**',
34
- 'firebase-admin/**',
35
- ],
36
- },
37
- optimizeDeps: {
38
- include: [
39
- '@angular/common',
40
- '@angular/common/http',
41
- ...(Number(VERSION.major) > 15
42
- ? ['@angular/core/rxjs-interop']
43
- : []),
44
- ],
45
- exclude: ['@angular/platform-server', '@analogjs/router'],
46
- },
47
- };
48
- },
49
- },
50
12
  {
51
13
  name: 'analogjs-router-invalidate-routes',
52
14
  configureServer(server) {
@@ -75,4 +37,4 @@ export function routerPlugin() {
75
37
  },
76
38
  ];
77
39
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtL3NyYy9saWIvcm91dGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLE1BQU0sQ0FBQztBQUU3Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLHdCQUF3QjtZQUM5QixNQUFNO2dCQUNKLE9BQU87b0JBQ0wsR0FBRyxFQUFFO3dCQUNILFVBQVUsRUFBRTs0QkFDVixjQUFjOzRCQUNkLG1CQUFtQjs0QkFDbkIsYUFBYTs0QkFDYixpQkFBaUI7NEJBQ2pCLGtCQUFrQjs0QkFDbEIsVUFBVTs0QkFDVixnQkFBZ0I7NEJBQ2hCLGtCQUFrQjs0QkFDbEIsWUFBWTs0QkFDWixtQkFBbUI7NEJBQ25CLFlBQVk7NEJBQ1osV0FBVzs0QkFDWCxjQUFjOzRCQUNkLGVBQWU7NEJBQ2YsYUFBYTs0QkFDYixtQkFBbUI7eUJBQ3BCO3FCQUNGO29CQUNELFlBQVksRUFBRTt3QkFDWixPQUFPLEVBQUU7NEJBQ1AsaUJBQWlCOzRCQUNqQixzQkFBc0I7NEJBQ3RCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0NBQzVCLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDO2dDQUNoQyxDQUFDLENBQUMsRUFBRSxDQUFDO3lCQUNSO3dCQUNELE9BQU8sRUFBRSxDQUFDLDBCQUEwQixFQUFFLGtCQUFrQixDQUFDO3FCQUMxRDtpQkFDRixDQUFDO1lBQ0osQ0FBQztTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsbUNBQW1DO1lBQ3pDLGVBQWUsQ0FBQyxNQUFNO2dCQUNwQixTQUFTLGdCQUFnQixDQUFDLElBQVk7b0JBQ3BDLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQzNDLENBQUM7d0JBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs0QkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dDQUNuQixJQUNFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztvQ0FDNUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQzFCLENBQUM7b0NBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FFekMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3Q0FDNUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDM0MsQ0FBQyxDQUFDLENBQUM7Z0NBQ0wsQ0FBQzs0QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDTCxDQUFDLENBQUMsQ0FBQzt3QkFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs0QkFDYixJQUFJLEVBQUUsYUFBYTt5QkFDcEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDaEQsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtL3NyYy9saWIvcm91dGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0sTUFBTSxDQUFDO0FBRTdDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUUsbUNBQW1DO1lBQ3pDLGVBQWUsQ0FBQyxNQUFNO2dCQUNwQixTQUFTLGdCQUFnQixDQUFDLElBQVk7b0JBQ3BDLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQzNDLENBQUM7d0JBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs0QkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dDQUNuQixJQUNFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztvQ0FDNUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQzFCLENBQUM7b0NBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FFekMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3Q0FDNUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDM0MsQ0FBQyxDQUFDLENBQUM7Z0NBQ0wsQ0FBQzs0QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDTCxDQUFDLENBQUMsQ0FBQzt3QkFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs0QkFDYixJQUFJLEVBQUUsYUFBYTt5QkFDcEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDaEQsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==