@litfamily/litopencode 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README-Ko-KR.md +146 -115
- package/README.md +144 -116
- package/dist/activation-workflow-prompts.js +1 -1
- package/dist/agents/registry.js +30 -26
- package/dist/cli/args.js +3 -3
- package/dist/cli/host-limits.d.ts +1 -1
- package/dist/cli/host-limits.js +3 -2
- package/dist/cli/install-config.js +2 -2
- package/dist/cli/install-report.js +2 -1
- package/dist/cli/managed-skill-assets.d.ts +1 -1
- package/dist/cli/managed-skill-assets.js +3 -1
- package/dist/cli/model-catalog.d.ts +56 -0
- package/dist/cli/model-catalog.js +78 -17
- package/dist/cli/model-policy.js +7 -6
- package/dist/cli/types.d.ts +1 -1
- package/dist/cli.js +8 -7
- package/dist/config-parser.js +3 -2
- package/dist/config.d.ts +1 -1
- package/dist/config.js +13 -12
- package/dist/features.d.ts +17 -1
- package/dist/features.js +10 -0
- package/dist/model-route-policy.d.ts +1 -1
- package/dist/model-route-policy.js +24 -7
- package/dist/skills.d.ts +8 -1
- package/dist/skills.js +8 -0
- package/dist/uiux-visual-catalog.js +5 -5
- package/docs/assets/cover-motion-still.webp +0 -0
- package/docs/assets/cover-motion.webp +0 -0
- package/docs/assets/readme/JetBrainsMono-OFL.txt +93 -0
- package/docs/assets/readme/Lucide-LICENSE.txt +43 -0
- package/docs/assets/readme/ascii-readme.svg +5 -0
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/assets/readme/ignition-film.mp4 +0 -0
- package/docs/assets/readme/ignition-readme.gif +0 -0
- package/docs/assets/readme/litfamily-machines.png +0 -0
- package/docs/assets/readme/lucide-book-open.svg +14 -0
- package/docs/assets/readme/lucide-play.svg +13 -0
- package/docs/assets/readme/lucide-shield-check.svg +14 -0
- package/docs/assets/readme/poster.png +0 -0
- package/docs/migration.md +2 -2
- package/docs/reference-Ko-KR.md +21 -4
- package/docs/reference.md +30 -10
- package/package.json +1 -1
- package/skills/frontend-ui-ux/SKILL.md +25 -31
- package/skills/frontend-ui-ux/references/complete-contract.md +12 -12
- package/skills/frontend-ui-ux/references/default-editorial-pixel.json +19 -0
- package/skills/frontend-ui-ux/references/production.md +15 -0
- package/skills/managed-skill-manifest.json +92 -1
- package/skills/readme-studio/SKILL.md +76 -0
- package/skills/readme-studio/references/decoration-patterns.md +105 -0
- package/skills/readme-studio/references/motion.md +38 -0
- package/skills/readme-studio/references/production.md +13 -0
- package/skills/readme-studio/references/typography.md +16 -0
- package/skills/readme-studio/scripts/check-facts.mjs +28 -0
- package/skills/readme-studio/templates/cover-source.json +1 -0
- package/skills/readme-studio/templates/facts.json +1 -0
- package/skills/readme-studio/templates/hyperframes/index.html +62 -0
- package/skills/readme-studio/templates/hyperframes/index.motion.json +1 -0
- package/skills/readme-studio/templates/hyperframes/package-lock.json +1966 -0
- package/skills/readme-studio/templates/hyperframes/package.json +1 -0
- package/skills/readme-studio/templates/readme-cover-section.md +53 -0
- package/skills/readme-studio/templates/remotion/package-lock.json +3783 -0
- package/skills/readme-studio/templates/remotion/package.json +1 -0
- package/skills/readme-studio/templates/remotion/src/index.tsx +32 -0
- package/skills/readme-studio/templates/typography/files.mjs +46 -0
- package/skills/readme-studio/templates/typography/outline.mjs +47 -0
- package/skills/readme-studio/templates/typography/package-lock.json +133 -0
- package/skills/readme-studio/templates/typography/package.json +1 -0
- package/tools/check-pack-payload.mjs +34 -2
- package/tools/payload-substance-parity.json +4 -3
- package/tools/version-manifests.json +10 -4
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
https://openfontlicense.org
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Lucide Icons and Contributors
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
The following Lucide icons are derived from the Feather project:
|
|
20
|
+
|
|
21
|
+
airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
|
|
22
|
+
|
|
23
|
+
The MIT License (MIT) (for the icons listed above)
|
|
24
|
+
|
|
25
|
+
Copyright (c) 2013-present Cole Bemis
|
|
26
|
+
|
|
27
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
28
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
29
|
+
in the Software without restriction, including without limitation the rights
|
|
30
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
31
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
32
|
+
furnished to do so, subject to the following conditions:
|
|
33
|
+
|
|
34
|
+
The above copyright notice and this permission notice shall be included in all
|
|
35
|
+
copies or substantial portions of the Software.
|
|
36
|
+
|
|
37
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
38
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
39
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
40
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
41
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
42
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
43
|
+
SOFTWARE.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="804" height="496"
|
|
2
|
+
viewBox="0 0 804 496" role="img" aria-labelledby="title description">
|
|
3
|
+
<title id="title">Exact copyable LIT ASCII mark — centered presentation</title>
|
|
4
|
+
<desc id="description">Original geometric LitFamily ignition symbol, bespoke angular lettering, and ordered vector halftone. Ember orange, signal lime, warm white, and carbon navy. All lettering is outlined; no raster images or external resources.</desc>
|
|
5
|
+
<rect x="0" y="0" width="804" height="496" fill="#080D14" /><g aria-label=" ▄▄▄▄"><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 32) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 32) scale(0.020000 -0.020000)"/></g><g aria-label=" ▗███▌ ▗██████▖"><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(252.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 56) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 56) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(432.000 56) scale(0.020000 -0.020000)"/></g><g aria-label=" ▗▄▄▄▄▄ ▗▟████▌ ▝██████▘"><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(36.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(48.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(60.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(72.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(84.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(96.000 80) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(228.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 80) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(348.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 80) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 80) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(432.000 80) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟██████▌ ▝▀▜█▀▘"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 104) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(204.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(300.000 104) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(360.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(372.000 104) scale(0.020000 -0.020000)"/><path d="M300 -300V360H-10V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 104) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(408.000 104) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(420.000 104) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟███████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 128) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(180.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(288.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(300.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(312.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(420.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(432.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(456.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(468.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(480.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(492.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(504.000 128) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(516.000 128) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟█████████████████████████ ▐█▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 152) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(156.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(312.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 152) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(492.000 152) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(504.000 152) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(516.000 152) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ████████████████████████████▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(252.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(312.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 176) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(480.000 176) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(492.000 176) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ██▛▘ ▄ ▄▄▄▄▖▄▄▄▄▄▄▄▄▄▄▄▄▄▖"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(180.000 200) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(192.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(240.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(264.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(276.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(288.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(300.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(312.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(384.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(396.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(408.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(420.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(432.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(456.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(468.000 200) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(480.000 200) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▀ ▄██ ████▌█████████████▌"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 224) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(156.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(216.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(312.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 224) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(480.000 224) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▄████ ████▌█████████████▌"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(192.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(240.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(264.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(276.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(288.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(300.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(312.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(384.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(396.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(408.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(420.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(432.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(456.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(468.000 248) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H300V-300Z" fill="#F2EFDF" transform="translate(480.000 248) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▄█████▛ litopencode"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(168.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(216.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(228.000 272) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(240.000 272) scale(0.020000 -0.020000)"/><path d="M380 0Q307 0 263.5 42.5Q220 85 220 155V648H30V730H310V155Q310 121 329.0 101.5Q348 82 380 82H550V0Z" fill="#F2EFDF" transform="translate(648.000 272) scale(0.020000 -0.020000)"/><path d="M85 0V82H280V468H105V550H370V82H555V0ZM315 649Q282 649 263.0 666.0Q244 683 244 712Q244 742 263.0 759.5Q282 777 315 777Q348 777 367.0 759.5Q386 742 386 712Q386 683 367.0 666.0Q348 649 315 649Z" fill="#F2EFDF" transform="translate(660.000 272) scale(0.020000 -0.020000)"/><path d="M355 0Q287 0 246.0 39.5Q205 79 205 145V468H47V550H205V705H295V550H520V468H295V145Q295 117 311.5 99.5Q328 82 355 82H515V0Z" fill="#F2EFDF" transform="translate(672.000 272) scale(0.020000 -0.020000)"/><path d="M300 -8Q201 -8 142.5 50.0Q84 108 84 212V338Q84 443 142.0 500.5Q200 558 300 558Q400 558 458.0 500.5Q516 443 516 338V212Q516 108 457.5 50.0Q399 -8 300 -8ZM300 72Q359 72 392.5 105.0Q426 138 426 202V348Q426 412 392.5 445.0Q359 478 300 478Q242 478 208.0 445.0Q174 412 174 348V202Q174 138 208.0 105.0Q242 72 300 72Z" fill="#F2EFDF" transform="translate(684.000 272) scale(0.020000 -0.020000)"/><path d="M92 -180V550H182V445H183Q190 499 230.0 529.5Q270 560 332 560Q415 560 464.0 505.5Q513 451 513 356V195Q513 100 464.0 45.0Q415 -10 332 -10Q270 -10 230.0 21.0Q190 52 183 105H180L182 -20V-180ZM302 68Q359 68 391.0 98.0Q423 128 423 195V355Q423 423 391.0 452.5Q359 482 302 482Q247 482 214.5 447.0Q182 412 182 350V200Q182 138 214.5 103.0Q247 68 302 68Z" fill="#F2EFDF" transform="translate(696.000 272) scale(0.020000 -0.020000)"/><path d="M300 -10Q203 -10 143.5 48.5Q84 107 84 210V340Q84 443 143.5 501.5Q203 560 300 560Q365 560 413.5 534.0Q462 508 489.0 461.0Q516 414 516 350V252H172V200Q172 139 207.0 103.5Q242 68 300 68Q350 68 382.5 87.5Q415 107 422 140H512Q503 71 445.0 30.5Q387 -10 300 -10ZM172 322H428V350Q428 415 394.5 450.5Q361 486 300 486Q239 486 205.5 450.5Q172 415 172 350Z" fill="#F2EFDF" transform="translate(708.000 272) scale(0.020000 -0.020000)"/><path d="M92 0V550H182V445H183Q190 500 228.0 530.0Q266 560 329 560Q412 560 461.0 509.0Q510 458 510 370V0H420V354Q420 417 388.5 450.5Q357 484 303 484Q247 484 214.5 449.0Q182 414 182 350V0Z" fill="#F2EFDF" transform="translate(720.000 272) scale(0.020000 -0.020000)"/><path d="M308 -10Q208 -10 148.0 46.0Q88 102 88 200V350Q88 448 148.0 504.0Q208 560 308 560Q403 560 461.5 509.0Q520 458 523 370H433Q430 423 397.0 451.5Q364 480 308 480Q249 480 213.5 446.5Q178 413 178 351V200Q178 138 213.5 104.0Q249 70 308 70Q364 70 397.0 99.0Q430 128 433 180H523Q520 92 461.5 41.0Q403 -10 308 -10Z" fill="#F2EFDF" transform="translate(732.000 272) scale(0.020000 -0.020000)"/><path d="M300 -8Q201 -8 142.5 50.0Q84 108 84 212V338Q84 443 142.0 500.5Q200 558 300 558Q400 558 458.0 500.5Q516 443 516 338V212Q516 108 457.5 50.0Q399 -8 300 -8ZM300 72Q359 72 392.5 105.0Q426 138 426 202V348Q426 412 392.5 445.0Q359 478 300 478Q242 478 208.0 445.0Q174 412 174 348V202Q174 138 208.0 105.0Q242 72 300 72Z" fill="#F2EFDF" transform="translate(744.000 272) scale(0.020000 -0.020000)"/><path d="M268 -10Q186 -10 136.5 45.0Q87 100 87 194V355Q87 450 136.0 505.0Q185 560 268 560Q330 560 370.5 529.0Q411 498 419 445H420L418 570V730H508V0H418V105H417Q410 51 370.0 20.5Q330 -10 268 -10ZM298 68Q354 68 386.0 103.0Q418 138 418 200V350Q418 412 386.0 447.0Q354 482 298 482Q241 482 209.0 452.5Q177 423 177 355V195Q177 128 209.0 98.0Q241 68 298 68Z" fill="#F2EFDF" transform="translate(756.000 272) scale(0.020000 -0.020000)"/><path d="M300 -10Q203 -10 143.5 48.5Q84 107 84 210V340Q84 443 143.5 501.5Q203 560 300 560Q365 560 413.5 534.0Q462 508 489.0 461.0Q516 414 516 350V252H172V200Q172 139 207.0 103.5Q242 68 300 68Q350 68 382.5 87.5Q415 107 422 140H512Q503 71 445.0 30.5Q387 -10 300 -10ZM172 322H428V350Q428 415 394.5 450.5Q361 486 300 486Q239 486 205.5 450.5Q172 415 172 350Z" fill="#F2EFDF" transform="translate(768.000 272) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▗▟█████▀▘ ▄▄▄▄▄ ▗▖"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 296) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(132.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(192.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(204.000 296) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(216.000 296) scale(0.020000 -0.020000)"/><path d="M0 360V1020H300V360Z" fill="#F2EFDF" transform="translate(228.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(324.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(336.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(348.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(360.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(372.000 296) scale(0.020000 -0.020000)"/><path d="M300 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(444.000 296) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(456.000 296) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐█████▀ █████ ▐▛▀"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 320) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(180.000 320) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(192.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 320) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(444.000 320) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(456.000 320) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(468.000 320) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐███▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 344) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 344) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(168.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 344) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 344) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▐█▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 368) scale(0.020000 -0.020000)"/><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 368) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(144.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 368) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 368) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████ ▝ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 392) scale(0.020000 -0.020000)"/><path d="M300 360V1020H600V360Z" fill="#F2EFDF" transform="translate(120.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 392) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 392) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐█████▄▄▄▄▄▄▄▖ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(108.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(120.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(132.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(144.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(156.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(168.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H600V-300Z" fill="#F2EFDF" transform="translate(180.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V360H300V-300Z" fill="#F2EFDF" transform="translate(192.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 416) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 416) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐███████████▛ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(108.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(168.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V360H300V-300Z" fill="#F2EFDF" transform="translate(180.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 440) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 440) scale(0.020000 -0.020000)"/></g><g aria-label=" ▐██████████▀ █████"><path d="M300 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(36.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(48.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(60.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(72.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(84.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(96.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(108.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(120.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(132.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(144.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(156.000 464) scale(0.020000 -0.020000)"/><path d="M0 360V1020H600V360Z" fill="#F2EFDF" transform="translate(168.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(324.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(336.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(348.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(360.000 464) scale(0.020000 -0.020000)"/><path d="M0 -300V1020H600V-300Z" fill="#F2EFDF" transform="translate(372.000 464) scale(0.020000 -0.020000)"/></g></svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.5"><title>release: 1.0.5</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.5</text></g></svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
width="24"
|
|
4
|
+
height="24"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
fill="none"
|
|
7
|
+
stroke="#D7F75B"
|
|
8
|
+
stroke-width="2"
|
|
9
|
+
stroke-linecap="round"
|
|
10
|
+
stroke-linejoin="round"
|
|
11
|
+
>
|
|
12
|
+
<path d="M12 5v16" />
|
|
13
|
+
<path d="M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z" />
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<svg
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
width="24"
|
|
4
|
+
height="24"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
fill="none"
|
|
7
|
+
stroke="#D7F75B"
|
|
8
|
+
stroke-width="2"
|
|
9
|
+
stroke-linecap="round"
|
|
10
|
+
stroke-linejoin="round"
|
|
11
|
+
>
|
|
12
|
+
<path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z" />
|
|
13
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg
|
|
2
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
3
|
+
width="24"
|
|
4
|
+
height="24"
|
|
5
|
+
viewBox="0 0 24 24"
|
|
6
|
+
fill="none"
|
|
7
|
+
stroke="#D7F75B"
|
|
8
|
+
stroke-width="2"
|
|
9
|
+
stroke-linecap="round"
|
|
10
|
+
stroke-linejoin="round"
|
|
11
|
+
>
|
|
12
|
+
<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" />
|
|
13
|
+
<path d="m9 12 2 2 4-4" />
|
|
14
|
+
</svg>
|
|
Binary file
|
package/docs/migration.md
CHANGED
|
@@ -15,7 +15,7 @@ This guide describes the supported migration shape for moving an OpenCode workfl
|
|
|
15
15
|
- Keep global LitOpenCode agent route configuration in `~/.config/opencode/litopencode.json`, or `$XDG_CONFIG_HOME/opencode/litopencode.json` when `XDG_CONFIG_HOME` is set.
|
|
16
16
|
- Keep LitOpenCode runtime config in `.litopencode/config.json` when project-local config is needed.
|
|
17
17
|
- Use `npm exec --package @litfamily/litopencode -- litopencode install` to delegate default setup to `opencode plugin <target> --global --force`; packaged installs use the current `@litfamily/litopencode` version, while local checkout installs use the package path.
|
|
18
|
-
- The installer creates `litopencode.json` only when it is missing. The config hook routes the lead categories and `lit-loop` to `openai/gpt-6-astra`/`xhigh`; execution/research helpers use `openai/gpt-
|
|
18
|
+
- The installer creates `litopencode.json` only when it is missing. The config hook routes the lead categories and `lit-loop` to `openai/gpt-6-astra`/`xhigh`; execution/research helpers use the fresh default `openai/gpt-6-luna`/`max`. Ordinary install/update preserves an already configured model; only an explicit model prompt changes managed routes.
|
|
19
19
|
- Interactive installs render a persistent five-stage TTY timeline with active spinner motion, stage-purpose text, an explicit stage-three write boundary, retained completion lines, and one restart/Tab receipt. CI, non-TTY, `NO_COLOR`, and `--dry-run` paths retain plain or machine-readable output.
|
|
20
20
|
- Use `litopencode doctor --root <workspace>` to inspect package metadata, config source, runtime paths, and ledger location without writing files.
|
|
21
21
|
- Packaged plugin startup and successful interactive `install`/`doctor` management commands run a bounded foreground automatic-update barrier by default. It installs only an exact newer stable `@litfamily/litopencode@<version>` into a private staging prefix, invokes the staged installer with `--no-auto-update`, and requires a matching post-install `doctor --json` result before the transaction succeeds. The separate `~/.litopencode/auto-update-install.lock`, journal, receipt, and private backup keep rollback evidence outside project/config roots; rollback is fingerprint-verified, and an unknown staged state or impossible rollback stops the host without a success claim while retaining the backup path. Use `--no-auto-update` or `LITOPENCODE_NO_AUTO_UPDATE=1` to disable it; `NO_UPDATE_NOTIFIER` and `LITOPENCODE_NO_UPDATE_CHECK` remain higher-precedence opt-outs.
|
|
@@ -23,7 +23,7 @@ This guide describes the supported migration shape for moving an OpenCode workfl
|
|
|
23
23
|
- Use `litopencode doctor --root <workspace>` to inspect `litopencode.json` route validity and effective `lit-plan` / `lit-loop` settings without writing files.
|
|
24
24
|
- Use `litopencode install --dry-run --root <workspace>` to preview the `opencode.json` plugin mutation without writing files.
|
|
25
25
|
- Route fields include top-level `permissionMode` (`safe`, `balanced`, or `yolo`) plus per-agent/per-category `provider`, `model`, `variant`, `category`, `reasoningEffort`, `textVerbosity`, `thinking`, `temperature`, `topP`, `maxTokens`, `promptAppend`, `tools`, `permission`, and `providerOptions`; generated route files use `variant` as the primary effort knob while `reasoningEffort` stays available for explicit provider-level overrides. LitOpenCode keeps `topP` as its config spelling and projects it to OpenCode's native `top_p` field; this preserves nonreasoning model sampling while Astra's native Responses capability omits unsupported sampling fields.
|
|
26
|
-
- Global route config loads first, project-local route config merges afterward, and effective per-agent fields override category fields. Fresh/reset lead routes use Astra with native `reasoningEffort
|
|
26
|
+
- Global route config loads first, project-local route config merges afterward, and effective per-agent fields override category fields. Fresh/reset lead routes use Astra with native `reasoningEffort`. GPT-6 Astra and Sol accept `low`, `medium`, `high`, `xhigh`, `max`, and `ultra`. GPT-6 Luna accepts `low`, `medium`, `high`, `xhigh`, and `max`, but not `ultra`. Previous-generation GPT-5.6 Luna accepts only `high` and `max`; `xhigh` remains unsupported for that model. Astra has no invented `-fast` alias. No-selection installs preserve user route bytes but fail before success output when a managed route is unsafe. Other model IDs remain user-owned custom routes. Existing host entries named `momus` or `litwork-reviewer` preserve explicit routes and receive Astra/xhigh only when route fields are absent. LitOpenCode does not expose Hermes-specific per-subagent overrides.
|
|
27
27
|
- Use `litopencode install --permission-prompt`, `--permission-mode balanced`, or `--yolo` only when you explicitly want LitOpenCode to reduce OpenCode approval prompts. Default installs do not relax permissions. Balanced mode allows routine automation while keeping dangerous bash patterns on ask; YOLO mode writes `permissionMode: "yolo"` and the plugin config hook allows OpenCode `bash`, `edit`, `webfetch`, and `external_directory` globally. In both balanced and YOLO modes, `task` delegation is granted only to execution-capable primary agents; subagents and `lit-plan` stay task-denied so delegation never recurses and the planner cannot select an implementation child. Existing global string/object and per-primary task policies are preserved unless they would weaken those hard deny guards; absent global task policy is not invented, and the runtime lineage guard blocks child task calls even under an explicit global allow. `lit-plan` remains agent-level edit/bash/task `deny`.
|
|
28
28
|
- Restart OpenCode after changing `permissionMode`; OpenCode loads config at startup and running sessions keep the already-loaded permission policy.
|
|
29
29
|
- Planning routes now produce proportionate objective-achievable checklists rather than relying on a later review pass to discover missing execution detail. Each retained item carries action/output/verification, while risky or multi-stage work receives SDD-like gates only when justified. `/review-work` accepts both draft plans (read-only `PASS`/`ITERATE`/`NEEDS-CONTEXT`) and completed work (the existing five-lane review); it never implements a draft plan.
|
package/docs/reference-Ko-KR.md
CHANGED
|
@@ -87,10 +87,21 @@ CI와 비대화형 터미널에서는 자동 질문을 생략하며, 명시한
|
|
|
87
87
|
`NO_COLOR`에서도 출력 스타일을 직접 선택할 수 있지만 색상·커서 이스케이프는 출력하지
|
|
88
88
|
않습니다. `TERM=dumb`이나 UTF-8이 아닌 로케일에서는 ANSI 장식 없이 `LIT` 문자를 표시합니다.
|
|
89
89
|
새로 설치하거나 초기화하면 계획·검토 및 `lit-loop`는 `openai/gpt-6-astra`/`xhigh`,
|
|
90
|
-
실행·연구 helper는
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
실행·연구 helper는 새 기본값인 `openai/gpt-6-luna`/`max`를 사용합니다. `gpt-6-sol`/`xhigh`는
|
|
91
|
+
코딩 리드 대안입니다. GPT-6 Astra와 GPT-6 Sol은 `low`, `medium`, `high`, `xhigh`, `max`, `ultra`를
|
|
92
|
+
모두 지원합니다. GPT-6 Luna는 `low`, `medium`, `high`, `xhigh`, `max`를 지원하지만 `ultra`는
|
|
93
|
+
지원하지 않습니다. 이전 세대 `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`는 계속 선택할 수 있고,
|
|
94
|
+
현재 호스트 카탈로그에는 이 모델들의 지원 종료일이 등록되어 있지 않습니다. GPT-5.6 Luna는
|
|
95
|
+
`high`와 `max`만 지원하고 `xhigh`는 허용하지 않습니다. 이 제한은 GPT-6 Luna에는 적용되지 않습니다.
|
|
96
|
+
일반 설치와
|
|
97
|
+
업데이트는 이미 설정된 모델을 보존합니다. 명시적인 `--model-prompt`만 관리 모델 키를 다시 씁니다.
|
|
98
|
+
기존 GPT-5.6 계열의 `-fast` 의미는 유지하지만 `gpt-6-astra-fast` 별칭은 추가하지 않습니다.
|
|
99
|
+
|
|
100
|
+
### 모델 카탈로그 갱신
|
|
101
|
+
|
|
102
|
+
OpenAI 모델 ID, 역할 기본값, 선택 메뉴 항목과 effort 범위는 `src/cli/model-catalog.ts`에 모여 있습니다.
|
|
103
|
+
이 파일을 수정한 뒤 `npm run build`로 패키지용 JavaScript를 다시 생성하고,
|
|
104
|
+
`node --test test/gpt6-astra-routing.test.mjs`로 선택 메뉴, 기본 경로와 라우팅 동작을 확인합니다.
|
|
94
105
|
전역 설치가 필요하면 다음을 사용합니다.
|
|
95
106
|
|
|
96
107
|
```sh
|
|
@@ -307,3 +318,9 @@ wrapper 이전에는 보관 사본이 필요하지 않습니다. 교체나 안
|
|
|
307
318
|
안내된 복구 경로를 보존하고 확인하세요. 설치 성공으로 간주하면 안 됩니다.
|
|
308
319
|
이 검사는 일반적인 사용과 감지한 경로 변경을 다루며, 적대적인 동시 파일 변경까지
|
|
309
320
|
막는다는 보장은 아닙니다.
|
|
321
|
+
|
|
322
|
+
## 디자인 제작과 README
|
|
323
|
+
|
|
324
|
+
OpenCode 네이티브 스킬 `frontend-ui-ux`는 충분한 구현 요청을 받으면 작업 화면을 만들고 렌더링을 확인합니다. 중요한 방향이 모호할 때만 질문하며 답변을 보존합니다. 검토·계획 요청은 읽기 전용입니다.
|
|
325
|
+
|
|
326
|
+
네이티브 스킬 도구에서 `readme-studio`를 선택하면 실제 저장소 정보로 README와 표지를 제작합니다. 로컬 글꼴의 윤곽선, Remotion/HyperFrames 예제, 정적·동적 출력 절차가 함께 설치됩니다. 이미지 생성 도구가 없으면 `IMAGE_GENERATION_UNAVAILABLE`을 알리고 제공된 배경으로 이어갑니다. 공개 GitHub/npm 렌더링 검증은 별도 단계입니다. 전용 슬래시 명령은 없습니다.
|
package/docs/reference.md
CHANGED
|
@@ -85,17 +85,24 @@ npm exec --package @litfamily/litopencode@latest -- litopencode install --model-
|
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
The interactive picker (`--model-prompt`, or a fresh TTY install) asks for a provider
|
|
88
|
-
(OpenAI GPT-6
|
|
89
|
-
HELPER model for the execution/research categories; the helper
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
88
|
+
(the OpenAI GPT-6 family or the previous GPT-5.6 generation, or xAI Grok), a LEAD model for the
|
|
89
|
+
planning/review categories, and a HELPER model for the execution/research categories; the helper
|
|
90
|
+
may use a different provider. New installs default to GPT-6 Astra/xhigh for lead, planning, and
|
|
91
|
+
review roles; GPT-6 Sol/xhigh is the coding-lead alternative, and GPT-6 Luna/max is the helper
|
|
92
|
+
default for execution, research, and ordinary workers.
|
|
93
|
+
GPT-6 Astra and Sol accept `low`, `medium`, `high`, `xhigh`, `max`, and `ultra`. GPT-6 Luna accepts
|
|
94
|
+
`low`, `medium`, `high`, `xhigh`, and `max`, but not `ultra`. The previous-generation
|
|
95
|
+
`gpt-5.6-sol`, `gpt-5.6-terra`, and `gpt-5.6-luna` remain selectable, and the current host catalog
|
|
96
|
+
has no retirement metadata for them. GPT-5.6 Luna accepts only `high` and `max`; `xhigh` remains
|
|
97
|
+
unsupported for that model. This previous-generation restriction does not apply to GPT-6 Luna.
|
|
98
|
+
xAI rows are the reasoning-capable Grok models from the host catalog, `grok-4.6` first.
|
|
93
99
|
`--subagent-model <provider/id>` and `--subagent-effort <e>` set the helper route from flags.
|
|
94
100
|
Legacy OpenAI `<id>-fast` aliases remain accepted and policy-checked as their base ids;
|
|
95
101
|
`gpt-6-astra-fast` is not invented or accepted. Choosing Grok
|
|
96
102
|
without an xAI credential prints a warning naming `XAI_API_KEY` and still writes the route.
|
|
97
|
-
|
|
98
|
-
preserve
|
|
103
|
+
An ordinary install or update preserves any already configured model. `--no-model-prompt` and
|
|
104
|
+
`--yes` also preserve existing routes; the explicit `--model-prompt` option rewrites managed keys
|
|
105
|
+
only.
|
|
99
106
|
|
|
100
107
|
`install --yes` skips every picker and keeps the saved output style. CI and non-TTY
|
|
101
108
|
installs skip automatic prompts; explicit prompt flags still work. `NO_COLOR` keeps
|
|
@@ -104,11 +111,17 @@ and non-UTF-8 locales use the plain `LIT` wordmark without ANSI decoration.
|
|
|
104
111
|
|
|
105
112
|
The OpenCode config hook routes the lead categories and `lit-loop` to
|
|
106
113
|
`openai/gpt-6-astra` with native `reasoningEffort` (fresh/reset default `xhigh`).
|
|
107
|
-
Execution and research helpers
|
|
108
|
-
|
|
114
|
+
Execution and research helpers use the fresh default `openai/gpt-6-luna`/`max`.
|
|
115
|
+
The hook registers only missing native Astra model metadata
|
|
109
116
|
(`reasoning`, no `temperature`, and tool calls); existing provider/model fields and host
|
|
110
117
|
agent overrides are preserved. `momus` and `litwork-reviewer` are never force-overwritten.
|
|
111
|
-
|
|
118
|
+
Unsupported or conflicting model/effort pairs fail validation before install success is reported.
|
|
119
|
+
|
|
120
|
+
### Refreshing the model catalog
|
|
121
|
+
|
|
122
|
+
`src/cli/model-catalog.ts` is the single catalog for OpenAI ids, role defaults, picker rows, and
|
|
123
|
+
effort bounds. After changing it, run `npm run build` to regenerate packaged JavaScript, then run
|
|
124
|
+
`node --test test/gpt6-astra-routing.test.mjs` to check the picker, defaults, and route behavior.
|
|
112
125
|
|
|
113
126
|
The default is safe/ask-first behavior. `balanced` and `yolo` are opt-in. A global
|
|
114
127
|
installation is also supported:
|
|
@@ -228,6 +241,7 @@ flowchart LR
|
|
|
228
241
|
- <code>doctor-installer</code>
|
|
229
242
|
- <code>durable-litgoal</code>
|
|
230
243
|
- <code>frontend-ui-ux</code>
|
|
244
|
+
- <code>readme-studio</code>
|
|
231
245
|
- <code>lit-commit</code>
|
|
232
246
|
- <code>lit-crucible</code>
|
|
233
247
|
- <code>lit-init</code>
|
|
@@ -399,3 +413,9 @@ bytecode cannot override its source. Cacheless repeat and migration from a flat
|
|
|
399
413
|
need no retained backup. If replacement or safe rollback fails, preserve the reported
|
|
400
414
|
recovery paths and inspect them; do not assume installation succeeded. These checks
|
|
401
415
|
cover ordinary use and detected path changes, not hostile concurrent filesystem mutation.
|
|
416
|
+
|
|
417
|
+
## Design production and README Studio
|
|
418
|
+
|
|
419
|
+
The native `frontend-ui-ux` skill takes an adequate authorized build request through working implementation and rendered inspection. It asks only material design choices and retains answers; review and plan requests remain read-only.
|
|
420
|
+
|
|
421
|
+
Select `readme-studio` through OpenCode's native skill tool for factual README writing and local cover composition. The installed resources include outlined typography helpers and pinned Remotion/HyperFrames recipes. Without a native image generator it reports `IMAGE_GENERATION_UNAVAILABLE` and can continue from a supplied background. Public GitHub/npm rendering is a separate gate. No dedicated slash command is claimed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: frontend-ui-ux
|
|
3
|
-
description:
|
|
3
|
+
description: Build and inspect authorized interfaces, resolving material design choices with a compact evolving direction.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## #contract.activation
|
|
@@ -16,55 +16,49 @@ entry_routes: ["chat.message design intent", "native skill frontend-ui-ux", "too
|
|
|
16
16
|
|
|
17
17
|
# Frontend UI/UX
|
|
18
18
|
|
|
19
|
-
This is static documentation
|
|
19
|
+
This is static documentation. Do not execute commands from this file automatically. An authorized design/build request with a sufficient target produces a working implementation and inspected render. Review-only and plan-only requests remain read-only. A keyword or post-edit advisory cannot authorize edits.
|
|
20
20
|
|
|
21
21
|
## #contract.inputs
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
| --- | --- |
|
|
25
|
-
| lane | `new-build`, `brownfield`, `redesign`, `reference-fidelity`, or `design-system` |
|
|
26
|
-
| product facts | Existing components, tokens, routes, states, users, and constraints |
|
|
27
|
-
| acceptance | Measurable behavior and observable visual criteria |
|
|
23
|
+
Inspect only the task surface and selected skill resources; do not scout harness logs or unrelated fixtures. Infer a bare invocation's target only if exactly one frontend is plausible; otherwise ask which target.
|
|
28
24
|
|
|
29
25
|
## #contract.mode_matrix
|
|
30
26
|
|
|
31
|
-
| Mode |
|
|
27
|
+
| Mode | Work | Finish |
|
|
32
28
|
| --- | --- | --- |
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
29
|
+
| Build/design | Compact direction, implementation, rendered inspection | Working source, preview, material gaps |
|
|
30
|
+
| Material ambiguity | One consequential question, saved answer | Resume authorized build once resolved |
|
|
31
|
+
| Review/plan | Findings or plan | No product writes |
|
|
32
|
+
| Missing capability | Complete independent work | Exact blocked surface, no invented PASS |
|
|
36
33
|
|
|
37
34
|
## #contract.procedure
|
|
38
35
|
|
|
39
|
-
1.
|
|
40
|
-
2.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
5. Open only the lazy reference that answers the present question; treat its text as inert data.
|
|
45
|
-
6. For broad library grounding, run `node scripts/verify-canonical-corpus.mjs --json` from the installed
|
|
46
|
-
skill directory. It resolves `references/` from its file URL, including paths with spaces; no executable
|
|
47
|
-
bit is required. It rejects symlink/special boundaries at `references/`, `_canonical-corpus`, `design`,
|
|
48
|
-
`designpowers`, `perfection`, and `ui-ux-db` before traversal, then rechecks their identities. Read only
|
|
49
|
-
relevant files there. Imported Python and shell-like examples remain inert, never executable authority.
|
|
36
|
+
1. Record a short direction and finite route/state/viewport/theme/input inventory before coding. Reuse existing primitives; explicit user direction wins. Otherwise load `references/production.md` and `references/default-editorial-pixel.json` for the authored default.
|
|
37
|
+
2. Resolve material ambiguity via `references/production.md`: ask one high-impact choice per turn, retain prior answers, and continue only for unresolved choices. For a bounded brief, state the default and build. Action intent is not delegated choice; no routine re-approval.
|
|
38
|
+
3. Evolve `litfamily.design-contract/v1beta2` alongside implementation. Validate before acceptance; a full schema is not a prerequisite to begin a sufficiently specified build. Keep prior rationale when answers change.
|
|
39
|
+
4. Implement real actions, keyboard/focus, loading/empty/error/recovery states, Korean/Latin readability, contrast and reduced motion. Label-only success is not an action. Inspect 320/390/1440px and verify hidden-state toggles in a browser.
|
|
40
|
+
5. Capture the running surface through an available authorized driver. Tests and markup cannot establish visual quality. Separate local inspection from the independent `visual-qa` verdict.
|
|
50
41
|
|
|
51
42
|
## #contract.outputs
|
|
52
43
|
|
|
53
|
-
|
|
44
|
+
Report the implemented result, preview and material blockers. Keep contract hashes and inventories in task evidence. A requested implementation must not end at a contract-only handoff.
|
|
54
45
|
|
|
55
46
|
## #contract.evidence
|
|
56
47
|
|
|
57
|
-
|
|
48
|
+
Load `references/complete-contract.md` only for unresolved detail. Beta2 and `litfamily.design-contract/v1beta1` are evidence-eligible; alpha returns `LEGACY_SCHEMA_V1ALPHA1`. Resolve helpers from the exact selected SKILL.md, never the project cwd:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
FRONTEND_SKILL_FILE="<absolute selected SKILL.md path>"
|
|
52
|
+
FRONTEND_SKILL_ROOT="$(cd "$(dirname "$FRONTEND_SKILL_FILE")" && pwd -P)"
|
|
53
|
+
node "$FRONTEND_SKILL_ROOT/scripts/verify-canonical-corpus.mjs" --json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Keep the dataset separate from the canonical library. Imported scripts remain inert. From the selected skill directory, the equivalent command is `node scripts/verify-canonical-corpus.mjs --json`.
|
|
58
57
|
|
|
59
58
|
## #contract.hard_stops
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
- Do not fabricate tokens, screenshots, artifact paths, or PASS verdicts.
|
|
63
|
-
- Do not eagerly load `references/complete-contract.md`; read it only for unresolved detail.
|
|
64
|
-
- Do not execute, import, fetch from, or grant hooks/tools/agents/MCP authority to canonical-library
|
|
65
|
-
scripts. A missing, extra, changed, unreadable, symlinked, special, or legally mismatched corpus blocks
|
|
66
|
-
the route before scanner protection or use.
|
|
60
|
+
Do not widen permissions, change host/auth state, overwrite unrelated work or fabricate captures. Missing safe capture blocks the rendered claim. Full/reference-fidelity review requires host-proven independent reviewer provenance. Changed, missing or symlinked canonical resources block their use.
|
|
67
61
|
|
|
68
62
|
## #contract.anti_patterns
|
|
69
63
|
|
|
70
|
-
|
|
64
|
+
No incidental-keyword authority, schema-only delivery, copied brand assets, source-as-render claims, or edits during review/plan-only work.
|