442 Commits

Author SHA1 Message Date
Naiel
c940c846b8 Mejorar la presentación de la transacción en la página de pagos y optimizar la carga de datos 2026-03-04 23:02:26 +00:00
Naiel
7822e46b61 Añadir funcionalidad para gestionar puntos de interés en Gest-Aula 2026-03-04 14:45:04 +00:00
Naiel
a39ecca990 Mejoras generales, rediseño de Gest-Aula, borrado de modulos sin usar y Mensajes, movido el resumen diario a gest-aula. 2026-03-04 14:33:28 +00:00
Naiel
80e9262bcb fix logic 2026-03-03 11:33:23 +01:00
Naiel
cd456ab9f1 fix 2026-03-03 11:29:38 +01:00
Naiel
c0c40ecd99 fix 2026-03-03 11:24:19 +01:00
Naiel
98c6ba39f3 fix 2026-03-03 11:20:57 +01:00
Naiel
03f52c8a92 fix 2026-03-03 11:06:30 +01:00
Naiel
f655a736b3 fix 2026-03-03 10:59:02 +01:00
Naiel
89a68f27da fix 2026-03-03 10:50:05 +01:00
Naiel
4d322e5696 fix 2026-03-03 10:36:42 +01:00
Naiel
0138e0ca69 fix 2026-03-03 10:33:36 +01:00
Naiel
3e8542c9de Fix import error handling for telesec_couchdb 2026-03-03 10:27:04 +01:00
Naiel
90df81d308 Update asset path for GitHub Release upload 2026-03-03 10:24:12 +01:00
Naiel
53941da35c Update Windows agent release workflow for PyInstaller 2026-03-03 10:21:47 +01:00
Naiel
105c911c59 feat: añadir soporte para configuración JSON en el agente de Windows 2026-03-02 12:47:02 +00:00
Naiel
cb12894455 feat: añadir agente de Windows y soporte para control remoto de ordenadores 2026-03-02 12:39:13 +00:00
Naiel
9d808ed63e feat: update print button functionality to use onclick event for improved usability 2026-03-02 08:08:59 +00:00
Naiel
d0593d3d46 chore: clean up empty code change sections in the changes log 2026-03-02 08:06:06 +00:00
Naiel
8b7d0258ae Refactor code structure for improved readability and maintainability 2026-03-01 23:37:37 +00:00
Naiel
9a760a1d24 fix: Ajustar el tamaño mínimo de las columnas en la cuadrícula de estadísticas en la página de inicio 2026-02-25 14:27:33 +00:00
Naiel
e1f780ea11 feat: Añadir estadísticas de ingresos, gastos y mensajes sin leer en la página de inicio 2026-02-25 14:25:12 +00:00
Naiel
7ad2e9c142 feat: Añadir funcionalidad de filtrado en la búsqueda de elementos y actualizar etiquetas en la página de pagos 2026-02-25 14:00:42 +00:00
Naiel
879554a7ab feat: Implementar limpieza automática de menús antiguos en el comedor y eliminar la tienda de apps 2026-02-25 13:31:05 +00:00
Naiel
0ef6e5a233 feat: Añadir sincronización en tiempo real para la gestión de aplicaciones 2026-02-25 13:20:43 +00:00
Naiel
d905e86bbf feat: Añadir funcionalidad de gestión de mensajes con soporte para adjuntos 2026-02-25 13:17:52 +00:00
Naiel
3764473b5b feat: Añadir funcionalidad de gestión de apps en la tienda de apps 2026-02-25 12:45:38 +00:00
Naiel
382e31158a feat: Añadir modo de revisión y mejorar la retroalimentación en el panel 2026-02-24 12:17:26 +00:00
Naiel
09a9a95df0 refactor: Actualizar referencias de contenedores en la gestión de comandas 2026-02-23 15:14:12 +00:00
Naiel
b04dbbf19d feat: Actualizar el título y el mensaje de seguridad en la interfaz principal 2026-02-23 15:12:01 +00:00
Naiel
7619444556 feat: Añadir funcionalidad para alternar la visibilidad del menú en la interfaz 2026-02-23 15:10:03 +00:00
Naiel
076aa45337 feat: Añadir funcionalidad para mostrar pictogramas en opciones del panel y mejorar estilos de presentación 2026-02-23 14:59:29 +00:00
Naiel
0b1419fae2 Añadir parámetro de visibilidad en mensajes de 'No hay personas registradas' en secciones de Monedero 2026-02-23 14:41:18 +00:00
Naiel
74afb2a499 Modificar parámetro de función 'edit' para mejorar la claridad en la gestión de secciones 2026-02-23 14:38:26 +00:00
Naiel
543d1c3202 feat: Add panel page with daily quiz and update functionality
- Introduced a new panel page that includes a daily quiz based on the menu and tasks for the day.
- Implemented functions to fetch and decrypt daily data, build quiz questions, and render the quiz interface.
- Added a button to refresh the application, clearing the cache and updating the service worker.
- Enhanced service worker to manage application version checks and handle CouchDB URL prefix.
- Created a version.json file to manage application versioning.
2026-02-23 14:37:08 +00:00
Naiel
75947d3468 Refactor manejo de URL para eliminar parámetros de búsqueda en la navegación y mejorar la visibilidad de personas en formularios 2026-02-23 12:38:28 +00:00
Naiel
9ab0472e2a Modificar parámetro de función 'edit' para mejorar la claridad y manejo de transacciones 2026-02-23 11:34:25 +00:00
naielv
aa993df2bf Añadir funcionalidad de selección de pictogramas en el formulario del comedor y refactorizar campos de entrada 2026-02-23 00:23:11 +01:00
Naiel
e0da65811e Modificar texto de "Total Gastos" a "Total Ganancias" y simplificar lógica de cálculo de ingresos y gastos 2026-02-12 14:37:27 +00:00
Naiel
eb6a956cdc Añadir manejo de eventos de base de datos y mejorar la carga de precios del café 2026-02-12 14:30:59 +00:00
Naiel
dc4ba25b20 Refactor code structure for improved readability and maintainability 2026-02-12 14:17:05 +00:00
Naiel
129188c022 Añadir configuración de precios del café y formulario de edición en la página de administración 2026-02-12 14:05:26 +00:00
Naiel
9d4ce881c6 fix 2026-02-10 12:54:12 +00:00
Naiel
4e1727adc3 update 2026-02-10 12:52:55 +00:00
naielv
db5b07bb44 update 2026-02-06 23:55:29 +01:00
naielv
61b8cb8af4 Reapply "Add Cajas module for cash register transaction management"
This reverts commit 8b29e3f425.
2026-02-06 23:26:51 +01:00
Naiel
2ee03aa204 Merge pull request #19 from EuskadiTech/revert-18-copilot/add-cajas-module
Revert "Add Cajas module for cash register transaction management"
2026-02-06 13:17:33 +01:00
Naiel
8b29e3f425 Revert "Add Cajas module for cash register transaction management" 2026-02-06 13:17:04 +01:00
Naiel
31697f2448 Merge pull request #18 from EuskadiTech/copilot/add-cajas-module
Add Cajas module for cash register transaction management
2026-02-06 13:09:06 +01:00
copilot-swe-agent[bot]
468d08110d Fix code review issues: placeholder images, transfer logic, and filter condition
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-02-06 12:02:12 +00:00
copilot-swe-agent[bot]
07e2c9a98e Add Cajas (Cash Register) module with transaction management and Monederos integration
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-02-06 11:59:09 +00:00
copilot-swe-agent[bot]
8b6140929e Initial plan 2026-02-06 11:54:05 +00:00
Naiel
05ea9a9d8b serve from local 2026-02-06 09:23:33 +00:00
naielv
75c319c701 update 2026-02-05 23:57:54 +01:00
naielv
8a9fee46da Refactor code to use single quotes for strings, update HTML structure for better readability, and improve error handling in various modules. Added Prettier configuration for consistent code formatting. 2026-02-05 23:07:35 +01:00
Naiel
6d7def5f18 Merge pull request #17 from EuskadiTech/copilot/add-onboarding-flow-login-js
Enhance onboarding: prevent duplicate personas, auto-detect from CouchDB, and add server presets
2026-02-05 21:55:21 +01:00
copilot-swe-agent[bot]
ddfd653d68 Add server preset selector for EuskadiTech servers
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-02-05 15:22:21 +00:00
copilot-swe-agent[bot]
b0160b3b66 Add button disable, persona detection, and mandatory encryption password
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-02-05 15:20:00 +00:00
copilot-swe-agent[bot]
d6809e51d1 Fix infinite recursion by allowing onboarding routes without login
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-02-05 15:09:00 +00:00
naielv
0db86f3dd2 Refactor peer status handling and update synchronization color logic 2026-02-03 19:36:34 +01:00
Naiel
dd195c5157 Increase prices for various beverage sizes 2026-02-02 11:07:19 +01:00
copilot-swe-agent[bot]
f472baacf6 Fix URL protocol handling to support both HTTP and HTTPS
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-22 19:15:34 +00:00
copilot-swe-agent[bot]
1e5de2c686 Use open_page() consistently for proper navigation cleanup
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-22 19:13:53 +00:00
copilot-swe-agent[bot]
bf9ba4ceef Improve onboarding: use safeuuid() and avoid unnecessary reload
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-22 19:12:11 +00:00
copilot-swe-agent[bot]
c2eac955fe Implement onboarding flow with database config and admin persona creation
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-22 19:09:54 +00:00
copilot-swe-agent[bot]
a02d7956ca Initial plan 2026-01-22 19:05:26 +00:00
Naiel
f96a408852 Delete TESTING_SUPERCAFE_FIX.md 2026-01-21 13:17:01 +01:00
Naiel
8afe2eedee Merge pull request #15 from EuskadiTech/copilot/fix-supercafe-deuda-lista
Fix local DB updates not triggering change listeners in SuperCafé
2026-01-21 13:16:27 +01:00
copilot-swe-agent[bot]
4faea51004 Add manual testing guide for SuperCafé debt list fix
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 12:14:06 +00:00
copilot-swe-agent[bot]
70ea752992 Remove redundant docCache update (onChange already handles it)
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 12:12:28 +00:00
copilot-swe-agent[bot]
492889b9e1 Fix: Move onChange call before docCache update to detect local changes
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 12:11:18 +00:00
copilot-swe-agent[bot]
ea54dc5471 Initial plan 2026-01-21 12:07:40 +00:00
Naiel
8ff431ca10 Merge pull request #13 from EuskadiTech/copilot/disable-button-during-save
Prevent duplicate transactions by disabling save buttons during async operations
2026-01-21 12:59:26 +01:00
copilot-swe-agent[bot]
7d5fe84b3a Add error message for photo attachment save failure
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 11:54:51 +00:00
copilot-swe-agent[bot]
f287eb63f6 Add user-facing error messages to all save operations
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 11:53:52 +00:00
copilot-swe-agent[bot]
565d88def8 Fix button disabling to occur after validation
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 11:52:02 +00:00
copilot-swe-agent[bot]
92feb05a0d Complete error handling for all save buttons
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 11:50:46 +00:00
copilot-swe-agent[bot]
013413a01c Add error handling to re-enable buttons on save failure
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 11:49:40 +00:00
copilot-swe-agent[bot]
9e7f8ebd1f Implement button disabling during save operations
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2026-01-21 11:46:16 +00:00
copilot-swe-agent[bot]
07d657002e Initial plan 2026-01-21 11:39:38 +00:00
Naiel
24520d1f01 fix 2 2026-01-09 12:09:21 +01:00
Naiel
6b8202992d update 2026-01-09 12:06:29 +01:00
naielv
bc0755b9bf Add login qr 2026-01-05 02:13:10 +01:00
Naiel
cb61374582 Modify TS_encrypt to skip callback execution
Commented out callback and return statements in TS_encrypt function.
2026-01-04 20:17:07 +01:00
naielv
cb70222c04 updates 2025-12-26 01:32:48 +01:00
naielv
dfcd22fadf update debounce 2025-12-25 19:44:57 +01:00
naielv
7277c6ab34 Also fix this 2025-12-25 19:36:21 +01:00
naielv
fbf0a8c9e4 Disable encryption 2025-12-25 19:31:58 +01:00
naielv
ee219e1d96 update 2025-12-25 19:29:16 +01:00
naielv
90b8223385 updated 2025-12-25 19:15:28 +01:00
naielv
0bc662dbde fix orientation on tablets 2025-12-25 18:48:58 +01:00
naielv
15df8d12fe update 2025-12-25 16:40:53 +01:00
naielv
a9cdfb567a Add fecha-diff to materiales 2025-12-25 01:46:48 +01:00
Naiel
f0a6f3b6b3 Merge pull request #12 from EuskadiTech/deluxe
TeleSec Deluxe: Ahora con PouchDB
2025-12-25 01:19:29 +01:00
naielv
8802952e5a fix login 2025-12-25 01:11:14 +01:00
naielv
ab4a05bc7f some changes 2025-12-25 01:02:51 +01:00
naielv
648854190e finished 2025-12-25 00:45:14 +01:00
naielv
13a4367c92 V1 2025-12-24 23:30:32 +01:00
naielv
2258e74960 update gitignore 2025-12-24 17:21:54 +01:00
Naiel
fd63885507 Update pagos.js 2025-12-15 10:21:57 +01:00
naielv
4b88679b37 Arreglado el orden en addCategory_Personas 2025-12-14 20:28:48 +01:00
naielv
dd9fda10f7 Cambiado el sorter de addCategory_Personas, y arreglado el monedero de la pagina de inicio y TS_IndexElement 2025-12-14 20:20:17 +01:00
naielv
3dbaa9bd33 Creado un sorter central 2025-12-14 20:17:02 +01:00
naielv
3402183f3c 2ª actualización importante 2025-12-14 20:14:33 +01:00
naielv
1bc9aa5295 update 2025-12-14 13:43:54 +01:00
naielv
c946dad334 Update 2025-12-14 13:42:36 +01:00
Naiel
a32aa89a56 Update pagos.js 2025-12-13 12:59:03 +01:00
Naiel
4d1952d998 Update app_logic.js 2025-12-13 12:48:35 +01:00
Naiel
5fe308eac6 Update pagos.js 2025-12-13 12:36:02 +01:00
Naiel
ad46651ed8 Update pagos.js 2025-12-13 12:27:32 +01:00
Naiel
0eb519dea4 Update pagos.js 2025-12-13 12:24:00 +01:00
naielv
9b0d33710f add asunto-sorting, remove hoster var, fix formatting of pagos, fix account login URLs 2025-12-12 23:55:01 +01:00
naielv
28a0fced87 fix pwa sw 2025-12-12 23:15:36 +01:00
naielv
60a7649c36 major update 2025-12-12 19:13:53 +01:00
Naiel
cca21ac3d3 Create wrangler.jsonc 2025-12-12 16:41:36 +01:00
Naiel
78c0abf92d Create static.yml 2025-12-12 16:32:01 +01:00
Naiel
d40d600a49 fix 2025-12-12 16:30:18 +01:00
Naiel
0e1ab0c619 Make it faster 2025-12-12 16:14:00 +01:00
Naiel
0366f62dfb fix peercount & relays 2025-12-12 16:06:52 +01:00
Naiel
33594b2508 add public relays 2025-12-12 13:20:31 +01:00
Naiel
db9626aa7b remove point system, remove old code, upgraded avatar res, indexelement persona's now show balances 2025-12-12 13:07:04 +01:00
Naiel
ba022dea3c fix 2025-11-26 11:59:08 +01:00
Naiel
f0e32b4ad0 fix 2025-11-26 11:57:25 +01:00
Naiel
bbbc8b1d63 update 2025-11-26 11:54:46 +01:00
Naiel
af2f642d45 fix promobono 2025-11-19 11:48:16 +00:00
Naiel
9f00b97677 2nd emergency fix. 2025-11-19 11:35:17 +00:00
Naiel
196245ffa0 Emergency fix 2025-11-19 11:31:54 +00:00
Naiel
7cf1bf40c7 fix issue 2025-11-13 12:20:41 +00:00
Naiel
860f6019ad update 2025-11-13 12:18:29 +00:00
Naiel
4fefdcaf3d updated 2025-11-13 12:16:19 +00:00
Naiel
9a22545ec2 Add some CSS 2025-11-13 11:36:55 +00:00
Naiel
49a021b9dd Merge pull request #9 from EuskadiTech/copilot/fix-escanear-qr-page
Add QR scanner for wallet selection and transaction management features
2025-11-12 15:47:59 +01:00
copilot-swe-agent[bot]
0cd6048bf2 Add QR scanner for wallet selection and transaction management features
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2025-11-12 14:33:11 +00:00
copilot-swe-agent[bot]
1bec976efc Initial plan 2025-11-12 14:23:23 +00:00
Naiel
a03a224cda Update payment terminal title and add navigation button 2025-11-12 15:22:36 +01:00
Naiel
0bdd3ba8b1 Merge pull request #8 from EuskadiTech/copilot/add-pagos-module-transaction-log
Add Pagos module with ATM-style Datafono terminal and digital wallet system
2025-11-12 15:09:41 +01:00
Naiel
96b3c60568 Update pagos.js 2025-11-12 15:07:06 +01:00
Naiel
811fabfced Refactor pagos.js to remove unused id parameter 2025-11-12 15:02:28 +01:00
Naiel
a3d9278d6f Implement persistent totals for ingresos and gastos
Refactor total calculations to use a persistent totals object by ID.
2025-11-12 14:55:55 +01:00
Naiel
4e67381cf0 Revise transaction type options in pagos.js
Updated transaction type options with new icons.
2025-11-12 14:51:59 +01:00
Naiel
f1593de431 Update pagos.js 2025-11-12 14:46:57 +01:00
Naiel
889722451c Update pagos.js 2025-11-12 14:43:05 +01:00
Naiel
bb9c1ee7d3 Refactor tid variable handling in pagos.js 2025-11-12 14:36:12 +01:00
Naiel
fc2e4d27d2 Rename variable 'data' to 'sdata' for clarity 2025-11-12 14:30:09 +01:00
Naiel
6bde2fb2b8 Fix formatting issue in setUrlHash call 2025-11-12 14:27:41 +01:00
Naiel
7a510329ba Refactor tid handling for datafono cases 2025-11-12 14:25:45 +01:00
Naiel
a5cc4e7cc7 Refactor sessionStorage data handling for Pagos module 2025-11-12 14:24:50 +01:00
Naiel
c77ac5c264 Add datafono handling in pagos.js 2025-11-12 14:21:08 +01:00
copilot-swe-agent[bot]
f14d19f59a Add Pagos module with Datafono UI and wallet integration
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2025-11-12 12:47:42 +00:00
copilot-swe-agent[bot]
fccd9308e2 Initial plan 2025-11-12 12:37:22 +00:00
Naiel
2265ad28f4 disable call due to user request 2025-11-05 10:49:53 +01:00
Naiel
b1993ba83a updated 2025-11-05 10:36:17 +01:00
Naiel
d00d4c7af2 Update addCategory to close on selection. 2025-10-31 12:42:25 +01:00
Naiel
4d175d9aa1 update 2025-10-15 11:07:03 +00:00
Naiel
b0fa3d0844 fixed icons and added chat 2025-10-15 10:51:42 +00:00
naielv
617711fb1a add global search 2025-10-02 22:45:41 +02:00
naielv
f46ec17c03 update app_modules.js 2025-09-19 21:33:25 +02:00
naielv
de163f7f9b update app_modules.js 2025-09-19 21:30:20 +02:00
naielv
3250669dc9 update app_modules.js 2025-09-19 21:28:07 +02:00
naielv
d00d004dd8 update materiales.js 2025-09-19 21:24:08 +02:00
naielv
b38d470b02 update app_modules.js 2025-09-12 09:39:10 +02:00
naielv
0f2a894edb update app_modules.js 2025-09-12 09:38:42 +02:00
Naiel
ad71ceae21 fix 2025-09-11 12:31:23 +02:00
Naiel
6e3e809435 fix 2025-09-11 12:30:57 +02:00
Naiel
4719c346f5 fix 2025-09-11 12:26:34 +02:00
Naiel
2e070ea7fd fix chained val 2025-09-11 12:22:14 +02:00
Naiel
5f573c49be fix 2025-09-11 12:15:57 +02:00
Naiel
9524c9e3f3 fix 2025-09-11 12:13:50 +02:00
Naiel
b3a6a19f95 olé 2025-09-11 12:09:28 +02:00
Naiel
332b39aa23 fix 2025-09-11 12:04:56 +02:00
Naiel
14ee3ab4a0 fix ev 2025-09-11 12:00:23 +02:00
Naiel
75ce2aa207 add date to resumen diario 2025-09-11 11:31:07 +02:00
naielv
48b68eff83 update app_modules.js 2025-09-11 10:59:35 +02:00
naielv
3124540f4f update app_modules.js 2025-09-11 10:56:36 +02:00
naielv
42728ab445 update 2025-09-10 21:22:49 +02:00
naielv
af5141099d update 2025-09-10 10:12:16 +02:00
naielv
1ce4207294 add almendras 2025-09-09 22:58:16 +02:00
naielv
9d3d6bc363 oooops 2025-09-09 22:51:21 +02:00
naielv
74dc7fe404 updated 2025-09-09 22:51:04 +02:00
naielv
2f3efbcf66 rename 2025-09-09 22:32:54 +02:00
naielv
b3ff2a7a9d update 2025-09-09 22:32:29 +02:00
naielv
2b4e28eea6 update 2025-09-09 22:23:45 +02:00
naielv
f7b3d95526 update 2025-09-09 22:17:12 +02:00
naielv
553f43c7b3 Add weather services 2025-09-09 21:58:07 +02:00
naielv
8b1185b507 updates!!! 2025-09-09 21:50:14 +02:00
Naiel
eecab547df Merge pull request #7 from EuskadiTech/naielv-faster
several changes
2025-09-09 21:35:37 +02:00
naielv
b069f7db61 several changes 2025-09-09 21:34:27 +02:00
Naiel
424d767549 Merge pull request #6 from EuskadiTech/naielv-faster
Faster TS_IndexElement loads
2025-09-09 21:16:40 +02:00
naielv
4f3d16326c Mejorado la carga de IndexElement 2025-09-09 21:12:34 +02:00
naielv
ac68228e26 two 2025-09-09 16:16:31 +02:00
naielv
673d64e720 update 2025-09-09 16:07:10 +02:00
naielv
ec7746f79f fix 2025-09-09 15:31:35 +02:00
naielv
6ceae4f1d5 fix AES logic 2025-09-09 15:29:38 +02:00
naielv
c50c29f743 Add RSA to TeleSec (more efficient) 2025-09-09 15:25:06 +02:00
naielv
34f61777c3 add AXE 2025-09-09 15:06:39 +02:00
naielv
9c81cdb1e0 update 2025-09-09 13:36:22 +02:00
naielv
bdd880bc24 update to qr 2025-09-09 13:35:31 +02:00
naielv
aa01eaeaa5 update 2025-09-09 11:06:02 +02:00
naielv
fc1aa567bc update 2025-09-09 10:21:05 +02:00
naielv
cc3d694ce3 fix sc sorting 2025-09-08 11:07:38 +02:00
naielv
f11760d867 update 2025-09-07 15:52:00 +02:00
naielv
fc4170acb8 Errores gramaticos. 2025-09-07 14:51:53 +02:00
naielv
98bda7db5d Update 2025-09-07 14:42:12 +02:00
naielv
3bfbdc11af updated 2025-09-07 14:16:42 +02:00
naielv
a59a26fa29 Un tallarin 2025-09-05 15:27:56 +02:00
naielv
a5de1b3855 update 2025-09-05 13:16:51 +02:00
naielv
0624103778 fix 2025-09-05 13:13:38 +02:00
naielv
cd6e4e8b64 Add total payment 2025-09-05 13:11:03 +02:00
naielv
fb9d574ff4 fix comedor 2025-09-05 13:04:54 +02:00
naielv
d27b3ec90c update 2025-09-04 22:26:49 +02:00
naielv
7d5d631b05 Añadido Aulas (En desarrollo) 2025-09-04 15:42:16 +02:00
naielv
f13218e0b1 Add type conversion 2025-09-03 10:36:47 +02:00
naielv
ac12dc627d update app_modules.js 2025-09-03 10:32:21 +02:00
naielv
c550812deb update personas.js 2025-09-03 10:30:39 +02:00
naielv
9efb05bc1e update app_modules.js 2025-09-03 10:28:30 +02:00
naielv
db244e2953 update app_modules.js 2025-09-03 10:25:07 +02:00
naielv
a3098a15f2 update 2025-09-03 10:21:41 +02:00
naielv
12b90e3e1e update index.js 2025-09-03 10:11:27 +02:00
naielv
1763de12bd update 2025-09-03 10:10:01 +02:00
naielv
92dc877942 update app_modules.js 2025-09-03 00:13:25 +02:00
naielv
841f063695 update app_modules.js 2025-09-03 00:10:26 +02:00
naielv
e6301bfb64 update app_modules.js 2025-09-03 00:00:06 +02:00
naielv
7e1c6f1bf8 update app_modules.js 2025-09-02 23:53:16 +02:00
naielv
5adff05283 update app_modules.js 2025-09-02 23:49:52 +02:00
naielv
6f3108134b update app_modules.js 2025-09-02 23:42:30 +02:00
naielv
d5650b2e3b update index.js 2025-09-02 23:13:12 +02:00
naielv
e3b062d9ea update simple.css 2025-08-30 16:50:12 +02:00
naielv
6bd797e5bb update simple.css 2025-08-30 16:46:50 +02:00
naielv
ac3b43361c update sw.js 2025-08-30 16:40:00 +02:00
naielv
b9d3c5a10d update app_modules.js 2025-08-30 16:36:54 +02:00
naielv
d9b379ec42 update gun_init.js 2025-08-30 09:54:26 +02:00
naielv
1f3ec25f32 update sw.js 2025-08-30 09:50:17 +02:00
naielv
2458082968 update 2025-08-30 09:45:57 +02:00
naielv
5f59f9f0c0 update 2025-08-30 09:43:36 +02:00
naielv
28ffd17bed update notas.js 2025-08-27 17:59:31 +02:00
naielv
e2446de20f update 2025-08-27 17:56:03 +02:00
naielv
c33b9e6ace update notas.js 2025-08-27 17:52:53 +02:00
naielv
73cb8d5614 update 2025-08-27 17:49:34 +02:00
naielv
69c981de3c update dataman.js 2025-08-27 16:37:35 +02:00
naielv
bdc5c42cde update dataman.js 2025-08-27 16:37:11 +02:00
naielv
5588c94ec3 update app_modules.js 2025-08-27 16:29:11 +02:00
naielv
42310c1f55 update app_modules.js 2025-08-27 15:57:01 +02:00
naielv
08431defbb update dataman.js 2025-08-27 15:55:35 +02:00
naielv
52c15e4863 update dataman.js 2025-08-27 15:52:06 +02:00
naielv
bab0ebc858 update 2025-08-27 15:50:42 +02:00
naielv
b64a9bc78b update 2025-08-27 15:47:54 +02:00
naielv
e9342b6fec update app_modules.js 2025-08-27 14:35:15 +02:00
naielv
b2617f605f update 2025-08-27 14:28:11 +02:00
naielv
c28aaecc66 update index.html 2025-08-27 14:25:37 +02:00
naielv
e3d4998d80 update app_modules.js 2025-08-27 14:23:52 +02:00
naielv
be9c87790d update app_modules.js 2025-08-27 14:21:43 +02:00
naielv
e243f27b70 update app_modules.js 2025-08-27 14:03:07 +02:00
naielv
704241335e update app_modules.js 2025-08-27 13:56:27 +02:00
naielv
8406bd02c2 update app_modules.js 2025-08-27 13:51:35 +02:00
naielv
8a13e6e71b update app_modules.js 2025-08-27 13:49:13 +02:00
naielv
34b27b15ba update 2025-08-27 13:47:23 +02:00
naielv
14c081a615 update supercafe.js 2025-08-27 12:45:14 +02:00
naielv
81d200899d update supercafe.js 2025-08-27 10:43:12 +02:00
naielv
056f705f25 update supercafe.js 2025-08-27 10:41:06 +02:00
naielv
e084d42eb3 update app_logic.js 2025-08-26 15:05:32 +02:00
naielv
b4700f46fd update app_modules.js 2025-08-26 14:57:57 +02:00
naielv
369eb040af update config.js 2025-08-26 14:51:47 +02:00
naielv
d21fae5052 update 2025-08-23 17:21:54 +02:00
naielv
1bc4364084 update supercafe.js 2025-08-23 17:18:30 +02:00
naielv
eebca7752b update build.py 2025-08-23 17:08:05 +02:00
naielv
a42ad8d9ad update app_modules.js 2025-08-23 17:06:08 +02:00
naielv
63546605f2 update 2025-08-23 17:05:17 +02:00
naielv
357166b159 update 2025-08-23 16:50:31 +02:00
naielv
8866c68cee update build.py 2025-08-23 16:31:36 +02:00
naielv
df46f378d7 update index.js 2025-08-16 09:50:10 +02:00
naielv
b00b503d4c update main.yml 2025-08-15 17:38:16 +02:00
naielv
1575b61051 update WinApp.spec 2025-08-15 17:37:03 +02:00
naielv
7d5667451c update main.py 2025-08-15 17:36:58 +02:00
naielv
dbddd70ef9 update main.py 2025-08-15 17:30:16 +02:00
naielv
027669cfd6 update main.py 2025-08-15 17:23:00 +02:00
naielv
693f5c0af9 update 2025-08-15 17:16:05 +02:00
naielv
d596edc107 update main.yml 2025-08-15 17:13:46 +02:00
naielv
eeb540f269 update main.yml 2025-08-15 17:13:08 +02:00
naielv
a9b43a7f7d update 2025-08-15 17:10:58 +02:00
naielv
ba3cc7424d update build.py 2025-08-15 17:08:16 +02:00
naielv
ed2148be8d update build.py 2025-08-15 17:07:24 +02:00
naielv
36e3eaf958 update build.py 2025-08-15 17:05:54 +02:00
naielv
77600a45d5 update 2025-08-15 17:05:02 +02:00
naielv
4988bdff1e update build.py 2025-08-15 17:01:46 +02:00
naielv
8accafc599 update build.py 2025-08-15 16:59:17 +02:00
naielv
bd9db0df22 update build.py 2025-08-15 16:57:49 +02:00
naielv
7794d53802 update 2025-08-15 16:56:47 +02:00
Naiel
014bc50690 Create WinApp.spec 2025-08-15 16:52:53 +02:00
Naiel
ad93d958f9 Rename icon512_maskable.ico to favicon.ico 2025-08-15 16:50:42 +02:00
Naiel
c040215bb6 Add files via upload 2025-08-15 16:50:13 +02:00
Naiel
0132c88ce7 Update main.py 2025-08-15 16:48:46 +02:00
Naiel
a74280f087 Create requirements.txt 2025-08-15 16:47:28 +02:00
Naiel
ccefabbc4a Create main.py 2025-08-15 16:46:56 +02:00
Naiel
e29c02ebe5 Create main.yml 2025-08-15 16:43:18 +02:00
Naiel
2f1b036c3f Merge pull request #5 from EuskadiTech/naielv-add-ribbon
Actualización masiva!
2025-08-15 16:36:11 +02:00
naielv
f480dd5491 update avisos.js 2025-08-14 21:34:17 +02:00
naielv
d4d4fd4b5f update personas.js 2025-08-14 21:30:31 +02:00
naielv
0feba6a09b update simple.css 2025-08-14 21:28:44 +02:00
naielv
4ba8141675 update gun_init.js 2025-08-14 17:45:24 +02:00
naielv
d71fca510f update supercafe.js 2025-08-14 17:35:01 +02:00
naielv
4303a02c1a update app_modules.js 2025-08-14 17:34:58 +02:00
naielv
afa224cbdc Testing IndexedDB 2025-08-14 17:30:21 +02:00
naielv
8de9af66e2 update app_modules.js 2025-08-14 17:23:00 +02:00
naielv
d13c66aa01 update app_logic.js 2025-08-14 17:21:49 +02:00
naielv
faf1d112c9 update testing.html 2025-08-14 17:19:30 +02:00
naielv
138af3a364 update 2025-08-14 17:18:38 +02:00
naielv
e0470d0dd1 update personas.js 2025-08-14 15:39:27 +02:00
naielv
ab75e3089e update simple.css 2025-08-14 15:30:00 +02:00
naielv
bfce6f32b6 update personas.js 2025-08-14 15:27:05 +02:00
naielv
737c0bd65f update personas.js 2025-08-14 15:24:37 +02:00
naielv
93a78a9d97 update 2025-08-14 15:21:11 +02:00
naielv
415334ca4a update 2025-08-14 09:48:26 +02:00
naielv
341119988c update simple.css 2025-08-14 09:36:55 +02:00
naielv
2567b65ff2 update app_modules.js 2025-08-13 22:26:41 +02:00
naielv
69458ecc97 update 2025-08-13 22:25:18 +02:00
naielv
7a391c338a update app_modules.js 2025-08-13 22:12:01 +02:00
naielv
9e8ba5a2e9 update personas.js 2025-08-13 22:08:47 +02:00
naielv
4f56f06208 update 2025-08-13 22:05:43 +02:00
naielv
c42ebadf2d update app_modules.js 2025-08-13 22:01:22 +02:00
naielv
62d1cafef9 update app_modules.js 2025-08-13 21:57:22 +02:00
naielv
6ec7a5feb1 update 2025-08-13 21:55:48 +02:00
naielv
a02f1cb588 update config.js 2025-08-13 21:53:01 +02:00
naielv
aa3f312047 update 2025-08-13 21:51:37 +02:00
naielv
0fbc7cad39 update dataman.js 2025-08-13 21:45:48 +02:00
naielv
293f57133b update app_modules.js 2025-08-13 21:43:55 +02:00
naielv
9ceb62dff0 update dataman.js 2025-08-13 21:43:49 +02:00
naielv
7cb0fdea76 update dataman.js 2025-08-13 21:42:26 +02:00
naielv
8820e16974 update app_modules.js 2025-08-13 21:36:05 +02:00
naielv
58e0c55480 update simple.css 2025-08-13 21:34:05 +02:00
naielv
7c7cec6ac8 update 2025-08-13 21:33:13 +02:00
naielv
8316377344 update dataman.js 2025-08-13 21:27:55 +02:00
naielv
830fdd3206 update icon 2025-08-13 21:26:53 +02:00
naielv
9eadb04a93 move dataOps to Admin. Datos 2025-08-13 21:25:14 +02:00
naielv
cf0ecc4d27 update index.js 2025-08-13 17:04:30 +02:00
naielv
6d1b3fa97e update avisos.js 2025-08-13 17:02:50 +02:00
naielv
e4b9ebe7a4 update 2025-08-13 17:01:07 +02:00
naielv
416188a572 update 2025-08-13 16:58:17 +02:00
naielv
a8e496e78a update 2025-08-13 16:55:59 +02:00
naielv
20553d4c99 update 2025-08-13 16:52:41 +02:00
naielv
618ac4e6db update simple.css 2025-08-13 16:47:37 +02:00
naielv
3dd674b172 update simple.css 2025-08-13 16:45:37 +02:00
naielv
919ff298ba update simple.css 2025-08-13 16:43:08 +02:00
naielv
0599756b63 update simple.css 2025-08-13 16:40:51 +02:00
naielv
5b8641680d update simple.css 2025-08-13 16:38:46 +02:00
naielv
2b15258bd9 update simple.css 2025-08-13 16:37:13 +02:00
naielv
3ad83a523d update app_logic.js 2025-08-13 16:36:00 +02:00
naielv
cdd80eb4be update simple.css 2025-08-13 16:34:23 +02:00
naielv
f5aa8c4366 update 2025-08-13 16:33:26 +02:00
naielv
97c97b561f update simple.css 2025-08-13 16:31:41 +02:00
naielv
975ed0426c update 2025-08-13 16:30:02 +02:00
naielv
c3475e707b update simple.css 2025-08-13 16:24:41 +02:00
naielv
8321ba9373 update simple.css 2025-08-13 16:22:40 +02:00
naielv
c81202edf9 update 2025-08-13 16:21:25 +02:00
naielv
24a82911b6 update simple.css 2025-08-13 16:18:41 +02:00
naielv
3fcdc49502 update simple.css 2025-08-13 16:17:24 +02:00
naielv
1beadb739b update index.html 2025-08-13 16:16:25 +02:00
naielv
846c0e8898 update 2025-08-13 16:14:57 +02:00
naielv
1ea087e683 update 2025-08-13 16:10:57 +02:00
naielv
096042e7c1 update index.html 2025-08-13 16:08:44 +02:00
naielv
cb5e481c4d update index.html 2025-08-13 16:06:36 +02:00
naielv
e91ac0c719 update 2025-08-13 16:04:45 +02:00
naielv
45f6cf82d5 update index.html 2025-08-13 16:01:37 +02:00
naielv
0cccaafb38 update testing.html 2025-08-13 16:00:07 +02:00
naielv
b90bbcb8c2 update app_modules.js 2025-08-13 15:59:55 +02:00
naielv
ae9fcf4887 update simple.css 2025-08-13 15:58:48 +02:00
naielv
1ebc7079eb update 2025-08-13 15:56:59 +02:00
naielv
ea8726e0d6 update index.html 2025-08-13 15:51:14 +02:00
naielv
83125bcf96 update simple.css 2025-08-13 15:49:41 +02:00
naielv
8823159a30 update 2025-08-13 15:49:10 +02:00
naielv
ad458de818 update 2025-08-13 15:42:35 +02:00
naielv
d2a11d65a7 update 2025-08-12 16:15:00 +02:00
naielv
1d8ddd8d8b update index.js 2025-08-12 09:41:37 +02:00
naielv
9de720c920 update build.py 2025-08-12 09:39:54 +02:00
naielv
0c4c9df396 update 2025-08-12 09:38:50 +02:00
naielv
8fc2e96985 update app_modules.js 2025-08-12 09:36:56 +02:00
naielv
852f9eddc9 update materiales.js 2025-08-12 09:04:00 +02:00
naielv
d51e57fcee update app_modules.js 2025-08-12 09:03:04 +02:00
naielv
1be3885c70 update app_modules.js 2025-08-12 09:01:51 +02:00
naielv
52e6e3c09d update app_modules.js 2025-08-12 09:00:18 +02:00
naielv
310696a4c6 update app_modules.js 2025-08-11 22:21:43 +02:00
naielv
505f591839 update 2025-08-11 22:16:08 +02:00
naielv
b07dcd8683 update index.js 2025-08-11 22:04:59 +02:00
naielv
fe5c54ff3e update 2025-08-11 21:59:23 +02:00
naielv
09fa34007b Add Aztec Code Generation 2025-08-11 21:48:39 +02:00
naielv
57171963be update 2025-08-11 15:51:53 +02:00
naielv
881dfedb14 update resumen_diario.js 2025-08-11 15:47:29 +02:00
naielv
1cc6e512ab update resumen_diario.js 2025-08-11 15:45:05 +02:00
naielv
0b748e45f8 update app_logic.js 2025-08-11 15:43:05 +02:00
naielv
e6688bf74c update login.js 2025-08-11 15:36:54 +02:00
naielv
cbd5351981 update login.js 2025-08-11 15:35:07 +02:00
naielv
31007d6979 update app_modules.js 2025-08-11 15:33:27 +02:00
naielv
7fb2d5f67f update 2025-08-11 15:31:34 +02:00
naielv
9b9bd730dd update 2025-08-11 15:25:21 +02:00
naielv
2e438c4b9e update app_modules.js 2025-08-11 15:18:22 +02:00
naielv
6ed2922ba4 update app_modules.js 2025-08-11 15:17:28 +02:00
naielv
b0ff7dd456 update sw.js 2025-08-11 15:14:01 +02:00
Naiel
43dfa414aa Update sw.js 2025-08-11 14:49:22 +02:00
Naiel
1d73f3c427 Update materiales.js 2025-08-07 11:35:31 +02:00
Naiel
72fba9e976 Update personas.js 2025-08-07 11:34:50 +02:00
Naiel
84719e4c6b Merge pull request #2 from EuskadiTech/copilot/fix-1
Fix table sorting with hybrid date-name prioritization
2025-08-07 11:26:49 +02:00
copilot-swe-agent[bot]
9131d25dd5 Invert sorting logic - check Fecha first, then sub-sort by Nombre
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2025-08-07 09:25:09 +00:00
Naiel
c65b1b25a4 Merge pull request #4 from EuskadiTech/copilot/fix-3
Add comprehensive GitHub Copilot instructions for TeleSec development
2025-08-07 11:19:29 +02:00
copilot-swe-agent[bot]
e8a9cff2ec Add comprehensive .github/copilot-instructions.md with full build and testing validation
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2025-08-07 09:16:14 +00:00
copilot-swe-agent[bot]
d39f92554a Fix materials table alphabetical sorting - materials now sort by name
Co-authored-by: naielv <109038805+naielv@users.noreply.github.com>
2025-08-07 09:13:46 +00:00
copilot-swe-agent[bot]
84cc070e68 Initial plan 2025-08-07 09:04:34 +00:00
copilot-swe-agent[bot]
cf553295bb Initial plan 2025-08-07 09:03:48 +00:00
naielv
23c4122afb Ignore GunJS runtime & npm folders 2025-08-05 17:11:23 +02:00
naielv
7414e3d6de fix 2025-08-04 20:39:27 +02:00
naielv
5f2ef09672 fixes 2025-08-04 20:35:57 +02:00
naielv
f2588fc50f Some fixes 2025-08-04 20:31:00 +02:00
naielv
0ea230e99b Rewrite materiales 2025-08-04 20:16:58 +02:00
naielv
a83be0f7c7 Fix slow networks 2025-08-04 20:06:29 +02:00
naielv
ed5755b005 v2025-08-04_1 2025-08-04 20:01:03 +02:00
naielv
0fcd6ccaba Fixed 2025-08-04 19:59:25 +02:00
Naiel
1ee951fc9f Create simple.css 2025-07-31 21:38:28 +02:00
Naiel
325465f9a5 fix submodules 2025-07-31 19:36:36 +00:00
Naiel
7dee605d95 Delete .gitmodules 2025-07-31 21:34:34 +02:00
Naiel
645e8c194a Delete .gitea/workflows/static.yml 2025-07-31 21:31:57 +02:00
naielv
e35428f3ee added search bar 2025-07-31 20:18:40 +02:00
naielv
def79a2015 update 2025-07-31 17:02:09 +02:00
naielv
64d11fe224 Add comedor to ResumenDiario & fix unclosed tags 2025-07-31 16:56:24 +02:00
naielv
a016e06557 General fixes 2025-07-31 16:43:01 +02:00
naielv
a274de3c4d Actualizar build.py 2025-07-30 23:04:01 +02:00
naielv
0f2b2df969 fix scrolltable 2025-07-30 22:47:37 +02:00
naielv
8052d21fcc oops 2025-07-30 22:46:42 +02:00
naielv
03c132a6bd update 2025-07-30 22:38:25 +02:00
naielv
970b1dddf7 2025-07-30_3 2025-07-30 21:32:54 +02:00
naielv
b38156cc3a s 2025-07-30 21:32:06 +02:00
naielv
09c05bb81d Fix assets 2025-07-30 21:30:24 +02:00
naielv
97650659a7 fix 2025-07-30 21:27:45 +02:00
naielv
d05a63e68d update 2025-07-30 21:27:11 +02:00
naielv
c800ea7c1b Modularized, fixed SuperCafe's table 2025-07-30 19:13:16 +02:00
naielv
55eda485ed FIXED 2025-07-18 13:42:31 +02:00
naielv
92d3522f98 fix 2025-07-18 13:26:18 +02:00
naielv
1fcff4c2b2 update 2025-07-18 13:22:06 +02:00
naielv
f032e0f243 fix 2025-07-18 13:19:22 +02:00
naielv
8ee724ba14 fix 2025-07-15 14:12:58 +02:00
naielv
5e92452699 fix2 2025-07-15 14:01:08 +02:00
naielv
659c1f8cc5 fix 2025-07-15 14:00:48 +02:00
naielv
ce7fe7cd6b update 2025-07-15 13:59:13 +02:00
naielv
9bc08a76e8 update 2025-07-15 13:58:04 +02:00
naielv
2c277bb12d updated 2025-07-15 13:51:43 +02:00
174 changed files with 13420 additions and 8289 deletions

View File

@@ -1,54 +0,0 @@
name: Build server
on:
push:
tags: ["v*-*-*_*"]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
token: '${{ secrets.TOKEN_PULL }}'
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: actions/setup-go@v5
with:
go-version: '^1.13.1'
- name: "Build app"
run: "python3 build.py"
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
# Upload built files
name: 'TeleSec-dist'
path: ./dist
- name: "zip-it-up"
run: "zip -r TeleSec-dist.zip ./dist"
- name: Upload as release
uses: https://gitea.com/actions/release-action@main
with:
files: |-
TeleSec-dist.zip
api_key: '${{secrets.TOKEN_PUSH_PLUS}}'
- name: Copy files via SSH
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
source: "TeleSec-dist.zip"
target: ${{ secrets.FOLDER }}TeleSec.zip
- name: Execute remote SSH commands using password
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
script: |
cd ${{ secrets.FOLDER }}
unzip TeleSec.zip

222
.github/copilot-instructions.md vendored Normal file
View File

@@ -0,0 +1,222 @@
# TeleSec - Secure Distributed Communication Application
TeleSec is a Spanish Progressive Web Application (PWA) built with vanilla JavaScript, HTML, and CSS that provides secure group communication using a local-first PouchDB datastore with optional CouchDB replication for syncing. The application allows users to join encrypted communication groups using group codes and secret keys.
**ALWAYS reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.**
## Working Effectively
### Build and Deploy Process
- **Build the application (FASTEST BUILD EVER - 0.036 seconds):**
- `cd /home/runner/work/TeleSec/TeleSec`
- `python3 build.py`
- **NEVER CANCEL**: Build completes in under 0.1 seconds. No timeout needed.
- The build script copies files from `assets/` to `dist/` and processes template variables in `src/` files.
### Serving the Application
- **Python HTTP Server (Recommended for development):**
- `cd /home/runner/work/TeleSec/TeleSec/dist`
- `python3 -m http.server 8000`
- Access at: `http://localhost:8000`
- **Node.js HTTP Server (Alternative with CORS support):**
- `cd /home/runner/work/TeleSec/TeleSec/dist`
- `npx http-server . --port 8001 --cors`
- **NEVER CANCEL**: First run takes ~14 seconds to download http-server package. Set timeout to 30+ seconds.
- Access at: `http://localhost:8001`
### Development Environment Requirements
- **Python 3.x** (for build script) - Version 3.12.3+ confirmed working
- **Node.js and npm** (optional, for alternative serving) - Version 20.19.4+ confirmed working
- **Web browser** (for testing the PWA functionality)
## Validation and Testing
### Mandatory Validation Steps
1. **Build Validation:**
- Run `python3 build.py` and verify it completes in under 1 second
- Verify `dist/` directory is created with all assets and processed files
- Check that template variables (%%PREFETCH%%, %%VERSIONCO%%, %%ASSETSJSON%%) are replaced
2. **Application Functionality Test:**
- Start web server: `python3 -m http.server 8000` in `dist/` directory
- Navigate to `http://localhost:8000` in browser
- **CRITICAL LOGIN TEST:** Enter any group code (e.g., "TEST") and secret key (e.g., "SECRET123")
- Click "Iniciar sesión" button
- **VERIFY NETWORK CONNECTIVITY:** Confirm the header shows connected nodes (e.g., "TeleSec - TEST - (8 nodos)")
- **SUCCESS INDICATORS:**
- Application loads without errors
- Login form accepts credentials
- Distributed network connects (node count > 0)
- No JavaScript console errors except expected WebSocket connection failures
3. **PWA Features Test:**
- Verify Service Worker registration in browser console
- Check manifest.json loads correctly
- Confirm offline caching functionality
### Error Handling Validation
- **Build Script Errors:** Python syntax errors will cause build to fail with clear error messages
- **Network Connectivity:** Some WebSocket connections to gun-manhattan.herokuapp.com may fail - this is expected
- **Browser Compatibility:** Application works in modern browsers supporting Service Workers
## Repository Structure
### Key Files and Directories
```
/home/runner/work/TeleSec/TeleSec/
├── build.py # Main build script - processes template variables
├── index.html # Build error fallback (should never be served)
├── README.md # Basic repository information (minimal)
├── LICENSE # Project license
├── CNAME # GitHub Pages configuration
├── .gitignore # Excludes dist/, radata/, node_modules/
├── src/ # Source files with template variables
│ ├── index.html # Main application HTML with %%PREFETCH%% variables
│ ├── app_logic.js # Core application logic and authentication
│ ├── app_modules.js # Application modules and utilities
│ ├── config.js # Configuration and CouchDB setup
│ ├── db.js # PouchDB wrapper and replication
│ ├── pwa.js # Progressive Web App functionality
│ ├── sw.js # Service Worker with cache configuration
│ └── page/ # Individual page modules
│ ├── login.js # Login functionality
│ ├── index.js # Main dashboard
│ ├── materiales.js # Materials management
│ ├── personas.js # People management
│ ├── supercafe.js # SuperCafé module
│ ├── comedor.js # Dining hall module
│ ├── importar.js # Data import functionality
│ ├── exportar.js # Data export functionality
│ ├── resumen_diario.js # Daily summary
│ └── notificaciones.js # Notifications
└── assets/ # Static assets copied to dist/
├── manifest.json # PWA manifest
├── *.png, *.jpg # Icons and images
├── static/ # JavaScript libraries and CSS
│ ├── euskaditech-css/ # CSS framework
│ └── ico/ # Application icons
└── page/ # Page-specific assets (empty placeholder)
```
### Build Process Details
The `build.py` script performs these operations:
1. **Clean:** Removes existing `dist/` directory (if it exists)
2. **Copy Assets:** Copies all files from `assets/` to `dist/`
3. **Process Templates:** Processes files from `src/` and replaces:
- `%%PREFETCH%%` - Generates link prefetch tags for all assets
- `%%VERSIONCO%%` - Inserts version code "2025-08-04_1"
- `%%ASSETSJSON%%` - Inserts JSON array of all asset files
4. **Output:** Creates complete deployable application in `dist/`
## Application Architecture
### Technology Stack
- **Frontend:** Vanilla JavaScript, HTML5, CSS3
- **Data Layer:** PouchDB (local-first) with optional CouchDB replication
- **Networking:** WebRTC for peer-to-peer connections (where applicable)
- **Authentication:** Group codes + secret keys (converted to uppercase)
- **Storage:** Browser LocalStorage + PouchDB local datastore
- **PWA Features:** Service Worker, Web App Manifest
### Remote Sync (Optional)
The application can optionally replicate to a remote CouchDB server for cloud backup and multi-device syncing. Configure the CouchDB server, database name, and credentials in the login/setup form in the application.
### Application Modules
- **Login/Authentication:** Group-based access with secret keys
- **Materials Management:** Track and manage materials/supplies
- **People Management:** Manage group members
- **SuperCafé:** Café/beverage ordering system
- **Dining Hall:** Restaurant/meal management
- **Import/Export:** Data backup and restoration
- **Daily Summary:** Reports and analytics
- **Notifications:** Alert system
## Common Development Tasks
### Making Changes to the Application
1. **ALWAYS** edit files in `src/` directory, never `dist/`
2. Run `python3 build.py` to rebuild after changes
3. Refresh browser or restart web server to see changes
4. Test authentication flow and network connectivity after any changes
### Adding New Features
1. Create new JavaScript files in `src/page/` for new modules
2. Add script references in `src/index.html`
3. Update assets if new static files are needed
4. Rebuild and test complete user workflows
### Debugging Common Issues
- **Login Issues:** Check browser console for replication/auth errors and DB initialization logs
- **Network Connectivity:** Verify remote CouchDB server is reachable and replication is active
- **Build Issues:** Check Python syntax in build.py
- **Performance:** Monitor browser DevTools Network tab for asset loading
## Validation Scenarios
### Complete User Workflow Test
After making any changes, ALWAYS test this complete scenario:
1. **Build and Serve:**
```bash
cd /home/runner/work/TeleSec/TeleSec
python3 build.py
cd dist
python3 -m http.server 8000
```
2. **Login Test:**
- Navigate to `http://localhost:8000`
- Enter group code: "TEST"
- Enter secret key: "SECRET123"
- Click "Iniciar sesión"
- Verify header shows: "TeleSec - TEST" and that the login is accepted
3. **Network Connectivity Test:**
- Confirm green connection indicator appears (bottom right)
- Check browser console shows PouchDB replication logs when a remote is configured
- Verify heartbeat/last-seen docs are being updated in the local DB
4. **PWA Functionality Test:**
- Check Service Worker registers successfully
- Verify offline caching works (Network tab → Offline)
- Test manifest.json loads correctly
## Quick Reference Commands
### Essential Operations
```bash
# Build application (< 0.1 seconds)
python3 build.py
# Serve with Python (most compatible)
cd dist && python3 -m http.server 8000
# Serve with Node.js (advanced features)
cd dist && npx http-server . --port 8001 --cors
# Clean rebuild
rm -rf dist && python3 build.py
# Check build output
ls -la dist/
```
### File Structure Verification
```bash
# Verify all source files exist
find src/ -name "*.js" -o -name "*.html" | sort
# Check template variable processing
grep -r "%%.*%%" dist/ || echo "All template variables processed correctly"
# Verify assets copied correctly
diff -r assets/ dist/ --exclude="*.js" --exclude="*.html" || echo "Some differences expected due to processing"
```
**CRITICAL REMINDERS:**
- **NEVER CANCEL**: Builds complete in under 0.1 seconds - no timeout needed
- **ALWAYS test login and network connectivity** after changes
- **Edit source files in `src/` directory only**, never `dist/`
- **Test with real user credentials** to verify distributed networking
- **Monitor browser console** for connection status and errors

45
.github/workflows/static.yml vendored Normal file
View File

@@ -0,0 +1,45 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy to Github Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Build
run: TELESEC_HOSTER=GitHub-Pages python3 build.py
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload entire repository
path: './dist/'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View File

@@ -0,0 +1,46 @@
name: Build Windows Agent (Release)
on:
release:
types: [published]
workflow_dispatch:
permissions:
contents: write
jobs:
build-windows-agent:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
shell: bash
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Build hidden EXE with PyInstaller
shell: bash
run: |
cd python_sdk ; pyinstaller --noconfirm --clean --onefile --noconsole --hidden-import=telesec_couchdb --name telesec-windows-agent windows_agent.py
- name: Upload workflow artifact
uses: actions/upload-artifact@v4
with:
name: telesec-windows-agent
path: python_sdk/dist/telesec-windows-agent.exe
- name: Upload asset to GitHub Release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
with:
files: python_sdk/dist/telesec-windows-agent.exe

16
.gitignore vendored
View File

@@ -1,2 +1,14 @@
dist/index.html
dist/sw.js
dist/*
radata/*
node_modules/*
.DS_Store
._*
# Python
__pycache__/*
*.pyc
*.pyo
*.pyd
*.egg-info/*
*.egg
.venv/*
venv/*

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule "dist/static/euskaditech-css"]
path = dist/static/euskaditech-css
url = https://git.tech.eus/EuskadiTech/css.git

7
.prettierrc.json Normal file
View File

@@ -0,0 +1,7 @@
{
"printWidth": 100,
"singleQuote": true,
"semi": true,
"trailingComma": "es5",
"embeddedLanguageFormatting": "auto"
}

6
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"recommendations": [
"tobermory.es6-string-html",
"esbenp.prettier-vscode"
]
}

View File

@@ -1,2 +1,94 @@
# TeleSec
Nuevo programa de datos
## Python SDK (CouchDB directo)
Se añadió un SDK Python en `python_sdk/` para acceder directamente a CouchDB (sin replicación local), compatible con el formato de cifrado de `TS_encrypt`:
- Formato: `RSA{...}`
- Algoritmo: `CryptoJS.AES.encrypt(payload, secret)` (modo passphrase/OpenSSL)
### Instalación
```bash
pip install -r requirements.txt
```
### Uso rápido
```python
from python_sdk import TeleSecCouchDB
db = TeleSecCouchDB(
server_url="https://tu-couchdb",
dbname="telesec",
username="usuario",
password="clave",
secret="SECRET123",
)
# Guardar cifrado (como TS_encrypt)
db.put("personas", "abc123", {"nombre": "Ana"}, encrypt=True)
# Leer y descifrar
obj = db.get("personas", "abc123", decrypt=True)
# Listar una tabla
rows = db.list("personas", decrypt=True)
for row in rows:
print(row.id, row.data)
```
API principal:
- `TeleSecCouchDB.put(table, item_id, data, encrypt=True)`
- `TeleSecCouchDB.get(table, item_id, decrypt=True)`
- `TeleSecCouchDB.list(table, decrypt=True)`
- `TeleSecCouchDB.delete(table, item_id)`
- `ts_encrypt(value, secret)` / `ts_decrypt(value, secret)`
## Agente Windows (Gest-Aula > Ordenadores)
Se añadió soporte para control de ordenadores del aula:
- Tabla: `aulas_ordenadores`
- Campos reportados por agente: `Hostname`, `UsuarioActual`, `AppActualEjecutable`, `AppActualTitulo`, `LastSeenAt`
- Control remoto: `ShutdownBeforeDate` (programado desde web a `hora_servidor + 2 minutos`)
### Ejecutar agente en Windows
El agente usa un archivo de configuración en la carpeta personal del usuario:
- Ruta por defecto: `~/.telesec/windows_agent.json`
- Se crea automáticamente si no existe
```bash
python -m python_sdk.windows_agent --once
```
Ejemplo del JSON de configuración:
```json
{
"server": "https://tu-couchdb",
"db": "telesec",
"user": "usuario",
"password": "clave",
"secret": "SECRET123",
"machine_id": "",
"interval": 15
}
```
También puedes sobrescribir valores por CLI (`--server`, `--secret`, etc.).
Opciones útiles:
- `--once`: una sola iteración
- `--interval 15`: intervalo (segundos)
- `--dry-run`: no apaga realmente, solo simula
- `--config <ruta>`: ruta alternativa del archivo JSON
### Hora de servidor (sin depender del reloj local)
El frontend y el agente usan la hora del servidor (cabecera HTTP `Date` de CouchDB) para comparar `ShutdownBeforeDate`.

View File

@@ -1,86 +0,0 @@
[
"icon512_maskable.png",
"icon512_rounded.png",
"index.html",
"manifest.json",
"static/axe.js",
"static/doublescroll.js",
"static/gun.js",
"static/jquery.js",
"static/load.js",
"static/open.js",
"static/path.js",
"static/radisk.js",
"static/radix.js",
"static/rindexed.js",
"static/sea.js",
"static/showdown.min.js",
"static/simplemde.min.css",
"static/simplemde.min.js",
"static/store.js",
"static/synchronous.js",
"static/TeleSec.jpg",
"static/toastr.min.css",
"static/toastr.min.js",
"static/webrtc.js",
"static/yson.js",
"static/ico/add.png",
"static/ico/azucar-moreno.png",
"static/ico/azucar-blanco.jpg",
"static/ico/stevia.jpg",
"static/ico/stevia-gotas.webp",
"static/ico/sacarina.jpg",
"static/ico/arrow_down_blue.png",
"static/ico/arrow_left_green.png",
"static/ico/arrow_up_red.png",
"static/ico/camera2.png",
"static/ico/cereales.png",
"static/ico/checkbox.png",
"static/ico/checkbox_unchecked.png",
"static/ico/connect_ok.svg",
"static/ico/connect_ko.svg",
"static/ico/coffee_bean.png",
"static/ico/colacao.jpg",
"static/ico/cookies.png",
"static/ico/cow.png",
"static/ico/delete.png",
"static/ico/fire.png",
"static/ico/keyboard_key_g.png",
"static/ico/keyboard_key_p.png",
"static/ico/lollipop.png",
"static/ico/milk.png",
"static/ico/preferences.png",
"static/ico/sizes.png",
"static/ico/statusok.png",
"static/ico/snowflake.png",
"static/ico/tea_bag.png",
"static/ico/thermometer2.png",
"static/ico/user.png",
"static/ico/user_generic.png",
"static/ico/water_tap.png",
"static/ico/wheat.png",
"static/ico/layered1/Azucar-Az. Blanco.png",
"static/ico/layered1/Azucar-Az. Moreno.png",
"static/ico/layered1/Azucar-Edulcorante.png",
"static/ico/layered1/Azucar-Sacarina.png",
"static/ico/layered1/Azucar-Sin.png",
"static/ico/layered1/Azucar-Stevia (Gotas).png",
"static/ico/layered1/Azucar-Stevia (Pastillas).png",
"static/ico/layered1/Background.png",
"static/ico/layered1/Cafeina-Con.png",
"static/ico/layered1/Cafeina-Sin.png",
"static/ico/layered1/Leche-Agua.png",
"static/ico/layered1/Leche-Sin lactosa.png",
"static/ico/layered1/Leche-Vegetal.png",
"static/ico/layered1/Leche-de Vaca.png",
"static/ico/layered1/Selección-CafeSolo.png",
"static/ico/layered1/Selección-CaféLeche.png",
"static/ico/layered1/Selección-ColaCao.png",
"static/ico/layered1/Selección-Infusion.png",
"static/ico/layered1/Selección-Leche.png",
"static/ico/layered1/Tamaño-Grande.png",
"static/ico/layered1/Tamaño-Pequeño.png",
"static/ico/layered1/Temperatura-Caliente.png",
"static/ico/layered1/Temperatura-Frio.png",
"static/ico/layered1/Temperatura-Templado.png"
]

View File

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

BIN
assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

Before

Width:  |  Height:  |  Size: 378 KiB

After

Width:  |  Height:  |  Size: 378 KiB

View File

Before

Width:  |  Height:  |  Size: 300 KiB

After

Width:  |  Height:  |  Size: 300 KiB

BIN
assets/load.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

0
assets/page/.placeholder Normal file
View File

35
assets/static/aes.js Normal file
View File

@@ -0,0 +1,35 @@
/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS=CryptoJS||function(u,p){var d={},l=d.lib={},s=function(){},t=l.Base={extend:function(a){s.prototype=this;var c=new s;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},
r=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=p?c:4*a.length},toString:function(a){return(a||v).stringify(this)},concat:function(a){var c=this.words,e=a.words,j=this.sigBytes;a=a.sigBytes;this.clamp();if(j%4)for(var k=0;k<a;k++)c[j+k>>>2]|=(e[k>>>2]>>>24-8*(k%4)&255)<<24-8*((j+k)%4);else if(65535<e.length)for(k=0;k<a;k+=4)c[j+k>>>2]=e[k>>>2];else c.push.apply(c,e);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<
32-8*(c%4);a.length=u.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],e=0;e<a;e+=4)c.push(4294967296*u.random()|0);return new r.init(c,a)}}),w=d.enc={},v=w.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++){var k=c[j>>>2]>>>24-8*(j%4)&255;e.push((k>>>4).toString(16));e.push((k&15).toString(16))}return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j+=2)e[j>>>3]|=parseInt(a.substr(j,
2),16)<<24-4*(j%8);return new r.init(e,c/2)}},b=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++)e.push(String.fromCharCode(c[j>>>2]>>>24-8*(j%4)&255));return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j++)e[j>>>2]|=(a.charCodeAt(j)&255)<<24-8*(j%4);return new r.init(e,c)}},x=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(b.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return b.parse(unescape(encodeURIComponent(a)))}},
q=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=x.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,e=c.words,j=c.sigBytes,k=this.blockSize,b=j/(4*k),b=a?u.ceil(b):u.max((b|0)-this._minBufferSize,0);a=b*k;j=u.min(4*a,j);if(a){for(var q=0;q<a;q+=k)this._doProcessBlock(e,q);q=e.splice(0,a);c.sigBytes-=j}return new r.init(q,j)},clone:function(){var a=t.clone.call(this);
a._data=this._data.clone();return a},_minBufferSize:0});l.Hasher=q.extend({cfg:t.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){q.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,e){return(new a.init(e)).finalize(b)}},_createHmacHelper:function(a){return function(b,e){return(new n.HMAC.init(a,
e)).finalize(b)}}});var n=d.algo={};return d}(Math);
(function(){var u=CryptoJS,p=u.lib.WordArray;u.enc.Base64={stringify:function(d){var l=d.words,p=d.sigBytes,t=this._map;d.clamp();d=[];for(var r=0;r<p;r+=3)for(var w=(l[r>>>2]>>>24-8*(r%4)&255)<<16|(l[r+1>>>2]>>>24-8*((r+1)%4)&255)<<8|l[r+2>>>2]>>>24-8*((r+2)%4)&255,v=0;4>v&&r+0.75*v<p;v++)d.push(t.charAt(w>>>6*(3-v)&63));if(l=t.charAt(64))for(;d.length%4;)d.push(l);return d.join("")},parse:function(d){var l=d.length,s=this._map,t=s.charAt(64);t&&(t=d.indexOf(t),-1!=t&&(l=t));for(var t=[],r=0,w=0;w<
l;w++)if(w%4){var v=s.indexOf(d.charAt(w-1))<<2*(w%4),b=s.indexOf(d.charAt(w))>>>6-2*(w%4);t[r>>>2]|=(v|b)<<24-8*(r%4);r++}return p.create(t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
(function(u){function p(b,n,a,c,e,j,k){b=b+(n&a|~n&c)+e+k;return(b<<j|b>>>32-j)+n}function d(b,n,a,c,e,j,k){b=b+(n&c|a&~c)+e+k;return(b<<j|b>>>32-j)+n}function l(b,n,a,c,e,j,k){b=b+(n^a^c)+e+k;return(b<<j|b>>>32-j)+n}function s(b,n,a,c,e,j,k){b=b+(a^(n|~c))+e+k;return(b<<j|b>>>32-j)+n}for(var t=CryptoJS,r=t.lib,w=r.WordArray,v=r.Hasher,r=t.algo,b=[],x=0;64>x;x++)b[x]=4294967296*u.abs(u.sin(x+1))|0;r=r.MD5=v.extend({_doReset:function(){this._hash=new w.init([1732584193,4023233417,2562383102,271733878])},
_doProcessBlock:function(q,n){for(var a=0;16>a;a++){var c=n+a,e=q[c];q[c]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360}var a=this._hash.words,c=q[n+0],e=q[n+1],j=q[n+2],k=q[n+3],z=q[n+4],r=q[n+5],t=q[n+6],w=q[n+7],v=q[n+8],A=q[n+9],B=q[n+10],C=q[n+11],u=q[n+12],D=q[n+13],E=q[n+14],x=q[n+15],f=a[0],m=a[1],g=a[2],h=a[3],f=p(f,m,g,h,c,7,b[0]),h=p(h,f,m,g,e,12,b[1]),g=p(g,h,f,m,j,17,b[2]),m=p(m,g,h,f,k,22,b[3]),f=p(f,m,g,h,z,7,b[4]),h=p(h,f,m,g,r,12,b[5]),g=p(g,h,f,m,t,17,b[6]),m=p(m,g,h,f,w,22,b[7]),
f=p(f,m,g,h,v,7,b[8]),h=p(h,f,m,g,A,12,b[9]),g=p(g,h,f,m,B,17,b[10]),m=p(m,g,h,f,C,22,b[11]),f=p(f,m,g,h,u,7,b[12]),h=p(h,f,m,g,D,12,b[13]),g=p(g,h,f,m,E,17,b[14]),m=p(m,g,h,f,x,22,b[15]),f=d(f,m,g,h,e,5,b[16]),h=d(h,f,m,g,t,9,b[17]),g=d(g,h,f,m,C,14,b[18]),m=d(m,g,h,f,c,20,b[19]),f=d(f,m,g,h,r,5,b[20]),h=d(h,f,m,g,B,9,b[21]),g=d(g,h,f,m,x,14,b[22]),m=d(m,g,h,f,z,20,b[23]),f=d(f,m,g,h,A,5,b[24]),h=d(h,f,m,g,E,9,b[25]),g=d(g,h,f,m,k,14,b[26]),m=d(m,g,h,f,v,20,b[27]),f=d(f,m,g,h,D,5,b[28]),h=d(h,f,
m,g,j,9,b[29]),g=d(g,h,f,m,w,14,b[30]),m=d(m,g,h,f,u,20,b[31]),f=l(f,m,g,h,r,4,b[32]),h=l(h,f,m,g,v,11,b[33]),g=l(g,h,f,m,C,16,b[34]),m=l(m,g,h,f,E,23,b[35]),f=l(f,m,g,h,e,4,b[36]),h=l(h,f,m,g,z,11,b[37]),g=l(g,h,f,m,w,16,b[38]),m=l(m,g,h,f,B,23,b[39]),f=l(f,m,g,h,D,4,b[40]),h=l(h,f,m,g,c,11,b[41]),g=l(g,h,f,m,k,16,b[42]),m=l(m,g,h,f,t,23,b[43]),f=l(f,m,g,h,A,4,b[44]),h=l(h,f,m,g,u,11,b[45]),g=l(g,h,f,m,x,16,b[46]),m=l(m,g,h,f,j,23,b[47]),f=s(f,m,g,h,c,6,b[48]),h=s(h,f,m,g,w,10,b[49]),g=s(g,h,f,m,
E,15,b[50]),m=s(m,g,h,f,r,21,b[51]),f=s(f,m,g,h,u,6,b[52]),h=s(h,f,m,g,k,10,b[53]),g=s(g,h,f,m,B,15,b[54]),m=s(m,g,h,f,e,21,b[55]),f=s(f,m,g,h,v,6,b[56]),h=s(h,f,m,g,x,10,b[57]),g=s(g,h,f,m,t,15,b[58]),m=s(m,g,h,f,D,21,b[59]),f=s(f,m,g,h,z,6,b[60]),h=s(h,f,m,g,C,10,b[61]),g=s(g,h,f,m,j,15,b[62]),m=s(m,g,h,f,A,21,b[63]);a[0]=a[0]+f|0;a[1]=a[1]+m|0;a[2]=a[2]+g|0;a[3]=a[3]+h|0},_doFinalize:function(){var b=this._data,n=b.words,a=8*this._nDataBytes,c=8*b.sigBytes;n[c>>>5]|=128<<24-c%32;var e=u.floor(a/
4294967296);n[(c+64>>>9<<4)+15]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360;n[(c+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(n.length+1);this._process();b=this._hash;n=b.words;for(a=0;4>a;a++)c=n[a],n[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return b},clone:function(){var b=v.clone.call(this);b._hash=this._hash.clone();return b}});t.MD5=v._createHelper(r);t.HmacMD5=v._createHmacHelper(r)})(Math);
(function(){var u=CryptoJS,p=u.lib,d=p.Base,l=p.WordArray,p=u.algo,s=p.EvpKDF=d.extend({cfg:d.extend({keySize:4,hasher:p.MD5,iterations:1}),init:function(d){this.cfg=this.cfg.extend(d)},compute:function(d,r){for(var p=this.cfg,s=p.hasher.create(),b=l.create(),u=b.words,q=p.keySize,p=p.iterations;u.length<q;){n&&s.update(n);var n=s.update(d).finalize(r);s.reset();for(var a=1;a<p;a++)n=s.finalize(n),s.reset();b.concat(n)}b.sigBytes=4*q;return b}});u.EvpKDF=function(d,l,p){return s.create(p).compute(d,
l)}})();
CryptoJS.lib.Cipher||function(u){var p=CryptoJS,d=p.lib,l=d.Base,s=d.WordArray,t=d.BufferedBlockAlgorithm,r=p.enc.Base64,w=p.algo.EvpKDF,v=d.Cipher=t.extend({cfg:l.extend(),createEncryptor:function(e,a){return this.create(this._ENC_XFORM_MODE,e,a)},createDecryptor:function(e,a){return this.create(this._DEC_XFORM_MODE,e,a)},init:function(e,a,b){this.cfg=this.cfg.extend(b);this._xformMode=e;this._key=a;this.reset()},reset:function(){t.reset.call(this);this._doReset()},process:function(e){this._append(e);return this._process()},
finalize:function(e){e&&this._append(e);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(e){return{encrypt:function(b,k,d){return("string"==typeof k?c:a).encrypt(e,b,k,d)},decrypt:function(b,k,d){return("string"==typeof k?c:a).decrypt(e,b,k,d)}}}});d.StreamCipher=v.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var b=p.mode={},x=function(e,a,b){var c=this._iv;c?this._iv=u:c=this._prevBlock;for(var d=0;d<b;d++)e[a+d]^=
c[d]},q=(d.BlockCipherMode=l.extend({createEncryptor:function(e,a){return this.Encryptor.create(e,a)},createDecryptor:function(e,a){return this.Decryptor.create(e,a)},init:function(e,a){this._cipher=e;this._iv=a}})).extend();q.Encryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize;x.call(this,e,a,c);b.encryptBlock(e,a);this._prevBlock=e.slice(a,a+c)}});q.Decryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize,d=e.slice(a,a+c);b.decryptBlock(e,a);x.call(this,
e,a,c);this._prevBlock=d}});b=b.CBC=q;q=(p.pad={}).Pkcs7={pad:function(a,b){for(var c=4*b,c=c-a.sigBytes%c,d=c<<24|c<<16|c<<8|c,l=[],n=0;n<c;n+=4)l.push(d);c=s.create(l,c);a.concat(c)},unpad:function(a){a.sigBytes-=a.words[a.sigBytes-1>>>2]&255}};d.BlockCipher=v.extend({cfg:v.cfg.extend({mode:b,padding:q}),reset:function(){v.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a,
this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=d.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),b=(p.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;return(a?s.create([1398893684,
1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=s.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},a=d.SerializableCipher=l.extend({cfg:l.extend({format:b}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var l=a.createEncryptor(c,d);b=l.finalize(b);l=l.cfg;return n.create({ciphertext:b,key:c,iv:l.iv,algorithm:a,mode:l.mode,padding:l.padding,blockSize:a.blockSize,formatter:d.format})},
decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),p=(p.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=s.random(8));a=w.create({keySize:b+c}).compute(a,d);c=s.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c,salt:d})}},c=d.PasswordBasedCipher=a.extend({cfg:a.cfg.extend({kdf:p}),encrypt:function(b,c,d,l){l=this.cfg.extend(l);d=l.kdf.execute(d,
b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}();
(function(){for(var u=CryptoJS,p=u.lib.BlockCipher,d=u.algo,l=[],s=[],t=[],r=[],w=[],v=[],b=[],x=[],q=[],n=[],a=[],c=0;256>c;c++)a[c]=128>c?c<<1:c<<1^283;for(var e=0,j=0,c=0;256>c;c++){var k=j^j<<1^j<<2^j<<3^j<<4,k=k>>>8^k&255^99;l[e]=k;s[k]=e;var z=a[e],F=a[z],G=a[F],y=257*a[k]^16843008*k;t[e]=y<<24|y>>>8;r[e]=y<<16|y>>>16;w[e]=y<<8|y>>>24;v[e]=y;y=16843009*G^65537*F^257*z^16843008*e;b[k]=y<<24|y>>>8;x[k]=y<<16|y>>>16;q[k]=y<<8|y>>>24;n[k]=y;e?(e=z^a[a[a[G^z]]],j^=a[a[j]]):e=j=1}var H=[0,1,2,4,8,
16,32,64,128,27,54],d=d.AES=p.extend({_doReset:function(){for(var a=this._key,c=a.words,d=a.sigBytes/4,a=4*((this._nRounds=d+6)+1),e=this._keySchedule=[],j=0;j<a;j++)if(j<d)e[j]=c[j];else{var k=e[j-1];j%d?6<d&&4==j%d&&(k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255]):(k=k<<8|k>>>24,k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255],k^=H[j/d|0]<<24);e[j]=e[j-d]^k}c=this._invKeySchedule=[];for(d=0;d<a;d++)j=a-d,k=d%4?e[j]:e[j-4],c[d]=4>d||4>=j?k:b[l[k>>>24]]^x[l[k>>>16&255]]^q[l[k>>>
8&255]]^n[l[k&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,t,r,w,v,l)},decryptBlock:function(a,c){var d=a[c+1];a[c+1]=a[c+3];a[c+3]=d;this._doCryptBlock(a,c,this._invKeySchedule,b,x,q,n,s);d=a[c+1];a[c+1]=a[c+3];a[c+3]=d},_doCryptBlock:function(a,b,c,d,e,j,l,f){for(var m=this._nRounds,g=a[b]^c[0],h=a[b+1]^c[1],k=a[b+2]^c[2],n=a[b+3]^c[3],p=4,r=1;r<m;r++)var q=d[g>>>24]^e[h>>>16&255]^j[k>>>8&255]^l[n&255]^c[p++],s=d[h>>>24]^e[k>>>16&255]^j[n>>>8&255]^l[g&255]^c[p++],t=
d[k>>>24]^e[n>>>16&255]^j[g>>>8&255]^l[h&255]^c[p++],n=d[n>>>24]^e[g>>>16&255]^j[h>>>8&255]^l[k&255]^c[p++],g=q,h=s,k=t;q=(f[g>>>24]<<24|f[h>>>16&255]<<16|f[k>>>8&255]<<8|f[n&255])^c[p++];s=(f[h>>>24]<<24|f[k>>>16&255]<<16|f[n>>>8&255]<<8|f[g&255])^c[p++];t=(f[k>>>24]<<24|f[n>>>16&255]<<16|f[g>>>8&255]<<8|f[h&255])^c[p++];n=(f[n>>>24]<<24|f[g>>>16&255]<<16|f[h>>>8&255]<<8|f[k&255])^c[p++];a[b]=q;a[b+1]=s;a[b+2]=t;a[b+3]=n},keySize:8});u.AES=p._createHelper(d)})();

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" width="64" height="64" color-interpolation="linearRGB"
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
<g>
<path style="fill:#010101; fill-opacity:0.4549"
d="M30 62H36L38 60L42 62H56L64 52L54 48H44L43 49L40 48H38L30 62z"
/>
<path style="fill:none; stroke:#000000; stroke-width:4"
d="M14 41V52L30 60L38 52V41L22 35L14 41z"
/>
<linearGradient id="gradient0" gradientUnits="userSpaceOnUse" x1="56.22" y1="56.15" x2="49.67" y2="65.65">
<stop offset="0" stop-color="#e07900"/>
<stop offset="1" stop-color="#fff289"/>
</linearGradient>
<path style="fill:url(#gradient0)"
d="M14 41L30 48L38 41L22 35L14 41z"
/>
<path style="fill:none; stroke:#000000; stroke-width:4"
d="M14 6V34L30 41L38 35V6L22 2L14 6z"
/>
<linearGradient id="gradient1" gradientUnits="userSpaceOnUse" x1="24.32" y1="-24.13" x2="51.3" y2="-13.84">
<stop offset="0" stop-color="#fff49e"/>
<stop offset="1" stop-color="#ffbd30"/>
</linearGradient>
<path style="fill:url(#gradient1)"
d="M14 6V34L30 41V11L14 6z
M14 41V52L30 60V48L14 41z"
/>
<linearGradient id="gradient2" gradientUnits="userSpaceOnUse" x1="30.5" y1="-22.81" x2="56.01" y2="-9.13">
<stop offset="0" stop-color="#ffffff"/>
<stop offset="1" stop-color="#fff289"/>
</linearGradient>
<path style="fill:url(#gradient2)"
d="M14 6L30 11L38 6L22 2L14 6z"
/>
<linearGradient id="gradient3" gradientUnits="userSpaceOnUse" x1="33.3" y1="-0.68" x2="46.77" y2="0.74">
<stop offset="0" stop-color="#ed9406"/>
<stop offset="1" stop-color="#fcb23d"/>
</linearGradient>
<path style="fill:url(#gradient3)"
d="M30 11V41L38 35V6L30 11z
M30 48V60L38 52V41L30 48z"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" width="64" height="64" color-interpolation="linearRGB"
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
<g>
<path style="fill:#010101; fill-opacity:0.4078"
d="M38 40C25.84 40 16 45.37 16 52C16 52 25.84 64 38 64C50.14 64 60 58.61 60 52C60 45.37 50.14 40 38 40z"
/>
<linearGradient id="gradient0" gradientUnits="userSpaceOnUse" x1="52" y1="-64" x2="68" y2="-64">
<stop offset="0" stop-color="#010000"/>
<stop offset="1" stop-color="#010000" stop-opacity="0"/>
</linearGradient>
<path style="fill:none; stroke:url(#gradient0); stroke-width:4"
d="M44 44C44 44 49.51 38 54 38C58 38 56 46 64 42"
/>
<path style="fill:none; stroke:#010000; stroke-width:4"
d="M28 34C28 34 23 48 14 49V52L34 62L48 48L45 34H28z"
/>
<linearGradient id="gradient1" gradientUnits="userSpaceOnUse" x1="41.67" y1="-9.73" x2="71.92" y2="-3.5">
<stop offset="0" stop-color="#5c5c5c"/>
<stop offset="1" stop-color="#b8b8b8"/>
</linearGradient>
<path style="fill:url(#gradient1)"
d="M34 36V62L48 48L45 34L34 36z"
/>
<linearGradient id="gradient2" gradientUnits="userSpaceOnUse" x1="14.26" y1="97.46" x2="-8.94" y2="81.76">
<stop offset="0" stop-color="#c9c9c9"/>
<stop offset="1" stop-color="#ffffff"/>
</linearGradient>
<path style="fill:url(#gradient2)"
d="M14 52L34 62V58L14 49V52z"
/>
<linearGradient id="gradient3" gradientUnits="userSpaceOnUse" x1="51.94" y1="63.65" x2="26.51" y2="73.34">
<stop offset="0" stop-color="#797979"/>
<stop offset="1" stop-color="#e4e4e4"/>
</linearGradient>
<path style="fill:url(#gradient3)"
d="M34 58C41 51 40 39 40 39L28 34C28 34 23 48 14 49L34 58z"
/>
<path style="fill:none; stroke:#010000; stroke-width:4"
d="M30 2C18.95 2 10 10.95 10 22C10 33.03 18.95 42 30 42C41.03 42 50 33.03 50 22C50 10.95 41.03 2 30 2z"
/>
<radialGradient id="gradient4" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="64" gradientTransform="matrix(0.373,0.2924,-0.3363,0.4291,25.2905,16.1419)">
<stop offset="0.1647" stop-color="#ffffff"/>
<stop offset="0.7686" stop-color="#959191"/>
<stop offset="1" stop-color="#b9b9b9"/>
</radialGradient>
<path style="fill:url(#gradient4)"
d="M30 2C18.95 2 10 10.95 10 22C10 33.03 18.95 42 30 42C41.03 42 50 33.03 50 22C50 10.95 41.03 2 30 2z"
/>
<linearGradient id="gradient5" gradientUnits="userSpaceOnUse" x1="-6" y1="-4" x2="38" y2="-4">
<stop offset="0.2509" stop-color="#010101"/>
<stop offset="1" stop-color="#c1acac"/>
</linearGradient>
<path style="fill:none; stroke:url(#gradient5); stroke-width:4"
d="M12.25 43.25C9.83 45.6 10.61 50.31 13.99 53.76C17.35 57.23 22.03 58.1 24.46 55.75C26.87 53.41 26.09 48.7 22.73 45.24C19.36 41.79 14.67 40.91 12.25 43.25z"
transform="matrix(0.9846,0.4347,-0.4379,0.9773,24.6832,-30.2941)"
/>
<radialGradient id="gradient6" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="64" gradientTransform="matrix(0.1345,0.0871,-0.0673,0.1039,20.7047,50.7358)">
<stop offset="0" stop-color="#434a68"/>
<stop offset="1" stop-color="#0f1238"/>
</radialGradient>
<path style="fill:url(#gradient6)"
d="M12.25 43.25C9.83 45.6 10.61 50.31 13.99 53.76C17.35 57.23 22.03 58.1 24.46 55.75C26.87 53.41 26.09 48.7 22.73 45.24C19.36 41.79 14.67 40.91 12.25 43.25z"
transform="matrix(0.9846,0.4347,-0.4379,0.9773,26.8385,-30.2941)"
/>
<path style="fill:#ffffff"
d="M12.25 43.25C9.83 45.6 10.61 50.31 13.99 53.76C17.35 57.23 22.03 58.1 24.46 55.75C26.87 53.41 26.09 48.7 22.73 45.24C19.36 41.79 14.67 40.91 12.25 43.25z"
transform="matrix(-0.0781,0.1744,-0.1757,-0.0775,31.659,20.9543)"
/>
<path style="fill:#ffffff"
d="M19 53C19 53 22.24 53.24 23.24 52.24C24.24 51.24 24 49 24 49C24 49 24.87 52.1 23.87 53.1C22.87 54.1 19 53 19 53z"
transform="matrix(0.9846,0.4347,-0.4379,0.9773,26.8385,-30.2941)"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" width="64" height="64" color-interpolation="linearRGB"
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
<g>
<path style="fill:#000000; fill-opacity:0.396"
d="M32 62H40L44 64L61 43L55.8 40.4L60 38L52 37L32 62z"
/>
<path style="fill:none; stroke:#000000; stroke-width:4; stroke-linejoin:round"
d="M10 39V49L32 60L50 42V36"
/>
<linearGradient id="gradient0" gradientUnits="userSpaceOnUse" x1="46.07" y1="78.24" x2="23.93" y2="73.15">
<stop offset="0" stop-color="#82aac8"/>
<stop offset="1" stop-color="#40407c"/>
</linearGradient>
<path style="fill:url(#gradient0)"
d="M32 38L50 20V42L32 60V38z"
/>
<path style="fill:#3d3d5d"
d="M32 38H42L32 48V38z"
/>
<linearGradient id="gradient1" gradientUnits="userSpaceOnUse" x1="44.47" y1="70.75" x2="29.89" y2="79.36">
<stop offset="0" stop-color="#5a6e82"/>
<stop offset="1" stop-color="#9be2ff"/>
</linearGradient>
<path style="fill:url(#gradient1)"
d="M11.89 36.01L14 46L32 55V60L10 49V35.99L11.89 36.01z"
/>
<linearGradient id="gradient2" gradientUnits="userSpaceOnUse" x1="54.08" y1="49.54" x2="50.66" y2="59.95">
<stop offset="0" stop-color="#5a6e82"/>
<stop offset="1" stop-color="#3a7d99"/>
</linearGradient>
<path style="fill:url(#gradient2)"
d="M32 38V55L14 46L11.89 36.01L32 38z"
/>
<path style="fill:none; stroke:#000000; stroke-width:4; stroke-linejoin:round"
d="M24 46L2 35L10 27H2L24 14H30L37 6L54 12L50 23L62 26L44 44L32 38L24 46z"
/>
<linearGradient id="gradient3" gradientUnits="userSpaceOnUse" x1="44.25" y1="2.48" x2="55.01" y2="17.28">
<stop offset="0" stop-color="#40407c"/>
<stop offset="0.9962" stop-color="#417297"/>
</linearGradient>
<path style="fill:url(#gradient3)"
d="M10 27L30 14V33L23.89 37.88L10 30.99V27z"
/>
<linearGradient id="gradient4" gradientUnits="userSpaceOnUse" x1="42.68" y1="-29.81" x2="61.51" y2="-25.25">
<stop offset="0" stop-color="#6dc8ed"/>
<stop offset="1" stop-color="#a4c6e1"/>
</linearGradient>
<path style="fill:url(#gradient4)"
d="M30 14L34 30L50 37V22L30 14z"
/>
<path style="fill:#3d3d5d"
d="M30 14L34 30L50 37L41.85 38.33L30 33V14z"
/>
<path style="fill:#376181"
d="M30 33L23.89 37.88L32 38L36.1 35.74L30 33z"
/>
<linearGradient id="gradient5" gradientUnits="userSpaceOnUse" x1="32.24" y1="-14.37" x2="49.83" y2="-16.21">
<stop offset="0" stop-color="#9be2ff"/>
<stop offset="1" stop-color="#5789bd"/>
</linearGradient>
<path style="fill:url(#gradient5)"
d="M37 6L54 12L50 23L30 14L37 6z"
/>
<linearGradient id="gradient6" gradientUnits="userSpaceOnUse" x1="1.22" y1="-19.6" x2="44.89" y2="-14.22">
<stop offset="0" stop-color="#9be2ff"/>
<stop offset="1" stop-color="#5d81a5"/>
</linearGradient>
<path style="fill:url(#gradient6)"
d="M2 35L24 46L32 38L10 27L2 35z"
/>
<path style="fill:#9be2ff"
d="M2 27L24 14H30L10 27H2z"
/>
<linearGradient id="gradient7" gradientUnits="userSpaceOnUse" x1="43.44" y1="10.75" x2="62.48" y2="20.22">
<stop offset="0" stop-color="#9be2ff"/>
<stop offset="1" stop-color="#5a6e82"/>
</linearGradient>
<path style="fill:url(#gradient7)"
d="M32 38L50 23L62 26L44 44L32 38z"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="256px" height="256px" viewBox="0 0 428.428 428.428" xml:space="preserve">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512.001 512.001" xml:space="preserve">
<g>
<g>
<path d="M467.309,16.768H221.454c-6.128,0-11.095,4.967-11.095,11.095v86.451l12.305-7.64c3.131-1.945,6.475-3.257,9.884-3.978
V38.958h223.665v160.016H232.549v-25.89l-22.19,13.778v23.208c0,6.128,4.967,11.095,11.095,11.095h245.855
c6.127,0,11.095-4.967,11.095-11.095V27.863C478.404,21.735,473.436,16.768,467.309,16.768z"/>
</g>
</g>
<g>
<g>
<path d="M306.001,78.356c-2.919-3.702-8.285-4.335-11.986-1.418l-38.217,30.133c3.649,2.385,6.85,5.58,9.301,9.527
c0.695,1.117,1.298,2.266,1.834,3.431l37.651-29.687C308.286,87.424,308.92,82.057,306.001,78.356z"/>
</g>
</g>
<g>
<g>
<circle cx="121.535" cy="31.935" r="31.935"/>
</g>
</g>
<g>
<g>
<path d="M252.01,124.728c-4.489-7.229-13.987-9.451-21.218-4.963l-31.206,19.375c-0.13-25.879-0.061-12.145-0.144-28.811
c-0.101-20.005-16.458-36.281-36.464-36.281h-15.159c-12.951,33.588-8.779,21.12-19.772,49.63l4.623-20.131
c0.32-1.508,0.088-3.08-0.655-4.43l-6.264-11.393l5.559-10.109c0.829-1.508-0.264-3.356-1.985-3.356h-15.271
c-1.72,0-2.815,1.848-1.985,3.356l5.57,10.13l-6.276,11.414c-0.728,1.325-0.966,2.865-0.672,4.347l4.005,20.172
c-2.159-5.599-17.084-44.306-19.137-49.63H80.093c-20.005,0-36.363,16.275-36.464,36.281l-0.569,113.2
c-0.042,8.51,6.821,15.443,15.331,15.486c0.027,0,0.052,0,0.079,0c8.473,0,15.364-6.848,15.406-15.331l0.569-113.2
c0-0.018,0-0.036,0-0.053c0.024-1.68,1.399-3.026,3.079-3.013c1.68,0.012,3.034,1.378,3.034,3.058l0.007,160.381
c14.106-0.6,27.176,4.488,36.981,13.423v-62.568h7.983v71.773c5.623,8.268,8.914,18.243,8.914,28.974
c0,9.777-2.732,18.928-7.469,26.731c4.866,0.023,9.592,0.669,14.099,1.861c6.076-5.271,13.385-9.151,21.437-11.136
c0-279.342-0.335-106.627-0.335-229.418c0-1.779,1.439-3.221,3.218-3.224c1.779-0.004,3.224,1.432,3.232,3.211
c0.054,10.807,0.224,44.59,0.283,56.351c0.028,5.579,3.07,10.708,7.953,13.407c4.874,2.694,10.835,2.554,15.583-0.394
l54.604-33.903C254.276,141.458,256.499,131.957,252.01,124.728z"/>
</g>
</g>
<g>
<g>
<circle cx="429.221" cy="322.831" r="33.803"/>
</g>
</g>
<g>
<g>
<path d="M511.459,405.811c-0.107-21.176-17.421-38.404-38.598-38.404c-9.137,0-76.583,0-84.781,0
c3.637,7.068,5.704,15.069,5.704,23.55c0,9.005-2.405,18.413-7.5,26.782c18.904,0.764,35.468,10.91,45.149,25.897h40.579v-37.43
c0-1.842,1.46-3.352,3.301-3.415s3.402,1.345,3.526,3.182c0,0,0,0.001,0,0.002l0.19,37.661h32.621L511.459,405.811z"/>
</g>
</g>
<g>
<g>
<path d="M290.469,390.956c0-8.629,2.138-16.763,5.894-23.92c-22.009,0-47.852,0-75.267,0c3.472,6.939,5.437,14.756,5.437,23.029
c0,9.721-2.73,18.926-7.469,26.731c15.558,0.074,29.912,6.538,40.283,17.267c10.054-9.822,23.759-15.914,38.836-15.995
C292.948,409.616,290.469,400.126,290.469,390.956z"/>
</g>
</g>
<g>
<g>
<path d="M264.819,288.655c-18.668,0-33.804,15.132-33.804,33.803c0,18.628,15.107,33.803,33.804,33.803
c18.518,0,33.803-14.965,33.803-33.803C298.622,303.808,283.517,288.655,264.819,288.655z"/>
</g>
</g>
<g>
<g>
<path d="M123.217,390.065c0-8.252,1.956-16.053,5.411-22.98c-1.457-0.072,4.672-0.049-89.485-0.049
c-21.068,0-38.491,17.138-38.598,38.404l-0.192,38.196c14.907,0,17.906,0,32.621,0l0.191-38.031
c0.01-1.884,1.541-3.402,3.423-3.397c1.882,0.006,3.404,1.532,3.404,3.414v38.014h45.727c9.855-15.754,26.8-25.646,45.243-26.406
C125.956,409.168,123.217,399.865,123.217,390.065z"/>
</g>
</g>
<g>
<g>
<path d="M82.786,288.655c-18.668,0-33.803,15.134-33.803,33.803c0,18.584,15.046,33.803,33.803,33.803
c18.536,0,33.804-15.015,33.804-33.803C116.59,303.788,101.455,288.655,82.786,288.655z"/>
</g>
</g>
<g>
<g>
<path d="M422.533,473.807c-0.105-21.178-17.42-38.406-38.597-38.406c-2.246,0-82.969,0-85.507,0
c-21.176,0-39.601,17.227-39.708,38.404l-0.275-0.891c-0.105-21.092-17.341-38.404-38.597-38.404c-24.544,0-59.795,0-85.507,0
c-21.176,0-39.601,17.227-39.708,38.404L94.442,512h32.621l0.191-38.922c0.008-1.622,1.327-2.93,2.948-2.926
c1.621,0.004,2.932,1.32,2.932,2.941v38.908c19.121,0,68.483,0,86.392,0v-38.908c0-1.736,1.405-3.144,3.141-3.149
c1.735-0.004,3.149,1.397,3.158,3.133l0.191,38.923c6.669,0,58.238,0,65.134,0l0.191-38.031c0,0,0-0.001,0-0.002
c0.009-1.621,1.328-2.928,2.949-2.924c1.621,0.004,2.931,1.32,2.931,2.941v38.016c19.121,0,68.483,0,86.392,0v-38.016
c0-1.736,1.405-3.144,3.141-3.149c1.735-0.004,3.149,1.397,3.158,3.133l0.191,38.031h32.621L422.533,473.807z"/>
</g>
</g>
<g>
<g>
<circle cx="175.934" cy="389.933" r="34.198"/>
</g>
</g>
<g>
<g>
<circle cx="342.07" cy="390.821" r="34.198"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="287.96585" height="275.66766" id="svg2" version="1.1" inkscape:version="0.48.0 r9654" sodipodi:docname="Coffee cup.svg">
<defs id="defs4">
<linearGradient id="linearGradient3817">
<stop style="stop-color:#bdbdbd;stop-opacity:1;" offset="0" id="stop3819"/>
<stop style="stop-color:#ececec;stop-opacity:1;" offset="1" id="stop3821"/>
</linearGradient>
<linearGradient id="linearGradient3801">
<stop style="stop-color:#ececec;stop-opacity:1;" offset="0" id="stop3803"/>
<stop style="stop-color:#bdbdbd;stop-opacity:1;" offset="1" id="stop3805"/>
</linearGradient>
<linearGradient id="linearGradient3791">
<stop style="stop-color:#ececec;stop-opacity:1;" offset="0" id="stop3793"/>
<stop style="stop-color:#bdbdbd;stop-opacity:1;" offset="1" id="stop3795"/>
</linearGradient>
<linearGradient id="linearGradient3767">
<stop style="stop-color:#2b2b2b;stop-opacity:1;" offset="0" id="stop3769"/>
<stop style="stop-color:#666666;stop-opacity:1;" offset="1" id="stop3771"/>
</linearGradient>
<linearGradient id="linearGradient3755">
<stop style="stop-color:#dddddd;stop-opacity:1;" offset="0" id="stop3757"/>
<stop style="stop-color:#b2b2b2;stop-opacity:1;" offset="1" id="stop3759"/>
</linearGradient>
<filter inkscape:collect="always" id="filter3781" x="-0.079655327" width="1.1593107" y="-0.23315777" height="1.4663155" color-interpolation-filters="sRGB">
<feGaussianBlur inkscape:collect="always" stdDeviation="13.323301" id="feGaussianBlur3783"/>
</filter>
<filter inkscape:collect="always" id="filter3842" x="-0.1819846" width="1.3639692" y="-0.44528148" height="1.890563" color-interpolation-filters="sRGB">
<feGaussianBlur inkscape:collect="always" stdDeviation="4.4043134" id="feGaussianBlur3844"/>
</filter>
<filter inkscape:collect="always" id="filter3868" color-interpolation-filters="sRGB">
<feGaussianBlur inkscape:collect="always" stdDeviation="1.8652408" id="feGaussianBlur3870"/>
</filter>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3817" id="linearGradient3884" gradientUnits="userSpaceOnUse" x1="343.33261" y1="220.75931" x2="422.52917" y2="140.95724"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3791" id="radialGradient3886" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.7, 0, 57.7087)" cx="280" cy="139.50504" fx="280" fy="139.50504" r="100"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3801" id="radialGradient3888" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.83246, 2.65218e-08, 0, 0.162304, -233.089, 102.502)" cx="280" cy="73.071892" fx="280" fy="73.071892" r="95.5"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3767" id="radialGradient3910" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="392.14285" cy="583.4931" fx="392.14285" fy="583.4931" r="200.71428"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3767" id="radialGradient3918" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="392.14285" cy="583.4931" fx="392.14285" fy="583.4931" r="200.71428"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3755" id="radialGradient3920" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="396.42856" cy="491.49908" fx="396.42856" fy="491.49908" r="200.71428"/>
<filter inkscape:collect="always" id="filter3939" x="-0.16236658" width="1.3247333" y="-0.47526056" height="1.9505211" color-interpolation-filters="sRGB">
<feGaussianBlur inkscape:collect="always" stdDeviation="27.157745" id="feGaussianBlur3941"/>
</filter>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3801" id="radialGradient3950" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.83246, 2.65218e-08, 0, 0.162304, -125.31, 250.603)" cx="280" cy="73.071892" fx="280" fy="73.071892" r="95.5"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3791" id="radialGradient3953" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.7, 107.779, 205.809)" cx="280" cy="139.50504" fx="280" fy="139.50504" r="100"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3817" id="linearGradient3957" gradientUnits="userSpaceOnUse" x1="343.33261" y1="220.75931" x2="422.52917" y2="140.95724" gradientTransform="matrix(0.800412, 0, 0, 0.800412, 185.295, 183.555)"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3817" id="linearGradient3971" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.800412, 0, 0, 0.800412, 185.295, 183.555)" x1="343.33261" y1="220.75931" x2="422.52917" y2="140.95724"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3791" id="radialGradient3973" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.7, 107.779, 205.809)" cx="280" cy="139.50504" fx="280" fy="139.50504" r="100"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3801" id="radialGradient3975" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.83246, 2.65218e-08, 0, 0.162304, -125.31, 250.603)" cx="280" cy="73.071892" fx="280" fy="73.071892" r="95.5"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3767" id="radialGradient3997" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="392.14285" cy="583.4931" fx="392.14285" fy="583.4931" r="200.71428"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3767" id="radialGradient3999" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="392.14285" cy="583.4931" fx="392.14285" fy="583.4931" r="200.71428"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3755" id="radialGradient4001" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="396.42856" cy="491.49908" fx="396.42856" fy="491.49908" r="200.71428"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3817" id="linearGradient4003" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.800412, 0, 0, 0.800412, 185.295, 183.555)" x1="343.33261" y1="220.75931" x2="422.52917" y2="140.95724"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3791" id="radialGradient4005" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.7, 107.779, 205.809)" cx="280" cy="139.50504" fx="280" fy="139.50504" r="100"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3801" id="radialGradient4007" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.83246, 2.65218e-08, 0, 0.162304, -125.31, 250.603)" cx="280" cy="73.071892" fx="280" fy="73.071892" r="95.5"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3817" id="linearGradient3061" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.800412, 0, 0, 0.800412, 185.295, 183.555)" x1="343.33261" y1="220.75931" x2="422.52917" y2="140.95724"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3791" id="radialGradient3063" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.7, 107.779, 205.809)" cx="280" cy="139.50504" fx="280" fy="139.50504" r="100"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3801" id="radialGradient3065" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.83246, 2.65218e-08, 0, 0.162304, -125.31, 250.603)" cx="280" cy="73.071892" fx="280" fy="73.071892" r="95.5"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3801" id="radialGradient3074" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.83246, 2.65218e-08, 0, 0.162304, -123.31, 250.603)" cx="280" cy="73.071892" fx="280" fy="73.071892" r="95.5"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3791" id="radialGradient3077" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.7, 109.779, 205.809)" cx="280" cy="139.50504" fx="280" fy="139.50504" r="100"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient3817" id="linearGradient3081" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.800412, 0, 0, 0.800412, 187.295, 183.555)" x1="343.33261" y1="220.75931" x2="422.52917" y2="140.95724"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3767" id="radialGradient3083" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="392.14285" cy="583.4931" fx="392.14285" fy="583.4931" r="200.71428"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3767" id="radialGradient3085" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="392.14285" cy="583.4931" fx="392.14285" fy="583.4931" r="200.71428"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient3755" id="radialGradient3087" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.341637, 0, 263.019)" cx="396.42856" cy="491.49908" fx="396.42856" fy="491.49908" r="200.71428"/>
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.7071068" inkscape:cx="7.436507" inkscape:cy="230.98232" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1024" inkscape:window-height="742" inkscape:window-x="-4" inkscape:window-y="-4" inkscape:window-maximized="1" fit-margin-top="10" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0">
<inkscape:grid type="xygrid" id="grid3785" empspacing="5" visible="true" enabled="true" snapvisiblegridlinesonly="true"/>
</sodipodi:namedview>
<metadata id="metadata7">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-246.532, -190.385)">
<g id="g3094">
<path transform="matrix(0.618775, 0, 0, 0.646379, 143.447, 142.829)" sodipodi:type="arc" style="fill:url(#radialGradient3083);fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3781)" id="path3779" sodipodi:cx="399.28571" sodipodi:cy="399.50504" sodipodi:rx="200.71428" sodipodi:ry="68.571426" d="m 599.99998,399.50504 a 200.71428,68.571426 0 1 1 -401.42855,0 200.71428,68.571426 0 1 1 401.42855,0 z"/>
<path d="m 599.99998,399.50504 a 200.71428,68.571426 0 1 1 -401.42855,0 200.71428,68.571426 0 1 1 401.42855,0 z" sodipodi:ry="68.571426" sodipodi:rx="200.71428" sodipodi:cy="399.50504" sodipodi:cx="399.28571" id="path3765" style="fill:url(#radialGradient3085);fill-opacity:1;fill-rule:nonzero;stroke:none" sodipodi:type="arc" transform="matrix(0.618775, 0, 0, 0.646379, 143.447, 142.829)"/>
<path transform="matrix(0.646379, 0, 0, 0.646379, 132.426, 136.365)" sodipodi:type="arc" style="fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path3763" sodipodi:cx="399.28571" sodipodi:cy="399.50504" sodipodi:rx="200.71428" sodipodi:ry="68.571426" d="m 599.99998,399.50504 a 200.71428,68.571426 0 1 1 -401.42855,0 200.71428,68.571426 0 1 1 401.42855,0 z"/>
<path transform="matrix(0.646379, 0, 0, 0.646379, 132.426, 133.78)" d="m 599.99998,399.50504 a 200.71428,68.571426 0 1 1 -401.42855,0 200.71428,68.571426 0 1 1 401.42855,0 z" sodipodi:ry="68.571426" sodipodi:rx="200.71428" sodipodi:cy="399.50504" sodipodi:cx="399.28571" id="path2985" style="fill:url(#radialGradient3087);fill-opacity:1;fill-rule:nonzero;stroke:none" sodipodi:type="arc"/>
<path transform="matrix(0.372876, 0, 0, 0.319443, 241.631, 265.685)" sodipodi:type="arc" style="fill:#979797;fill-opacity:0.39215686;fill-rule:nonzero;stroke:#b7b7b7;stroke-width:5.61860895;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="path3775" sodipodi:cx="399.28571" sodipodi:cy="399.50504" sodipodi:rx="200.71428" sodipodi:ry="68.571426" d="m 599.99998,399.50504 a 200.71428,68.571426 0 1 1 -401.42855,0 200.71428,68.571426 0 1 1 401.42855,0 z"/>
<path d="m 599.99998,399.50504 a 200.71428,68.571426 0 1 1 -401.42855,0 200.71428,68.571426 0 1 1 401.42855,0 z" sodipodi:ry="68.571426" sodipodi:rx="200.71428" sodipodi:cy="399.50504" sodipodi:cx="399.28571" id="path3926" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3939)" sodipodi:type="arc" transform="matrix(0.265496, 0, 0, 0.200192, 283.77, 318.155)"/>
<path sodipodi:nodetypes="cczcczc" inkscape:connector-curvature="0" id="path3815" d="m 473.13884,312.5941 0.45571,-13.03877 c 16.79252,-1.26498 38.44962,-8.39059 38.25779,26.6325 -0.19184,35.02311 -38.64614,28.28143 -48.43686,23.68663 l 0.65784,-10.56391 c 7.09726,2.48526 35.21153,4.81796 35.59877,-13.93125 0.38725,-18.74922 -9.93254,-15.43796 -26.53325,-12.7852 z" style="fill:url(#linearGradient3081);fill-opacity:1;stroke:#d6d6d6;stroke-width:0.80041194;stroke-opacity:1"/>
<path sodipodi:nodetypes="czczc" inkscape:connector-curvature="0" id="path3787" d="m 289.77863,270.46269 c 0,0 0,-20 100,-20 100,0 100,20 100,20 0,0 0,20 -100,20 -100,0 -100,-20 -100,-20 z" style="fill:#e6e6e6;fill-opacity:1;stroke:none"/>
<path sodipodi:nodetypes="czczc" inkscape:connector-curvature="0" id="path3789" d="m 289.77863,270.46269 c 0,0 0,140 100,140 100,0 100,-140 100,-140 0,0 0,20 -100,20 -100,0 -100,-20 -100,-20 z" style="fill:url(#radialGradient3077);fill-opacity:1;stroke:none"/>
<path style="fill:url(#radialGradient3074);fill-opacity:1;stroke:#d6d6d6;stroke-opacity:1" d="m 294.77863,270.46269 c 0,0 0,-15 95,-15 95,0 95,15 95,15 0,0 0,15 -95,15 -95,0 -95,-15 -95,-15 z" id="path3799" inkscape:connector-curvature="0" sodipodi:nodetypes="czczc"/>
<path id="path3809" d="m 389.77863,265.47551 c -64.11627,0 -83.29251,7.59423 -84.875,11.90625 11.22479,3.93491 34.8967,8.09375 84.875,8.09375 49.9783,0 73.65021,-4.15884 84.875,-8.09375 -1.58249,-4.31202 -20.75873,-11.90625 -84.875,-11.90625 z" style="fill:#562c08;fill-opacity:1;stroke:none" inkscape:connector-curvature="0"/>
<path inkscape:connector-curvature="0" id="path3827" d="m 292.10929,298.02015 c 2.55938,4.81149 16.9432,18.3125 97.68492,18.3125 80.69081,0 95.08106,-13.49308 97.65375,-18.3125 -5.46348,5.78106 -25.32465,16.3125 -97.65375,16.3125 -72.39656,0 -92.24323,-10.53491 -97.68492,-16.3125 z" style="fill:#000000;fill-opacity:1;stroke:none"/>
<path style="fill:#000000;fill-opacity:1;stroke:none" d="m 291.54108,294.02015 c 2.57427,4.81149 17.04177,18.3125 98.25322,18.3125 81.16025,0 95.63422,-13.49308 98.22187,-18.3125 -5.49527,5.78106 -25.47198,16.3125 -98.22187,16.3125 -72.81774,0 -92.77987,-10.53491 -98.25322,-16.3125 z" id="path3832" inkscape:connector-curvature="0"/>
<path sodipodi:nodetypes="cccc" inkscape:connector-curvature="0" id="path3834" d="m 302.9703,288.54748 25.00128,5.17703 c -2.71055,42.30856 3.19121,65.46435 23.73858,99.6263 -25.41202,-23.58673 -42.16474,-53.00575 -48.73986,-104.80333 z" style="fill:#ffffff;fill-opacity:0.35294118;stroke:none"/>
<path transform="matrix(1.31762, 0, 0, 1.673, 20.9841, 66.1965)" d="m 308.60161,118.72869 a 29.041885,11.869292 0 1 1 -58.08377,0 29.041885,11.869292 0 1 1 58.08377,0 z" sodipodi:ry="11.869292" sodipodi:rx="29.041885" sodipodi:cy="118.72869" sodipodi:cx="279.55972" id="path3836" style="fill:#ffffff;fill-opacity:0.35294118;fill-rule:nonzero;stroke:none;filter:url(#filter3842)" sodipodi:type="arc"/>
<path transform="matrix(0.69763, 0, 0, 0.617722, 194.056, 186.002)" sodipodi:nodetypes="cczzczzzc" inkscape:connector-curvature="0" id="path3846" d="m 307.31913,54.771706 c -11.66884,-21.1275 -16.92627,-23.67626 -27.87348,-26.494634 -20.94721,-2.318374 -29.96874,3.083901 -29.28106,17.972485 0.68768,14.888584 26.53898,25.731883 26.8681,42.599832 0.32912,16.867951 -19.63135,51.743261 -19.63135,51.743261 0,0 31.42782,-33.99061 30.98863,-51.465344 -0.43918,-17.474744 -21.70744,-27.295456 -24.67515,-34.229816 -2.96771,-6.934361 -1.4691,-17.248349 14.72575,-17.437672 16.19485,-0.189323 28.87856,17.311888 28.87856,17.311888 z" style="opacity:0.5;fill:#eaa21f;fill-opacity:0.35294118;stroke:none;filter:url(#filter3868)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,12 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg fill="#000000" width="256px" height="256px" viewBox="0 0 54.13 54.13" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" stroke="#000000" stroke-width="0.0005413">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round" stroke="#CCCCCC" stroke-width="0.5413"/>
<g id="SVGRepo_iconCarrier">
<title>cogs</title>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="353" height="512" preserveAspectRatio="xMidYMid">
<path fill-rule="evenodd" d="M299.596 492.223C266.856 504.976 223.496 512 177.5 512c-45.996 0-89.357-7.024-122.095-19.777-35.083-13.667-54.404-32.766-54.404-53.78V73.557c0-21.014 19.321-40.113 54.404-53.78C88.144 7.024 131.504 0 177.5 0c45.996 0 89.356 7.024 122.096 19.778 35.069 13.661 54.387 32.751 54.402 53.756 0 .007.001.014.001.023v364.886c0 21.014-19.321 40.113-54.403 53.78ZM293.872 34.44C262.914 22.381 221.585 15.739 177.5 15.739c-44.085 0-85.414 6.642-116.372 18.702-28.2 10.984-44.374 25.243-44.374 39.116 0 13.873 16.174 28.131 44.374 39.116 30.958 12.058 72.287 18.7 116.372 18.7 16.532 0 32.675-.934 48.031-2.738 25.592-3.005 48.992-8.425 68.341-15.963 28.199-10.985 44.372-25.243 44.372-39.116 0-13.873-16.172-28.131-44.372-39.116Zm44.375 70.393c-.015.014-.031.027-.046.041-.133.122-.275.244-.41.367-10.912 9.91-24.554 16.781-38.194 22.095-21.485 8.369-47.544 14.27-75.921 17.339-14.865 1.608-30.364 2.438-46.175 2.438-45.996 0-89.357-7.024-122.095-19.777-13.896-5.413-27.587-12.266-38.614-22.469-.012-.011-.024-.021-.036-.032v90.35c0 13.872 16.173 28.13 44.373 39.115 26.121 10.176 59.624 16.495 95.938 18.221 6.805.325 13.62.482 20.434.482 48.743 0 106.184-3.582 146.132-34.692 5.307-4.133 10.264-9.024 12.936-15.305 1.049-2.46 1.678-5.139 1.678-7.82v-90.353Zm.001 121.627c-.012.009-.024.02-.034.029-2.528 2.319-5.204 4.475-7.998 6.469-17.383 12.41-38.247 19.695-58.788 24.922-16.994 4.324-35.701 7.424-55.406 9.177-.172.014-.343.032-.515.047-6.485.568-13.077.987-19.749 1.261-6.026.248-12.117.377-18.256.377-45.996 0-89.357-7.024-122.095-19.777-13.652-5.316-27.217-12.143-38.139-22.045-.155-.141-.317-.279-.471-.421-.013-.012-.026-.024-.04-.036v90.352c0 13.873 16.173 28.131 44.373 39.116 30.958 12.059 72.287 18.701 116.372 18.701 11.881 0 23.559-.487 34.89-1.429.813-.066 1.625-.137 2.433-.208 29.767-2.655 57.032-8.487 79.049-17.064 12.028-4.685 21.859-9.967 29.189-15.559 6.171-4.708 12.25-10.671 14.436-18.344.015-.052.024-.104.039-.155.458-1.648.71-3.348.71-5.059V226.46Zm.002 121.628c-.013.012-.025.022-.038.034-.172.159-.356.317-.531.475-2.552 2.309-5.255 4.445-8.073 6.42-9.261 6.487-19.492 11.48-30.01 15.577-28.508 11.103-65.07 17.861-104.411 19.423-5.839.232-11.738.352-17.683.352-45.996 0-89.357-7.024-122.095-19.777-13.687-5.33-27.127-12.071-38.086-21.997-.174-.157-.356-.314-.528-.472-.013-.012-.025-.022-.038-.034v90.352c0 13.872 16.173 28.13 44.373 39.115 30.959 12.06 72.286 18.702 116.372 18.702s85.414-6.642 116.373-18.702c28.199-10.985 44.372-25.241 44.372-39.115h.003v-90.353Zm-28.174 80.883c-7.949 0-14.393-6.438-14.393-14.381 0-7.942 6.444-14.381 14.393-14.381 7.95 0 14.394 6.439 14.394 14.381 0 7.943-6.444 14.381-14.394 14.381Zm-49.956 15.047c-7.949 0-14.393-6.438-14.393-14.381 0-7.942 6.444-14.381 14.393-14.381 7.949 0 14.394 6.439 14.394 14.381 0 7.943-6.445 14.381-14.394 14.381Zm-53.012 8.237c-7.949 0-14.393-6.438-14.393-14.381 0-7.942 6.444-14.381 14.393-14.381 7.949 0 14.393 6.439 14.393 14.381 0 7.943-6.444 14.381-14.393 14.381Zm102.968-143.877c-7.949 0-14.393-6.439-14.393-14.381 0-7.943 6.444-14.381 14.393-14.381 7.95 0 14.394 6.438 14.394 14.381 0 7.942-6.444 14.381-14.394 14.381Zm-49.956 15.057c-7.949 0-14.393-6.439-14.393-14.381 0-7.943 6.444-14.381 14.393-14.381 7.949 0 14.394 6.438 14.394 14.381 0 7.942-6.445 14.381-14.394 14.381Zm-53.012 8.237c-7.949 0-14.393-6.439-14.393-14.381 0-7.943 6.444-14.381 14.393-14.381 7.949 0 14.393 6.438 14.393 14.381 0 7.942-6.444 14.381-14.393 14.381Zm102.968-145.986c-7.949 0-14.393-6.438-14.393-14.381 0-7.942 6.444-14.381 14.393-14.381 7.95 0 14.394 6.439 14.394 14.381 0 7.943-6.444 14.381-14.394 14.381Zm-49.956 15.057c-7.949 0-14.393-6.438-14.393-14.381 0-7.942 6.444-14.381 14.393-14.381 7.949 0 14.394 6.439 14.394 14.381 0 7.943-6.445 14.381-14.394 14.381Zm-53.012 8.237c-7.949 0-14.393-6.438-14.393-14.381 0-7.942 6.444-14.381 14.393-14.381 7.949 0 14.393 6.439 14.393 14.381 0 7.943-6.444 14.381-14.393 14.381Z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" width="64" height="64" color-interpolation="linearRGB"
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
<g>
<path style="fill:#010101; fill-opacity:0.4235"
d="M28 64C28 64 33 64 38 64C43 64 48.2 60.96 52.75 61.12C63.12 61.5 67.25 56.37 60.87 54.37C57.04 53.17 52 53.25 49.12 51.25C45.45 48.69 38 48 38 48V55L28 64z"
/>
<path style="fill:none; stroke:#000000; stroke-width:4"
d="M12 18V35L16 39V56L20 58L22 58L23 59.5L28 62L36 54V43L40 39V21L21 12L12 18z"
/>
<linearGradient id="gradient0" gradientUnits="userSpaceOnUse" x1="73.74" y1="-57.07" x2="116.61" y2="-8.05">
<stop offset="0" stop-color="#ffdb97"/>
<stop offset="1" stop-color="#fcaf29"/>
</linearGradient>
<path style="fill:url(#gradient0)"
d="M12 18V35L16 39V56L20 58L22 58L23 59.5L28 62V45H32V27L12 18z"
/>
<linearGradient id="gradient1" gradientUnits="userSpaceOnUse" x1="-43.97" y1="-33.98" x2="-24.83" y2="-51.95">
<stop offset="0" stop-color="#fff7ea"/>
<stop offset="0.9962" stop-color="#fdd17b"/>
</linearGradient>
<path style="fill:url(#gradient1)"
d="M12 18L32 27L40 21L26 20L31.99 16.99L21 12L12 18z"
/>
<linearGradient id="gradient2" gradientUnits="userSpaceOnUse" x1="54.23" y1="-52.61" x2="75.84" y2="-45.97">
<stop offset="0" stop-color="#c85805"/>
<stop offset="1" stop-color="#f06306"/>
</linearGradient>
<path style="fill:url(#gradient2)"
d="M32 45H28V62L36 54V43L40 39V21L32 27V45z"
/>
<path style="fill:#a32904"
d="M28 45V51L36 43L32 45H28z"
/>
<linearGradient id="gradient3" gradientUnits="userSpaceOnUse" x1="28.92" y1="-64" x2="39.07" y2="-64">
<stop offset="0" stop-color="#c85804"/>
<stop offset="1" stop-color="#dc952f"/>
</linearGradient>
<path style="fill:url(#gradient3)"
d="M26 20L40 21L32 17L26 20z"
/>
<path style="fill:none; stroke:#000000; stroke-width:4"
d="M26 2C22 2 18 6 18 10C18 14 22 18 26 18C30 18 34 14 34 10C34 6 30 2 26 2z"
/>
<radialGradient id="gradient4" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="64" gradientTransform="matrix(0.2361,0,0,0.2321,22.625,6.375)">
<stop offset="0" stop-color="#f2f2f2"/>
<stop offset="1" stop-color="#bca184"/>
<stop offset="0.6742" stop-color="#7d7a7a"/>
</radialGradient>
<path style="fill:url(#gradient4)"
d="M26 2C22 2 18 6 18 10C18 14 22 18 26 18C30 18 34 14 34 10C34 6 30 2 26 2z"
/>
<linearGradient id="gradient5" gradientUnits="userSpaceOnUse" x1="54.23" y1="-52.61" x2="75.84" y2="-45.97">
<stop offset="0" stop-color="#c85805"/>
<stop offset="1" stop-color="#f06306"/>
</linearGradient>
<path style="fill:url(#gradient5)"
d="M20 58H22V44L20 43V58z"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg version="1.1" width="64" height="64" color-interpolation="linearRGB"
xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg">
<g>
<path style="fill:#000000; fill-opacity:0.3882"
d="M60 35.39L32 64H38L64 37.39L60 35.39z"
/>
<path style="fill:none; stroke:#000000; stroke-width:4"
d="M2 30V47L32 62L58 36V19L30 10L2 30z"
/>
<linearGradient id="gradient0" gradientUnits="userSpaceOnUse" x1="45.2" y1="-3.44" x2="66.1" y2="20.77">
<stop offset="0" stop-color="#6499e8"/>
<stop offset="1" stop-color="#1b63ce"/>
</linearGradient>
<path style="fill:url(#gradient0)"
d="M32 43L2 30V47L32 62V43z"
/>
<linearGradient id="gradient1" gradientUnits="userSpaceOnUse" x1="64.29" y1="5.5" x2="75.95" y2="14.74">
<stop offset="0" stop-color="#10489b"/>
<stop offset="1" stop-color="#0a54c3"/>
</linearGradient>
<path style="fill:url(#gradient1)"
d="M32 43L58 19V36L32 62V43z"
/>
<linearGradient id="gradient2" gradientUnits="userSpaceOnUse" x1="8" y1="-64" x2="56" y2="-64">
<stop offset="0" stop-color="#c0d9ff"/>
<stop offset="1" stop-color="#5e95e8"/>
</linearGradient>
<path style="fill:url(#gradient2)"
d="M32 43L58 19L30 10L2 30L32 43z"
/>
<linearGradient id="gradient3" gradientUnits="userSpaceOnUse" x1="18" y1="20" x2="34" y2="20">
<stop offset="0" stop-color="#2a4fae"/>
<stop offset="0.25" stop-color="#4ca0da"/>
<stop offset="1" stop-color="#0434a1"/>
</linearGradient>
<path style="fill:url(#gradient3)"
d="M15 28C15 25.79 18.58 24 23 24C27.41 24 31 25.79 31 28V31C31 33.2 27.41 35 23 35C18.58 35 15 33.2 15 31V28z"
/>
<linearGradient id="gradient4" gradientUnits="userSpaceOnUse" x1="4" y1="-65" x2="50" y2="-65">
<stop offset="0" stop-color="#c0d9ff"/>
<stop offset="1" stop-color="#5e95e8"/>
</linearGradient>
<path style="fill:url(#gradient4)"
d="M15 27C15 24.79 18.58 23 23 23C27.41 23 31 24.79 31 27C31 29.2 27.41 31 23 31C18.58 31 15 29.2 15 27z"
/>
<linearGradient id="gradient5" gradientUnits="userSpaceOnUse" x1="18" y1="20" x2="34" y2="20">
<stop offset="0" stop-color="#2a4fae"/>
<stop offset="0.25" stop-color="#4ca0da"/>
<stop offset="1" stop-color="#0434a1"/>
</linearGradient>
<path style="fill:url(#gradient5)"
d="M15 28C15 25.79 18.58 24 23 24C27.41 24 31 25.79 31 28V31C31 33.2 27.41 35 23 35C18.58 35 15 33.2 15 31V28z"
transform="matrix(0.9375,0,0,0.9375,15,-8.125)"
/>
<linearGradient id="gradient6" gradientUnits="userSpaceOnUse" x1="4" y1="-65" x2="50" y2="-65">
<stop offset="0" stop-color="#c0d9ff"/>
<stop offset="1" stop-color="#5e95e8"/>
</linearGradient>
<path style="fill:url(#gradient6)"
d="M15 27C15 24.79 18.58 23 23 23C27.41 23 31 24.79 31 27C31 29.2 27.41 31 23 31C18.58 31 15 29.2 15 27z"
transform="matrix(0.9375,0,0,0.9375,15,-8.125)"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 115.21" style="enable-background:new 0 0 122.88 115.21" xml:space="preserve"><g><path d="M29.03,100.46l20.79-25.21l9.51,12.13L41,110.69C33.98,119.61,20.99,110.21,29.03,100.46L29.03,100.46z M53.31,43.05 c1.98-6.46,1.07-11.98-6.37-20.18L28.76,1c-2.58-3.03-8.66,1.42-6.12,5.09L37.18,24c2.75,3.34-2.36,7.76-5.2,4.32L16.94,9.8 c-2.8-3.21-8.59,1.03-5.66,4.7c4.24,5.1,10.8,13.43,15.04,18.53c2.94,2.99-1.53,7.42-4.43,3.69L6.96,18.32 c-2.19-2.38-5.77-0.9-6.72,1.88c-1.02,2.97,1.49,5.14,3.2,7.34L20.1,49.06c5.17,5.99,10.95,9.54,17.67,7.53 c1.03-0.31,2.29-0.94,3.64-1.77l44.76,57.78c2.41,3.11,7.06,3.44,10.08,0.93l0.69-0.57c3.4-2.83,3.95-8,1.04-11.34L50.58,47.16 C51.96,45.62,52.97,44.16,53.31,43.05L53.31,43.05z M65.98,55.65l7.37-8.94C63.87,23.21,99-8.11,116.03,6.29 C136.72,23.8,105.97,66,84.36,55.57l-8.73,11.09L65.98,55.65L65.98,55.65z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" width="256px" height="256px" fill="#000000">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 493.474 493.474" xml:space="preserve" width="256px" height="256px" fill="#000000">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z" /></svg>

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11,9H9V2H7V9H5V2H3V9C3,11.12 4.66,12.84 6.75,12.97V22H9.25V12.97C11.34,12.84 13,11.12 13,9V2H11V9M16,6V14H18.5V22H21V2C18.24,2 16,4.24 16,6Z" /></svg>

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
assets/static/cash_flow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

20
assets/static/chart.umd.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,476 @@
html {
color-scheme: light only;
margin: 0;
}
body {
font-family: Arial, Helvetica, sans-serif;
margin: 0;
}
main {
/*max-width: 45rem;
margin: 0 auto;*/
padding: 15px;
margin: 0;
margin-bottom: 20px;
}
.supermesh-indicator {
border-top-left-radius: 15px;
background-color: greenyellow;
border-top: 5px solid green;
border-left: 5px solid green;
padding: 15px;
max-width: 30rem;
position: fixed;
right: 0;
bottom: 0;
color: black;
display: none;
}
.supermesh-indicator a {
color: blue;
}
details.supermesh-indicator summary {
font-size: unset;
}
.link,
a {
color: blue;
text-decoration: underline;
cursor: pointer;
}
.link:hover,
a:hover {
text-decoration: underline;
}
#articleID {
font-family: monospace;
}
@media (prefers-color-scheme: dark) {
.link,
a {
color: lightblue;
}
}
@media print {
.supermesh-indicator,
.no_print,
.no_print *,
.saveico, .delico, .opicon {
display: none !important;
}
main {padding: 0;}
}
button,
.button {
display: inline-block;
padding: 5px 10px;
background-color: beige;
border: 2px solid black;
font-size: 20px;
margin: 3px;
text-decoration: none;
color: black;
}
button:hover,
.button:hover {
text-decoration: underline;
}
/* https://coolors.co/palette/ff0000-ff8700-ffd300-deff0a-a1ff0a-0aff99-0aefff-147df5-580aff-be0aff */
.rojo {
background: #ff0000;
color: white;
}
.btn1 {
background: #ff0000;
color: white;
}
.btn2 {
background: #ff8700;
color: white;
}
.btn3 {
background: #ffd300;
color: black;
}
.btn4 {
background: #deff0a;
color: black;
}
.btn5 {
background: #a1ff0a;
color: black;
}
.btn6 {
background: #0aff99;
color: black;
}
.btn7 {
background: #0aefff;
color: black;
}
.btn8 {
background: #147df5;
color: white;
}
.nav-disabled {
background: black !important;
color: grey !important;
}
.nav-disabled:hover {
text-decoration: unset !important;
}
input,
select,
textarea {
font-size: 18px;
padding: 5px;
width: calc(100% - 11px);
}
input[type="checkbox"]{
padding: 0;
width: 24px;
height: 24px;
}
select {
width: 100%;
}
details input,
details select,
details textarea {
font-size: 18px;
padding: 5px;
width: calc(100% - 15px);
}
input[type="color"] {
width: 50px;
height: 50px;
}
textarea {
height: 150px;
}
details summary {
font-size: 20px;
}
thead tr {
background-color: black;
color: white;
}
table {
display: block;
line-break: loose;
width: fit-content;
min-width: 750px;
border: 1px solid black;
}
table tr th {
line-break: auto;
padding: 2px 5px;
}
table tr td {
border-bottom: 3px solid black !important;
padding: 5px;
}
.scase {
text-transform: lowercase;
}
.scase:first-letter {
text-transform: uppercase;
}
table tr:hover td {
text-decoration: underline;
background: rgba(200, 200, 200, 0.5);
/* color: black; */
}
table tr:hover td.TextBorder {
background: inherit;
color: inherit;
text-decoration: none;
}
fieldset {
max-width: 25rem;
}
.TextBorder {
color: black;
text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff,
1px 1px 0 #fff;
-webkit-text-stroke: 0.25px #fff;
}
code {
font-size: x-small;
color: gray;
}
.activeSCButton {
border: 7px dashed beige;
color: beige;
background: black !important;
}
.btn1.activeSCButton {
border-color: #ff0000;
color: #ff0000;
}
.btn2.activeSCButton {
border-color: #ff8700;
color: #ff8700;
}
.btn3.activeSCButton {
border-color: #ffd300;
color: #ffd300;
}
.btn4.activeSCButton {
border-color: #deff0a;
color: #deff0a;
}
.btn5.activeSCButton {
border-color: #a1ff0a;
color: #a1ff0a;
}
.btn6.activeSCButton {
border-color: #0aff99;
color: #0aff99;
}
.btn7.activeSCButton {
border-color: #0aefff;
color: #0aefff;
}
.btn8.activeSCButton {
border-color: #147df5;
color: #147df5;
}
hr {
border-color: black;
border-style: solid;
}
#snackbar {
visibility: hidden;
/* min-width: 250px; */
background-color: #333;
color: #fff;
text-align: center;
border-radius: 2px;
padding: 16px;
position: fixed;
z-index: 1;
right: 70px;
bottom: 25px;
}
#snackbar a {
color: lightblue;
}
#snackbar.show {
visibility: visible;
}
.ribbon {
display: flex;
background: linear-gradient(to bottom, #d0d8ec, #eef2fa);
border-bottom: 1px solid #a2a9b9;
padding: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.ribbon-orb {
width: 50px !important;
height: 50px;
border-radius: 50%;
/* background: url(/icon512_maskable.png); */
background-size: 50px 50px;
background-position: center middle;
border: 1px solid #a2a9b9;
margin-right: 10px;
margin-top: 0;
}
.ribbon-content {
display: flex;
flex-direction: column;
justify-content: flex-start;
margin-top: 1px;
width: calc(100% - 60px);
}
.ribbon-tabs {
display: flex;
background: #c8d4eb;
border: 1px solid #a2a9b9;
height: 26px;
align-items: center;
padding: 0 5px;
border-radius: 3px 3px 0 0;
overflow-x: auto;
}
.ribbon-tab {
padding: 4px 9px;
cursor: pointer;
border-right: 1px solid #a2a9b9;
font-size: 13px;
}
.ribbon-tab.active {
background-color: #eaf0fb;
font-weight: bold;
}
.ribbon-panel {
display: flex;
gap: 3px;
background-color: #c8d4eb;
border: 1px solid #a2a9b9;
overflow-x: auto;
padding: 5px;
}
.ribbon-button {
width: auto;
text-align: center;
cursor: pointer;
background: none;
border: none;
color: black;
white-space: nowrap;
margin: 0;
padding: 0;
border: 1px solid lightskyblue;
background: white;
padding: 4px;
display: inline-block;
border-radius: 10px;
}
.ribbon-button img {
height: 60px;
display: block;
margin: auto;
}
.ribbon-button .label {
font-size: 12px;
margin-top: 5px;
display: inline-block;
}
.ribbon-button.orange {
background-color: orange;
border-radius: 3px;
padding: 2px;
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.2);
}
details {
margin: 0;
}
details[open] .ribbon-panel {
display: flex;
}
details:not([open]) .ribbon-panel {
display: none;
}
fieldset legend {
font-size: 20px;
font-weight: bold;
}
pre {
font-size: 15px;
}
.picto {
min-height: 125px;
width: 100px;
border: 2.5px solid black;
border-radius: 5px;
text-align: center;
background: white;
margin-bottom: 20px;
margin-left: auto;
margin-right: auto;
}
.picto b {
padding-top: 40px;
display: inline-block;
}
.panel-option input {
display: none;
}
.panel-option:has(input:checked) {
background-color: #ccc;
outline: 5px solid blue;
}
.saveico {
border-color: green !important;
}
.delico {
border-color: red !important;
}
.opicon {
border-color: blue !important;
}
.saveico img, .delico img, .opicon img {
height: 52px;
vertical-align: middle;
}
.saveico, .delico, .opicon {
padding: 2.5px 7.5px;
background: transparent;
border-radius: 10px;
border: 4px solid;
}

BIN
assets/static/exchange.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
assets/static/exit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
assets/static/find.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
assets/static/garbage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M428.3 27.27c-5 0-10.3.34-15.9.95-11 17-20.9 33.24-23.5 48.93l-17.8-2.94c2.5-15.07 9.2-28.82 17.1-41.86-.9.19-1.7.36-2.6.57-36.2 8.57-79.3 26.23-122.5 49.46-5.4 2.89-10.8 5.88-16.1 8.94-.8 4.97-1.8 10.98-3.1 17.58-3.2 16.3-7.8 35.2-16.8 48.1-11.5 16.2-32.6 30.4-51.2 41.6-18.6 11.2-34.7 18.9-34.7 18.9l-7.8-16.2s15.4-7.4 33.2-18.1c17.8-10.8 37.8-25.4 45.7-36.6 5.6-7.9 10.9-25.8 14-41.2.1-.7.3-1.4.4-2.1-73.3 44.9-141.29 103.3-171.34 154.8-15.1 26-23.44 58.6-23.11 90.8 13.76-26.2 29.02-52.8 54.31-77.8l12.66 12.8C68.79 314 53.9 347.3 35.71 381.3c5.89 28.2 19.41 53.8 41.59 71.8 4.04 3.3 8.49 6.4 13.29 9.2 1.75-6.2 4.27-14.6 7.45-23.7 6.46-18.5 14.86-39.8 27.26-53 15-15.9 35.8-21.4 54.5-27 18.7-5.5 35.2-11 45.2-22.6 9.3-11 17.9-36.1 23-57.9 5.1-21.7 7.4-40.2 7.4-40.2l17.8 2.2s-2.3 19.3-7.7 42.1c-5.3 22.8-12.9 49.1-26.9 65.4-14.2 16.7-34.9 22.7-53.7 28.3-18.8 5.6-35.9 10.9-46.4 22.1-8.2 8.7-17.4 28.9-23.5 46.5-3.7 10.7-6.4 20-8 25.9 14.1 5.9 30.1 10 46.8 12.3 9-14.4 16.6-22.2 30.1-76.9l17.4 4.4c-11.6 46.7-19.8 62.2-27.4 74.3 36.2 1.6 73.4-5.3 100-19.7 75.3-41.2 138.2-140.1 173.7-233.8 6.8-17.9 12.5-35.6 17.3-52.7-17.9 15.3-32.8 32-41.1 53.1l-16.8-6.6c13-32.8 38.2-55.4 65-75.5 3.5-16.6 5.9-32.2 7-46.3.5-6.82.8-13.29.7-19.34-6.5 3.66-13.9 7.91-21.7 12.71-24.4 15.03-51.9 35.33-62.8 51.93-5.1 7.7-6 18.9-6.7 31.9-.7 13.1-1 27.9-9.6 41-7.8 12-19.9 18.2-30.5 23.7-10.6 5.5-19.8 10.5-25 17.4-10.3 13.6-20.8 41-27.9 64.4-7.2 23.3-11.4 42.8-11.4 42.8l-17.6-3.8s4.4-20.2 11.8-44.3c7.3-24.1 17.3-52.1 30.7-69.9 8.5-11.3 20.6-17.1 31.1-22.5 10.4-5.5 19.1-10.5 23.8-17.6 5-7.8 6-19.1 6.6-32.1.7-13 1.1-27.9 9.7-40.9v-.1c14.5-21.8 43.1-41.68 68.4-57.25 11.1-6.84 21.4-12.65 29.7-17.11-.3-1.99-.7-3.9-1.1-5.71-2.6-11.57-7-18.85-12-22.32-7.3-5.12-18.1-8.01-31.7-8.55-1.7-.1-3.4-.1-5.2-.1zm-113 58.9l17.4 4.5s-4.1 15.83-10.7 34.63c-6.7 18.9-15.4 40.6-27.3 54.4-20.7 24.3-49.8 36.9-77.5 49-27.7 12.1-54 23.9-71.7 43.8v.1c-13.8 15.6-28.7 47.3-39.3 74.5-10.73 27.3-17.58 50.2-17.58 50.2l-17.24-5.2s7.04-23.5 18.02-51.5c11-28 25.4-60.4 42.7-79.9 21-24 50.2-36.3 77.9-48.5 27.7-12.1 53.8-23.9 71.1-44.1 8.2-9.7 17.5-30.7 23.9-48.8 6.4-18 10.3-33.13 10.3-33.13zM197.6 273.2l17.8 2.6c-2.8 19.4-11.8 33.8-23.2 44.2-11.4 10.3-25 17.1-37.9 23.5l-8-16c12.8-6.5 24.8-12.7 33.8-20.9 9-8.1 15.3-17.8 17.5-33.4zm180.3 7.3l16.4 7.2s-9.6 22-23.6 47.7c-14 25.8-31.9 55.4-51 72.3-13.6 12.1-35 21.6-53.6 28.9-18.6 7.4-34.2 12.1-34.2 12.1l-5.2-17.2s15-4.5 32.8-11.6c17.8-7 38.6-17 48.2-25.6 15.3-13.5 33.5-42.4 47.2-67.4 13.6-25.1 23-46.4 23-46.4z"/></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

View File

Before

Width:  |  Height:  |  Size: 884 B

After

Width:  |  Height:  |  Size: 884 B

View File

Before

Width:  |  Height:  |  Size: 653 B

After

Width:  |  Height:  |  Size: 653 B

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 246 B

After

Width:  |  Height:  |  Size: 246 B

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Some files were not shown because too many files have changed in this diff Show More