staticfx 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of staticfx might be problematic. Click here for more details.

Files changed (65) hide show
  1. staticfx/__init__.py +3 -0
  2. staticfx/__main__.py +5 -0
  3. staticfx/app/__init__.py +1 -0
  4. staticfx/app/app.py +335 -0
  5. staticfx/app/keymap.py +163 -0
  6. staticfx/app/player.py +143 -0
  7. staticfx/app/session.py +97 -0
  8. staticfx/cli/__init__.py +20 -0
  9. staticfx/cli/commands.py +293 -0
  10. staticfx/cli/parser.py +185 -0
  11. staticfx/core/__init__.py +1 -0
  12. staticfx/core/clock.py +30 -0
  13. staticfx/core/color.py +89 -0
  14. staticfx/core/frame.py +85 -0
  15. staticfx/core/glyphs.py +15 -0
  16. staticfx/core/keys.py +116 -0
  17. staticfx/core/renderer.py +84 -0
  18. staticfx/core/terminal.py +148 -0
  19. staticfx/effects/__init__.py +1 -0
  20. staticfx/effects/base.py +88 -0
  21. staticfx/effects/builtin/__init__.py +203 -0
  22. staticfx/effects/builtin/fields.py +404 -0
  23. staticfx/effects/builtin/geometry.py +77 -0
  24. staticfx/effects/builtin/particles.py +623 -0
  25. staticfx/effects/builtin/shapes.py +255 -0
  26. staticfx/effects/builtin/signals.py +298 -0
  27. staticfx/effects/builtin/simulations.py +439 -0
  28. staticfx/effects/builtin/terminal.py +362 -0
  29. staticfx/effects/curated.py +16 -0
  30. staticfx/effects/engine/__init__.py +11 -0
  31. staticfx/effects/engine/effect.py +267 -0
  32. staticfx/effects/engine/filters.py +115 -0
  33. staticfx/effects/engine/generate.py +203 -0
  34. staticfx/effects/engine/layers.py +396 -0
  35. staticfx/effects/engine/recipe.py +215 -0
  36. staticfx/effects/engine/schema.py +87 -0
  37. staticfx/effects/engine/warps.py +203 -0
  38. staticfx/effects/registry.py +103 -0
  39. staticfx/effects/spec.py +51 -0
  40. staticfx/integrations.py +48 -0
  41. staticfx/library/__init__.py +1 -0
  42. staticfx/library/config.py +122 -0
  43. staticfx/library/effects.py +159 -0
  44. staticfx/library/files.py +44 -0
  45. staticfx/library/legacy.py +180 -0
  46. staticfx/library/looks.py +134 -0
  47. staticfx/postfx.py +78 -0
  48. staticfx/py.typed +0 -0
  49. staticfx/themes.py +162 -0
  50. staticfx/ui/__init__.py +1 -0
  51. staticfx/ui/browser.py +269 -0
  52. staticfx/ui/dialogs.py +95 -0
  53. staticfx/ui/help.py +99 -0
  54. staticfx/ui/pickers.py +221 -0
  55. staticfx/ui/play.py +213 -0
  56. staticfx/ui/screen.py +39 -0
  57. staticfx/ui/settings.py +262 -0
  58. staticfx/ui/studio.py +433 -0
  59. staticfx/ui/widgets.py +196 -0
  60. staticfx-2.0.0.dist-info/METADATA +164 -0
  61. staticfx-2.0.0.dist-info/RECORD +65 -0
  62. staticfx-2.0.0.dist-info/WHEEL +5 -0
  63. staticfx-2.0.0.dist-info/entry_points.txt +2 -0
  64. staticfx-2.0.0.dist-info/licenses/LICENSE +21 -0
  65. staticfx-2.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,164 @@
1
+ Metadata-Version: 2.4
2
+ Name: staticfx
3
+ Version: 2.0.0
4
+ Summary: Animated ASCII effects for your terminal, with a studio for making your own
5
+ Author: ethanlabs101
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/ethanlabs101/StaticFX
8
+ Project-URL: Documentation, https://github.com/ethanlabs101/StaticFX/blob/main/docs/USAGE.md
9
+ Project-URL: Changelog, https://github.com/ethanlabs101/StaticFX/blob/main/CHANGELOG.md
10
+ Project-URL: Issues, https://github.com/ethanlabs101/StaticFX/issues
11
+ Keywords: terminal,ascii,animation,cmatrix,screensaver,tui,ascii-art
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: End Users/Desktop
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Topic :: Artistic Software
24
+ Classifier: Topic :: Terminals
25
+ Classifier: Typing :: Typed
26
+ Requires-Python: >=3.10
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest>=8; extra == "dev"
31
+ Requires-Dist: ruff>=0.6; extra == "dev"
32
+ Requires-Dist: mypy>=1.10; extra == "dev"
33
+ Dynamic: license-file
34
+
35
+ # StaticFX
36
+
37
+ Animated ASCII effects for your terminal. Think `cmatrix`, but with a
38
+ thousand more effects, live theme switching, and a studio for making your own.
39
+
40
+ ![StaticFX demo: Matrix rain, the effect browser, a galaxy, the Studio](https://raw.githubusercontent.com/ethanlabs101/StaticFX/main/assets/demo.gif)
41
+
42
+ Pure Python, no dependencies, runs in any modern terminal on Linux, macOS
43
+ and WSL.
44
+
45
+ ## Install
46
+
47
+ You need Python 3.10 or newer.
48
+
49
+ ```bash
50
+ pipx install staticfx
51
+ staticfx
52
+ ```
53
+
54
+ (`pip install staticfx` works too; [pipx](https://pipx.pypa.io) just keeps it in
55
+ its own environment.) To try it without installing anything:
56
+
57
+ ```bash
58
+ git clone https://github.com/ethanlabs101/StaticFX
59
+ cd StaticFX
60
+ python3 -m staticfx
61
+ ```
62
+
63
+ ## The 30-second tour
64
+
65
+ Key | Does
66
+ --- | ---
67
+ `←` `→` | Previous / next effect
68
+ `m` | Browse and search every effect, with live preview
69
+ `t` | Change the colour theme
70
+ `l` | Looks: effect + theme + filters, saved under a name
71
+ `n` | Make your own effect in the Studio
72
+ `f` | Favourite
73
+ `a` | Auto-cycle (screensaver mode)
74
+ `?` | Every key
75
+ `q` | Quit
76
+
77
+ Everything is remappable in Settings (`o`). The full guide is in
78
+ [docs/USAGE.md](https://github.com/ethanlabs101/StaticFX/blob/main/docs/USAGE.md).
79
+
80
+ ## What's inside
81
+
82
+ There are 50 hand-written effects in seven groups. Rain: the classic, plus
83
+ binary, hex and glitch versions. Particles: snow, embers, fireworks, orbits.
84
+ Space: a starfield, a galaxy, a black hole, a wormhole. Waves and fields:
85
+ plasma, aurora, a lava lamp, a synthwave grid. Geometry: a tumbling cube, a 4D
86
+ tesseract, spirographs. Simulations: Game of Life, Langton's ant, fire, a maze
87
+ that carves itself. Retro tech: boot screens, decryption, circuits, TV static.
88
+
89
+ On top of those are 992 generated effects. Each one is a recipe of layered
90
+ patterns (spirals, Julia and Mandelbrot fractals, Voronoi cells, metaballs,
91
+ noise), warps (kaleidoscope, swirl, tile, fold) and filters. They're seeded,
92
+ so `proc_042` is the same effect for everyone, forever. An automated quality
93
+ check weeds out the duds, and 47 hand-picked ones live in the Gallery.
94
+
95
+ Then there are your own. The Studio remixes any generated effect or starts
96
+ from scratch, with a live preview and undo, and saves small JSON files you
97
+ can share.
98
+
99
+ You also get:
100
+
101
+ - **26 colour themes**: originals like Matrix, Inferno and Vaporwave, takes on
102
+ popular editor schemes (Dracula, Nord, Gruvbox, Catppuccin, Tokyo Night), an
103
+ animated rainbow, and Strobe if you opt in (it's off by default for
104
+ photosensitivity reasons)
105
+ - filters that work on anything: CRT scanlines, glitch, rainbow recolour
106
+ - looks, which save an effect with its theme, speed and filters so you can
107
+ recall it with one key (a dozen come built in)
108
+
109
+ ![The theme menu, with a colour swatch for each theme](https://raw.githubusercontent.com/ethanlabs101/StaticFX/main/assets/themes.png)
110
+
111
+ ![The effect browser](https://raw.githubusercontent.com/ethanlabs101/StaticFX/main/assets/browser.png)
112
+
113
+ ## Make your own
114
+
115
+ Press `n` for a new effect, or highlight a generated one in the browser and
116
+ press `e` to remix it. Arrow keys change things; `s` saves it to
117
+ **My Effects**.
118
+
119
+ ![The Effect Studio](https://raw.githubusercontent.com/ethanlabs101/StaticFX/main/assets/studio.png)
120
+
121
+ See [docs/STUDIO.md](https://github.com/ethanlabs101/StaticFX/blob/main/docs/STUDIO.md) for what every control does, and
122
+ [docs/EFFECT_FORMAT.md](https://github.com/ethanlabs101/StaticFX/blob/main/docs/EFFECT_FORMAT.md) for the file format if you'd
123
+ rather write recipes by hand.
124
+
125
+ ## Command line
126
+
127
+ ```bash
128
+ staticfx -e plasma -t ocean # start on an effect and theme
129
+ staticfx --look "Synthwave" # start from a look
130
+ staticfx --auto 30 --duration 600 # screensaver: new effect every 30s, quit after 10 min
131
+ staticfx list fire # search effects
132
+ staticfx render galaxy --size 80x24 # print one frame (add --ansi for colour)
133
+ staticfx fetch # fastfetch/neofetch output over an effect
134
+ staticfx new "Night Drive" # create a random effect in My Effects
135
+ staticfx export my_night_drive nd.sfx # share it
136
+ staticfx doctor # check your setup
137
+ ```
138
+
139
+ `staticfx --help` and `staticfx COMMAND --help` list everything.
140
+
141
+ ## Docs
142
+
143
+ - [Usage](https://github.com/ethanlabs101/StaticFX/blob/main/docs/USAGE.md): every key, the browser, themes, looks, settings,
144
+ command line, troubleshooting
145
+ - [The Studio](https://github.com/ethanlabs101/StaticFX/blob/main/docs/STUDIO.md)
146
+ - [Effect file format](https://github.com/ethanlabs101/StaticFX/blob/main/docs/EFFECT_FORMAT.md)
147
+ - [Writing a built-in effect](https://github.com/ethanlabs101/StaticFX/blob/main/docs/WRITING_EFFECTS.md) in Python
148
+ - [Architecture](https://github.com/ethanlabs101/StaticFX/blob/main/docs/ARCHITECTURE.md): how it fits together, and why
149
+ - [Releasing](https://github.com/ethanlabs101/StaticFX/blob/main/docs/RELEASING.md): publishing a new version to PyPI
150
+
151
+ ## Development
152
+
153
+ ```bash
154
+ git clone https://github.com/ethanlabs101/StaticFX && cd StaticFX
155
+ python3 -m pip install -e '.[dev]'
156
+ python3 -m pytest # ~650 tests, about a minute
157
+ ruff check . && ruff format --check . && mypy
158
+ ```
159
+
160
+ See [CONTRIBUTING.md](https://github.com/ethanlabs101/StaticFX/blob/main/CONTRIBUTING.md) for how changes are made and checked.
161
+
162
+ ## License
163
+
164
+ [MIT](https://github.com/ethanlabs101/StaticFX/blob/main/LICENSE)
@@ -0,0 +1,65 @@
1
+ staticfx/__init__.py,sha256=DnAGcBnhL9HrQmAeCHtcVCr0t4cOgSIDuhdjswkCNvo,81
2
+ staticfx/__main__.py,sha256=isRRgHGKuZ11h1lVDzQ1zcUdvAQx5x-gW6I4GjR5x_U,87
3
+ staticfx/integrations.py,sha256=ktqsRcFA8z2k7ycGFlyf1jBk9h0nzdWwHpjIkhBbh94,1841
4
+ staticfx/postfx.py,sha256=ZSZCMNwWmWeGRPococLcC3-6MKdtt8nF5sipMsNKC0I,2694
5
+ staticfx/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ staticfx/themes.py,sha256=OwlOBtEc14cT-l9QNZwrE9yhA0FgzZmdeUnbFk1CbKI,6090
7
+ staticfx/app/__init__.py,sha256=YKVxh9MNdco0BTPt_hIzWNrMLFw4O1lmlAOdtgg-XYs,72
8
+ staticfx/app/app.py,sha256=XVljA-0l0uQcn1s418pvYFJQRFFHPcrz4j0XiEyFUp4,13842
9
+ staticfx/app/keymap.py,sha256=CqW3N-k4VQniHTEvp6lhwT4mQ4Ln7u-BNLstqyfhIAU,5597
10
+ staticfx/app/player.py,sha256=PMvWOjJB_p2xi61wrf3ASdObDkdXynV6CBX_y_7kXAA,4855
11
+ staticfx/app/session.py,sha256=8BSFZQIYd8Npzn4RESJ_ogFgzRhGIzn10Hz95PgxaDE,3434
12
+ staticfx/cli/__init__.py,sha256=_j7ZaKLmY09p4M8afhKvjSYlzDbhnmNqiJtH_SEZheI,762
13
+ staticfx/cli/commands.py,sha256=-8UNPEgFAXZ__qLNuAH4SoszXysrD_YFkakAWnvgads,10906
14
+ staticfx/cli/parser.py,sha256=XWSHwlUazKHCAOI5p30D1_l8bdwLLstN62CmVcAH5JA,7384
15
+ staticfx/core/__init__.py,sha256=kQ-pqiwiad60yWPN7aBJFasOzh6gZCM5wkeA-JG5MFE,88
16
+ staticfx/core/clock.py,sha256=YqAn7k00477lPGNMxUXYtv2dx5KBkfbD-ZjS2ljjDWs,935
17
+ staticfx/core/color.py,sha256=6WLIM8Ntm47vnNJPJXiOPYGcmOh5e2Am9r8IpbLmmc4,2728
18
+ staticfx/core/frame.py,sha256=jSif8Ytzn6qcezYDOdkp-f6E6ujyuk2DmHIlaIPIVmw,3111
19
+ staticfx/core/glyphs.py,sha256=HK_4Y7ui82_Q_-KUBqUcrnGmcUwHOnMzZibUdcUxx_s,454
20
+ staticfx/core/keys.py,sha256=pwSZXd0YHXx9kTlJQgonr7noMVv0zKRqA-2dfAekJcw,3665
21
+ staticfx/core/renderer.py,sha256=fyxO9RPh8124VGGkC2065OMp4OJCWt-gBIY3xYgLaWU,2860
22
+ staticfx/core/terminal.py,sha256=04R_52vJYAC5t5Z-UiWpBtF-OSTUw7bdKVrQjzpSAvQ,4971
23
+ staticfx/effects/__init__.py,sha256=_B-hP_7N7oujMGYWQ4sfNeTDPIvHDHxJ9VwfV-nX0B0,99
24
+ staticfx/effects/base.py,sha256=F_jts7xCH-YR3dT4qoNu1XQSmQ7ualR0zEO0ZEJlj9g,2874
25
+ staticfx/effects/curated.py,sha256=S3_qHuXncPR5zPTH5QzHtFJMGO4jNrFrY-nu1emGbyo,732
26
+ staticfx/effects/registry.py,sha256=4Jandvv_jY70cL-265KFEKw7NLvLDO9onmFATdoHjIg,3764
27
+ staticfx/effects/spec.py,sha256=Oar1GgpSqyhpaPMlpmJjJYk5M9w09hKwsdPKTR6U3DQ,1567
28
+ staticfx/effects/builtin/__init__.py,sha256=8gj8W3F7XxILGUE7Q_aPnq-Drsp38LDr-n_4ZXxXGPQ,7437
29
+ staticfx/effects/builtin/fields.py,sha256=mWd2nwMnSdwCUE0Z7m27xK2tAWHJAYm8QzpA5FLVt2w,11210
30
+ staticfx/effects/builtin/geometry.py,sha256=mADj9Y6KHHuhVd0XBiPC0sokShCgl2TWAabb7T1eFNY,2159
31
+ staticfx/effects/builtin/particles.py,sha256=9AsN6X8S0ZGBYFc4Kvw7tYZow9_QFYywmZheDx64CUg,20832
32
+ staticfx/effects/builtin/shapes.py,sha256=_jwgyNH8x8wWkQBDUDb4umDjlUWb1NcUHXngva0tsw0,8285
33
+ staticfx/effects/builtin/signals.py,sha256=74WbInLkuvQK3fl1pi_b45N6-So3PDwjWdRfrebN5fA,9756
34
+ staticfx/effects/builtin/simulations.py,sha256=TIVIbWNI14MbjpoTqan9OYTmlhm9QSlaKhWN3y51nkQ,12773
35
+ staticfx/effects/builtin/terminal.py,sha256=-8fDZdTcNmvGDxqZcg9XVdrjFip2OiOBElYl6nbG7rU,11489
36
+ staticfx/effects/engine/__init__.py,sha256=HRVpMrbfe2gyDUZv2B7eKiKqJ8KuktvJvd_gD6eF6nU,460
37
+ staticfx/effects/engine/effect.py,sha256=85wOPb18FMs-2Shpbml2B8pDLfIsuMWMic4y0wpOD9M,10739
38
+ staticfx/effects/engine/filters.py,sha256=XIhr-ZE2Nshi3qmrNg2FALGB5fCgT872NZ_Zfr_GdZc,3121
39
+ staticfx/effects/engine/generate.py,sha256=x_R_dnLLeAU6My6vdjOXuwgWdOTDo5W1Slauz3rCUdA,7717
40
+ staticfx/effects/engine/layers.py,sha256=ooyx6yZ99RncL2ipYCba5hBaIhVFKKi3MfdugXD2h0w,11745
41
+ staticfx/effects/engine/recipe.py,sha256=ONmfLBUAK3mGK22yqb3szLpgqwgdUEOZC_fShgPgCAM,8099
42
+ staticfx/effects/engine/schema.py,sha256=5R9VuXABTGKvNMjTxJLpdEKdaNB_19MmTwxnf90hrNA,2958
43
+ staticfx/effects/engine/warps.py,sha256=ax3qKnaNHEmEmvXZ_5NbgUeZTlHN_-2fh0Lf3mx2eng,5641
44
+ staticfx/library/__init__.py,sha256=XXGCmtpjGRcpC51AHP6YGDtpmWusykgCQmQJ7q8cAFM,78
45
+ staticfx/library/config.py,sha256=xqY1OtH2B30K8mYBKOtqA_o_MeSocb--wPEJhFFKID4,4652
46
+ staticfx/library/effects.py,sha256=8gWcC4wlwqU9mb7VWmYzsAAzTPkoy-xt70LEhgNZ4Ck,5613
47
+ staticfx/library/files.py,sha256=ZdeJER1B72Hx0fFi4l4l-WIAPwDUxKBLgYHX98GNub4,1391
48
+ staticfx/library/legacy.py,sha256=zNEgDQ4VNgkovhGE1cE3S3Be42Ua0syjhsJA0h5AzDU,6816
49
+ staticfx/library/looks.py,sha256=x84hqsn4MDjzmASqFU-FU0h4R0ON65wS1lQcUjCDVRw,4900
50
+ staticfx/ui/__init__.py,sha256=F7o2USAC2VvSBWXiQv3GIEFoaA65xG5VBvJKIXJ60no,53
51
+ staticfx/ui/browser.py,sha256=0PXXMU7jAS-C8x80PORmgdMB2jHs_edXBrNkDrQeSfw,10743
52
+ staticfx/ui/dialogs.py,sha256=qU1FQdTCogOkDlkbtZAgDn7tZhdLsy1SnBJIrMhnU6c,3398
53
+ staticfx/ui/help.py,sha256=7UVrcnUnDgE47Ynxi158Yw5xZj-DTXdIB6SiGuMkG1M,3814
54
+ staticfx/ui/pickers.py,sha256=bLbF-QCJLT6PMcxnrXgeIhtu4-WCE05NC0ry67K2zzQ,7916
55
+ staticfx/ui/play.py,sha256=6pfJgWSzfwqinNgDyEGAAE-jjgqzJWjfOPvaer5nKmU,8217
56
+ staticfx/ui/screen.py,sha256=_tUioMHgj_FPH_iP8uDaUoc9lmr6gZ-B7zJv6KL8jOg,1096
57
+ staticfx/ui/settings.py,sha256=s_T5UrEDyR5e_luDYtEkJBd956OleEg1cXlG0-ptcH4,9718
58
+ staticfx/ui/studio.py,sha256=4VrDfRBVT04NH-CvZW1pegULNkcnEJCw4OvIOANMi6o,16931
59
+ staticfx/ui/widgets.py,sha256=7kKfpFm7KUJbt0Z5MFmuUlFM_OAmEYxAR8QXD-AzBcg,6556
60
+ staticfx-2.0.0.dist-info/licenses/LICENSE,sha256=nIS6IYmFH0orB9uhSFtIoQOS5p09AEizdUNUQ2goHZs,1070
61
+ staticfx-2.0.0.dist-info/METADATA,sha256=1TkjqRuMAhAYqFu9RU6dradh58fbHuMLti3rhHLXj6U,6813
62
+ staticfx-2.0.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
63
+ staticfx-2.0.0.dist-info/entry_points.txt,sha256=pFdULorGKcnfwBINsBYjHEIBLt9ZDqwGy7dwBowzbEA,47
64
+ staticfx-2.0.0.dist-info/top_level.txt,sha256=X9HuiGwaW6CNT1oUtZZgXZIjRbvuAlkxLDC_hbYk4uM,9
65
+ staticfx-2.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.2.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ staticfx = staticfx.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ethangrames04
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ staticfx