diff --git a/experiments/x86emu/www/main.js b/experiments/x86emu/www/main.js
index b936876e..7579d91f 100755
--- a/experiments/x86emu/www/main.js
+++ b/experiments/x86emu/www/main.js
@@ -16,25 +16,6 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-
-/*
- * Copyright (C) 2024 Puter Technologies Inc.
- *
- * This file is part of Puter.
- *
- * Puter is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
"use strict";
import('./js/InstanceManager.mjs').then(module => {
diff --git a/mods/mods_available/example-singlefile.js b/mods/mods_available/example-singlefile.js
index c361c7b1..d14cd1fb 100644
--- a/mods/mods_available/example-singlefile.js
+++ b/mods/mods_available/example-singlefile.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
extension.get('/example-onefile-get', (req, res) => {
res.send('Hello World!');
});
diff --git a/mods/mods_available/example/main.js b/mods/mods_available/example/main.js
index f796977e..d44b68ca 100644
--- a/mods/mods_available/example/main.js
+++ b/mods/mods_available/example/main.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
extension.get('/example-mod-get', (req, res) => {
res.send('Hello World!');
});
diff --git a/src/backend/src/Extension.js b/src/backend/src/Extension.js
index 9952445e..4be628dd 100644
--- a/src/backend/src/Extension.js
+++ b/src/backend/src/Extension.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
const EmitterFeature = require("@heyputer/putility/src/features/EmitterFeature");
const { Context } = require("./util/context");
diff --git a/src/backend/src/ExtensionModule.js b/src/backend/src/ExtensionModule.js
index 8461a6b8..2dddf498 100644
--- a/src/backend/src/ExtensionModule.js
+++ b/src/backend/src/ExtensionModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
const uuid = require('uuid');
const { ExtensionService } = require("./ExtensionService");
diff --git a/src/backend/src/ExtensionService.js b/src/backend/src/ExtensionService.js
index 8c867a9c..7ad982ca 100644
--- a/src/backend/src/ExtensionService.js
+++ b/src/backend/src/ExtensionService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
const BaseService = require("./services/BaseService");
const { Endpoint } = require("./util/expressutil");
diff --git a/src/backend/src/api/eggspress.js b/src/backend/src/api/eggspress.js
index 5840ef9f..4d54439a 100644
--- a/src/backend/src/api/eggspress.js
+++ b/src/backend/src/api/eggspress.js
@@ -1,2 +1,21 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// This file is a legacy alias
module.exports = require('../modules/web/lib/eggspress.js');
diff --git a/src/backend/src/data/hardcoded-permissions.js b/src/backend/src/data/hardcoded-permissions.js
index 778f2768..e017ce39 100644
--- a/src/backend/src/data/hardcoded-permissions.js
+++ b/src/backend/src/data/hardcoded-permissions.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const default_implicit_user_app_permissions = {
'driver:helloworld:greet': {},
'driver:puter-kvstore': {},
diff --git a/src/backend/src/filesystem/definitions/capabilities.js b/src/backend/src/filesystem/definitions/capabilities.js
index 220a5083..762444ea 100644
--- a/src/backend/src/filesystem/definitions/capabilities.js
+++ b/src/backend/src/filesystem/definitions/capabilities.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const capabilityNames = [
// PuterFS Capabilities
'thumbnail',
diff --git a/src/backend/src/filesystem/hl_operations/hl_name_search.js b/src/backend/src/filesystem/hl_operations/hl_name_search.js
index fb05e2b2..060f63b5 100644
--- a/src/backend/src/filesystem/hl_operations/hl_name_search.js
+++ b/src/backend/src/filesystem/hl_operations/hl_name_search.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { DB_READ } = require("../../services/database/consts");
const { Context } = require("../../util/context");
const { NodeUIDSelector } = require("../node/selectors");
diff --git a/src/backend/src/middleware/anticsrf.js b/src/backend/src/middleware/anticsrf.js
index c988c983..a228a2c7 100644
--- a/src/backend/src/middleware/anticsrf.js
+++ b/src/backend/src/middleware/anticsrf.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const APIError = require("../api/APIError");
const anticsrf = options => async (req, res, next) => {
diff --git a/src/backend/src/middleware/featureflag.js b/src/backend/src/middleware/featureflag.js
index 120cc29b..62c03a98 100644
--- a/src/backend/src/middleware/featureflag.js
+++ b/src/backend/src/middleware/featureflag.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const APIError = require("../api/APIError");
const { Context } = require("../util/context");
diff --git a/src/backend/src/modules/apps/AppIconService.js b/src/backend/src/modules/apps/AppIconService.js
index 3578dd6b..a8dd0a9d 100644
--- a/src/backend/src/modules/apps/AppIconService.js
+++ b/src/backend/src/modules/apps/AppIconService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// const { HLWrite } = require("../filesystem/hl_operations/hl_write");
const { LLMkdir } = require("../../filesystem/ll_operations/ll_mkdir");
const { LLRead } = require("../../filesystem/ll_operations/ll_read");
diff --git a/src/backend/src/modules/apps/AppsModule.js b/src/backend/src/modules/apps/AppsModule.js
index 6980b48c..8b64d2f2 100644
--- a/src/backend/src/modules/apps/AppsModule.js
+++ b/src/backend/src/modules/apps/AppsModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
class AppsModule extends AdvancedBase {
diff --git a/src/backend/src/modules/apps/OldAppNameService.js b/src/backend/src/modules/apps/OldAppNameService.js
index 9cb33945..5c417414 100644
--- a/src/backend/src/modules/apps/OldAppNameService.js
+++ b/src/backend/src/modules/apps/OldAppNameService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const BaseService = require("../../services/BaseService");
const { DB_READ } = require("../../services/database/consts");
diff --git a/src/backend/src/modules/apps/RecommendedAppsService.js b/src/backend/src/modules/apps/RecommendedAppsService.js
index 24faedc2..ec25a2c9 100644
--- a/src/backend/src/modules/apps/RecommendedAppsService.js
+++ b/src/backend/src/modules/apps/RecommendedAppsService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { get_app } = require("../../helpers");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/apps/default-app-icon.js b/src/backend/src/modules/apps/default-app-icon.js
index b5f7ebda..3c2a55b5 100644
--- a/src/backend/src/modules/apps/default-app-icon.js
+++ b/src/backend/src/modules/apps/default-app-icon.js
@@ -1 +1,20 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNDgiCiAgIGhlaWdodD0iNDgiCiAgIGlkPSJzdmc2NjQ5IgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczY2NTEiPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQxMjEzMDMiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMjE3NjQiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wMDU5MTg0LDAsMCwwLjg1NzEwOTk5LC0wLjEyNzgyMjg3LDguMTA2NDc1MSkiCiAgICAgICB4MT0iMjUuMDg2MDM5IgogICAgICAgeTE9Ii0xLjM2MjM2OTEiCiAgICAgICB4Mj0iMjUuMDg2MDM5IgogICAgICAgeTI9IjE4LjI5OTMzNCIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MTIxMzAzIj4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEyOTUiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNldD0iMCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEyOTciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMjM1Mjk0MTIiCiAgICAgICAgIG9mZnNldD0iMC4xMTQxOTQ2OCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEyOTkiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMTU2ODYyNzUiCiAgICAgICAgIG9mZnNldD0iMC45Mzg5NjU5OCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AxMjEzMDEiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMzkyMTU2ODciCiAgICAgICAgIG9mZnNldD0iMSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDM5MjQtMi0yLTUtOCIKICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudDEyMTc2MCIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAwMDAwMDMsMCwwLDAuODM3ODM4MTMsLTEuMjQ4MTQ2ZS01LDcuODkxODg1MykiCiAgICAgICB4MT0iMjMuOTk5OTkiCiAgICAgICB5MT0iNi4wNDQ1Mjc1IgogICAgICAgeDI9IjIzLjk5OTk5IgogICAgICAgeTI9IjQxLjc2MzIyMiIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MzkyNC0yLTItNS04Ij4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AzOTI2LTktNC05LTYiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjEiCiAgICAgICAgIG9mZnNldD0iMCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AzOTI4LTktOC02LTUiCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMjM1Mjk0MTIiCiAgICAgICAgIG9mZnNldD0iMC4wOTMwMjMyNSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgaWQ9InN0b3AzOTMwLTMtNS0xLTciCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiNmZmZmZmY7c3RvcC1vcGFjaXR5OjAuMTU2ODYyNzUiCiAgICAgICAgIG9mZnNldD0iMC45MDY5NzY3IiAvPgogICAgICA8c3RvcAogICAgICAgICBpZD0ic3RvcDM5MzItOC0wLTQtOCIKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6I2ZmZmZmZjtzdG9wLW9wYWNpdHk6MC4zOTIxNTY4NyIKICAgICAgICAgb2Zmc2V0PSIxIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgeGxpbms6aHJlZj0iI2QiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMjE3NTgiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4yMTIyOTAzLDAsMCwxLjExNDU1MTQsLTQuNDk5OTAzLC0yLjc2MTI1MzMpIgogICAgICAgeDE9IjIzLjQ1MiIKICAgICAgIHkxPSIzMC41NTUiCiAgICAgICB4Mj0iNDMuMDA3IgogICAgICAgeTI9IjQ1LjkzMzk5OCIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImQiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3AtY29sb3I9IiNmZmYiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMCIKICAgICAgICAgaWQ9InN0b3A2NSIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdG9wLWNvbG9yPSIjZmZmIgogICAgICAgICBzdG9wLW9wYWNpdHk9IjAiCiAgICAgICAgIGlkPSJzdG9wNjciIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQxMDYzMDUiCiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMjE3NTYiCiAgICAgICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4yMTk2MzY1LDAsMCwxLjMyMDM3MDgsNDAuNzg1OTE1LC0xMy4zMzg3NDQpIgogICAgICAgeDE9Ii01Ljg4NzAzMzUiCiAgICAgICB5MT0iMTkuMzQxOTE1IgogICAgICAgeDI9Ii01Ljg4NzAzMzUiCiAgICAgICB5Mj0iNDMuMzc1NzQ4IiAvPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0ibGluZWFyR3JhZGllbnQxMDYzMDUiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3AtY29sb3I9IiNkYWMxOTciCiAgICAgICAgIGlkPSJzdG9wMTA2MzAxIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojZTdjNTkxO3N0b3Atb3BhY2l0eToxIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0b3AtY29sb3I9IiNiMTk5NzQiCiAgICAgICAgIGlkPSJzdG9wMTA2MzAzIgogICAgICAgICBzdHlsZT0ic3RvcC1jb2xvcjojY2ZhMjVlO3N0b3Atb3BhY2l0eToxIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50MTA2MzA1IgogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MTcwMyIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjIxOTYzNjUsMCwwLDEuMzE1NDE2NSw0MC44MDAzMzgsLTEyLjk4MzQyMikiCiAgICAgICB4MT0iLTUuODg3MDMzNSIKICAgICAgIHkxPSIxMS40ODI5NzgiCiAgICAgICB4Mj0iLTUuODg3MDMzNSIKICAgICAgIHkyPSIyMi4xNDg4NjUiIC8+CiAgICA8cmFkaWFsR3JhZGllbnQKICAgICAgIGN4PSI1IgogICAgICAgY3k9IjQxLjUiCiAgICAgICBmeD0iNSIKICAgICAgIGZ5PSI0MS41IgogICAgICAgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAwMjg4NzEsMCwwLDEuNiwtMTguMTY3MTM4LC0xMTEuOTgyODkpIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4bGluazpocmVmPSIjZyIKICAgICAgIGlkPSJrLTAtNy0zLTktMyIKICAgICAgIHI9IjUiIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGlkPSJnIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBpZD0ic3RvcDEzIiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMCIKICAgICAgICAgaWQ9InN0b3AxNSIgLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIHhsaW5rOmhyZWY9IiNoIgogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50MTIxNzU0IgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDIuMTMwNDMzMiwwLDAsMS40NTQ1NSwtODcuNzE5MDE4LC0xMy4zMjcxMSkiCiAgICAgICB4MT0iMTcuNTU0MDAxIgogICAgICAgeTE9IjQ2IgogICAgICAgeDI9IjE3LjU1NDAwMSIKICAgICAgIHkyPSIzNSIgLz4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImgiPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iMCIKICAgICAgICAgaWQ9InN0b3A1NCIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIuNSIKICAgICAgICAgaWQ9InN0b3A1NiIgLz4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIxIgogICAgICAgICBzdG9wLW9wYWNpdHk9IjAiCiAgICAgICAgIGlkPSJzdG9wNTgiIC8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50CiAgICAgICBjeD0iNSIKICAgICAgIGN5PSI0MS41IgogICAgICAgZng9IjUiCiAgICAgICBmeT0iNDEuNSIKICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wMDI4ODcxLDAsMCwxLjYsNTcuMTM5MDQ4LC0xMTEuOTgyODkpIgogICAgICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICB4bGluazpocmVmPSIjZyIKICAgICAgIGlkPSJpLTYtOS03LTgtOSIKICAgICAgIHI9IjUiIC8+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgeGxpbms6aHJlZj0iI2MtMyIKICAgICAgIGlkPSJuIgogICAgICAgeDE9IjI2IgogICAgICAgeDI9IjI2IgogICAgICAgeTE9IjIyIgogICAgICAgeTI9IjgiCiAgICAgICBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTMpIiAvPgogICAgPGxpbmVhckdyYWRpZW50CiAgICAgICBpZD0iYy0zIj4KICAgICAgPHN0b3AKICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICBzdG9wLWNvbG9yPSIjZmZmIgogICAgICAgICBpZD0ic3RvcDM2LTYiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIG9mZnNldD0iMC40MjgxODMwNSIKICAgICAgICAgc3RvcC1jb2xvcj0iI2ZmZiIKICAgICAgICAgaWQ9InN0b3AzOC03IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjAuNTAwOTMzMTciCiAgICAgICAgIHN0b3AtY29sb3I9IiNmZmYiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iLjY0MyIKICAgICAgICAgaWQ9InN0b3A0MC01IiAvPgogICAgICA8c3RvcAogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIHN0b3AtY29sb3I9IiNmZmYiCiAgICAgICAgIHN0b3Atb3BhY2l0eT0iLjM5MSIKICAgICAgICAgaWQ9InN0b3A0Mi0zIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNjY1NCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpZD0iZzEyMTAiCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43MTE4NjQzOCwwLDAsMC43NSw1MC44MDQ1NjIsNi44MTI4MzI4KSIKICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjEuMzY4NTgiPgogICAgPHJlY3QKICAgICAgIGZpbGw9InVybCgjaSkiCiAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgb3BhY2l0eT0iMC40IgogICAgICAgdHJhbnNmb3JtPSJzY2FsZSgtMSkiCiAgICAgICB3aWR0aD0iNSIKICAgICAgIHg9IjYyLjE1NDAzIgogICAgICAgeT0iLTUzLjU4Mjg5IgogICAgICAgaWQ9InJlY3Q3Ny05LTkwLTItNy04IgogICAgICAgc3R5bGU9ImZpbGw6dXJsKCNpLTYtOS03LTgtOSk7c3Ryb2tlLXdpZHRoOjEuMzY4NTgiIC8+CiAgICA8cmVjdAogICAgICAgZmlsbD0idXJsKCNqKSIKICAgICAgIGhlaWdodD0iMTYiCiAgICAgICBvcGFjaXR5PSIwLjQiCiAgICAgICB3aWR0aD0iNDkiCiAgICAgICB4PSItNjIuMTU0MDMiCiAgICAgICB5PSIzNy41ODI4OSIKICAgICAgIGlkPSJyZWN0NzktNy0yLTAtMS00IgogICAgICAgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDEyMTc1NCk7c3Ryb2tlLXdpZHRoOjEuMzY4NTgiIC8+CiAgICA8cmVjdAogICAgICAgZmlsbD0idXJsKCNrKSIKICAgICAgIGhlaWdodD0iMTYiCiAgICAgICBvcGFjaXR5PSIwLjQiCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDEsLTEpIgogICAgICAgd2lkdGg9IjUiCiAgICAgICB4PSItMTMuMTU0MDI4IgogICAgICAgeT0iLTUzLjU4Mjg5IgogICAgICAgaWQ9InJlY3Q4MS0zLTgtNi03LTgiCiAgICAgICBzdHlsZT0iZmlsbDp1cmwoI2stMC03LTMtOS0zKTtzdHJva2Utd2lkdGg6MS4zNjg1OCIgLz4KICA8L2c+CiAgPHBhdGgKICAgICBpZD0icmVjdDU1MDUtMjEtMS01LTAtNi01LTEtMi01LTEwIgogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtkaXNwbGF5OmlubGluZTtvdmVyZmxvdzp2aXNpYmxlO3Zpc2liaWxpdHk6dmlzaWJsZTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50MTcwMyk7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuOTk5OTk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MC4zOy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJNIDExLjU5MDkyMyw1LjUgQyA5LjIzMzkwNSw1LjUgOC4yOTM2NSw2Ljg5NjUxODMgNy4zMzYzNzgsOS4wNTgwMjUyIDYuNjAyNjI1LDEwLjcxMDQ1NyA1Ljc0ODksMTIuNDIwMTYyIDUuMDcwNjEzLDE0LjAzOTI2IDQuNzA5ODY5LDE0LjY2Njk5NCA0LjUwMDAxNCwxNS4zOTQ1MDYgNC41MDAwMTQsMTYuMTc0MDc1IGggMzkuMDAwMDAzIGMgMCwtMC43Nzk1NjkgLTAuMjA5ODU1LC0xLjUwNzA4MSAtMC41NzA1OTgsLTIuMTM0ODE1IEMgNDIuMjMyNzQ0LDEyLjQyODM2MSA0MS40MTc5MiwxMC43MDExOTIgNDAuNjYzNjUzLDkuMDU4MDI1MiAzOS42NzczNzksNi45MDk2ODc3IDM4Ljc2NjEyNiw1LjUgMzYuNDA5MTA4LDUuNSBaIiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q1NTA1LTIxLTEtNS0wLTYtNS0xLTItMyIKICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDEyMTc1Nik7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuOTk5OTk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MC4zOy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJNIDguNzU0NTQ1LDEyIEMgNi45ODE4MTgsMTIgNC41LDEzLjU1NjQ1NyA0LjUsMTcuMzU3MTM5IHYgMjIuODU3MTI2IGMgMCwwLjE4MDAwMiAwLjAxNDU0LDAuMzU2MjQ0IDAuMDM2MDIsMC41MzAxMzQgMC4wMDUsMC4wNDAzMiAwLjAxMTk4LDAuMDgwMDEgMC4wMTgwMSwwLjExOTk3NiAwLjAyMTQyLDAuMTQwNDQzIDAuMDQ4NSwwLjI3ODg0MyAwLjA4MzEsMC40MTQzNDIgMC4wMDg5LDAuMDM0OTcgMC4wMTY2NywwLjA3MDAyIDAuMDI2MzEsMC4xMDQ2MzEgMC4wOTcxMywwLjM0MzgzNyAwLjIzMzc3MywwLjY3MDg5OCAwLjQwNzE3NCwwLjk3Mzc3MiA1LjFlLTQsOS4yOWUtNCA3LjA5ZS00LDAuMDAxOCAwLjAwMTQsMC4wMDI4IDAuNzM0MTUsMS4yODAyNTkgMi4xMDM0MTksMi4xNDAwNyAzLjY4MjUxNSwyLjE0MDA3IGggMzAuNDkwOTEyIGMgMS41NzkwOTYsMCAyLjk0ODM2NSwtMC44NTk4MTEgMy42ODI1NjUsLTIuMTQwMDY2IDMuOTZlLTQsLTkuMjllLTQgNy4wOWUtNCwtMC4wMDE5IDAuMDAxNCwtMC4wMDI4IDAuMTczNDAxLC0wLjMwMjg3NCAwLjMxMDA1LC0wLjYyOTkzNSAwLjQwNzE3NSwtMC45NzM3NzIgMC4wMDk2LC0wLjAzNDYxIDAuMDE3NTIsLTAuMDY5NjYgMC4wMjYzMSwtMC4xMDQ2MzEgMC4wMzQ2LC0wLjEzNTQ5OSAwLjA2MTY5LC0wLjI3Mzg5OCAwLjA4MzEsLTAuNDE0MzQxIDAuMDA1NywtMC4wMzk5NyAwLjAxMzEyLC0wLjA3OTY1IDAuMDE4MDEsLTAuMTE5OTc3IDAuMDIxNDksLTAuMTczODk0IDAuMDM1OTYsLTAuMzUwMTM2IDAuMDM1OTYsLTAuNTMwMTM4IFYgMTcuNzE0MjgyIGMgMCwtMi42NzU0NzUgLTEuMDYzNjM3LC01LjcxNDI4MSAtNC4yNTQ1NDYsLTUuNzE0MjgxIHoiIC8+CiAgPHBhdGgKICAgICBkPSJtIDEwLjY0NDg2MSwxMS4yOTY1MDUgaCAyNi4xNDQxODUgYyAxLjUyNjY3MywwIDIuNDcxMTgyLDAuNTI4MDExIDMuMTEwNzgyLDEuOTc5Njg1IGwgMi4yMDE3MjcsNi4wOTEzMzkgdiAyMS45NTk0MiBjIDAsMS4zODU0OTUgLTAuNzc0MzI3LDIuMDgzNTggLTIuMzAwMjkxLDIuMDgzNTggSCA3LjkwNzc3IGMgLTEuNTI1OTY0LDAgLTIuMTQ4NTQ2LC0wLjc2NzgyMiAtMi4xNDg1NDYsLTIuMTUzMzE3IFYgMTkuMzY2MTA1IGwgMi4xMzA4MTksLTYuMjIxNTYyIGMgMC40MjU0NTUsLTEuMTI0MzM2IDEuMjI4ODU1LC0xLjg0ODc1IDIuNzU0ODE4LC0xLjg0ODc1IHoiCiAgICAgZGlzcGxheT0iYmxvY2siCiAgICAgZmlsbD0ibm9uZSIKICAgICBvcGFjaXR5PSIwLjUwNSIKICAgICBvdmVyZmxvdz0idmlzaWJsZSIKICAgICBzdHJva2U9InVybCgjbSkiCiAgICAgc3Ryb2tlLXdpZHRoPSIwLjc0MTk5OCIKICAgICBzdHlsZT0ic3Ryb2tlOnVybCgjbGluZWFyR3JhZGllbnQxMjE3NTgpO21hcmtlcjpub25lIgogICAgIGlkPSJwYXRoODUtMS04LTUtNy0wIiAvPgogIDxyZWN0CiAgICAgc3R5bGU9Im9wYWNpdHk6MC4zO2ZpbGw6bm9uZTtzdHJva2U6dXJsKCNsaW5lYXJHcmFkaWVudDEyMTc2MCk7c3Ryb2tlLXdpZHRoOjAuOTk5OTg0O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgaWQ9InJlY3Q2NzQxLTUtMC0yLTMtNC0yLTQiCiAgICAgeT0iMTIuNDk5OTkyIgogICAgIHg9IjUuNDk5OTk0MyIKICAgICByeT0iMy41IgogICAgIGhlaWdodD0iMzEuMDAwMDE3IgogICAgIHdpZHRoPSIzNyIKICAgICByeD0iMy41IiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q1NTA1LTIxLTEtNS0wLTYtNS0xLTItNS0xLTQiCiAgICAgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO3ZlY3Rvci1lZmZlY3Q6bm9uZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiM4MDRiMDA7c3Ryb2tlLXdpZHRoOjAuOTk5OTk5O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MC41Oy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJtIDExLjU5MDkyMyw1LjQ5OTk5OTUgYyAtMi4zNTcwMTgsMCAtMy4yOTcyNzMsMS4zOTE1ODQ0IC00LjI1NDU0NSwzLjU0NTQ1NDYgQyA2LjYwMjYyNSwxMC42OTIwNDggNS43NDg5LDEyLjM5NTcxMyA1LjA3MDYxMywxNC4wMDkwOTEgNC43MDk4NjksMTQuNjM0NjA3IDQuNTAwMDE0LDE1LjM1OTU0OSA0LjUwMDAxNCwxNi4xMzYzNjMgdiAyNC4xMDkwOTIgYyAwLDIuMzU3MDE4IDEuODk3NTI3LDQuMjU0NTQ2IDQuMjU0NTQ1LDQuMjU0NTQ2IGggMzAuNDkwOTEzIGMgMi4zNTcwMTgsMCA0LjI1NDU0NSwtMS44OTc1MjggNC4yNTQ1NDUsLTQuMjU0NTQ2IFYgMTYuMTM2MzYzIGMgMCwtMC43NzY4MTQgLTAuMjA5ODU1LC0xLjUwMTc1NiAtMC41NzA1OTgsLTIuMTI3MjcyIEMgNDIuMjMyNzQ0LDEyLjQwMzg4MyA0MS40MTc5MiwxMC42ODI4MTYgNDAuNjYzNjUzLDkuMDQ1NDU0MSAzOS42NzczNzksNi45MDQ3MDY4IDM4Ljc2NjEyNiw1LjQ5OTk5OTUgMzYuNDA5MTA4LDUuNDk5OTk5NSBaIiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q1NTA1LTIxLTEtNS0wLTYtNS0xLTItNS0xLTctNyIKICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjE1O3ZlY3Rvci1lZmZlY3Q6bm9uZTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOnVybCgjbGluZWFyR3JhZGllbnQxMjE3NjQpO3N0cm9rZS13aWR0aDowLjk5OTk5MTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxOy1pbmtzY2FwZS1zdHJva2U6bm9uZTttYXJrZXI6bm9uZTtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMCIKICAgICBkPSJNIDQxLjU1OTA5NywxMy4xOCAzOS44NDYyNjEsOS42MDExMDA3IEMgMzkuMzY4MTczLDguNTU5Njc2MSAzOC45MjI4MjksNy43NTkzNzQ5IDM4LjQwNDc1NSw3LjI2MTE2MyAzNy44ODY2NzQsNi43NjI5NTEyIDM3LjMxMzE3Miw2LjQ5OTk5NDUgMzYuMjg5NzksNi40OTk5OTQ1IEggMTEuNzExMjE4IGMgLTEuMDI0NzMsMCAtMS42MDg4MjEsMC4yNjI2MDMyIC0yLjEyODY4MDQsMC43NTg0MTU4IEMgOS4wNjI2ODA1LDcuNzU0MjIyOCA4LjYyMDYzMSw4LjU0ODc0MjMgOC4xNTg4NDg4LDkuNTkxNDY3NyB2IDAuMDAxNDEgTCA2LjU5Nzg2MDMsMTMuMjU2NzI1IiAvPgogIDxwYXRoCiAgICAgZD0ibSAyMiw1IGggNCBWIDE5IEMgMjUuNjA2LDE5IDI1LjIxMywxOC4yMjkgMjQuODE5LDE4LjIyOSAyNC40MTYsMTguMjI5IDI0LjAxMywxOSAyMy42MDksMTkgMjMuMjg1LDE5IDIyLjk2LDE4LjMyNSAyMi42MzYsMTguMzI1IDIyLjQyNCwxOC4zMjUgMjIuMjEyLDE5IDIyLDE5IFoiCiAgICAgZmlsbD0idXJsKCNuKSIKICAgICBvcGFjaXR5PSIwLjMiCiAgICAgb3ZlcmZsb3c9InZpc2libGUiCiAgICAgc3R5bGU9ImZpbGw6dXJsKCNuKTttYXJrZXI6bm9uZSIKICAgICBpZD0icGF0aDg3IiAvPgo8L3N2Zz4K';
\ No newline at end of file
diff --git a/src/backend/src/modules/apps/lib/IconResult.js b/src/backend/src/modules/apps/lib/IconResult.js
index c26210df..b663c68d 100644
--- a/src/backend/src/modules/apps/lib/IconResult.js
+++ b/src/backend/src/modules/apps/lib/IconResult.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { stream_to_buffer } = require("../../../util/streamutil");
module.exports = class IconResult {
diff --git a/src/backend/src/modules/broadcast/BroadcastModule.js b/src/backend/src/modules/broadcast/BroadcastModule.js
index 6b44d715..3ef921d6 100644
--- a/src/backend/src/modules/broadcast/BroadcastModule.js
+++ b/src/backend/src/modules/broadcast/BroadcastModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
class BroadcastModule extends AdvancedBase {
diff --git a/src/backend/src/modules/broadcast/connection/BaseLink.js b/src/backend/src/modules/broadcast/connection/BaseLink.js
index 7b321c7f..f4b42b93 100644
--- a/src/backend/src/modules/broadcast/connection/BaseLink.js
+++ b/src/backend/src/modules/broadcast/connection/BaseLink.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
const { ChannelFeature } = require("../../../traits/ChannelFeature");
diff --git a/src/backend/src/modules/broadcast/connection/CLink.js b/src/backend/src/modules/broadcast/connection/CLink.js
index 856f2d8d..56f398d1 100644
--- a/src/backend/src/modules/broadcast/connection/CLink.js
+++ b/src/backend/src/modules/broadcast/connection/CLink.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { BaseLink } = require("./BaseLink");
const { KeyPairHelper } = require("./KeyPairHelper");
diff --git a/src/backend/src/modules/broadcast/connection/KeyPairHelper.js b/src/backend/src/modules/broadcast/connection/KeyPairHelper.js
index e9fc1da4..53a25bb3 100644
--- a/src/backend/src/modules/broadcast/connection/KeyPairHelper.js
+++ b/src/backend/src/modules/broadcast/connection/KeyPairHelper.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require('@heyputer/putility');
class KeyPairHelper extends AdvancedBase {
diff --git a/src/backend/src/modules/broadcast/connection/SLink.js b/src/backend/src/modules/broadcast/connection/SLink.js
index c2cee1f7..a2c32a81 100644
--- a/src/backend/src/modules/broadcast/connection/SLink.js
+++ b/src/backend/src/modules/broadcast/connection/SLink.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { BaseLink } = require("./BaseLink");
const { KeyPairHelper } = require("./KeyPairHelper");
diff --git a/src/backend/src/modules/core/ContextService.js b/src/backend/src/modules/core/ContextService.js
index d8775b8f..8e16bcc6 100644
--- a/src/backend/src/modules/core/ContextService.js
+++ b/src/backend/src/modules/core/ContextService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const BaseService = require("../../services/BaseService");
const { Context } = require("../../util/context");
diff --git a/src/backend/src/modules/core/Core2Module.js b/src/backend/src/modules/core/Core2Module.js
index d3a79efb..47e18ce3 100644
--- a/src/backend/src/modules/core/Core2Module.js
+++ b/src/backend/src/modules/core/Core2Module.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
/**
diff --git a/src/backend/src/modules/core/lib/__lib__.js b/src/backend/src/modules/core/lib/__lib__.js
index 25d503ea..52041adf 100644
--- a/src/backend/src/modules/core/lib/__lib__.js
+++ b/src/backend/src/modules/core/lib/__lib__.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = {
util: {
logutil: require('./log.js'),
diff --git a/src/backend/src/modules/core/lib/expect.js b/src/backend/src/modules/core/lib/expect.js
index 1b80aa78..5eb4c9a6 100644
--- a/src/backend/src/modules/core/lib/expect.js
+++ b/src/backend/src/modules/core/lib/expect.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"def":"core.expect"}
const { v4: uuidv4 } = require('uuid');
diff --git a/src/backend/src/modules/perfmon/PerfMonModule.js b/src/backend/src/modules/perfmon/PerfMonModule.js
index 02e531fb..1191278a 100644
--- a/src/backend/src/modules/perfmon/PerfMonModule.js
+++ b/src/backend/src/modules/perfmon/PerfMonModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
/**
diff --git a/src/backend/src/modules/puterai/AIChatService.js b/src/backend/src/modules/puterai/AIChatService.js
index 4bb2257f..47370b4e 100644
--- a/src/backend/src/modules/puterai/AIChatService.js
+++ b/src/backend/src/modules/puterai/AIChatService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const APIError = require("../../api/APIError");
const { PermissionUtil } = require("../../services/auth/PermissionService");
diff --git a/src/backend/src/modules/puterai/AIInterfaceService.js b/src/backend/src/modules/puterai/AIInterfaceService.js
index 33bdffc2..1e3f9cd2 100644
--- a/src/backend/src/modules/puterai/AIInterfaceService.js
+++ b/src/backend/src/modules/puterai/AIInterfaceService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/AITestModeService.js b/src/backend/src/modules/puterai/AITestModeService.js
index c01a78a7..ee200bc4 100644
--- a/src/backend/src/modules/puterai/AITestModeService.js
+++ b/src/backend/src/modules/puterai/AITestModeService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/AWSPollyService.js b/src/backend/src/modules/puterai/AWSPollyService.js
index 2fd72f26..434a5183 100644
--- a/src/backend/src/modules/puterai/AWSPollyService.js
+++ b/src/backend/src/modules/puterai/AWSPollyService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { PollyClient, SynthesizeSpeechCommand, DescribeVoicesCommand } = require("@aws-sdk/client-polly");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/AWSTextractService.js b/src/backend/src/modules/puterai/AWSTextractService.js
index 4b277694..504dfd54 100644
--- a/src/backend/src/modules/puterai/AWSTextractService.js
+++ b/src/backend/src/modules/puterai/AWSTextractService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { TextractClient, AnalyzeDocumentCommand, InvalidS3ObjectException } = require("@aws-sdk/client-textract");
diff --git a/src/backend/src/modules/puterai/ClaudeEnoughService.js b/src/backend/src/modules/puterai/ClaudeEnoughService.js
index c844f77b..935bf77f 100644
--- a/src/backend/src/modules/puterai/ClaudeEnoughService.js
+++ b/src/backend/src/modules/puterai/ClaudeEnoughService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { XAIService } = require("./XAIService");
diff --git a/src/backend/src/modules/puterai/ClaudeService.js b/src/backend/src/modules/puterai/ClaudeService.js
index 8e694d5c..c5933bca 100644
--- a/src/backend/src/modules/puterai/ClaudeService.js
+++ b/src/backend/src/modules/puterai/ClaudeService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { default: Anthropic } = require("@anthropic-ai/sdk");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/FakeChatService.js b/src/backend/src/modules/puterai/FakeChatService.js
index 8949b6d2..82c799b8 100644
--- a/src/backend/src/modules/puterai/FakeChatService.js
+++ b/src/backend/src/modules/puterai/FakeChatService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { default: dedent } = require("dedent");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/GroqAIService.js b/src/backend/src/modules/puterai/GroqAIService.js
index 14b0a62e..a6b1f885 100644
--- a/src/backend/src/modules/puterai/GroqAIService.js
+++ b/src/backend/src/modules/puterai/GroqAIService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { PassThrough } = require("stream");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/MistralAIService.js b/src/backend/src/modules/puterai/MistralAIService.js
index 2e2c29c9..351828e1 100644
--- a/src/backend/src/modules/puterai/MistralAIService.js
+++ b/src/backend/src/modules/puterai/MistralAIService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { PassThrough } = require("stream");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/OpenAICompletionService.js b/src/backend/src/modules/puterai/OpenAICompletionService.js
index 52686a36..22582afd 100644
--- a/src/backend/src/modules/puterai/OpenAICompletionService.js
+++ b/src/backend/src/modules/puterai/OpenAICompletionService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { PassThrough } = require('stream');
const BaseService = require('../../services/BaseService');
diff --git a/src/backend/src/modules/puterai/OpenAIImageGenerationService.js b/src/backend/src/modules/puterai/OpenAIImageGenerationService.js
index 8b3052cd..7e11c560 100644
--- a/src/backend/src/modules/puterai/OpenAIImageGenerationService.js
+++ b/src/backend/src/modules/puterai/OpenAIImageGenerationService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const BaseService = require("../../services/BaseService");
const { TypedValue } = require("../../services/drivers/meta/Runtime");
diff --git a/src/backend/src/modules/puterai/PuterAIModule.js b/src/backend/src/modules/puterai/PuterAIModule.js
index ddc83588..86ccadee 100644
--- a/src/backend/src/modules/puterai/PuterAIModule.js
+++ b/src/backend/src/modules/puterai/PuterAIModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { AdvancedBase } = require("@heyputer/putility");
const config = require("../../config");
diff --git a/src/backend/src/modules/puterai/TogetherAIService.js b/src/backend/src/modules/puterai/TogetherAIService.js
index 77c3d925..aeaceab0 100644
--- a/src/backend/src/modules/puterai/TogetherAIService.js
+++ b/src/backend/src/modules/puterai/TogetherAIService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { PassThrough } = require("stream");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/XAIService.js b/src/backend/src/modules/puterai/XAIService.js
index df57903f..49e3e38d 100644
--- a/src/backend/src/modules/puterai/XAIService.js
+++ b/src/backend/src/modules/puterai/XAIService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { default: Anthropic } = require("@anthropic-ai/sdk");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/puterai/lib/AsModeration.js b/src/backend/src/modules/puterai/lib/AsModeration.js
index 2f20c76d..abfeed4d 100644
--- a/src/backend/src/modules/puterai/lib/AsModeration.js
+++ b/src/backend/src/modules/puterai/lib/AsModeration.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { default: dedent } = require("dedent");
class AsModeration {
diff --git a/src/backend/src/modules/puterfs/PuterFSModule.js b/src/backend/src/modules/puterfs/PuterFSModule.js
index 09f157d4..9d168f9a 100644
--- a/src/backend/src/modules/puterfs/PuterFSModule.js
+++ b/src/backend/src/modules/puterfs/PuterFSModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
class PuterFSModule extends AdvancedBase {
diff --git a/src/backend/src/modules/puterfs/PuterFSService.js b/src/backend/src/modules/puterfs/PuterFSService.js
index 4678c050..e96c75d3 100644
--- a/src/backend/src/modules/puterfs/PuterFSService.js
+++ b/src/backend/src/modules/puterfs/PuterFSService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const BaseService = require("../../services/BaseService");
const { PuterFSProvider } = require("./lib/PuterFSProvider");
diff --git a/src/backend/src/modules/puterfs/lib/PuterFSProvider.js b/src/backend/src/modules/puterfs/lib/PuterFSProvider.js
index f533cf8d..762abec4 100644
--- a/src/backend/src/modules/puterfs/lib/PuterFSProvider.js
+++ b/src/backend/src/modules/puterfs/lib/PuterFSProvider.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const putility = require('@heyputer/putility');
const { MultiDetachable } = putility.libs.listener;
const { TDetachable } = putility.traits;
diff --git a/src/backend/src/modules/template/lib/__lib__.js b/src/backend/src/modules/template/lib/__lib__.js
index 51104b7b..0bda581c 100644
--- a/src/backend/src/modules/template/lib/__lib__.js
+++ b/src/backend/src/modules/template/lib/__lib__.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = {
hello_world: require('./hello_world.js'),
};
diff --git a/src/backend/src/modules/template/lib/hello_world.js b/src/backend/src/modules/template/lib/hello_world.js
index cbef6e3f..3c8429e5 100644
--- a/src/backend/src/modules/template/lib/hello_world.js
+++ b/src/backend/src/modules/template/lib/hello_world.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* This is a simple function that returns a string.
diff --git a/src/backend/src/modules/test-drivers/TestAssetHostService.js b/src/backend/src/modules/test-drivers/TestAssetHostService.js
index dd991959..865fbfa1 100644
--- a/src/backend/src/modules/test-drivers/TestAssetHostService.js
+++ b/src/backend/src/modules/test-drivers/TestAssetHostService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const BaseService = require("../../services/BaseService");
class TestAssetHostService extends BaseService {
diff --git a/src/backend/src/modules/test-drivers/TestDriversModule.js b/src/backend/src/modules/test-drivers/TestDriversModule.js
index c30756d9..0648da8d 100644
--- a/src/backend/src/modules/test-drivers/TestDriversModule.js
+++ b/src/backend/src/modules/test-drivers/TestDriversModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
class TestDriversModule extends AdvancedBase {
diff --git a/src/backend/src/modules/test-drivers/TestImageService.js b/src/backend/src/modules/test-drivers/TestImageService.js
index 4c060304..6e167ec3 100644
--- a/src/backend/src/modules/test-drivers/TestImageService.js
+++ b/src/backend/src/modules/test-drivers/TestImageService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const config = require("../../config");
const BaseService = require("../../services/BaseService");
const { TypedValue } = require("../../services/drivers/meta/Runtime");
diff --git a/src/backend/src/modules/web/APIErrorService.js b/src/backend/src/modules/web/APIErrorService.js
index 14ba281c..2a3aa94d 100644
--- a/src/backend/src/modules/web/APIErrorService.js
+++ b/src/backend/src/modules/web/APIErrorService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const APIError = require("../../api/APIError");
const BaseService = require("../../services/BaseService");
diff --git a/src/backend/src/modules/web/SocketioService.js b/src/backend/src/modules/web/SocketioService.js
index 01098a78..d67b7d21 100644
--- a/src/backend/src/modules/web/SocketioService.js
+++ b/src/backend/src/modules/web/SocketioService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-params":{"service":"claude"},"ai-commented":{"service":"claude"}}
const BaseService = require('../../services/BaseService');
diff --git a/src/backend/src/modules/web/WebModule.js b/src/backend/src/modules/web/WebModule.js
index b0d9860a..16d05fc1 100644
--- a/src/backend/src/modules/web/WebModule.js
+++ b/src/backend/src/modules/web/WebModule.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("@heyputer/putility");
/**
diff --git a/src/backend/src/modules/web/lib/__lib__.js b/src/backend/src/modules/web/lib/__lib__.js
index 2dc2a60e..13033bd5 100644
--- a/src/backend/src/modules/web/lib/__lib__.js
+++ b/src/backend/src/modules/web/lib/__lib__.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = {
eggspress: require("./eggspress"),
api_error_handler: require("./api_error_handler"),
diff --git a/src/backend/src/routers/auth/check-app-acl.endpoint.js b/src/backend/src/routers/auth/check-app-acl.endpoint.js
index 32b3f8a9..9e6cdf5d 100644
--- a/src/backend/src/routers/auth/check-app-acl.endpoint.js
+++ b/src/backend/src/routers/auth/check-app-acl.endpoint.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const APIError = require("../../api/APIError");
const FSNodeParam = require("../../api/filesystem/FSNodeParam");
const StringParam = require("../../api/filesystem/StringParam");
diff --git a/src/backend/src/routers/filesystem_api/search.js b/src/backend/src/routers/filesystem_api/search.js
index 7241de95..2986619a 100644
--- a/src/backend/src/routers/filesystem_api/search.js
+++ b/src/backend/src/routers/filesystem_api/search.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const eggspress = require("../../api/eggspress");
const { HLNameSearch } = require("../../filesystem/hl_operations/hl_name_search");
diff --git a/src/backend/src/routers/get-launch-apps.test.js b/src/backend/src/routers/get-launch-apps.test.js
index 1f9d04db..06dd7d3a 100644
--- a/src/backend/src/routers/get-launch-apps.test.js
+++ b/src/backend/src/routers/get-launch-apps.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const sinon = require('sinon');
const { expect } = require('chai');
const proxyquire = require('proxyquire');
diff --git a/src/backend/src/routers/writeFile/copy.js b/src/backend/src/routers/writeFile/copy.js
index 445399f7..d27c724a 100644
--- a/src/backend/src/routers/writeFile/copy.js
+++ b/src/backend/src/routers/writeFile/copy.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { HLCopy } = require('../../filesystem/hl_operations/hl_copy');
module.exports = async function writeFile_handle_copy ({
diff --git a/src/backend/src/routers/writeFile/delete.js b/src/backend/src/routers/writeFile/delete.js
index 7b173c38..79cd3a23 100644
--- a/src/backend/src/routers/writeFile/delete.js
+++ b/src/backend/src/routers/writeFile/delete.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { HLRemove } = require("../../filesystem/hl_operations/hl_remove");
module.exports = async function writeFile_handle_delete ({
diff --git a/src/backend/src/routers/writeFile/mkdir.js b/src/backend/src/routers/writeFile/mkdir.js
index b8d10936..b8abc1b7 100644
--- a/src/backend/src/routers/writeFile/mkdir.js
+++ b/src/backend/src/routers/writeFile/mkdir.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { HLMkdir } = require("../../filesystem/hl_operations/hl_mkdir");
const { NodeUIDSelector } = require("../../filesystem/node/selectors");
const { sign_file } = require("../../helpers");
diff --git a/src/backend/src/routers/writeFile/move.js b/src/backend/src/routers/writeFile/move.js
index 1f2f13ff..b2481072 100644
--- a/src/backend/src/routers/writeFile/move.js
+++ b/src/backend/src/routers/writeFile/move.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { HLMove } = require("../../filesystem/hl_operations/hl_move");
module.exports = async function writeFile_handle_move ({
diff --git a/src/backend/src/routers/writeFile/rename.js b/src/backend/src/routers/writeFile/rename.js
index 3574b48d..aa6e553a 100644
--- a/src/backend/src/routers/writeFile/rename.js
+++ b/src/backend/src/routers/writeFile/rename.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const mime = require('mime-types');
const { validate_fsentry_name } = require("../../helpers");
const { DB_WRITE } = require('../../services/database/consts');
diff --git a/src/backend/src/routers/writeFile/trash.js b/src/backend/src/routers/writeFile/trash.js
index f12a8cc3..e56a7991 100644
--- a/src/backend/src/routers/writeFile/trash.js
+++ b/src/backend/src/routers/writeFile/trash.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { HLMove } = require("../../filesystem/hl_operations/hl_move");
const { NodePathSelector } = require("../../filesystem/node/selectors");
diff --git a/src/backend/src/routers/writeFile/write.js b/src/backend/src/routers/writeFile/write.js
index 395a50fc..98406488 100644
--- a/src/backend/src/routers/writeFile/write.js
+++ b/src/backend/src/routers/writeFile/write.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { TYPE_DIRECTORY } = require("../../filesystem/FSNodeContext");
const { HLWrite } = require("../../filesystem/hl_operations/hl_write");
const { NodePathSelector } = require("../../filesystem/node/selectors");
diff --git a/src/backend/src/routers/writeFile/writeFile_handlers.js b/src/backend/src/routers/writeFile/writeFile_handlers.js
index aad00443..2a86d631 100644
--- a/src/backend/src/routers/writeFile/writeFile_handlers.js
+++ b/src/backend/src/routers/writeFile/writeFile_handlers.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = {
move: require('./move'),
copy: require('./copy'),
diff --git a/src/backend/src/services/BootScriptService.js b/src/backend/src/services/BootScriptService.js
index 2cfef924..093c2107 100644
--- a/src/backend/src/services/BootScriptService.js
+++ b/src/backend/src/services/BootScriptService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"mistral","model":"mistral-large-latest"}}
const { Context } = require("../util/context");
const BaseService = require("./BaseService");
diff --git a/src/backend/src/services/CleanEmailService.js b/src/backend/src/services/CleanEmailService.js
index 2404deb5..c106b304 100644
--- a/src/backend/src/services/CleanEmailService.js
+++ b/src/backend/src/services/CleanEmailService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { can } = require("../util/langutil");
const BaseService = require("./BaseService");
diff --git a/src/backend/src/services/CommentService.js b/src/backend/src/services/CommentService.js
index 11dab619..77d4f771 100644
--- a/src/backend/src/services/CommentService.js
+++ b/src/backend/src/services/CommentService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const APIError = require("../api/APIError");
const FSNodeParam = require("../api/filesystem/FSNodeParam");
diff --git a/src/backend/src/services/DBKVService.js b/src/backend/src/services/DBKVService.js
index 149b4bf4..63317da3 100644
--- a/src/backend/src/services/DBKVService.js
+++ b/src/backend/src/services/DBKVService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { get_app } = require("../helpers");
const { Context } = require("../util/context");
const BaseService = require("./BaseService");
diff --git a/src/backend/src/services/FeatureFlagService.js b/src/backend/src/services/FeatureFlagService.js
index 7b9a797f..edbe7ae8 100644
--- a/src/backend/src/services/FeatureFlagService.js
+++ b/src/backend/src/services/FeatureFlagService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const { Context } = require("../util/context");
const { whatis } = require("../util/langutil");
diff --git a/src/backend/src/services/HelloWorldService.js b/src/backend/src/services/HelloWorldService.js
index 9087e567..3585e285 100644
--- a/src/backend/src/services/HelloWorldService.js
+++ b/src/backend/src/services/HelloWorldService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"mistral","model":"mistral-large-latest"}}
const BaseService = require("./BaseService");
diff --git a/src/backend/src/services/KernelInfoService.js b/src/backend/src/services/KernelInfoService.js
index 0e7aeb55..d27b2267 100644
--- a/src/backend/src/services/KernelInfoService.js
+++ b/src/backend/src/services/KernelInfoService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const configurable_auth = require("../middleware/configurable_auth");
const { Context } = require("../util/context");
diff --git a/src/backend/src/services/SNSService.js b/src/backend/src/services/SNSService.js
index ae186cc2..06a06067 100644
--- a/src/backend/src/services/SNSService.js
+++ b/src/backend/src/services/SNSService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { Endpoint } = require("../util/expressutil");
const BaseService = require("./BaseService");
diff --git a/src/backend/src/services/SUService.js b/src/backend/src/services/SUService.js
index c085c3a0..dd123dea 100644
--- a/src/backend/src/services/SUService.js
+++ b/src/backend/src/services/SUService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"openai-completion","model":"gpt-4o-mini"}}
const { get_user } = require("../helpers");
const { Context } = require("../util/context");
diff --git a/src/backend/src/services/ShutdownService.js b/src/backend/src/services/ShutdownService.js
index 468383d3..ce0ca24d 100644
--- a/src/backend/src/services/ShutdownService.js
+++ b/src/backend/src/services/ShutdownService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const BaseService = require("./BaseService");
diff --git a/src/backend/src/services/SystemDataService.js b/src/backend/src/services/SystemDataService.js
index 66353807..01f67774 100644
--- a/src/backend/src/services/SystemDataService.js
+++ b/src/backend/src/services/SystemDataService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"xai"}}
const { LLRead } = require("../filesystem/ll_operations/ll_read");
const { Context } = require("../util/context");
diff --git a/src/backend/src/services/UserService.js b/src/backend/src/services/UserService.js
index 1ac735ef..ab87fbd1 100644
--- a/src/backend/src/services/UserService.js
+++ b/src/backend/src/services/UserService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { LLMkdir } = require("../filesystem/ll_operations/ll_mkdir");
const { RootNodeSelector, NodeChildSelector } = require("../filesystem/node/selectors");
const { invalidate_cached_user } = require("../helpers");
diff --git a/src/backend/src/services/WispService.js b/src/backend/src/services/WispService.js
index 1e2ca44a..aa681a42 100644
--- a/src/backend/src/services/WispService.js
+++ b/src/backend/src/services/WispService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const configurable_auth = require("../middleware/configurable_auth");
const { Endpoint } = require("../util/expressutil");
const BaseService = require("./BaseService");
diff --git a/src/backend/src/services/database/sqlite_setup/0025_system-user.dbmig.js b/src/backend/src/services/database/sqlite_setup/0025_system-user.dbmig.js
index db33318d..1b2c9430 100644
--- a/src/backend/src/services/database/sqlite_setup/0025_system-user.dbmig.js
+++ b/src/backend/src/services/database/sqlite_setup/0025_system-user.dbmig.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"openai-completion","model":"gpt-4o"}}
/*
Add a user called `system`.
diff --git a/src/backend/src/services/database/sqlite_setup/0026_user-groups.dbmig.js b/src/backend/src/services/database/sqlite_setup/0026_user-groups.dbmig.js
index fdd2ebc2..0465ef65 100644
--- a/src/backend/src/services/database/sqlite_setup/0026_user-groups.dbmig.js
+++ b/src/backend/src/services/database/sqlite_setup/0026_user-groups.dbmig.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"openai-completion","model":"gpt-4o"}}
const { insertId: temp_group_id } = await write(
'INSERT INTO `group` (`uid`, `owner_user_id`, `extra`, `metadata`) '+
diff --git a/src/backend/src/services/database/sqlite_setup/0027_emulator-app.dbmig.js b/src/backend/src/services/database/sqlite_setup/0027_emulator-app.dbmig.js
index 37ce3294..cac75f52 100644
--- a/src/backend/src/services/database/sqlite_setup/0027_emulator-app.dbmig.js
+++ b/src/backend/src/services/database/sqlite_setup/0027_emulator-app.dbmig.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"xai"}}
const insert = async (tbl, subject) => {
const keys = Object.keys(subject);
diff --git a/src/backend/src/services/drivers/DriverUsagePolicyService.js b/src/backend/src/services/drivers/DriverUsagePolicyService.js
index 1e2765de..afabe8de 100644
--- a/src/backend/src/services/drivers/DriverUsagePolicyService.js
+++ b/src/backend/src/services/drivers/DriverUsagePolicyService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"openai-completion","model":"gpt-4o"}}
const { PermissionUtil } = require("../auth/PermissionService");
const BaseService = require("../BaseService");
diff --git a/src/backend/src/traits/ChannelFeature.js b/src/backend/src/traits/ChannelFeature.js
index a78435d8..fb693a88 100644
--- a/src/backend/src/traits/ChannelFeature.js
+++ b/src/backend/src/traits/ChannelFeature.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// name: 'Channel' does not behave the same as Golang's channel construct; it
// behaves more like an EventEmitter.
class Channel {
diff --git a/src/backend/src/unstructured/permission-scan-lib.js b/src/backend/src/unstructured/permission-scan-lib.js
index 2f333130..4d64ee5c 100644
--- a/src/backend/src/unstructured/permission-scan-lib.js
+++ b/src/backend/src/unstructured/permission-scan-lib.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* Filters a permission reading so that it does not contain paths through the
* specified user. This operation is performed recursively on all paths in the
diff --git a/src/backend/src/unstructured/permission-scanners.js b/src/backend/src/unstructured/permission-scanners.js
index 3bf20863..50ec55d8 100644
--- a/src/backend/src/unstructured/permission-scanners.js
+++ b/src/backend/src/unstructured/permission-scanners.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const {
default_implicit_user_app_permissions,
implicit_user_app_permissions,
diff --git a/src/backend/src/util/debugutil.js b/src/backend/src/util/debugutil.js
index e9896eb4..176980b7 100644
--- a/src/backend/src/util/debugutil.js
+++ b/src/backend/src/util/debugutil.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const LETTERS = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N'];
let curr_letter_ = 0;
diff --git a/src/backend/src/util/structutil.js b/src/backend/src/util/structutil.js
index 21425018..370c78f4 100644
--- a/src/backend/src/util/structutil.js
+++ b/src/backend/src/util/structutil.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const cart_product = (obj) => {
// Get array of keys
let keys = Object.keys(obj);
diff --git a/src/backend/src/util/uuidfpe.js b/src/backend/src/util/uuidfpe.js
index 9224c10c..28b74c6d 100644
--- a/src/backend/src/util/uuidfpe.js
+++ b/src/backend/src/util/uuidfpe.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const crypto = require('crypto');
class UUIDFPE {
diff --git a/src/emulator/src/main.js b/src/emulator/src/main.js
index 2bdd8993..99e1d8a0 100644
--- a/src/emulator/src/main.js
+++ b/src/emulator/src/main.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
"use strict";
console.log(`emulator running in mode: ${MODE}`)
diff --git a/src/emulator/webpack.config.js b/src/emulator/webpack.config.js
index 4093142c..d6fd278a 100644
--- a/src/emulator/webpack.config.js
+++ b/src/emulator/webpack.config.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const HtmlWebpackPlugin = require('html-webpack-plugin');
const DefinePlugin = require('webpack').DefinePlugin;
const CopyPlugin = require('copy-webpack-plugin');
diff --git a/src/gui/src/UI/UIElement.js b/src/gui/src/UI/UIElement.js
index 57aaeac8..d7d50350 100644
--- a/src/gui/src/UI/UIElement.js
+++ b/src/gui/src/UI/UIElement.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { AdvancedBase } from "@heyputer/putility";
import Placeholder from "../util/Placeholder.js";
import UIWindow from "./UIWindow.js";
diff --git a/src/gui/src/extensions/groups-manager.js b/src/gui/src/extensions/groups-manager.js
index 7f1c57dc..992f0bfa 100644
--- a/src/gui/src/extensions/groups-manager.js
+++ b/src/gui/src/extensions/groups-manager.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const UIElement = use('ui.UIElement');
const Collector = use('util.Collector');
diff --git a/src/gui/src/extensions/modify-user-options-menu.js b/src/gui/src/extensions/modify-user-options-menu.js
index f7c89cf5..861ef74a 100644
--- a/src/gui/src/extensions/modify-user-options-menu.js
+++ b/src/gui/src/extensions/modify-user-options-menu.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
$(window).on('ctxmenu-will-open', (event) => {
if(event.detail.options?.id === 'user-options-menu'){
// Define array of new menu items
diff --git a/src/gui/src/i18n/translations/ar.js b/src/gui/src/i18n/translations/ar.js
index cc28eff7..2e3a0465 100644
--- a/src/gui/src/i18n/translations/ar.js
+++ b/src/gui/src/i18n/translations/ar.js
@@ -1,20 +1,23 @@
-/** * Copyright (C) 2024 Puter Technologies Inc. *
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
* This file is part of Puter.
- *
+ *
* Puter is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
+
const ar = {
name: "العربية",
english_name: "Arabic",
diff --git a/src/gui/src/services/AntiCSRFService.js b/src/gui/src/services/AntiCSRFService.js
index d5e65a2a..1beb636b 100644
--- a/src/gui/src/services/AntiCSRFService.js
+++ b/src/gui/src/services/AntiCSRFService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Service } from "../definitions.js";
export class AntiCSRFService extends Service {
diff --git a/src/gui/src/services/DebugService.js b/src/gui/src/services/DebugService.js
index 696ea255..dc1e2cc6 100644
--- a/src/gui/src/services/DebugService.js
+++ b/src/gui/src/services/DebugService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Service } from "../definitions.js";
export class DebugService extends Service {
diff --git a/src/gui/src/services/ExecService.js b/src/gui/src/services/ExecService.js
index 22982cc7..72b9158e 100644
--- a/src/gui/src/services/ExecService.js
+++ b/src/gui/src/services/ExecService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { PROCESS_IPC_ATTACHED, Service } from "../definitions.js";
import launch_app from "../helpers/launch_app.js";
diff --git a/src/gui/src/services/IPCService.js b/src/gui/src/services/IPCService.js
index 82f7c8f2..d88be310 100644
--- a/src/gui/src/services/IPCService.js
+++ b/src/gui/src/services/IPCService.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { Service } from "../definitions.js";
class InternalConnection {
diff --git a/src/gui/src/util/Collector.js b/src/gui/src/util/Collector.js
index 3a3a76aa..e3b5d550 100644
--- a/src/gui/src/util/Collector.js
+++ b/src/gui/src/util/Collector.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const CollectorHandle = (key, collector) => ({
async get (route) {
if ( collector.stored[key] ) return collector.stored[key];
diff --git a/src/gui/src/util/desktop.js b/src/gui/src/util/desktop.js
index 3f3bf1ee..e2235cc2 100644
--- a/src/gui/src/util/desktop.js
+++ b/src/gui/src/util/desktop.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* This file contains functions that are used by Puter's desktop GUI.
* Functions moved here are not bound to the `window` object, making it
diff --git a/src/gui/test/privacy_aware_path.test.js b/src/gui/test/privacy_aware_path.test.js
index 30b628a4..68e499f3 100644
--- a/src/gui/test/privacy_aware_path.test.js
+++ b/src/gui/test/privacy_aware_path.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import assert from 'assert';
import { privacy_aware_path } from '../src/util/desktop.js';
diff --git a/src/gui/webpack.config.cjs b/src/gui/webpack.config.cjs
index b69b9c06..2e2f38bb 100644
--- a/src/gui/webpack.config.cjs
+++ b/src/gui/webpack.config.cjs
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const BaseConfig = require('./webpack/BaseConfig.cjs');
module.exports = async () => ({
diff --git a/src/gui/webpack/BaseConfig.cjs b/src/gui/webpack/BaseConfig.cjs
index 319249f5..203810ce 100644
--- a/src/gui/webpack/BaseConfig.cjs
+++ b/src/gui/webpack/BaseConfig.cjs
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const path = require('path');
const fs = require('fs');
const EmitPlugin = require('./EmitPlugin.cjs');
diff --git a/src/gui/webpack/EmitPlugin.cjs b/src/gui/webpack/EmitPlugin.cjs
index e511da54..ba5b6a17 100644
--- a/src/gui/webpack/EmitPlugin.cjs
+++ b/src/gui/webpack/EmitPlugin.cjs
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const fs = require('fs');
const path = require('path');
const uglifyjs = require('uglify-js');
diff --git a/src/gui/webpack/libPaths.cjs b/src/gui/webpack/libPaths.cjs
index 46d282e8..67c738f1 100644
--- a/src/gui/webpack/libPaths.cjs
+++ b/src/gui/webpack/libPaths.cjs
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = [
"jquery-3.6.1/jquery-3.6.1.min.js",
"viselect.min.js",
diff --git a/src/parsers/exports.js b/src/parsers/exports.js
index bcda36c0..eb46fc67 100644
--- a/src/parsers/exports.js
+++ b/src/parsers/exports.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import * as strataparse_ from './strataparse/exports.js';
import * as parsely_ from './parsely/exports.js';
diff --git a/src/phoenix/src/puter-shell/providers/EmuCommandProvider.js b/src/phoenix/src/puter-shell/providers/EmuCommandProvider.js
index 6f32b4aa..4489ec03 100644
--- a/src/phoenix/src/puter-shell/providers/EmuCommandProvider.js
+++ b/src/phoenix/src/puter-shell/providers/EmuCommandProvider.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
import { TeePromise } from "@heyputer/putility/src/libs/promise";
import { Exit } from "../coreutils/coreutil_lib/exit";
diff --git a/src/puter-wisp/devlog/unit_test_usefulness/a.js b/src/puter-wisp/devlog/unit_test_usefulness/a.js
index 75b99e7d..fdafec19 100644
--- a/src/puter-wisp/devlog/unit_test_usefulness/a.js
+++ b/src/puter-wisp/devlog/unit_test_usefulness/a.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const lib = {};
// SO: 40031688
diff --git a/src/puter-wisp/devlog/unit_test_usefulness/b.js b/src/puter-wisp/devlog/unit_test_usefulness/b.js
index 4cadc526..3adc56fc 100644
--- a/src/puter-wisp/devlog/unit_test_usefulness/b.js
+++ b/src/puter-wisp/devlog/unit_test_usefulness/b.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const lib = {};
// SO: 40031688
diff --git a/src/puter-wisp/src/exports.js b/src/puter-wisp/src/exports.js
index ae39724e..199be633 100644
--- a/src/puter-wisp/src/exports.js
+++ b/src/puter-wisp/src/exports.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const lib = {};
// SO: 40031688
diff --git a/src/puter-wisp/test/test.js b/src/puter-wisp/test/test.js
index 53f5b54c..0dac6646 100644
--- a/src/puter-wisp/test/test.js
+++ b/src/puter-wisp/test/test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const assert = require('assert');
const {
NewVirtioFrameStream,
diff --git a/src/putility/src/concepts/Service.js b/src/putility/src/concepts/Service.js
index 9c92bca5..ec07138e 100644
--- a/src/putility/src/concepts/Service.js
+++ b/src/putility/src/concepts/Service.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("../AdvancedBase");
const ServiceFeature = require("../features/ServiceFeature");
diff --git a/src/putility/src/features/EmitterFeature.js b/src/putility/src/features/EmitterFeature.js
index 93aadb82..e1888929 100644
--- a/src/putility/src/features/EmitterFeature.js
+++ b/src/putility/src/features/EmitterFeature.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
/**
* A simpler alternative to TopicsFeature. This is an opt-in and not included
* in AdvancedBase.
diff --git a/src/putility/src/features/NariMethodsFeature.js b/src/putility/src/features/NariMethodsFeature.js
index 33d1c933..6e34aef7 100644
--- a/src/putility/src/features/NariMethodsFeature.js
+++ b/src/putility/src/features/NariMethodsFeature.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = {
readme: `
Normalized Asynchronous Request Invocation (NARI) Methods Feature
diff --git a/src/putility/src/features/ServiceFeature.js b/src/putility/src/features/ServiceFeature.js
index 2075b19f..da05fa38 100644
--- a/src/putility/src/features/ServiceFeature.js
+++ b/src/putility/src/features/ServiceFeature.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { TTopics } = require("../traits/traits");
module.exports = {
diff --git a/src/putility/src/features/TopicsFeature.js b/src/putility/src/features/TopicsFeature.js
index bd697de9..0666e4f7 100644
--- a/src/putility/src/features/TopicsFeature.js
+++ b/src/putility/src/features/TopicsFeature.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { RemoveFromArrayDetachable } = require("../libs/listener");
const { TTopics } = require("../traits/traits");
const { install_in_instance } = require("./NodeModuleDIFeature");
diff --git a/src/putility/src/features/TraitsFeature.js b/src/putility/src/features/TraitsFeature.js
index 157aa7fd..d570fbbd 100644
--- a/src/putility/src/features/TraitsFeature.js
+++ b/src/putility/src/features/TraitsFeature.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = {
// old implementation
install_in_instance_: (instance, { parameters }) => {
diff --git a/src/putility/src/libs/invoker.js b/src/putility/src/libs/invoker.js
index 3a2ebd4a..401a1d3b 100644
--- a/src/putility/src/libs/invoker.js
+++ b/src/putility/src/libs/invoker.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("../..");
class Invoker extends AdvancedBase {
diff --git a/src/putility/src/libs/log.js b/src/putility/src/libs/log.js
index c5a20870..5daf069b 100644
--- a/src/putility/src/libs/log.js
+++ b/src/putility/src/libs/log.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("../AdvancedBase");
const { TLogger, AS } = require("../traits/traits");
diff --git a/src/putility/src/system/ServiceManager.js b/src/putility/src/system/ServiceManager.js
index ceb4418c..194049e8 100644
--- a/src/putility/src/system/ServiceManager.js
+++ b/src/putility/src/system/ServiceManager.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { AdvancedBase } = require("../AdvancedBase");
const { TService } = require("../concepts/Service");
const { TeePromise } = require("../libs/promise");
diff --git a/src/putility/src/traits/traits.js b/src/putility/src/traits/traits.js
index f4170da3..b1b1c39e 100644
--- a/src/putility/src/traits/traits.js
+++ b/src/putility/src/traits/traits.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
module.exports = {
TTopics: Symbol('TTopics'),
TDetachable: Symbol('TDetachable'),
diff --git a/src/putility/test/ServiceManager.test.js b/src/putility/test/ServiceManager.test.js
index 2219ded0..54a71591 100644
--- a/src/putility/test/ServiceManager.test.js
+++ b/src/putility/test/ServiceManager.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { expect } = require('chai');
const { Service } = require('../src/concepts/Service.js');
const { ServiceManager } = require('../src/system/ServiceManager.js');
diff --git a/src/putility/test/context.test.js b/src/putility/test/context.test.js
index 6566f6e2..8ae4ece3 100644
--- a/src/putility/test/context.test.js
+++ b/src/putility/test/context.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { Context } = require('../src/libs/context');
const { expect } = require('chai');
diff --git a/src/putility/test/listener.test.js b/src/putility/test/listener.test.js
index 399a8f66..58fc88b6 100644
--- a/src/putility/test/listener.test.js
+++ b/src/putility/test/listener.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { RemoveFromArrayDetachable } = require("../src/libs/listener");
const { expect } = require('chai');
const { TDetachable } = require("../src/traits/traits");
diff --git a/src/putility/test/log.test.js b/src/putility/test/log.test.js
index 18a04546..db454167 100644
--- a/src/putility/test/log.test.js
+++ b/src/putility/test/log.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { LoggerFacade, ArrayLogger, ConsoleLogger } = require("../src/libs/log");
const { expect } = require('chai');
diff --git a/src/putility/test/topics.test.js b/src/putility/test/topics.test.js
index a8a2c061..e3b079a0 100644
--- a/src/putility/test/topics.test.js
+++ b/src/putility/test/topics.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { expect } = require('chai');
const { AdvancedBase } = require("../src/AdvancedBase");
const { TTopics, TDetachable } = require("../src/traits/traits");
diff --git a/src/putility/test/traits.test.js b/src/putility/test/traits.test.js
index 7f88625d..8396b22e 100644
--- a/src/putility/test/traits.test.js
+++ b/src/putility/test/traits.test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const { expect } = require('chai');
const { AdvancedBase } = require("../src/AdvancedBase");
diff --git a/tools/comment-writer/main.js b/tools/comment-writer/main.js
index f0ea5026..cd3c8959 100644
--- a/tools/comment-writer/main.js
+++ b/tools/comment-writer/main.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-params":{"service":"claude"},"comment-verbosity": "high","ai-commented":{"service":"claude"}}
const enq = require('enquirer');
const wrap = require('word-wrap');
diff --git a/tools/keygen/gen-peer-keys.js b/tools/keygen/gen-peer-keys.js
index 78ba9ed3..7480d154 100644
--- a/tools/keygen/gen-peer-keys.js
+++ b/tools/keygen/gen-peer-keys.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const nacl = require('tweetnacl');
const pair = nacl.box.keyPair();
diff --git a/tools/migrations-test/main.js b/tools/migrations-test/main.js
index 5531867d..64ced2dc 100644
--- a/tools/migrations-test/main.js
+++ b/tools/migrations-test/main.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const path_ = require('node:path');
const fs = require('node:fs');
const { spawnSync } = require('node:child_process');
diff --git a/tools/module-docgen/defs.js b/tools/module-docgen/defs.js
index 23eb0f0c..5cc17117 100644
--- a/tools/module-docgen/defs.js
+++ b/tools/module-docgen/defs.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
// METADATA // {"ai-commented":{"service":"claude"}}
const dedent = require('dedent');
const doctrine = require('doctrine');
diff --git a/tools/module-docgen/main.js b/tools/module-docgen/main.js
index b9513663..963f08d5 100644
--- a/tools/module-docgen/main.js
+++ b/tools/module-docgen/main.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const fs = require("fs");
const path_ = require("path");
diff --git a/tools/module-docgen/processors.js b/tools/module-docgen/processors.js
index 3c51cc09..b3899d8e 100644
--- a/tools/module-docgen/processors.js
+++ b/tools/module-docgen/processors.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const processors = [];
processors.push({
diff --git a/tools/token-count-accuracy/test.js b/tools/token-count-accuracy/test.js
index 413d963e..b7901a86 100644
--- a/tools/token-count-accuracy/test.js
+++ b/tools/token-count-accuracy/test.js
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 2024 Puter Technologies Inc.
+ *
+ * This file is part of Puter.
+ *
+ * Puter is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
const claude_examples = [
{
type: 'output', // probably doesn't matter