@decohere/create 0.0.1-dev.48 → 0.0.1-dev.5

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.
Files changed (127) hide show
  1. package/commonjs/src/cli.js +9 -3
  2. package/commonjs/src/scaffold.js +48 -0
  3. package/commonjs/src/templates.js +64 -0
  4. package/es6/src/cli.js +9 -3
  5. package/es6/src/scaffold.js +38 -0
  6. package/es6/src/templates.js +40 -0
  7. package/package.json +3 -8
  8. package/types/src/scaffold.d.ts +4 -0
  9. package/types/src/templates.d.ts +4 -0
  10. package/commonjs/src/domain/prompt.js +0 -64
  11. package/commonjs/src/models/compose.model.js +0 -138
  12. package/commonjs/src/models/config-yaml.model.js +0 -88
  13. package/commonjs/src/models/const.js +0 -31
  14. package/commonjs/src/models/dev-container.model.js +0 -100
  15. package/commonjs/src/models/docker-image.model.js +0 -221
  16. package/commonjs/src/models/env-file.model.js +0 -47
  17. package/commonjs/src/models/gitignore.model.js +0 -31
  18. package/commonjs/src/models/launch-json.model.js +0 -74
  19. package/commonjs/src/models/package-json.model.js +0 -133
  20. package/commonjs/src/models/project.model.js +0 -134
  21. package/commonjs/src/models/source-file.js +0 -6
  22. package/commonjs/src/models/tsconfig.model.js +0 -34
  23. package/commonjs/src/models/vscode-settings.model.js +0 -31
  24. package/commonjs/src/program.js +0 -135
  25. package/commonjs/src/resolve-target-dir.js +0 -19
  26. package/commonjs/src/runner.js +0 -144
  27. package/commonjs/src/services/scaffold.service.js +0 -62
  28. package/commonjs/src/version.js +0 -50
  29. package/commonjs/src/webapi/api-name.js +0 -95
  30. package/commonjs/src/webapi/const.js +0 -50
  31. package/commonjs/src/webapi/create-api.js +0 -285
  32. package/commonjs/src/webapi/features/auth.feature.js +0 -463
  33. package/commonjs/src/webapi/features/auth0-cli.js +0 -406
  34. package/commonjs/src/webapi/features/biome-format.js +0 -49
  35. package/commonjs/src/webapi/features/database.feature.js +0 -273
  36. package/commonjs/src/webapi/features/finalize.feature.js +0 -91
  37. package/commonjs/src/webapi/features/postman.feature.js +0 -319
  38. package/commonjs/src/webapi/models/api-package-json.model.js +0 -63
  39. package/commonjs/src/webapi/models/auth-config.model.js +0 -26
  40. package/commonjs/src/webapi/models/controller-source-file.model.js +0 -188
  41. package/commonjs/src/webapi/models/github-ci.model.js +0 -193
  42. package/commonjs/src/webapi/models/main-source-file.model.js +0 -165
  43. package/commonjs/src/webapi/models/production-dockerfile.model.js +0 -138
  44. package/commonjs/src/webapi/models/sample-files.model.js +0 -60
  45. package/commonjs/src/webapi/models/webapi-image.model.js +0 -22
  46. package/commonjs/src/webapi/postman/hello-openapi.js +0 -175
  47. package/commonjs/src/webapi/postman/local-view.js +0 -184
  48. package/commonjs/src/webapi/postman/openapi-to-postman.js +0 -202
  49. package/es6/src/domain/prompt.js +0 -43
  50. package/es6/src/models/compose.model.js +0 -132
  51. package/es6/src/models/config-yaml.model.js +0 -76
  52. package/es6/src/models/const.js +0 -21
  53. package/es6/src/models/dev-container.model.js +0 -90
  54. package/es6/src/models/docker-image.model.js +0 -185
  55. package/es6/src/models/env-file.model.js +0 -43
  56. package/es6/src/models/gitignore.model.js +0 -21
  57. package/es6/src/models/launch-json.model.js +0 -64
  58. package/es6/src/models/package-json.model.js +0 -129
  59. package/es6/src/models/project.model.js +0 -119
  60. package/es6/src/models/source-file.js +0 -3
  61. package/es6/src/models/tsconfig.model.js +0 -24
  62. package/es6/src/models/vscode-settings.model.js +0 -21
  63. package/es6/src/program.js +0 -76
  64. package/es6/src/resolve-target-dir.js +0 -9
  65. package/es6/src/runner.js +0 -146
  66. package/es6/src/services/scaffold.service.js +0 -52
  67. package/es6/src/version.js +0 -32
  68. package/es6/src/webapi/api-name.js +0 -59
  69. package/es6/src/webapi/const.js +0 -20
  70. package/es6/src/webapi/create-api.js +0 -265
  71. package/es6/src/webapi/features/auth.feature.js +0 -412
  72. package/es6/src/webapi/features/auth0-cli.js +0 -348
  73. package/es6/src/webapi/features/biome-format.js +0 -42
  74. package/es6/src/webapi/features/database.feature.js +0 -263
  75. package/es6/src/webapi/features/finalize.feature.js +0 -81
  76. package/es6/src/webapi/features/postman.feature.js +0 -253
  77. package/es6/src/webapi/models/api-package-json.model.js +0 -58
  78. package/es6/src/webapi/models/auth-config.model.js +0 -22
  79. package/es6/src/webapi/models/controller-source-file.model.js +0 -179
  80. package/es6/src/webapi/models/github-ci.model.js +0 -186
  81. package/es6/src/webapi/models/main-source-file.model.js +0 -161
  82. package/es6/src/webapi/models/production-dockerfile.model.js +0 -126
  83. package/es6/src/webapi/models/sample-files.model.js +0 -42
  84. package/es6/src/webapi/models/webapi-image.model.js +0 -12
  85. package/es6/src/webapi/postman/hello-openapi.js +0 -168
  86. package/es6/src/webapi/postman/local-view.js +0 -169
  87. package/es6/src/webapi/postman/openapi-to-postman.js +0 -179
  88. package/pack-builder-tgz.mjs +0 -177
  89. package/types/src/domain/prompt.d.ts +0 -4
  90. package/types/src/models/compose.model.d.ts +0 -59
  91. package/types/src/models/config-yaml.model.d.ts +0 -27
  92. package/types/src/models/const.d.ts +0 -19
  93. package/types/src/models/dev-container.model.d.ts +0 -33
  94. package/types/src/models/docker-image.model.d.ts +0 -56
  95. package/types/src/models/env-file.model.d.ts +0 -15
  96. package/types/src/models/gitignore.model.d.ts +0 -6
  97. package/types/src/models/launch-json.model.d.ts +0 -7
  98. package/types/src/models/package-json.model.d.ts +0 -32
  99. package/types/src/models/project.model.d.ts +0 -60
  100. package/types/src/models/source-file.d.ts +0 -11
  101. package/types/src/models/tsconfig.model.d.ts +0 -5
  102. package/types/src/models/vscode-settings.model.d.ts +0 -7
  103. package/types/src/program.d.ts +0 -3
  104. package/types/src/resolve-target-dir.d.ts +0 -5
  105. package/types/src/runner.d.ts +0 -15
  106. package/types/src/services/scaffold.service.d.ts +0 -22
  107. package/types/src/version.d.ts +0 -4
  108. package/types/src/webapi/api-name.d.ts +0 -14
  109. package/types/src/webapi/const.d.ts +0 -17
  110. package/types/src/webapi/create-api.d.ts +0 -15
  111. package/types/src/webapi/features/auth.feature.d.ts +0 -10
  112. package/types/src/webapi/features/auth0-cli.d.ts +0 -72
  113. package/types/src/webapi/features/biome-format.d.ts +0 -5
  114. package/types/src/webapi/features/database.feature.d.ts +0 -5
  115. package/types/src/webapi/features/finalize.feature.d.ts +0 -2
  116. package/types/src/webapi/features/postman.feature.d.ts +0 -16
  117. package/types/src/webapi/models/api-package-json.model.d.ts +0 -18
  118. package/types/src/webapi/models/auth-config.model.d.ts +0 -26
  119. package/types/src/webapi/models/controller-source-file.model.d.ts +0 -45
  120. package/types/src/webapi/models/github-ci.model.d.ts +0 -9
  121. package/types/src/webapi/models/main-source-file.model.d.ts +0 -54
  122. package/types/src/webapi/models/production-dockerfile.model.d.ts +0 -20
  123. package/types/src/webapi/models/sample-files.model.d.ts +0 -7
  124. package/types/src/webapi/models/webapi-image.model.d.ts +0 -5
  125. package/types/src/webapi/postman/hello-openapi.d.ts +0 -19
  126. package/types/src/webapi/postman/local-view.d.ts +0 -17
  127. package/types/src/webapi/postman/openapi-to-postman.d.ts +0 -62
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "WELL_KNOWN_FILES", {
6
- enumerable: true,
7
- get: function() {
8
- return WELL_KNOWN_FILES;
9
- }
10
- });
11
- const WELL_KNOWN_FILES = {
12
- VSCODE_SETTINGS: "VSCODE_SETTINGS",
13
- LAUNCH_JSON: "LAUNCH_JSON",
14
- DOCKER_COMPOSE: "DOCKER_COMPOSE",
15
- DEVCONTAINER_JSON: "DEVCONTAINER_JSON",
16
- DOCKERFILE: "DOCKERFILE",
17
- PRODUCTION_DOCKERFILE: "PRODUCTION_DOCKERFILE",
18
- GITHUB_CI: "GITHUB_CI",
19
- PACKAGE_JSON: "PACKAGE_JSON",
20
- API_PACKAGE_JSON: "API_PACKAGE_JSON",
21
- TSCONFIG: "TSCONFIG",
22
- MAIN_TS: "MAIN_TS",
23
- CONTROLLER_TS: "CONTROLLER_TS",
24
- CONFIG_YAML: "CONFIG_YAML",
25
- CONFIG_DEV_YAML: "CONFIG_DEV_YAML",
26
- GITIGNORE: "GITIGNORE",
27
- AUTH_CONFIG: "AUTH_CONFIG",
28
- ENV_FILE: "ENV_FILE"
29
- };
30
-
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2NvbnN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBXRUxMX0tOT1dOX0ZJTEVTID0ge1xuXHRWU0NPREVfU0VUVElOR1M6IFwiVlNDT0RFX1NFVFRJTkdTXCIsXG5cdExBVU5DSF9KU09OOiBcIkxBVU5DSF9KU09OXCIsXG5cdERPQ0tFUl9DT01QT1NFOiBcIkRPQ0tFUl9DT01QT1NFXCIsXG5cdERFVkNPTlRBSU5FUl9KU09OOiBcIkRFVkNPTlRBSU5FUl9KU09OXCIsXG5cdERPQ0tFUkZJTEU6IFwiRE9DS0VSRklMRVwiLFxuXHRQUk9EVUNUSU9OX0RPQ0tFUkZJTEU6IFwiUFJPRFVDVElPTl9ET0NLRVJGSUxFXCIsXG5cdEdJVEhVQl9DSTogXCJHSVRIVUJfQ0lcIixcblx0UEFDS0FHRV9KU09OOiBcIlBBQ0tBR0VfSlNPTlwiLFxuXHRBUElfUEFDS0FHRV9KU09OOiBcIkFQSV9QQUNLQUdFX0pTT05cIixcblx0VFNDT05GSUc6IFwiVFNDT05GSUdcIixcblx0TUFJTl9UUzogXCJNQUlOX1RTXCIsXG5cdENPTlRST0xMRVJfVFM6IFwiQ09OVFJPTExFUl9UU1wiLFxuXHRDT05GSUdfWUFNTDogXCJDT05GSUdfWUFNTFwiLFxuXHRDT05GSUdfREVWX1lBTUw6IFwiQ09ORklHX0RFVl9ZQU1MXCIsXG5cdEdJVElHTk9SRTogXCJHSVRJR05PUkVcIixcblx0QVVUSF9DT05GSUc6IFwiQVVUSF9DT05GSUdcIixcblx0RU5WX0ZJTEU6IFwiRU5WX0ZJTEVcIixcbn07XG4iXSwibmFtZXMiOlsiV0VMTF9LTk9XTl9GSUxFUyIsIlZTQ09ERV9TRVRUSU5HUyIsIkxBVU5DSF9KU09OIiwiRE9DS0VSX0NPTVBPU0UiLCJERVZDT05UQUlORVJfSlNPTiIsIkRPQ0tFUkZJTEUiLCJQUk9EVUNUSU9OX0RPQ0tFUkZJTEUiLCJHSVRIVUJfQ0kiLCJQQUNLQUdFX0pTT04iLCJBUElfUEFDS0FHRV9KU09OIiwiVFNDT05GSUciLCJNQUlOX1RTIiwiQ09OVFJPTExFUl9UUyIsIkNPTkZJR19ZQU1MIiwiQ09ORklHX0RFVl9ZQU1MIiwiR0lUSUdOT1JFIiwiQVVUSF9DT05GSUciLCJFTlZfRklMRSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsbUJBQW1CO0lBQy9CQyxpQkFBaUI7SUFDakJDLGFBQWE7SUFDYkMsZ0JBQWdCO0lBQ2hCQyxtQkFBbUI7SUFDbkJDLFlBQVk7SUFDWkMsdUJBQXVCO0lBQ3ZCQyxXQUFXO0lBQ1hDLGNBQWM7SUFDZEMsa0JBQWtCO0lBQ2xCQyxVQUFVO0lBQ1ZDLFNBQVM7SUFDVEMsZUFBZTtJQUNmQyxhQUFhO0lBQ2JDLGlCQUFpQjtJQUNqQkMsV0FBVztJQUNYQyxhQUFhO0lBQ2JDLFVBQVU7QUFDWCJ9
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "DevContainer", {
6
- enumerable: true,
7
- get: function() {
8
- return DevContainer;
9
- }
10
- });
11
- const _const = require("./const.js");
12
- class DevContainer {
13
- key = _const.WELL_KNOWN_FILES.DEVCONTAINER_JSON;
14
- _extensions = [];
15
- _ports = [];
16
- _portAttributes = new Map();
17
- _mounts;
18
- _postStartCommand;
19
- _initializeCommand;
20
- _remoteUser = "node";
21
- _useCompose = false;
22
- constructor(){
23
- this._mounts = [
24
- "source=..,target=/workspace,type=bind,consistency=cached"
25
- ];
26
- }
27
- addExtension(...ids) {
28
- this._extensions.push(...ids);
29
- return this;
30
- }
31
- forwardPort(...ports) {
32
- this._ports.push(...ports);
33
- return this;
34
- }
35
- setPortAttributes(port, attrs) {
36
- this._portAttributes.set(port, attrs);
37
- return this;
38
- }
39
- setPostStartCommand(cmd) {
40
- this._postStartCommand = cmd;
41
- return this;
42
- }
43
- setInitializeCommand(cmd) {
44
- this._initializeCommand = cmd;
45
- return this;
46
- }
47
- setRemoteUser(user) {
48
- this._remoteUser = user;
49
- return this;
50
- }
51
- useCompose() {
52
- this._useCompose = true;
53
- return this;
54
- }
55
- files() {
56
- const config = {};
57
- if (this._useCompose) {
58
- config.dockerComposeFile = "docker-compose.yml";
59
- config.service = "devcontainer";
60
- config.workspaceFolder = "/workspace";
61
- }
62
- if (this._initializeCommand) {
63
- config.initializeCommand = this._initializeCommand;
64
- }
65
- if (this._mounts) {
66
- config.mounts = this._mounts;
67
- }
68
- if (this._extensions.length > 0) {
69
- config.customizations = {
70
- vscode: {
71
- extensions: this._extensions
72
- }
73
- };
74
- }
75
- if (this._ports.length > 0) {
76
- config.forwardPorts = this._ports;
77
- }
78
- if (this._portAttributes.size > 0) {
79
- const portsAttributes = {};
80
- for (const [port, attrs] of this._portAttributes){
81
- portsAttributes[String(port)] = attrs;
82
- }
83
- config.portsAttributes = portsAttributes;
84
- }
85
- if (this._postStartCommand) {
86
- config.postStartCommand = this._postStartCommand;
87
- }
88
- if (this._remoteUser) {
89
- config.remoteUser = this._remoteUser;
90
- }
91
- return [
92
- {
93
- filePath: ".devcontainer/devcontainer.json",
94
- content: JSON.stringify(config, null, 2)
95
- }
96
- ];
97
- }
98
- }
99
-
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2Rldi1jb250YWluZXIubW9kZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi9zb3VyY2UtZmlsZS5qc1wiO1xuXG4vKipcbiAqIE1vZGVsIGZvciBgLmRldmNvbnRhaW5lci9kZXZjb250YWluZXIuanNvbmAuXG4gKlxuICogRmVhdHVyZXMgY2FsbCBidWlsZGVyIG1ldGhvZHMgKGBhZGRFeHRlbnNpb25gLCBgZm9yd2FyZFBvcnRgLCBldGMuKSBkdXJpbmdcbiAqIHRoZWlyIGNvbmZpZ3VyZSBwaGFzZS4gYE1vbm9SZXBvU2NhZmZvbGRgIGNhbGxzIGBmaWxlcygpYCBhdCByZW5kZXIgdGltZS5cbiAqL1xuXG5leHBvcnQgdHlwZSBQb3J0QXR0cmlidXRlcyA9IHtcblx0bGFiZWw/OiBzdHJpbmc7XG5cdC8qKiBXaGVuIHRydWUsIGhvc3QgcG9ydCBtdXN0IG1hdGNoIHRoZSBjb250YWluZXIgcG9ydCAobm8gcmFuZG9tIHJlbWFwKS4gKi9cblx0cmVxdWlyZUxvY2FsUG9ydD86IGJvb2xlYW47XG5cdG9uQXV0b0ZvcndhcmQ/OiBcIm5vdGlmeVwiIHwgXCJvcGVuQnJvd3NlclwiIHwgXCJvcGVuUHJldmlld1wiIHwgXCJzaWxlbnRcIiB8IFwiaWdub3JlXCI7XG59O1xuXG5leHBvcnQgY2xhc3MgRGV2Q29udGFpbmVyIGltcGxlbWVudHMgS2V5ZWRNb2RlbCB7XG5cdHB1YmxpYyByZWFkb25seSBrZXkgPSBXRUxMX0tOT1dOX0ZJTEVTLkRFVkNPTlRBSU5FUl9KU09OO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9leHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9wb3J0czogbnVtYmVyW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfcG9ydEF0dHJpYnV0ZXMgPSBuZXcgTWFwPG51bWJlciwgUG9ydEF0dHJpYnV0ZXM+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX21vdW50czogc3RyaW5nW107XG5cdHByaXZhdGUgX3Bvc3RTdGFydENvbW1hbmQ/OiBzdHJpbmc7XG5cdHByaXZhdGUgX2luaXRpYWxpemVDb21tYW5kPzogc3RyaW5nO1xuXHRwcml2YXRlIF9yZW1vdGVVc2VyID0gXCJub2RlXCI7XG5cdHByaXZhdGUgX3VzZUNvbXBvc2UgPSBmYWxzZTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5fbW91bnRzID0gW1wic291cmNlPS4uLHRhcmdldD0vd29ya3NwYWNlLHR5cGU9YmluZCxjb25zaXN0ZW5jeT1jYWNoZWRcIl07XG5cdH1cblxuXHRwdWJsaWMgYWRkRXh0ZW5zaW9uKC4uLmlkczogc3RyaW5nW10pOiB0aGlzIHtcblx0XHR0aGlzLl9leHRlbnNpb25zLnB1c2goLi4uaWRzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmb3J3YXJkUG9ydCguLi5wb3J0czogbnVtYmVyW10pOiB0aGlzIHtcblx0XHR0aGlzLl9wb3J0cy5wdXNoKC4uLnBvcnRzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRQb3J0QXR0cmlidXRlcyhwb3J0OiBudW1iZXIsIGF0dHJzOiBQb3J0QXR0cmlidXRlcyk6IHRoaXMge1xuXHRcdHRoaXMuX3BvcnRBdHRyaWJ1dGVzLnNldChwb3J0LCBhdHRycyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0UG9zdFN0YXJ0Q29tbWFuZChjbWQ6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX3Bvc3RTdGFydENvbW1hbmQgPSBjbWQ7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0SW5pdGlhbGl6ZUNvbW1hbmQoY21kOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9pbml0aWFsaXplQ29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRSZW1vdGVVc2VyKHVzZXI6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX3JlbW90ZVVzZXIgPSB1c2VyO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHVzZUNvbXBvc2UoKTogdGhpcyB7XG5cdFx0dGhpcy5fdXNlQ29tcG9zZSA9IHRydWU7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRjb25zdCBjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cblx0XHRpZiAodGhpcy5fdXNlQ29tcG9zZSkge1xuXHRcdFx0Y29uZmlnLmRvY2tlckNvbXBvc2VGaWxlID0gXCJkb2NrZXItY29tcG9zZS55bWxcIjtcblx0XHRcdGNvbmZpZy5zZXJ2aWNlID0gXCJkZXZjb250YWluZXJcIjtcblx0XHRcdGNvbmZpZy53b3Jrc3BhY2VGb2xkZXIgPSBcIi93b3Jrc3BhY2VcIjtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5faW5pdGlhbGl6ZUNvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5pbml0aWFsaXplQ29tbWFuZCA9IHRoaXMuX2luaXRpYWxpemVDb21tYW5kO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9tb3VudHMpIHtcblx0XHRcdGNvbmZpZy5tb3VudHMgPSB0aGlzLl9tb3VudHM7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2V4dGVuc2lvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uZmlnLmN1c3RvbWl6YXRpb25zID0geyB2c2NvZGU6IHsgZXh0ZW5zaW9uczogdGhpcy5fZXh0ZW5zaW9ucyB9IH07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3BvcnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbmZpZy5mb3J3YXJkUG9ydHMgPSB0aGlzLl9wb3J0cztcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9ydEF0dHJpYnV0ZXMuc2l6ZSA+IDApIHtcblx0XHRcdGNvbnN0IHBvcnRzQXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgUG9ydEF0dHJpYnV0ZXM+ID0ge307XG5cdFx0XHRmb3IgKGNvbnN0IFtwb3J0LCBhdHRyc10gb2YgdGhpcy5fcG9ydEF0dHJpYnV0ZXMpIHtcblx0XHRcdFx0cG9ydHNBdHRyaWJ1dGVzW1N0cmluZyhwb3J0KV0gPSBhdHRycztcblx0XHRcdH1cblx0XHRcdGNvbmZpZy5wb3J0c0F0dHJpYnV0ZXMgPSBwb3J0c0F0dHJpYnV0ZXM7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3Bvc3RTdGFydENvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5wb3N0U3RhcnRDb21tYW5kID0gdGhpcy5fcG9zdFN0YXJ0Q29tbWFuZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcmVtb3RlVXNlcikge1xuXHRcdFx0Y29uZmlnLnJlbW90ZVVzZXIgPSB0aGlzLl9yZW1vdGVVc2VyO1xuXHRcdH1cblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5kZXZjb250YWluZXIvZGV2Y29udGFpbmVyLmpzb25cIixcblx0XHRcdFx0Y29udGVudDogSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRldkNvbnRhaW5lciIsImtleSIsIldFTExfS05PV05fRklMRVMiLCJERVZDT05UQUlORVJfSlNPTiIsIl9leHRlbnNpb25zIiwiX3BvcnRzIiwiX3BvcnRBdHRyaWJ1dGVzIiwiTWFwIiwiX21vdW50cyIsIl9wb3N0U3RhcnRDb21tYW5kIiwiX2luaXRpYWxpemVDb21tYW5kIiwiX3JlbW90ZVVzZXIiLCJfdXNlQ29tcG9zZSIsImFkZEV4dGVuc2lvbiIsImlkcyIsInB1c2giLCJmb3J3YXJkUG9ydCIsInBvcnRzIiwic2V0UG9ydEF0dHJpYnV0ZXMiLCJwb3J0IiwiYXR0cnMiLCJzZXQiLCJzZXRQb3N0U3RhcnRDb21tYW5kIiwiY21kIiwic2V0SW5pdGlhbGl6ZUNvbW1hbmQiLCJzZXRSZW1vdGVVc2VyIiwidXNlciIsInVzZUNvbXBvc2UiLCJmaWxlcyIsImNvbmZpZyIsImRvY2tlckNvbXBvc2VGaWxlIiwic2VydmljZSIsIndvcmtzcGFjZUZvbGRlciIsImluaXRpYWxpemVDb21tYW5kIiwibW91bnRzIiwibGVuZ3RoIiwiY3VzdG9taXphdGlvbnMiLCJ2c2NvZGUiLCJleHRlbnNpb25zIiwiZm9yd2FyZFBvcnRzIiwic2l6ZSIsInBvcnRzQXR0cmlidXRlcyIsIlN0cmluZyIsInBvc3RTdGFydENvbW1hbmQiLCJyZW1vdGVVc2VyIiwiZmlsZVBhdGgiLCJjb250ZW50IiwiSlNPTiIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFpQmFBOzs7ZUFBQUE7Ozt1QkFqQm9CO0FBaUIxQixNQUFNQTtJQUNJQyxNQUFNQyx1QkFBZ0IsQ0FBQ0MsaUJBQWlCLENBQUM7SUFDeENDLGNBQXdCLEVBQUUsQ0FBQztJQUMzQkMsU0FBbUIsRUFBRSxDQUFDO0lBQ3RCQyxrQkFBa0IsSUFBSUMsTUFBOEI7SUFDcERDLFFBQWtCO0lBQzNCQyxrQkFBMkI7SUFDM0JDLG1CQUE0QjtJQUM1QkMsY0FBYyxPQUFPO0lBQ3JCQyxjQUFjLE1BQU07SUFFNUIsYUFBcUI7UUFDcEIsSUFBSSxDQUFDSixPQUFPLEdBQUc7WUFBQztTQUEyRDtJQUM1RTtJQUVPSyxhQUFhLEdBQUdDLEdBQWEsRUFBUTtRQUMzQyxJQUFJLENBQUNWLFdBQVcsQ0FBQ1csSUFBSSxJQUFJRDtRQUN6QixPQUFPLElBQUk7SUFDWjtJQUVPRSxZQUFZLEdBQUdDLEtBQWUsRUFBUTtRQUM1QyxJQUFJLENBQUNaLE1BQU0sQ0FBQ1UsSUFBSSxJQUFJRTtRQUNwQixPQUFPLElBQUk7SUFDWjtJQUVPQyxrQkFBa0JDLElBQVksRUFBRUMsS0FBcUIsRUFBUTtRQUNuRSxJQUFJLENBQUNkLGVBQWUsQ0FBQ2UsR0FBRyxDQUFDRixNQUFNQztRQUMvQixPQUFPLElBQUk7SUFDWjtJQUVPRSxvQkFBb0JDLEdBQVcsRUFBUTtRQUM3QyxJQUFJLENBQUNkLGlCQUFpQixHQUFHYztRQUN6QixPQUFPLElBQUk7SUFDWjtJQUVPQyxxQkFBcUJELEdBQVcsRUFBUTtRQUM5QyxJQUFJLENBQUNiLGtCQUFrQixHQUFHYTtRQUMxQixPQUFPLElBQUk7SUFDWjtJQUVPRSxjQUFjQyxJQUFZLEVBQVE7UUFDeEMsSUFBSSxDQUFDZixXQUFXLEdBQUdlO1FBQ25CLE9BQU8sSUFBSTtJQUNaO0lBRU9DLGFBQW1CO1FBQ3pCLElBQUksQ0FBQ2YsV0FBVyxHQUFHO1FBQ25CLE9BQU8sSUFBSTtJQUNaO0lBRU9nQixRQUFzQjtRQUM1QixNQUFNQyxTQUFrQyxDQUFDO1FBRXpDLElBQUksSUFBSSxDQUFDakIsV0FBVyxFQUFFO1lBQ3JCaUIsT0FBT0MsaUJBQWlCLEdBQUc7WUFDM0JELE9BQU9FLE9BQU8sR0FBRztZQUNqQkYsT0FBT0csZUFBZSxHQUFHO1FBQzFCO1FBRUEsSUFBSSxJQUFJLENBQUN0QixrQkFBa0IsRUFBRTtZQUM1Qm1CLE9BQU9JLGlCQUFpQixHQUFHLElBQUksQ0FBQ3ZCLGtCQUFrQjtRQUNuRDtRQUVBLElBQUksSUFBSSxDQUFDRixPQUFPLEVBQUU7WUFDakJxQixPQUFPSyxNQUFNLEdBQUcsSUFBSSxDQUFDMUIsT0FBTztRQUM3QjtRQUVBLElBQUksSUFBSSxDQUFDSixXQUFXLENBQUMrQixNQUFNLEdBQUcsR0FBRztZQUNoQ04sT0FBT08sY0FBYyxHQUFHO2dCQUFFQyxRQUFRO29CQUFFQyxZQUFZLElBQUksQ0FBQ2xDLFdBQVc7Z0JBQUM7WUFBRTtRQUNwRTtRQUVBLElBQUksSUFBSSxDQUFDQyxNQUFNLENBQUM4QixNQUFNLEdBQUcsR0FBRztZQUMzQk4sT0FBT1UsWUFBWSxHQUFHLElBQUksQ0FBQ2xDLE1BQU07UUFDbEM7UUFFQSxJQUFJLElBQUksQ0FBQ0MsZUFBZSxDQUFDa0MsSUFBSSxHQUFHLEdBQUc7WUFDbEMsTUFBTUMsa0JBQWtELENBQUM7WUFDekQsS0FBSyxNQUFNLENBQUN0QixNQUFNQyxNQUFNLElBQUksSUFBSSxDQUFDZCxlQUFlLENBQUU7Z0JBQ2pEbUMsZUFBZSxDQUFDQyxPQUFPdkIsTUFBTSxHQUFHQztZQUNqQztZQUNBUyxPQUFPWSxlQUFlLEdBQUdBO1FBQzFCO1FBRUEsSUFBSSxJQUFJLENBQUNoQyxpQkFBaUIsRUFBRTtZQUMzQm9CLE9BQU9jLGdCQUFnQixHQUFHLElBQUksQ0FBQ2xDLGlCQUFpQjtRQUNqRDtRQUVBLElBQUksSUFBSSxDQUFDRSxXQUFXLEVBQUU7WUFDckJrQixPQUFPZSxVQUFVLEdBQUcsSUFBSSxDQUFDakMsV0FBVztRQUNyQztRQUVBLE9BQU87WUFDTjtnQkFDQ2tDLFVBQVU7Z0JBQ1ZDLFNBQVNDLEtBQUtDLFNBQVMsQ0FBQ25CLFFBQVEsTUFBTTtZQUN2QztTQUNBO0lBQ0Y7QUFDRCJ9
@@ -1,221 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get DevContainerImageModel () {
13
- return DevContainerImageModel;
14
- },
15
- get DockerStep () {
16
- return DockerStep;
17
- },
18
- get DockerfileModel () {
19
- return DockerfileModel;
20
- },
21
- get withCommandHistory () {
22
- return withCommandHistory;
23
- },
24
- get withNodeUser () {
25
- return withNodeUser;
26
- },
27
- get withPnpm () {
28
- return withPnpm;
29
- },
30
- get withVsCodeJsDebugBootloaderFix () {
31
- return withVsCodeJsDebugBootloaderFix;
32
- },
33
- get withWorkspaceNodeModulesOwnership () {
34
- return withWorkspaceNodeModulesOwnership;
35
- }
36
- });
37
- const _const = require("./const.js");
38
- class DockerStep {
39
- key;
40
- content;
41
- order;
42
- constructor(key, content, order = 0){
43
- this.key = key;
44
- this.content = content;
45
- this.order = order;
46
- }
47
- static run(key, command, order = 0) {
48
- return new DockerStep(key, `RUN ${command}`, order);
49
- }
50
- static raw(key, content, order = 0) {
51
- return new DockerStep(key, content, order);
52
- }
53
- static entrypoint(key, value, order = 0) {
54
- const content = typeof value === "string" ? `ENTRYPOINT ${value}` : `ENTRYPOINT ${JSON.stringify(value)}`;
55
- return new DockerStep(key, content, order);
56
- }
57
- }
58
- const StepOrder = {
59
- base: 1_000,
60
- features: 5_000,
61
- user: 9_000,
62
- entrypoint: 10_000
63
- };
64
- const VSCODE_BOOTLOADER_FIX_BASH_SNIPPET = `if [[ -n "\${NODE_OPTIONS:-}" && "\${NODE_OPTIONS}" == *"bootloader.js"* ]]; then
65
- _bootloader_path="$(printf '%s\\n' "$NODE_OPTIONS" | sed -n 's/.*--require[= ]\\([^[:space:]]*bootloader\\.js\\).*/\\1/p')"
66
- if [[ -n "\${_bootloader_path}" && ! -f "\${_bootloader_path}" ]]; then
67
- _stable_bootloader="$(find /vscode/vscode-server /home/node/.vscode-server/extensions -name "bootloader.js" -path "*/ms-vscode.js-debug/*" 2>/dev/null | head -1)"
68
- if [[ -n "\${_stable_bootloader}" ]]; then
69
- NODE_OPTIONS="\${NODE_OPTIONS//\${_bootloader_path}/\${_stable_bootloader}}"
70
- else
71
- NODE_OPTIONS="$(printf '%s\\n' "$NODE_OPTIONS" | sed -E 's#(^| )--require(=| )[[:graph:]]*bootloader\\.js( |$)# #g; s# +# #g; s#^ ##; s# $##')"
72
- unset VSCODE_INSPECTOR_OPTIONS
73
- fi
74
- export NODE_OPTIONS
75
- if [[ -z "$NODE_OPTIONS" ]]; then
76
- unset NODE_OPTIONS
77
- fi
78
- fi
79
- unset _bootloader_path _stable_bootloader
80
- fi`;
81
- function withCommandHistory(options) {
82
- const historyDir = options?.historyDir ?? "/commandhistory";
83
- const historyFileName = options?.historyFileName ?? ".bash_history";
84
- const order = options?.order ?? StepOrder.base;
85
- const historyFile = `${historyDir}/${historyFileName}`;
86
- return (dockerfile)=>{
87
- dockerfile.addStep(DockerStep.run("history-dir", `mkdir -p ${historyDir} && touch ${historyFile}`, order)).addStep(DockerStep.raw("history-env", `ENV HISTFILE=${historyFile}`, order + 1));
88
- };
89
- }
90
- function withNodeUser(options) {
91
- const username = options?.username ?? "node";
92
- const includeUserInstruction = options?.includeUserInstruction ?? true;
93
- const order = options?.order ?? StepOrder.features;
94
- return (dockerfile)=>{
95
- dockerfile.addStep(DockerStep.raw("arg-username", `ARG USERNAME=${username}`, order));
96
- if (includeUserInstruction) {
97
- dockerfile.addStep(DockerStep.raw("user", "USER ${USERNAME}", StepOrder.user));
98
- }
99
- };
100
- }
101
- function withPnpm(options) {
102
- const version = options?.version ?? "10";
103
- const usernameExpr = options?.usernameExpr ?? "${USERNAME}";
104
- const order = options?.order ?? StepOrder.features + 100;
105
- return (dockerfile)=>{
106
- dockerfile.addStep(DockerStep.run("pnpm-install", `npm install --global npm@latest && npm add --global pnpm@${version}`, order)).addStep(DockerStep.run("pnpm-config", `mkdir -p /home/${usernameExpr}/.config/pnpm /home/${usernameExpr}/.pnpm-store && chown -R ${usernameExpr}:${usernameExpr} /home/${usernameExpr}/.config /home/${usernameExpr}/.pnpm-store && printf "store-dir=/home/${usernameExpr}/.pnpm-store\\n" > /home/${usernameExpr}/.config/pnpm/rc`, order + 1));
107
- };
108
- }
109
- function withWorkspaceNodeModulesOwnership(options) {
110
- const workspaceDir = options?.workspaceDir ?? "/workspace";
111
- const usernameExpr = options?.usernameExpr ?? "${USERNAME}";
112
- const order = options?.order ?? StepOrder.features + 200;
113
- return (dockerfile)=>{
114
- dockerfile.addStep(DockerStep.raw("workspace-node-modules", `RUN mkdir -p ${workspaceDir}/node_modules && chown ${usernameExpr}:${usernameExpr} ${workspaceDir}/node_modules`, order));
115
- };
116
- }
117
- function withVsCodeJsDebugBootloaderFix(options) {
118
- const bashrcPath = options?.bashrcPath ?? "/home/${USERNAME}/.bashrc";
119
- const order = options?.order ?? StepOrder.features + 300;
120
- return (dockerfile)=>{
121
- dockerfile.addStep(DockerStep.raw("vscode-bootloader-fix", [
122
- "# VS Code / Cursor js-debug Auto Attach injects --require …/bootloader.js into",
123
- "# NODE_OPTIONS. On a fresh Dev Container that path often does not exist yet",
124
- "# (workspaceStorage file is only created after toggling Auto Attach), which crashes",
125
- "# every Node command. If the injected path is missing, prefer the stable",
126
- "# bootloader from the server extension install; otherwise strip the bad require.",
127
- `RUN cat <<'EOF' >> "${bashrcPath}"`,
128
- VSCODE_BOOTLOADER_FIX_BASH_SNIPPET,
129
- "EOF"
130
- ].join("\n"), order));
131
- };
132
- }
133
- class DockerfileModel {
134
- key = _const.WELL_KNOWN_FILES.DOCKERFILE;
135
- _steps = new Map();
136
- _layerWriters = [];
137
- _fromImage;
138
- _layerCounter = 0;
139
- constructor(baseImage){
140
- this._fromImage = baseImage;
141
- this.registerBaseLayers();
142
- }
143
- from(baseImage) {
144
- this._fromImage = baseImage;
145
- return this;
146
- }
147
- addLayer(layer, order = StepOrder.features) {
148
- if (typeof layer === "string") {
149
- const idx = ++this._layerCounter;
150
- const key = `layer-run-${idx}`;
151
- this._layerWriters.push((dockerfile)=>{
152
- dockerfile.addStep(DockerStep.run(key, layer, order + idx));
153
- });
154
- return this;
155
- }
156
- this._layerWriters.push(layer);
157
- return this;
158
- }
159
- addStep(step) {
160
- this._steps.set(step.key, step);
161
- return this;
162
- }
163
- removeStep(key) {
164
- this._steps.delete(key);
165
- return this;
166
- }
167
- entrypoint(value, order = StepOrder.entrypoint) {
168
- this.addStep(DockerStep.entrypoint("entrypoint", value, order));
169
- return this;
170
- }
171
- addRunStep(cmd) {
172
- return this.addLayer(cmd);
173
- }
174
- build() {
175
- for (const layerWriter of this._layerWriters){
176
- layerWriter(this);
177
- }
178
- const lines = [
179
- `FROM ${this._fromImage}`
180
- ];
181
- const sortedSteps = [
182
- ...this._steps.values()
183
- ].sort((left, right)=>{
184
- if (left.order !== right.order) {
185
- return left.order - right.order;
186
- }
187
- return left.key.localeCompare(right.key, "en");
188
- });
189
- for (const step of sortedSteps){
190
- lines.push("", step.content);
191
- }
192
- return `${lines.join("\n")}\n`;
193
- }
194
- registerBaseLayers() {
195
- // Generic base model intentionally has no default layers.
196
- }
197
- files() {
198
- return [
199
- {
200
- filePath: "./Dockerfile",
201
- content: this.build()
202
- }
203
- ];
204
- }
205
- }
206
- class DevContainerImageModel extends DockerfileModel {
207
- registerBaseLayers() {
208
- super.registerBaseLayers();
209
- this.addLayer(withCommandHistory()).addLayer(withVsCodeJsDebugBootloaderFix());
210
- }
211
- files() {
212
- return [
213
- {
214
- filePath: ".devcontainer/Dockerfile",
215
- content: this.build()
216
- }
217
- ];
218
- }
219
- }
220
-
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2RvY2tlci1pbWFnZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCB0eXBlIExheWVyV3JpdGVyID0gKGRvY2tlcmZpbGU6IERvY2tlcmZpbGVNb2RlbCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIERvY2tlclN0ZXAge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoXG5cdFx0cHVibGljIHJlYWRvbmx5IGtleTogc3RyaW5nLFxuXHRcdHB1YmxpYyByZWFkb25seSBjb250ZW50OiBzdHJpbmcsXG5cdFx0cHVibGljIHJlYWRvbmx5IG9yZGVyID0gMCxcblx0KSB7fVxuXG5cdHB1YmxpYyBzdGF0aWMgcnVuKGtleTogc3RyaW5nLCBjb21tYW5kOiBzdHJpbmcsIG9yZGVyID0gMCkge1xuXHRcdHJldHVybiBuZXcgRG9ja2VyU3RlcChrZXksIGBSVU4gJHtjb21tYW5kfWAsIG9yZGVyKTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgcmF3KGtleTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIG9yZGVyID0gMCkge1xuXHRcdHJldHVybiBuZXcgRG9ja2VyU3RlcChrZXksIGNvbnRlbnQsIG9yZGVyKTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgZW50cnlwb2ludChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLCBvcmRlciA9IDApIHtcblx0XHRjb25zdCBjb250ZW50ID1cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIlxuXHRcdFx0XHQ/IGBFTlRSWVBPSU5UICR7dmFsdWV9YFxuXHRcdFx0XHQ6IGBFTlRSWVBPSU5UICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG5cdFx0cmV0dXJuIG5ldyBEb2NrZXJTdGVwKGtleSwgY29udGVudCwgb3JkZXIpO1xuXHR9XG59XG5cbmNvbnN0IFN0ZXBPcmRlciA9IHtcblx0YmFzZTogMV8wMDAsXG5cdGZlYXR1cmVzOiA1XzAwMCxcblx0dXNlcjogOV8wMDAsXG5cdGVudHJ5cG9pbnQ6IDEwXzAwMCxcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IFZTQ09ERV9CT09UTE9BREVSX0ZJWF9CQVNIX1NOSVBQRVQgPSBgaWYgW1sgLW4gXCJcXCR7Tk9ERV9PUFRJT05TOi19XCIgJiYgXCJcXCR7Tk9ERV9PUFRJT05TfVwiID09ICpcImJvb3Rsb2FkZXIuanNcIiogXV07IHRoZW5cbiAgICBfYm9vdGxvYWRlcl9wYXRoPVwiJChwcmludGYgJyVzXFxcXG4nIFwiJE5PREVfT1BUSU9OU1wiIHwgc2VkIC1uICdzLy4qLS1yZXF1aXJlWz0gXVxcXFwoW15bOnNwYWNlOl1dKmJvb3Rsb2FkZXJcXFxcLmpzXFxcXCkuKi9cXFxcMS9wJylcIlxuICAgIGlmIFtbIC1uIFwiXFwke19ib290bG9hZGVyX3BhdGh9XCIgJiYgISAtZiBcIlxcJHtfYm9vdGxvYWRlcl9wYXRofVwiIF1dOyB0aGVuXG4gICAgICAgIF9zdGFibGVfYm9vdGxvYWRlcj1cIiQoZmluZCAvdnNjb2RlL3ZzY29kZS1zZXJ2ZXIgL2hvbWUvbm9kZS8udnNjb2RlLXNlcnZlci9leHRlbnNpb25zIC1uYW1lIFwiYm9vdGxvYWRlci5qc1wiIC1wYXRoIFwiKi9tcy12c2NvZGUuanMtZGVidWcvKlwiIDI+L2Rldi9udWxsIHwgaGVhZCAtMSlcIlxuICAgICAgICBpZiBbWyAtbiBcIlxcJHtfc3RhYmxlX2Jvb3Rsb2FkZXJ9XCIgXV07IHRoZW5cbiAgICAgICAgICAgIE5PREVfT1BUSU9OUz1cIlxcJHtOT0RFX09QVElPTlMvL1xcJHtfYm9vdGxvYWRlcl9wYXRofS9cXCR7X3N0YWJsZV9ib290bG9hZGVyfX1cIlxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBOT0RFX09QVElPTlM9XCIkKHByaW50ZiAnJXNcXFxcbicgXCIkTk9ERV9PUFRJT05TXCIgfCBzZWQgLUUgJ3MjKF58ICktLXJlcXVpcmUoPXwgKVtbOmdyYXBoOl1dKmJvb3Rsb2FkZXJcXFxcLmpzKCB8JCkjICNnOyBzIyAgKyMgI2c7IHMjXiAjIzsgcyMgJCMjJylcIlxuICAgICAgICAgICAgdW5zZXQgVlNDT0RFX0lOU1BFQ1RPUl9PUFRJT05TXG4gICAgICAgIGZpXG4gICAgICAgIGV4cG9ydCBOT0RFX09QVElPTlNcbiAgICAgICAgaWYgW1sgLXogXCIkTk9ERV9PUFRJT05TXCIgXV07IHRoZW5cbiAgICAgICAgICAgIHVuc2V0IE5PREVfT1BUSU9OU1xuICAgICAgICBmaVxuICAgIGZpXG4gICAgdW5zZXQgX2Jvb3Rsb2FkZXJfcGF0aCBfc3RhYmxlX2Jvb3Rsb2FkZXJcbmZpYDtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDb21tYW5kSGlzdG9yeShvcHRpb25zPzoge1xuXHRoaXN0b3J5RGlyPzogc3RyaW5nO1xuXHRoaXN0b3J5RmlsZU5hbWU/OiBzdHJpbmc7XG5cdG9yZGVyPzogbnVtYmVyO1xufSk6IExheWVyV3JpdGVyIHtcblx0Y29uc3QgaGlzdG9yeURpciA9IG9wdGlvbnM/Lmhpc3RvcnlEaXIgPz8gXCIvY29tbWFuZGhpc3RvcnlcIjtcblx0Y29uc3QgaGlzdG9yeUZpbGVOYW1lID0gb3B0aW9ucz8uaGlzdG9yeUZpbGVOYW1lID8/IFwiLmJhc2hfaGlzdG9yeVwiO1xuXHRjb25zdCBvcmRlciA9IG9wdGlvbnM/Lm9yZGVyID8/IFN0ZXBPcmRlci5iYXNlO1xuXHRjb25zdCBoaXN0b3J5RmlsZSA9IGAke2hpc3RvcnlEaXJ9LyR7aGlzdG9yeUZpbGVOYW1lfWA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFwiaGlzdG9yeS1kaXJcIiwgYG1rZGlyIC1wICR7aGlzdG9yeURpcn0gJiYgdG91Y2ggJHtoaXN0b3J5RmlsZX1gLCBvcmRlciksXG5cdFx0XHQpXG5cdFx0XHQuYWRkU3RlcChEb2NrZXJTdGVwLnJhdyhcImhpc3RvcnktZW52XCIsIGBFTlYgSElTVEZJTEU9JHtoaXN0b3J5RmlsZX1gLCBvcmRlciArIDEpKTtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOb2RlVXNlcihvcHRpb25zPzoge1xuXHR1c2VybmFtZT86IHN0cmluZztcblx0aW5jbHVkZVVzZXJJbnN0cnVjdGlvbj86IGJvb2xlYW47XG5cdG9yZGVyPzogbnVtYmVyO1xufSk6IExheWVyV3JpdGVyIHtcblx0Y29uc3QgdXNlcm5hbWUgPSBvcHRpb25zPy51c2VybmFtZSA/PyBcIm5vZGVcIjtcblx0Y29uc3QgaW5jbHVkZVVzZXJJbnN0cnVjdGlvbiA9IG9wdGlvbnM/LmluY2x1ZGVVc2VySW5zdHJ1Y3Rpb24gPz8gdHJ1ZTtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXM7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKERvY2tlclN0ZXAucmF3KFwiYXJnLXVzZXJuYW1lXCIsIGBBUkcgVVNFUk5BTUU9JHt1c2VybmFtZX1gLCBvcmRlcikpO1xuXG5cdFx0aWYgKGluY2x1ZGVVc2VySW5zdHJ1Y3Rpb24pIHtcblx0XHRcdGRvY2tlcmZpbGUuYWRkU3RlcChEb2NrZXJTdGVwLnJhdyhcInVzZXJcIiwgXCJVU0VSICR7VVNFUk5BTUV9XCIsIFN0ZXBPcmRlci51c2VyKSk7XG5cdFx0fVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFBucG0ob3B0aW9ucz86IHtcblx0dmVyc2lvbj86IHN0cmluZztcblx0dXNlcm5hbWVFeHByPzogc3RyaW5nO1xuXHRvcmRlcj86IG51bWJlcjtcbn0pOiBMYXllcldyaXRlciB7XG5cdGNvbnN0IHZlcnNpb24gPSBvcHRpb25zPy52ZXJzaW9uID8/IFwiMTBcIjtcblx0Y29uc3QgdXNlcm5hbWVFeHByID0gb3B0aW9ucz8udXNlcm5hbWVFeHByID8/IFwiJHtVU0VSTkFNRX1cIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAxMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFxuXHRcdFx0XHRcdFwicG5wbS1pbnN0YWxsXCIsXG5cdFx0XHRcdFx0YG5wbSBpbnN0YWxsIC0tZ2xvYmFsIG5wbUBsYXRlc3QgJiYgbnBtIGFkZCAtLWdsb2JhbCBwbnBtQCR7dmVyc2lvbn1gLFxuXHRcdFx0XHRcdG9yZGVyLFxuXHRcdFx0XHQpLFxuXHRcdFx0KVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFxuXHRcdFx0XHRcdFwicG5wbS1jb25maWdcIixcblx0XHRcdFx0XHRgbWtkaXIgLXAgL2hvbWUvJHt1c2VybmFtZUV4cHJ9Ly5jb25maWcvcG5wbSAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLnBucG0tc3RvcmUgJiYgY2hvd24gLVIgJHt1c2VybmFtZUV4cHJ9OiR7dXNlcm5hbWVFeHByfSAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLmNvbmZpZyAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLnBucG0tc3RvcmUgJiYgcHJpbnRmIFwic3RvcmUtZGlyPS9ob21lLyR7dXNlcm5hbWVFeHByfS8ucG5wbS1zdG9yZVxcXFxuXCIgPiAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLmNvbmZpZy9wbnBtL3JjYCxcblx0XHRcdFx0XHRvcmRlciArIDEsXG5cdFx0XHRcdCksXG5cdFx0XHQpO1xuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFdvcmtzcGFjZU5vZGVNb2R1bGVzT3duZXJzaGlwKG9wdGlvbnM/OiB7XG5cdHdvcmtzcGFjZURpcj86IHN0cmluZztcblx0dXNlcm5hbWVFeHByPzogc3RyaW5nO1xuXHRvcmRlcj86IG51bWJlcjtcbn0pOiBMYXllcldyaXRlciB7XG5cdGNvbnN0IHdvcmtzcGFjZURpciA9IG9wdGlvbnM/LndvcmtzcGFjZURpciA/PyBcIi93b3Jrc3BhY2VcIjtcblx0Y29uc3QgdXNlcm5hbWVFeHByID0gb3B0aW9ucz8udXNlcm5hbWVFeHByID8/IFwiJHtVU0VSTkFNRX1cIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAyMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKFxuXHRcdFx0RG9ja2VyU3RlcC5yYXcoXG5cdFx0XHRcdFwid29ya3NwYWNlLW5vZGUtbW9kdWxlc1wiLFxuXHRcdFx0XHRgUlVOIG1rZGlyIC1wICR7d29ya3NwYWNlRGlyfS9ub2RlX21vZHVsZXMgJiYgY2hvd24gJHt1c2VybmFtZUV4cHJ9OiR7dXNlcm5hbWVFeHByfSAke3dvcmtzcGFjZURpcn0vbm9kZV9tb2R1bGVzYCxcblx0XHRcdFx0b3JkZXIsXG5cdFx0XHQpLFxuXHRcdCk7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVnNDb2RlSnNEZWJ1Z0Jvb3Rsb2FkZXJGaXgob3B0aW9ucz86IHtcblx0YmFzaHJjUGF0aD86IHN0cmluZztcblx0b3JkZXI/OiBudW1iZXI7XG59KTogTGF5ZXJXcml0ZXIge1xuXHRjb25zdCBiYXNocmNQYXRoID0gb3B0aW9ucz8uYmFzaHJjUGF0aCA/PyBcIi9ob21lLyR7VVNFUk5BTUV9Ly5iYXNocmNcIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAzMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKFxuXHRcdFx0RG9ja2VyU3RlcC5yYXcoXG5cdFx0XHRcdFwidnNjb2RlLWJvb3Rsb2FkZXItZml4XCIsXG5cdFx0XHRcdFtcblx0XHRcdFx0XHRcIiMgVlMgQ29kZSAvIEN1cnNvciBqcy1kZWJ1ZyBBdXRvIEF0dGFjaCBpbmplY3RzIC0tcmVxdWlyZSDigKYvYm9vdGxvYWRlci5qcyBpbnRvXCIsXG5cdFx0XHRcdFx0XCIjIE5PREVfT1BUSU9OUy4gT24gYSBmcmVzaCBEZXYgQ29udGFpbmVyIHRoYXQgcGF0aCBvZnRlbiBkb2VzIG5vdCBleGlzdCB5ZXRcIixcblx0XHRcdFx0XHRcIiMgKHdvcmtzcGFjZVN0b3JhZ2UgZmlsZSBpcyBvbmx5IGNyZWF0ZWQgYWZ0ZXIgdG9nZ2xpbmcgQXV0byBBdHRhY2gpLCB3aGljaCBjcmFzaGVzXCIsXG5cdFx0XHRcdFx0XCIjIGV2ZXJ5IE5vZGUgY29tbWFuZC4gSWYgdGhlIGluamVjdGVkIHBhdGggaXMgbWlzc2luZywgcHJlZmVyIHRoZSBzdGFibGVcIixcblx0XHRcdFx0XHRcIiMgYm9vdGxvYWRlciBmcm9tIHRoZSBzZXJ2ZXIgZXh0ZW5zaW9uIGluc3RhbGw7IG90aGVyd2lzZSBzdHJpcCB0aGUgYmFkIHJlcXVpcmUuXCIsXG5cdFx0XHRcdFx0YFJVTiBjYXQgPDwnRU9GJyA+PiBcIiR7YmFzaHJjUGF0aH1cImAsXG5cdFx0XHRcdFx0VlNDT0RFX0JPT1RMT0FERVJfRklYX0JBU0hfU05JUFBFVCxcblx0XHRcdFx0XHRcIkVPRlwiLFxuXHRcdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0XHRcdG9yZGVyLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9O1xufVxuXG5leHBvcnQgY2xhc3MgRG9ja2VyZmlsZU1vZGVsIGltcGxlbWVudHMgS2V5ZWRNb2RlbCB7XG5cdHB1YmxpYyByZWFkb25seSBrZXkgPSBXRUxMX0tOT1dOX0ZJTEVTLkRPQ0tFUkZJTEU7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3N0ZXBzID0gbmV3IE1hcDxzdHJpbmcsIERvY2tlclN0ZXA+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2xheWVyV3JpdGVyczogTGF5ZXJXcml0ZXJbXSA9IFtdO1xuXHRwcml2YXRlIF9mcm9tSW1hZ2U6IHN0cmluZztcblx0cHJpdmF0ZSBfbGF5ZXJDb3VudGVyID0gMDtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYmFzZUltYWdlOiBzdHJpbmcpIHtcblx0XHR0aGlzLl9mcm9tSW1hZ2UgPSBiYXNlSW1hZ2U7XG5cdFx0dGhpcy5yZWdpc3RlckJhc2VMYXllcnMoKTtcblx0fVxuXG5cdHB1YmxpYyBmcm9tKGJhc2VJbWFnZTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fZnJvbUltYWdlID0gYmFzZUltYWdlO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFkZExheWVyKGxheWVyOiBMYXllcldyaXRlciB8IHN0cmluZywgb3JkZXIgPSBTdGVwT3JkZXIuZmVhdHVyZXMpOiB0aGlzIHtcblx0XHRpZiAodHlwZW9mIGxheWVyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRjb25zdCBpZHggPSArK3RoaXMuX2xheWVyQ291bnRlcjtcblx0XHRcdGNvbnN0IGtleSA9IGBsYXllci1ydW4tJHtpZHh9YDtcblx0XHRcdHRoaXMuX2xheWVyV3JpdGVycy5wdXNoKChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0XHRcdGRvY2tlcmZpbGUuYWRkU3RlcChEb2NrZXJTdGVwLnJ1bihrZXksIGxheWVyLCBvcmRlciArIGlkeCkpO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHR0aGlzLl9sYXllcldyaXRlcnMucHVzaChsYXllcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgYWRkU3RlcChzdGVwOiBEb2NrZXJTdGVwKTogdGhpcyB7XG5cdFx0dGhpcy5fc3RlcHMuc2V0KHN0ZXAua2V5LCBzdGVwKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZW1vdmVTdGVwKGtleTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fc3RlcHMuZGVsZXRlKGtleSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZW50cnlwb2ludCh2YWx1ZTogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW10sIG9yZGVyID0gU3RlcE9yZGVyLmVudHJ5cG9pbnQpOiB0aGlzIHtcblx0XHR0aGlzLmFkZFN0ZXAoRG9ja2VyU3RlcC5lbnRyeXBvaW50KFwiZW50cnlwb2ludFwiLCB2YWx1ZSwgb3JkZXIpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBhZGRSdW5TdGVwKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkTGF5ZXIoY21kKTtcblx0fVxuXG5cdHB1YmxpYyBidWlsZCgpOiBzdHJpbmcge1xuXHRcdGZvciAoY29uc3QgbGF5ZXJXcml0ZXIgb2YgdGhpcy5fbGF5ZXJXcml0ZXJzKSB7XG5cdFx0XHRsYXllcldyaXRlcih0aGlzKTtcblx0XHR9XG5cblx0XHRjb25zdCBsaW5lcyA9IFtgRlJPTSAke3RoaXMuX2Zyb21JbWFnZX1gXTtcblx0XHRjb25zdCBzb3J0ZWRTdGVwcyA9IFsuLi50aGlzLl9zdGVwcy52YWx1ZXMoKV0uc29ydCgobGVmdCwgcmlnaHQpID0+IHtcblx0XHRcdGlmIChsZWZ0Lm9yZGVyICE9PSByaWdodC5vcmRlcikge1xuXHRcdFx0XHRyZXR1cm4gbGVmdC5vcmRlciAtIHJpZ2h0Lm9yZGVyO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGxlZnQua2V5LmxvY2FsZUNvbXBhcmUocmlnaHQua2V5LCBcImVuXCIpO1xuXHRcdH0pO1xuXG5cdFx0Zm9yIChjb25zdCBzdGVwIG9mIHNvcnRlZFN0ZXBzKSB7XG5cdFx0XHRsaW5lcy5wdXNoKFwiXCIsIHN0ZXAuY29udGVudCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuYDtcblx0fVxuXG5cdHByb3RlY3RlZCByZWdpc3RlckJhc2VMYXllcnMoKTogdm9pZCB7XG5cdFx0Ly8gR2VuZXJpYyBiYXNlIG1vZGVsIGludGVudGlvbmFsbHkgaGFzIG5vIGRlZmF1bHQgbGF5ZXJzLlxuXHR9XG5cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwiLi9Eb2NrZXJmaWxlXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IHRoaXMuYnVpbGQoKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRGV2Q29udGFpbmVySW1hZ2VNb2RlbCBleHRlbmRzIERvY2tlcmZpbGVNb2RlbCB7XG5cdHByb3RlY3RlZCBvdmVycmlkZSByZWdpc3RlckJhc2VMYXllcnMoKTogdm9pZCB7XG5cdFx0c3VwZXIucmVnaXN0ZXJCYXNlTGF5ZXJzKCk7XG5cdFx0dGhpcy5hZGRMYXllcih3aXRoQ29tbWFuZEhpc3RvcnkoKSkuYWRkTGF5ZXIod2l0aFZzQ29kZUpzRGVidWdCb290bG9hZGVyRml4KCkpO1xuXHR9XG5cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwiLmRldmNvbnRhaW5lci9Eb2NrZXJmaWxlXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IHRoaXMuYnVpbGQoKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRldkNvbnRhaW5lckltYWdlTW9kZWwiLCJEb2NrZXJTdGVwIiwiRG9ja2VyZmlsZU1vZGVsIiwid2l0aENvbW1hbmRIaXN0b3J5Iiwid2l0aE5vZGVVc2VyIiwid2l0aFBucG0iLCJ3aXRoVnNDb2RlSnNEZWJ1Z0Jvb3Rsb2FkZXJGaXgiLCJ3aXRoV29ya3NwYWNlTm9kZU1vZHVsZXNPd25lcnNoaXAiLCJrZXkiLCJjb250ZW50Iiwib3JkZXIiLCJydW4iLCJjb21tYW5kIiwicmF3IiwiZW50cnlwb2ludCIsInZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsIlN0ZXBPcmRlciIsImJhc2UiLCJmZWF0dXJlcyIsInVzZXIiLCJWU0NPREVfQk9PVExPQURFUl9GSVhfQkFTSF9TTklQUEVUIiwib3B0aW9ucyIsImhpc3RvcnlEaXIiLCJoaXN0b3J5RmlsZU5hbWUiLCJoaXN0b3J5RmlsZSIsImRvY2tlcmZpbGUiLCJhZGRTdGVwIiwidXNlcm5hbWUiLCJpbmNsdWRlVXNlckluc3RydWN0aW9uIiwidmVyc2lvbiIsInVzZXJuYW1lRXhwciIsIndvcmtzcGFjZURpciIsImJhc2hyY1BhdGgiLCJqb2luIiwiV0VMTF9LTk9XTl9GSUxFUyIsIkRPQ0tFUkZJTEUiLCJfc3RlcHMiLCJNYXAiLCJfbGF5ZXJXcml0ZXJzIiwiX2Zyb21JbWFnZSIsIl9sYXllckNvdW50ZXIiLCJiYXNlSW1hZ2UiLCJyZWdpc3RlckJhc2VMYXllcnMiLCJmcm9tIiwiYWRkTGF5ZXIiLCJsYXllciIsImlkeCIsInB1c2giLCJzdGVwIiwic2V0IiwicmVtb3ZlU3RlcCIsImRlbGV0ZSIsImFkZFJ1blN0ZXAiLCJjbWQiLCJidWlsZCIsImxheWVyV3JpdGVyIiwibGluZXMiLCJzb3J0ZWRTdGVwcyIsInZhbHVlcyIsInNvcnQiLCJsZWZ0IiwicmlnaHQiLCJsb2NhbGVDb21wYXJlIiwiZmlsZXMiLCJmaWxlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUEwUGFBO2VBQUFBOztRQXJQQUM7ZUFBQUE7O1FBaUtBQztlQUFBQTs7UUFoSEdDO2VBQUFBOztRQW1CQUM7ZUFBQUE7O1FBa0JBQztlQUFBQTs7UUFnREFDO2VBQUFBOztRQXBCQUM7ZUFBQUE7Ozt1QkF2SGlCO0FBSzFCLE1BQU1OOzs7O0lBQ1osWUFDQyxBQUFnQk8sR0FBVyxFQUMzQixBQUFnQkMsT0FBZSxFQUMvQixBQUFnQkMsUUFBUSxDQUFDLENBQ3hCO2FBSGVGLE1BQUFBO2FBQ0FDLFVBQUFBO2FBQ0FDLFFBQUFBO0lBQ2Q7SUFFSCxPQUFjQyxJQUFJSCxHQUFXLEVBQUVJLE9BQWUsRUFBRUYsUUFBUSxDQUFD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
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "EnvFile", {
6
- enumerable: true,
7
- get: function() {
8
- return EnvFile;
9
- }
10
- });
11
- const _nodefs = require("node:fs");
12
- const _const = require("./const.js");
13
- class EnvFile {
14
- key = _const.WELL_KNOWN_FILES.ENV_FILE;
15
- _entries = new Map();
16
- addEntry(key, value) {
17
- this._entries.set(key, value);
18
- return this;
19
- }
20
- static fromFile(absolutePath) {
21
- const env = new EnvFile();
22
- const raw = (0, _nodefs.readFileSync)(absolutePath, "utf8");
23
- for (const line of raw.split("\n")){
24
- const trimmed = line.trim();
25
- if (trimmed === "" || trimmed.startsWith("#")) continue;
26
- const eq = line.indexOf("=");
27
- if (eq <= 0) continue;
28
- env.addEntry(line.slice(0, eq).trim(), line.slice(eq + 1));
29
- }
30
- return env;
31
- }
32
- files() {
33
- if (this._entries.size === 0) return [];
34
- const body = [
35
- ...this._entries.entries()
36
- ].map(([k, v])=>`${k}=${v}`).join("\n");
37
- const content = `${body}\n`;
38
- return [
39
- {
40
- filePath: ".env",
41
- content
42
- }
43
- ];
44
- }
45
- }
46
-
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2Vudi1maWxlLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKlxuICogQWNjdW11bGF0ZXMga2V5PXZhbHVlIHBhaXJzIGFuZCByZW5kZXJzIHRoZW0gYXMgYSBgLmVudmAgZmlsZS5cbiAqXG4gKiBSZWdpc3RlciBvbmNlIGluIHRoZSB3b3Jrc3BhY2U7IGZlYXR1cmVzIGNhbGwgYGFkZEVudHJ5YCBkdXJpbmcgdGhlaXJcbiAqIHNjYWZmb2xkIHBoYXNlIHRvIGNvbnRyaWJ1dGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGUgZmluYWwgZmlsZSBpc1xuICogd3JpdHRlbiBhdCByZW5kZXIgdGltZSB3aGVuIGB3b3Jrc3BhY2Uuc2NhZmZvbGQoKWAgaXMgY2FsbGVkLlxuICovXG5leHBvcnQgY2xhc3MgRW52RmlsZSBpbXBsZW1lbnRzIEtleWVkTW9kZWwge1xuXHRwdWJsaWMgcmVhZG9ubHkga2V5ID0gV0VMTF9LTk9XTl9GSUxFUy5FTlZfRklMRTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9lbnRyaWVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuXHRwdWJsaWMgYWRkRW50cnkoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9lbnRyaWVzLnNldChrZXksIHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgZnJvbUZpbGUoYWJzb2x1dGVQYXRoOiBzdHJpbmcpOiBFbnZGaWxlIHtcblx0XHRjb25zdCBlbnYgPSBuZXcgRW52RmlsZSgpO1xuXHRcdGNvbnN0IHJhdyA9IHJlYWRGaWxlU3luYyhhYnNvbHV0ZVBhdGgsIFwidXRmOFwiKTtcblx0XHRmb3IgKGNvbnN0IGxpbmUgb2YgcmF3LnNwbGl0KFwiXFxuXCIpKSB7XG5cdFx0XHRjb25zdCB0cmltbWVkID0gbGluZS50cmltKCk7XG5cdFx0XHRpZiAodHJpbW1lZCA9PT0gXCJcIiB8fCB0cmltbWVkLnN0YXJ0c1dpdGgoXCIjXCIpKSBjb250aW51ZTtcblx0XHRcdGNvbnN0IGVxID0gbGluZS5pbmRleE9mKFwiPVwiKTtcblx0XHRcdGlmIChlcSA8PSAwKSBjb250aW51ZTtcblx0XHRcdGVudi5hZGRFbnRyeShsaW5lLnNsaWNlKDAsIGVxKS50cmltKCksIGxpbmUuc2xpY2UoZXEgKyAxKSk7XG5cdFx0fVxuXHRcdHJldHVybiBlbnY7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRpZiAodGhpcy5fZW50cmllcy5zaXplID09PSAwKSByZXR1cm4gW107XG5cdFx0Y29uc3QgYm9keSA9IFsuLi50aGlzLl9lbnRyaWVzLmVudHJpZXMoKV0ubWFwKChbaywgdl0pID0+IGAke2t9PSR7dn1gKS5qb2luKFwiXFxuXCIpO1xuXHRcdGNvbnN0IGNvbnRlbnQgPSBgJHtib2R5fVxcbmA7XG5cdFx0cmV0dXJuIFt7IGZpbGVQYXRoOiBcIi5lbnZcIiwgY29udGVudCB9XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkVudkZpbGUiLCJrZXkiLCJXRUxMX0tOT1dOX0ZJTEVTIiwiRU5WX0ZJTEUiLCJfZW50cmllcyIsIk1hcCIsImFkZEVudHJ5IiwidmFsdWUiLCJzZXQiLCJmcm9tRmlsZSIsImFic29sdXRlUGF0aCIsImVudiIsInJhdyIsInJlYWRGaWxlU3luYyIsImxpbmUiLCJzcGxpdCIsInRyaW1tZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImVxIiwiaW5kZXhPZiIsInNsaWNlIiwiZmlsZXMiLCJzaXplIiwiYm9keSIsImVudHJpZXMiLCJtYXAiLCJrIiwidiIsImpvaW4iLCJjb250ZW50IiwiZmlsZVBhdGgiXSwibWFwcGluZ3MiOiI7Ozs7K0JBV2FBOzs7ZUFBQUE7Ozt3QkFYZ0I7dUJBQ0k7QUFVMUIsTUFBTUE7SUFDSUMsTUFBTUMsdUJBQWdCLENBQUNDLFFBQVEsQ0FBQztJQUUvQkMsV0FBVyxJQUFJQyxNQUFzQjtJQUUvQ0MsU0FBU0wsR0FBVyxFQUFFTSxLQUFhLEVBQVE7UUFDakQsSUFBSSxDQUFDSCxRQUFRLENBQUNJLEdBQUcsQ0FBQ1AsS0FBS007UUFDdkIsT0FBTyxJQUFJO0lBQ1o7SUFFQSxPQUFjRSxTQUFTQyxZQUFvQixFQUFXO1FBQ3JELE1BQU1DLE1BQU0sSUFBSVg7UUFDaEIsTUFBTVksTUFBTUMsSUFBQUEsb0JBQVksRUFBQ0gsY0FBYztRQUN2QyxLQUFLLE1BQU1JLFFBQVFGLElBQUlHLEtBQUssQ0FBQyxNQUFPO1lBQ25DLE1BQU1DLFVBQVVGLEtBQUtHLElBQUk7WUFDekIsSUFBSUQsWUFBWSxNQUFNQSxRQUFRRSxVQUFVLENBQUMsTUFBTTtZQUMvQyxNQUFNQyxLQUFLTCxLQUFLTSxPQUFPLENBQUM7WUFDeEIsSUFBSUQsTUFBTSxHQUFHO1lBQ2JSLElBQUlMLFFBQVEsQ0FBQ1EsS0FBS08sS0FBSyxDQUFDLEdBQUdGLElBQUlGLElBQUksSUFBSUgsS0FBS08sS0FBSyxDQUFDRixLQUFLO1FBQ3hEO1FBQ0EsT0FBT1I7SUFDUjtJQUVPVyxRQUFzQjtRQUM1QixJQUFJLElBQUksQ0FBQ2xCLFFBQVEsQ0FBQ21CLElBQUksS0FBSyxHQUFHLE9BQU8sRUFBRTtRQUN2QyxNQUFNQyxPQUFPO2VBQUksSUFBSSxDQUFDcEIsUUFBUSxDQUFDcUIsT0FBTztTQUFHLENBQUNDLEdBQUcsQ0FBQyxDQUFDLENBQUNDLEdBQUdDLEVBQUUsR0FBSyxHQUFHRCxFQUFFLENBQUMsRUFBRUMsR0FBRyxFQUFFQyxJQUFJLENBQUM7UUFDNUUsTUFBTUMsVUFBVSxHQUFHTixLQUFLLEVBQUUsQ0FBQztRQUMzQixPQUFPO1lBQUM7Z0JBQUVPLFVBQVU7Z0JBQVFEO1lBQVE7U0FBRTtJQUN2QztBQUNEIn0=
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "Gitignore", {
6
- enumerable: true,
7
- get: function() {
8
- return Gitignore;
9
- }
10
- });
11
- const _const = require("./const.js");
12
- class Gitignore {
13
- key = _const.WELL_KNOWN_FILES.GITIGNORE;
14
- ignoreList = [
15
- "node_modules",
16
- "dist",
17
- ".pnpm-store",
18
- ".env",
19
- ".DS_Store"
20
- ];
21
- files() {
22
- return [
23
- {
24
- filePath: ".gitignore",
25
- content: this.ignoreList.join("\n")
26
- }
27
- ];
28
- }
29
- }
30
-
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2dpdGlnbm9yZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBHaXRpZ25vcmUgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuR0lUSUdOT1JFO1xuXHRwcml2YXRlIGlnbm9yZUxpc3QgPSBbXCJub2RlX21vZHVsZXNcIiwgXCJkaXN0XCIsIFwiLnBucG0tc3RvcmVcIiwgXCIuZW52XCIsIFwiLkRTX1N0b3JlXCJdO1xuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5naXRpZ25vcmVcIixcblx0XHRcdFx0Y29udGVudDogdGhpcy5pZ25vcmVMaXN0LmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJHaXRpZ25vcmUiLCJrZXkiLCJXRUxMX0tOT1dOX0ZJTEVTIiwiR0lUSUdOT1JFIiwiaWdub3JlTGlzdCIsImZpbGVzIiwiZmlsZVBhdGgiLCJjb250ZW50Iiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFHYUE7OztlQUFBQTs7O3VCQUhvQjtBQUcxQixNQUFNQTtJQUNJQyxNQUFNQyx1QkFBZ0IsQ0FBQ0MsU0FBUyxDQUFDO0lBQ3pDQyxhQUFhO1FBQUM7UUFBZ0I7UUFBUTtRQUFlO1FBQVE7S0FBWSxDQUFDO0lBRTNFQyxRQUFzQjtRQUM1QixPQUFPO1lBQ047Z0JBQ0NDLFVBQVU7Z0JBQ1ZDLFNBQVMsSUFBSSxDQUFDSCxVQUFVLENBQUNJLElBQUksQ0FBQztZQUMvQjtTQUNBO0lBQ0Y7QUFDRCJ9
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "LaunchJson", {
6
- enumerable: true,
7
- get: function() {
8
- return LaunchJson;
9
- }
10
- });
11
- const _const = require("./const.js");
12
- class LaunchJson {
13
- apiNames;
14
- key = _const.WELL_KNOWN_FILES.LAUNCH_JSON;
15
- constructor(apiNames = [
16
- "api"
17
- ]){
18
- this.apiNames = apiNames;
19
- }
20
- files() {
21
- const configurations = [
22
- {
23
- name: "Build",
24
- type: "node",
25
- request: "launch",
26
- runtimeExecutable: "pnpm",
27
- runtimeArgs: [
28
- "build"
29
- ],
30
- console: "integratedTerminal",
31
- // biome-ignore lint/suspicious/noTemplateCurlyInString: VS Code variable
32
- cwd: "${workspaceFolder}"
33
- }
34
- ];
35
- const first = this.apiNames[0] ?? "api";
36
- const defaultDevArgs = first === "api" && this.apiNames.length === 1 ? [
37
- "dev"
38
- ] : [
39
- "run",
40
- `dev:${first}`
41
- ];
42
- configurations.push(serveConfig("Serve / Dev", defaultDevArgs));
43
- for (const apiName of this.apiNames){
44
- if (apiName === first && this.apiNames.length === 1 && apiName === "api") continue;
45
- configurations.push(serveConfig(`Serve / Dev (${apiName})`, [
46
- "run",
47
- `dev:${apiName}`
48
- ]));
49
- }
50
- return [
51
- {
52
- filePath: ".vscode/launch.json",
53
- content: JSON.stringify({
54
- version: "0.2.0",
55
- configurations
56
- }, null, 2)
57
- }
58
- ];
59
- }
60
- }
61
- function serveConfig(name, runtimeArgs) {
62
- return {
63
- name,
64
- type: "node",
65
- request: "launch",
66
- runtimeExecutable: "pnpm",
67
- runtimeArgs,
68
- console: "integratedTerminal",
69
- // biome-ignore lint/suspicious/noTemplateCurlyInString: VS Code variable
70
- cwd: "${workspaceFolder}"
71
- };
72
- }
73
-
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2xhdW5jaC1qc29uLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXllZE1vZGVsLCBTb3VyY2VGaWxlIH0gZnJvbSBcIi4vc291cmNlLWZpbGUuanNcIjtcblxuZXhwb3J0IGNsYXNzIExhdW5jaEpzb24gaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuTEFVTkNIX0pTT047XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBpTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1wiYXBpXCJdKSB7fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdGNvbnN0IGNvbmZpZ3VyYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdID0gW1xuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiBcIkJ1aWxkXCIsXG5cdFx0XHRcdHR5cGU6IFwibm9kZVwiLFxuXHRcdFx0XHRyZXF1ZXN0OiBcImxhdW5jaFwiLFxuXHRcdFx0XHRydW50aW1lRXhlY3V0YWJsZTogXCJwbnBtXCIsXG5cdFx0XHRcdHJ1bnRpbWVBcmdzOiBbXCJidWlsZFwiXSxcblx0XHRcdFx0Y29uc29sZTogXCJpbnRlZ3JhdGVkVGVybWluYWxcIixcblx0XHRcdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub1RlbXBsYXRlQ3VybHlJblN0cmluZzogVlMgQ29kZSB2YXJpYWJsZVxuXHRcdFx0XHRjd2Q6IFwiJHt3b3Jrc3BhY2VGb2xkZXJ9XCIsXG5cdFx0XHR9LFxuXHRcdF07XG5cblx0XHRjb25zdCBmaXJzdCA9IHRoaXMuYXBpTmFtZXNbMF0gPz8gXCJhcGlcIjtcblx0XHRjb25zdCBkZWZhdWx0RGV2QXJncyA9XG5cdFx0XHRmaXJzdCA9PT0gXCJhcGlcIiAmJiB0aGlzLmFwaU5hbWVzLmxlbmd0aCA9PT0gMSA/IFtcImRldlwiXSA6IFtcInJ1blwiLCBgZGV2OiR7Zmlyc3R9YF07XG5cdFx0Y29uZmlndXJhdGlvbnMucHVzaChzZXJ2ZUNvbmZpZyhcIlNlcnZlIC8gRGV2XCIsIGRlZmF1bHREZXZBcmdzKSk7XG5cblx0XHRmb3IgKGNvbnN0IGFwaU5hbWUgb2YgdGhpcy5hcGlOYW1lcykge1xuXHRcdFx0aWYgKGFwaU5hbWUgPT09IGZpcnN0ICYmIHRoaXMuYXBpTmFtZXMubGVuZ3RoID09PSAxICYmIGFwaU5hbWUgPT09IFwiYXBpXCIpIGNvbnRpbnVlO1xuXHRcdFx0Y29uZmlndXJhdGlvbnMucHVzaChzZXJ2ZUNvbmZpZyhgU2VydmUgLyBEZXYgKCR7YXBpTmFtZX0pYCwgW1wicnVuXCIsIGBkZXY6JHthcGlOYW1lfWBdKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwiLnZzY29kZS9sYXVuY2guanNvblwiLFxuXHRcdFx0XHRjb250ZW50OiBKU09OLnN0cmluZ2lmeShcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR2ZXJzaW9uOiBcIjAuMi4wXCIsXG5cdFx0XHRcdFx0XHRjb25maWd1cmF0aW9ucyxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0Mixcblx0XHRcdFx0KSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuXG5mdW5jdGlvbiBzZXJ2ZUNvbmZpZyhuYW1lOiBzdHJpbmcsIHJ1bnRpbWVBcmdzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0cmV0dXJuIHtcblx0XHRuYW1lLFxuXHRcdHR5cGU6IFwibm9kZVwiLFxuXHRcdHJlcXVlc3Q6IFwibGF1bmNoXCIsXG5cdFx0cnVudGltZUV4ZWN1dGFibGU6IFwicG5wbVwiLFxuXHRcdHJ1bnRpbWVBcmdzLFxuXHRcdGNvbnNvbGU6IFwiaW50ZWdyYXRlZFRlcm1pbmFsXCIsXG5cdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub1RlbXBsYXRlQ3VybHlJblN0cmluZzogVlMgQ29kZSB2YXJpYWJsZVxuXHRcdGN3ZDogXCIke3dvcmtzcGFjZUZvbGRlcn1cIixcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJMYXVuY2hKc29uIiwia2V5IiwiV0VMTF9LTk9XTl9GSUxFUyIsIkxBVU5DSF9KU09OIiwiYXBpTmFtZXMiLCJmaWxlcyIsImNvbmZpZ3VyYXRpb25zIiwibmFtZSIsInR5cGUiLCJyZXF1ZXN0IiwicnVudGltZUV4ZWN1dGFibGUiLCJydW50aW1lQXJncyIsImNvbnNvbGUiLCJjd2QiLCJmaXJzdCIsImRlZmF1bHREZXZBcmdzIiwibGVuZ3RoIiwicHVzaCIsInNlcnZlQ29uZmlnIiwiYXBpTmFtZSIsImZpbGVQYXRoIiwiY29udGVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2ZXJzaW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7dUJBSG9CO0FBRzFCLE1BQU1BOztJQUNJQyxNQUFNQyx1QkFBZ0IsQ0FBQ0MsV0FBVyxDQUFDO0lBRW5ELFlBQW1CLEFBQWlCQyxXQUE4QjtRQUFDO0tBQU0sQ0FBRTthQUF2Q0EsV0FBQUE7SUFBd0M7SUFFckVDLFFBQXNCO1FBQzVCLE1BQU1DLGlCQUE0QztZQUNqRDtnQkFDQ0MsTUFBTTtnQkFDTkMsTUFBTTtnQkFDTkMsU0FBUztnQkFDVEMsbUJBQW1CO2dCQUNuQkMsYUFBYTtvQkFBQztpQkFBUTtnQkFDdEJDLFNBQVM7Z0JBQ1QseUVBQXlFO2dCQUN6RUMsS0FBSztZQUNOO1NBQ0E7UUFFRCxNQUFNQyxRQUFRLElBQUksQ0FBQ1YsUUFBUSxDQUFDLEVBQUUsSUFBSTtRQUNsQyxNQUFNVyxpQkFDTEQsVUFBVSxTQUFTLElBQUksQ0FBQ1YsUUFBUSxDQUFDWSxNQUFNLEtBQUssSUFBSTtZQUFDO1NBQU0sR0FBRztZQUFDO1lBQU8sQ0FBQyxJQUFJLEVBQUVGLE9BQU87U0FBQztRQUNsRlIsZUFBZVcsSUFBSSxDQUFDQyxZQUFZLGVBQWVIO1FBRS9DLEtBQUssTUFBTUksV0FBVyxJQUFJLENBQUNmLFFBQVEsQ0FBRTtZQUNwQyxJQUFJZSxZQUFZTCxTQUFTLElBQUksQ0FBQ1YsUUFBUSxDQUFDWSxNQUFNLEtBQUssS0FBS0csWUFBWSxPQUFPO1lBQzFFYixlQUFlVyxJQUFJLENBQUNDLFlBQVksQ0FBQyxhQUFhLEVBQUVDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7Z0JBQUM7Z0JBQU8sQ0FBQyxJQUFJLEVBQUVBLFNBQVM7YUFBQztRQUN0RjtRQUVBLE9BQU87WUFDTjtnQkFDQ0MsVUFBVTtnQkFDVkMsU0FBU0MsS0FBS0MsU0FBUyxDQUN0QjtvQkFDQ0MsU0FBUztvQkFDVGxCO2dCQUNELEdBQ0EsTUFDQTtZQUVGO1NBQ0E7SUFDRjtBQUNEO0FBRUEsU0FBU1ksWUFBWVgsSUFBWSxFQUFFSSxXQUFxQjtJQUN2RCxPQUFPO1FBQ05KO1FBQ0FDLE1BQU07UUFDTkMsU0FBUztRQUNUQyxtQkFBbUI7UUFDbkJDO1FBQ0FDLFNBQVM7UUFDVCx5RUFBeUU7UUFDekVDLEtBQUs7SUFDTjtBQUNEIn0=