Skip to content

feat: responsive improvements#2203

Merged
limetech merged 28 commits into
masterfrom
feat/responsive-improvements
May 25, 2025
Merged

feat: responsive improvements#2203
limetech merged 28 commits into
masterfrom
feat/responsive-improvements

Conversation

@zackspear

@zackspear zackspear commented May 22, 2025

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Style

    • Improved layout and styling of password input sections for user add/edit pages, enhancing visual clarity and separation of elements.
    • Updated styling for SSH authorized keys textarea to use a monospace font class and simplified its appearance.
    • Adjusted CSS for consistent box sizing and layout, and introduced a monospace font utility class for improved readability.
    • Removed unnecessary or outdated CSS properties for cleaner and more maintainable styles.
    • Added new flexbox-based styling for syslog controls to improve layout and spacing.
    • Modified search input text color for better visual consistency.
    • Commented out specific Docker network-related CSS styles to simplify appearance.
    • Removed multiple CSS rules related to network extra, network rules, eth0 narrow inputs, and wireless styling for cleaner style sheets.
  • Refactor

    • Restructured HTML markup in password fields and SSH key sections for better maintainability and clearer styling.
    • Enhanced form and button layouts across CPU, VM, and Docker settings pages with flexbox containers for improved spacing and organization.
    • Removed redundant wrapping containers around tables for cleaner markup structure.
    • Updated syslog controls markup to a more semantic and flexible layout using modern CSS classes.
    • Improved markup spacing by adding blank lines after hidden inputs in multiple forms for better readability.
    • Wrapped encryption key inputs and checkboxes in flex containers for improved layout.
    • Reorganized UPS status table wrapping for clearer structure.
    • Enhanced parity check scheduling UI by consolidating option generation logic for cleaner and more maintainable form controls.
    • Refined Docker network configuration UI with flexbox-based layout and semantic element restructuring for improved clarity and consistency.
    • Improved Docker container creation/editing UI with better flexbox-based button and input grouping for enhanced visual consistency.
    • Simplified and improved layout of network interface description inputs and VLAN controls with better grouping and conditional display.
    • Replaced inline HTML and jQuery append calls with structured semantic markup for syslog controls.
    • Updated routing table form inputs to use flexbox layout for better spacing and alignment.
    • Adjusted wireless network list markup for consistent flexbox layout and spacing.
    • Improved extraction of label texts in syslinux menu for cleaner UI text handling.
  • Bug Fixes

    • Updated status display to append results to the correct location in the interface, ensuring status messages appear in the intended area.
  • Other Improvements

    • Enhanced table structure for UPS status with improved HTML wrapping and formatting for better readability.
    • Added vertical spacing in disk settings forms to improve visual separation of input sections.
    • Added whitespace improvements in forms related to btrfs scrub commands and other settings for clearer markup formatting.

zackspear added 6 commits May 22, 2025 12:31
- Wrapped password input fields in a flex container for better alignment.
- Added a new utility class .font-mono in default-base.css for consistent font styling in text areas.
- This change continues the effort to enhance visual consistency across the plugin.
- Refactored the showStatus function for better readability and structure.
- Changed the way parameters are passed to the jQuery post method.
- This change continues the effort to enhance code clarity and maintainability across the plugin.
….page

- Added spacing between hidden input fields and submit buttons for improved layout consistency.
- This change continues the effort to enhance visual consistency across the plugin.
- Added overflow-x: auto to dd elements for improved handling of overflow content.
- This change continues the effort to enhance visual consistency across the plugin.
- Removed unnecessary margin and transform properties from buttons for improved layout consistency.
- This change continues the effort to enhance visual consistency across the plugin.
- Added width: 100% and box-sizing: border-box to pre elements for improved layout handling.
- Updated box-sizing for dd elements to ensure consistent sizing across different contexts.
- This change continues the effort to enhance visual consistency across the plugin.
@coderabbitai

coderabbitai Bot commented May 22, 2025

Copy link
Copy Markdown
Contributor
## Walkthrough

The changes focus on HTML and CSS refactoring across several plugin pages to improve layout, styling, and code clarity. Adjustments include inserting blank lines for readability, reorganizing password input sections for better structure, updating CSS for layout consistency, restructuring Docker network UI with flexbox, refining parity check scheduling selects, and modifying JavaScript to change where status updates are appended in the DOM.

## Changes

| File(s)                                                                                  | Change Summary                                                                                                                                                                                                                                                                                                                                                   |
|-----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| emhttp/plugins/dynamix.docker.manager/DockerSettings.page                              | Refactored Docker network configuration UI with flexbox containers, multiline checkbox labels, grouped selects, and spans for subnet/gateway/DHCP pool; replaced inline markup with semantic containers; no logic changes.                                                                                                                                     |
| emhttp/plugins/dynamix.vm.manager/VMSettings.page                                      | Added blank lines after hidden inputs in btrfs scrub command forms for readability; no logic changes.                                                                                                                                                                                                                                                          |
| emhttp/plugins/dynamix/DeviceInfo.page                                                 | Inserted blank line after a hidden input in SMART Settings form; no logic changes.                                                                                                                                                                                                                                                                              |
| emhttp/plugins/dynamix/DiskSettings.page                                              | Added blank lines and wrapped encryption key inputs and checkboxes in flex containers with labels for improved layout; no logic changes.                                                                                                                                                                                                                       |
| emhttp/plugins/dynamix/UserAdd.page<br>emhttp/plugins/dynamix/UserEdit.page           | Refactored password input sections to wrap inputs and icons in flex containers, separated password strength indicators; in UserEdit, replaced inline styles on SSH authorized keys textarea with `.font-mono` class; no logic changes.                                                                                                                        |
| emhttp/plugins/dynamix/include/DefaultPageLayout/HeadInlineJS.php                     | Updated `showStatus` function to use shorthand property names in POST data and changed DOM target for appending status from `.tabs` to `.title .right`; reformatted callback for clarity.                                                                                                                                                                       |
| emhttp/plugins/dynamix/styles/default-base.css                                        | Removed commented fixed width from textarea/input, enhanced `pre` and `dd` elements with `box-sizing: border-box` and width styles, introduced `.font-mono` monospace utility class, refined flexbox/grid layouts and utility classes for flexible styling.                                                                                                    |
| emhttp/plugins/dynamix.apcupsd/UPSdetails.page                                       | Wrapped UPS status table in a new `TableContainer` div and reformatted table markup for readability without content changes.                                                                                                                                                                                                                                    |
| emhttp/plugins/dynamix/CPUisol.page<br>emhttp/plugins/dynamix/CPUpin.page<br>emhttp/plugins/dynamix/CPUvms.page | Replaced `TableContainer` divs with `TableContainer--no-min-width`, indented hidden inputs, grouped action buttons and spinner inside flex container divs for consistent horizontal layout; no logic changes.                                                                                                                                                 |
| emhttp/plugins/dynamix/Syslog.page<br>emhttp/plugins/dynamix/sheets/Syslog.css        | Replaced compact inline HTML for log controls with expanded semantic flexbox markup and grouped controls; added `.syslog-controls` CSS class for layout; simplified input styling; no logic changes.                                                                                                                                                            |
| emhttp/plugins/dynamix/styles/default-dynamix.css                                    | Changed input `.t1.search` text color from `--gray-100` to `--text-color`; background color unchanged.                                                                                                                                                                                                                                                          |
| emhttp/plugins/dynamix/ParityCheck.page                                              | Consolidated parity check scheduling select options into PHP arrays and attributes, simplifying HTML rendering while preserving mode-dependent UI behavior; no logic or exported entity changes.                                                                                                                                                                |
| emhttp/plugins/dynamix.docker.manager/sheets/DockerSettings.css                      | Commented out CSS rules for network-related selectors (`select.net`, `span.net`, `span.ip4`, `span.gw6`), disabling these styles without removing them.                                                                                                                                                                                                         |
| emhttp/plugins/dynamix.vm.manager/sheets/VMSettings.css                             | Removed `-webkit-overflow-scrolling: touch` from `body`, eliminated margin and transform styles from `#download_button` and `#remove_button`, deleted commented `.fileTree` block.                                                                                                                                                                              |
| emhttp/plugins/dynamix.docker.manager/include/CreateDocker.php                       | Wrapped checkbox inputs in flex container spans, removed inline width style on textarea, restructured config display template with flexbox spans, and modified JavaScript button HTML strings to use flex containers for better layout; no logic changes.                                                                                                      |
| emhttp/plugins/dynamix.docker.manager/sheets/AddContainer.css                        | Removed fixed line-height, white-space, and width from `span.boxed`, replaced with `max-width: 100ch`; commented out multiple CSS rules for inputs, selects, and configLocation div; no other style changes.                                                                                                                                                      |
| emhttp/plugins/dynamix/Eth0.page                                                     | Removed standalone non-breaking space and colon before inline-block span wrapping description info button, consolidating markup for interface description input section.                                                                                                                                                                                        |
| emhttp/plugins/dynamix/EthX.page                                                     | Removed "shift" class from title div; wrapped interface description input and info button in inline-block spans; grouped port toggle and Add VLAN buttons in flex container; separated conditional display of Add VLAN button and service stop message; no logic changes.                                                                                     |
| emhttp/plugins/dynamix/NetworkExtra.page                                            | Removed horizontal rule `<hr>` element between listening interfaces display and textarea input; no other changes.                                                                                                                                                                                                                                              |
| emhttp/plugins/dynamix/NetworkRules.page                                            | Removed "shift" class from a title div; no other changes.                                                                                                                                                                                                                                                                                                       |
| emhttp/plugins/dynamix/RoutingTable.page                                            | Restructured add route form inputs into nested flexbox spans for improved layout; grouped metric input with icon and label; moved hidden task input inside flex container; no logic changes.                                                                                                                                                                    |
| emhttp/plugins/dynamix/Wireless.page                                                | Removed "shift" and "wifi" classes; restructured Wi-Fi and Regulatory region sections with markdown div wrappers; generated Regulatory region options via PHP foreach; moved manual region input to separate div; wrapped buttons in flex container; wrapped spinner icons in inline-block spans; no logic changes.                                         |
| emhttp/plugins/dynamix/include/Wireless.php                                        | Replaced `<span class="wifi">` wrappers around WiFi network names and icons with `<span>` using flexbox classes `inline-flex flex-row items-center gap-2` and nested spans for names; no logic changes.                                                                                                                                                        |
| emhttp/plugins/dynamix/sheets/Eth0.css                                             | Removed entire CSS block defining custom properties and styles for narrow text inputs on eth0 interface, including theme-specific overrides.                                                                                                                                                                                                                  |
| emhttp/plugins/dynamix/sheets/NetworkExtra.css                                     | Deleted file containing margin-left style for spans with ids starting with "info-".                                                                                                                                                                                                                                                                             |
| emhttp/plugins/dynamix/sheets/NetworkRules.css                                     | Deleted file containing margin and theme-specific styles for elements with ids starting with "info-" and nested spans with status and vhshift classes.                                                                                                                                                                                                       |
| emhttp/plugins/dynamix/sheets/Wireless.css                                        | Removed styles for `.wifi` class and related input and select elements, deleting display, width, font, margin, and text-transform rules; no other CSS changes.                                                                                                                                                                                                 |
| emhttp/plugins/dynamix/UserEdit.page                                               | See UserAdd.page changes plus replaced inline styles on SSH authorized keys textarea with `.font-mono` class; no logic changes.                                                                                                                                                                                                                                |
| emhttp/plugins/dynamix/Syslinux.page                                               | Improved `prepareMenu` JS function to extract label text by cloning and cleaning label elements instead of spans; added blank line after hidden input for formatting; no logic changes.                                                                                                                                                                       |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant User
    participant Browser
    participant Server

    User->>Browser: Interacts with password input or btrfs scrub controls
    Browser->>Server: Submits form (no logic change, only layout updated)
    Server-->>Browser: Processes request as before

    User->>Browser: Triggers showStatus (JS)
    Browser->>Server: POST {name, plugin, job}
    Server-->>Browser: Returns status
    Browser->>Browser: Append status to .title .right

Suggested reviewers

  • ljm42
  • elibosley

Poem

A rabbit hops through lines of code,
Tidying up the HTML road.
Password fields now flex and shine,
Status updates realign.
Fonts go mono, layouts neat—
With every tweak, the user’s treat!
🐇✨


<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between b6be93f8dbb6013a10b199c882b9238c970b66d9 and 645525078a0d19b63f1d3471339ae33e6892b633.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `emhttp/plugins/dynamix/Syslinux.page` (2 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: Analyze (javascript-typescript)

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>emhttp/plugins/dynamix/Syslinux.page (2)</summary>

`51-55`: **Excellent improvement to label text extraction logic.**

The changes enhance the robustness of text extraction by:

1. **Correct element targeting**: Switching from `span[id^=label]` to `label[id^=label]` aligns with the actual HTML structure visible in the form
2. **Clean text extraction**: Cloning the label, removing nested input elements, and then extracting text ensures only the label text is captured
3. **Whitespace normalization**: The regex `/\s+/g` with space replacement properly handles multiple whitespace characters
4. **Defensive programming**: The approach prevents input element content from being included in the label text

This change aligns well with the HTML structure where `label` elements contain radio inputs that should be excluded from the extracted text.

---

`192-192`: **Good formatting improvement.**

The blank line addition improves code readability by providing clear visual separation between the hidden input fields and the visible form sections.

</details>

</blockquote></details>

</details>
<!-- internal state start -->


<!-- DwQgtGAEAqAWCWBnSTIEMB26CuAXA9mAOYCmGJATmriQCaQDG+Ats2bgFyQAOFk+AIwBWJBrngA3EsgEBPRvlqU0AgfFwA6NPEgQAfACgjoCEejqANiS4AzEtS4Vp3fBkSSSKZr3xS2GXEQDADlsZgFKLgAmKIAGAGYDAFVESMgALzQGAGtEbnsKI31jcCgyenwbHAJiMmUaeiZWdi5efmFRcSkZeSYlKlV1LR1ikyg4VFRMasJScioGhWaAxzQAd0hEMOY0Cnk5BX6VNU1tXTBDEtMDEmZYXFxuAHpuC2wieDcn2lkMNGZ4AAPDS0fA5SgaHZ/UgUJ4AETB2UoAGUSA9PkREBpuGhSBwDAAiIkGADEJMgAEEAJK1ebUOibba7eSVRiwTCkIIGOCeBjsjCcngUeA7YUWeRkfkMTy4WCeAAS0AAsgAZTa4CjYMTYJzoDD0RC4WQWDH8KqyzwI8F8ci4Nb4CjZBQYGzwIg66jwVyQJJUyAkKz+QKQA5OV5ZU2fE3kf2B9jITD0AEYEVoCyQUXZbDcSBrdSwDMOzypKHiBhp8WQYV8vX0GxWQECfCAsACNCpRquXDaeax27xjSQZH5BjwV3lizi/EGcZytmibJNwGQCwqAPIGwOyBKKziAWQK1IvgSOFIJ2uqwJ/Xb+BOMQO+DSdC6pybig7B4MggZ7AWcTRhVlTVPNZX9QFXngUdcBXNd00TFAMG4PBNhIHEFi9LA30YVdhSNDQZxgOcCUPShGGwQ0WEgW17UdSAjXyAla0gAl5XwQ10AYaVEGQb8GHIghmCotEaNyRjUisMQ+yDZAMHwDZ2SkOi5VvMDwz+Ag9jokhAWgtYqG4fJ6E+SAAANgDyaYGFXbiAF4CU+JDcDAT5DU1MQMMQAk9BMhDDXsCoqijT4ZW06C0BsGg+AtFCJM0AieUgKkAAUJAAFgPeUAGEkp4fB8HTJgXTdD1xG9VJ3O9VBXyyDSGRsChKLQSB62oBCAJg2R8GQkCC2YX9xFeYsA06K8jMQvBkFEWB8AZWhb06Stvya1ytVwHU6obJcOq63T8xgiIrEaOUciXaQABpICIBrswZcSRou+CLLcZqty2ARbQuoh6TWNBZAuuEspylx8oe68dkQbJBwS6iHSdO7JPwbhSue+DwadRHkYTXVeBIVtsHgP8EKWigqFkUaq3KSgGWM8g/PoCw8u4ZAXJoNAApvO9oKm/B1XpaT8KgZERQJ3Zms25tW3bBknBW7VhX3KYDJNL8eei5K0qY9WADYyIowSYdoz5IpsLIhoqtwLrDVdRwVjB2qe8mHIm3M9tXA6GT5BdTvJq6usMsXtOdbtgooDdXuwd60QutHPu+37/sB3KQaY6bDWQJhsACAXCM8AQNRsZBEAYTUBBe99IAQWglCwJ3g12TxN0nOSGQOaY2aUegBFXDAnXarCLJtogQxIN8ZTnN6AWggQ8AINxs9RKQqHTIKYwdzZprzfc3o+y647+piAeypPl5dB0PwwhClMtRFSMNXZFjvmhn08PS0AM6nMIbIOe0oZAet3nMA9TRYUKu4PyARtp4HwiEHmfIORPnrhmNmMpVZzkzv0cUpoGYfAYBdCQaZ4C0E9K4C6W5CoanymLOSUM5zMEUGOSCxCUbY3WpWHGqQAhMLTExWWa0l50R5iKHwiknBsxUATdQ8h4K+kgdBUBSAaAYAYLIaBRgySUj/PUDyAir7blEDhJhyBWTaRcBQRYW4kJd0gv6AI6hHxcmCK4EghJiQzmuLce4jwXhvA+F8H4fwATAgkMwSEmBcSUCeAANSVKidEAosQ4jxC4gkpJyTUlpPUW6TJNKsjgQKaQZg5x5NIOgKuCZNgYisCGbuvdgroAiqRaK1loKV2rghRyUl2CXztDzVIaF6Rl0EuVTGFNVyLG/HnCgBdNjFwjrzNa6cuwNQsH/fMxlorRNiXuTE2JwnNQJiQQcw5RAMInOKB6DSopzlaWQdpzslCuhTPuaKRcS68zMUsKE9B4LqCxu6aSoMDTCxwpWcKkVdE3JruNYMDzPimhebM0u5YlEBk+fBH5dcKD/PjA9apmBakxkmG4SgiwIij10W9VIABHbAXTFSqiQY6bMg5HFsngTxHm2DIIXXIcsqhaxSF8EoA1Pg/JaDRiHognYSgADcui6FzXHEwlAyAkJOErGsBANAB6eBciSi+WEhENSkPQURRC1AmiNPwPgb4PzbNUakjRkVDE6OikoKyuwXXGPAg6cxfBLEmgYDY8Q4gCkwPIMkoo7i7gPGeK8d4Llvi/H+ECDQwTQnQgiYgOUaJEBRJiWibZWIGDcXxESFJ6j0lzEyQabJLIqjFLDQlTKyJkRsvycgJwdDFLRRMmANYJABDZHUGAXwlB6xyTAK8/KEquAEC1LAGVPkfD5DMfIeqlFe1Nh+D5eGGlBwUirnY1wFZ969tFL4sAVgIpcDAFEbggIl1MRMhqTAiBbVzqoG4MZJAAAUsQH0XXvYCAAlE+w0xonwDpfLcMddYGqCSbKBEyJJQRrDtvgNmAB9aeDxXA+XgihrtY6cMz3wzFToDosSUk+ewOgo7kImQ0BeEg0AnAkB8l3REmwRxjlkKaPMtBQKozQC2ZSRB7i5nbOgFZPMdxojoCynm+ALR8Ag1U16GpVoegKvyQU0HPDSsOUYNRaTNHoVcBy3R7qDEjO9aYv1PAI6BuDXYsNjjyD4XLVGsARgPGxu8QmvxybAlPBSJQQ9tBdlJO85Wmk1aFhZNYMyM07bOSFMAgyzM2Yy66JxNxGiY0OnDIvj9TtI8apFk7vIV+Bl4XXMIW0/LiBCt3NwHgpA8Au6eGa612uF1s1ySeJXXVhVAU8HbC1h0BoNRkCIKBYa0lfKEM8E1esgdyE/z4P/IB+4PXcWkDQnrk3WuuTm6BNsfB4I0B0p0gIf8qZCTpi7WUxl27Hr+OmJ6d3gzfj6Z6p+FpBISCQNgU9zUEO6NrkxSCrglNpag49ozrq5wACk0D4ORMXeASMVz4BwRdEgUgIFiqsKHQV6AHjClw9IOVrhFrjy03LbhvtsymngquTqeAwDqvpI0ayqQHu6nbirLwwjixGglUxAhRAMBBmgZW8zLrvxuv0QD7R9nfUMgsc56x7A3MOKcV51xEBfM3BjV4+Nvi83+JTYCMLqQKAAFE5qaESdYSNcWMmJdrclnJDa9NNrnL16bbWULmyk+V3h61qu5n0twernhIUTYK6H10AZaAdfcN1lPU2KBFbwANjew2VsoDG0xEP+f1ROAFKBNg4LFvxmW0odAAdlybZDjx6Y/88ASKtftwXuXOc7R4TiQeR3c+ndm7X3qCmhVxnu7mR7tNFguVL23I9yNuHfZAVYeuanULq7h4RVAjbCyKvsfwO28hor0rVNlwBTO+GrevOpgT+YR9pkiuzjA8h0eY+x1xy5SDS3CJy6VJ1/mgSpCwGilbXlGqGmmFHSAZCRDJi0h0nrjQAumihxhBy6mZjtjqXUyfF5RnVNBlngHSAxAuk1XUFxh1Quk3ACDABNgBHOSYkE1AgMwpm7QZHgitlNlj3e33CagJCYKcjoVkkYhbTbQHxoVQHcG8BNHTx4kZ2NHZwMgaiyALFoKqXYUoBBxEMnGakznNm4WoA1C6zwCfC2BrGkzyADAsE9hyB5XykQEtjkncKQUBCsBn3GwCWMxgQRyF0M2QRR08H/zQCx2FCAPx25UGUZAEABG4gwgp3wRNCIWRmHgUi9AoAVzM2dRGRVznBsyP2ek1zMW139V1yDX11DUN080jTcTN380tx8UTVt1C0+CsmwCUHhAq36iSnCRVF+h2ieHlH8mgIAlR2RGxFgG4DLWJC9wSz50ZD93rWCIyxMKUSyJMkGzWGRG7AWR8jK3PwYVFzPw3hQGgg4VoGQEyKangk1Ue3UHQHfn1FUM8CcD4XIBm2oHIkHCSicDwPInYNeI4TCkgCSgAHlkRoAKYaVpBdphMsBBARBJIO8nkh4TFA1XjUCwB0jaUJtbxkBf0TIABvAIjgAIi6K3T4DgOkjAC6IQQQDgFkgQAAXxMhA2l3eI7l0RlhcGJR0Ub0X3/migH1Mg0G7AEEQCYxzkgGzEyIZEXncG9HIhsMQNlHghXRJXkACIIN0RhLhO3GoCajRM6EgDJMpP+BIFpPaKZMgHZK5J5PRT5M+Iph+NuiOPInCP2VDi5gX2gg/D5ETwo3vD4CYxDSqQ0GFAk1wB8hZn8lSyjJUDlInzOTbByG2Ij1QFkg2FtQsIZH/nagEFEVyFyw9Vwn3lw10SYF1GAJ4J7HKXcAFCqWNPhKcERPYkbgZgHSEL5LDMFMsxQV0ThGhKVHyKdS0Usz9NKIs3KKqBMS1wqGqKsVqNsXqKKEgAADFTCsj3BZd/jdQlS+cuATIbB9yL59jDj/jEBf0aTGSzp2SQMfJAAkwlMkvJ2OvI3lvIWQfNtPtKC2ZMEFfMvhMlaLjQdJtxCyBCeG6LeD6LhAGL/CGNIBGK51wHGMmMIPIBmLmO4BMiaNNz8wtygqCxgoCTguIJtxQqcjbFSA0BLUQEWIrTSXizqB9zWNFA2MbS5GbVbWCJ4LHVbyaCDHoxH1dEBGLMIVAl/XiFiAA1Awh03VCkwJh2hR+y8LIC2HliHgtBUk4ILFQEvMnF6CWRnRbnkBMiMq4AAEZFKABSeUikISDYJjXDWeRAMAWSMAC9T4HyXvS1XoAXFVUpDuGghAGsYuewbVVvdbdvLsLbF7HQ+PH/egL6bgcbGWXNRlXxHRZAhqK/SAfBYUfAkMMjLAUU37ZTReYUFvbSBRU0Ty70fyueBUvdLcbsLFNEMM10AM0yOaCQaUywDjH7MKxteDSiEyDgfqw0MAUMiwWgHyb8GauapySoMAeiMa9Ze0Hga2c6CmR5MMhw0cccSRA9NyqU6AFQKwTKJKkOCAXy5MftWS2AHySUolChWgLUOgQnP4KxfcRAygpK9MMdKZPslKzYOhFTAsadScZq7qD/ZCMgN8QeVvZMEUMIOiW6l+N64qmUy8CfJjchdgXdYaCMgAckmm8CtWqorkIXIN/F1Rkl2Aan7JDHkGI0MKHhMiGoI2vD2JxAwB8g3UEiaQUQunzKv1BSVn42eR5j5oTIuj5uWvGxMkIuJulJUAWq7DJoSLfwVkLiYH9m/HpxvznHWsGXVo0GzTCNtUTOQA+GJwyEoFVkRgmyPQFC1qGPIBWQ+oet7GH2QlP0DymsEjW3FmXH/lqwTxEOvEyqsyahkMunqqhqkoZDsriAfQUDeGYBRlf143Twyrfi8OEN5qEH4j411oCBaHeQTMHHupJmcFcDmjbP3iY19oDB8mqqdp7FbxMh2BbFssgCzqUvlISg1qcB7qDPVHUKNpsSlCsvCtNBsrevsqcoFvoBMiXCnUoIxC4CbHz0oFbGbBWp5h0vWmuP2UnGZmDExNIh+SUUQqfBxC9qICeCPv6Evl+RdiEwLAnD4jGQwiOWBV2HYN7Srhnv7AgTXxb1hRTCyJNDTl3hclMl3vcCoIFEPumxPqXFFrIUswUS6S2gVVRQiByIdCOTAP4XIA2CCskWwkmyfBcgTycFjxuoJk3loBTsQSNgah+ulFoHPOYy7D8tcHwHJt+0tq7GahTUWkVpODO3+GjgkZ1RMjlSYwSv7X0hMhVuYwbB0bfh5xodSD0alO0fzN0aDj5QSrjzfjjqHgoYx1yLlUIwMe0inVgHlmyDAFiB8jmkQFxo3C/mzR8YxEHB3M+FPVxXYfQUwGginsOWzB8jaq2o9vBvqpZuEpNRUojpmURluk6BAZzlSCEs3D4iMSwGDrkSIfAWUQulIcUFRXrM5lpi8PBonXkkTAlXG34cUF+sVP/EYYHyfCwgSq6yqRqZsfygdUV0KO0WKM8HnK9SXJ9UqNXKc3XNcy3PDWM282aNIs8XIutyTSouBDfj4iZloDCySmRCUGDhWWiw91i3Yu91WK2HWNSz4q2Lv2r2011FjrDKSDufmV9MJpfmkwVXONjzICsjYjDMasNFXuAAhe8nGrgdWyurMiGvRf/klJMhuu63us4RDgnrnAhcZSzBzF+QDCqFONfDPiLLrC3DNXEWCsJ3AkTBOsqVxnajMgtDZnRcI1Re3VkHRd7qJh5j6j/HgCvTqX/k+GriONSIquglkiEu4ORyWZxpz1JogS3AsOp2sOowSjyE+F7HDGlGmiWtInZubzHhlFxpDEUC5tuGbMVKUTDvhz4qX11G1dQQiIxyiMAOgi3CSnlByj6ECNM2nIXKs1VyrNWdUhXOtS2ZczqPsSMA82cQOZIvN2OcC1Oc6LguyiSCQFmfd1YsdSrU4o+brW+cD34pkffGpoZqrluWh3ptOKVboxZb4HkXAWgkLLiSIAnyBf3BxckGFeumvGikpdOMmrydMiJbusDsoHPpXdxpJeDnmCesIBeqMvJadZz2qrbaNasKfhpRU0R11Dvn1F2DmmQPDoqTbNHNBGc08Gve1WJtFddYldnsxd0QXek17drvoCWhNFlyFEKYoA1T2l7VRblCFePeYgpDlsYngmIicUYhaothk1cCHnFKIiSj3zKZ+nUDEjjvmBoKRzgwddbzodMmAFxYDtJd7H/gSq2lGdJIvK/m0ftboOYG8ulFrr4EyrvW5J0QdC+hTGQNH1NivjKdIJWQrgfHSFBvFAn3NYwF7FhywAxQTE4hYGFvlv0tCj9aGn6VXwCDkyap2K0pSvWXHmFsrL3ycDUyf3Wh9abcs6QRbx1dtTxwJzVdnhzK3w5bTcd0Xj3pb0Kldw8jmYKJnOeh1ZWbszWYcyqPTb103Kzb2eNxSUOYLYC0ZMortyeDLbjueereWLrYfgbdySba2N9dPMBznD+ej2F1f0l1NFZGiiC8CfDFkGLLlBgLnBIgPwoBB2lDCpqg8An2Ty7dnqwgJANMYi7Q9dMLDrVbCulrA5s/cAC5bcEl312AuoVLhYZlbN5pY+nYI1nYg4pedd9d/slLFq3eJfXYoE3cJe3e+/3b8s+Fev/tQ8pbPfTlCqfvtkly+Pdec+LFtInzw+QAJHQ9eFkEw+vGw/IEw4Zn3GI88AJFI/sHI+0FwCo4tdIjYG4j2SlXo6A6aiY6nYkDxb2hTp48/P48McE5oGE4Wro3E+MaiE3aNREumcejHwiY6uo9In06YmiiyCaFM/hQs8QX+y4qNjs+RYc8lbJOAHgGFcFvMmFu8h5KA+igo+2QzGkCCZKQfryIVLR4w9C+9E27QcCdxrGjsVPR8/ZWfn89HKaTiNwRmfTC6Yp2FS3FJ2oJlpv0DapZyy65fxm3nqI/j0gJMxraVyKIT/S410y9TZ122czfcyN2IujULbK7OYq7LeCQSXCVq7eZWIa6+aa/ZS2MVSqDa6fFvyAn+blk8H67nGiUgDLZ4AteATPgpn1CpnoGePG88BNAEBBzMQNAMMgmyfm6kHHbSsnbu4kCYdsgJFXZIB3a2y8ge66jnZH6VF1aqSqlQgOvn72hZ6P8QDslP/P8ep8oPeB6Msv4T5wes9QzkHCbzu8sA23eBPQG0jShccWEZMIaypyXsG4TLUdhPmd4Y8se9AHHiQFw6VUEw+PIjghznBW8eMVPK7P63o4j5h+J7KpA7wrzP8GOTPEgO5QP5s9QIXHZsEMz7whVmGvHOxgJzkjXFbgInQXgAkk4gZtOsvCgG2xuzQQ8ywg2Oh/CO4v4V6EXZjk9G8iLdGsnbTSuniWq5ZR+BpJsmg30IQJ4IUA/JGNHC4YQCEeEHOMLl1AatfWOrSItERxzQRgChOYnC0h6a/wKcKnflKMlWLfgguE8JAGqVRJ8A8O8yQ7Fn3mYpcE2JRNXPG1SzLkNmabANLlxDT5cc2hXHzEc1K7QUa+oWZCjNxIDQFNwNXT3M33q5JYeKjbDvgYFco3cqkXcfFCuAVbSYRcRkZoHNHpCgpLkEKXQVCg6QGDt6BvTSttTsiQpGIAROyIgGYAABxN4HgJKpphaUdkYAAAH4bIWGUqr+gAAkpVM6NTRWFrDKaIGHYXoEv4MdYCSoCkAACV4SWyDEGHHfDyECCjuLIqCCfCyQwoNgOwJJEwDyBvBYfflJHxJjR8em0vBKDLDDbmgikzTUwc9CsGkAossbCkDn0WZ59UhybDIY5myEblchZfRonm0r7FCKKpQuCqeAhhvD4kNQ15pSA4p0hW+jQ9vh2ha6+d+mgjVbJvjsHpgOhPcLobTG6Qdd++4Q4prOVoEHgzwDInZO7hvqjkxeikXbGOyd5O5AQ9nbEkoj2BIwL4qBRiM1m4DeMpYYeUAQSH2K55TRVAVIIxGcKLhuBiCaWsoLGiqD4qX8Bgf/CahuxUU9NLCBKWOhOjAQlsJ/hGGeTB5gSXoX0ivF1SaV4IjoraGzXgTy4T8yAaFkqiyIONlYMgWGn6Xyj0ATRZosptDl/QL8qIPMVAixjCrmDcArpG/p4CY7Fi7R8Y8YY+CWqmsiIWonUTYmLiyADR3oI0eGQUGaUTKM6ZuEITxQiiAIoDNguA33hNRhRBKLfh22+TDDooS3aFB8P4CGC4W+orIqgVNLdgmIZKIsLoj9EWAnge6MPIGJSEmx+oQ4R4S8MrHiAsxF8QkvGN0SrDBA3CZEM+NeGFp3hgyI7Mp186ghXx9SYEWFF/zBd4iQQiPmmyj6ipYR+4WsgiLcjP55UuwalrlgiCfg+AEvQuhGLHYJDkuaQtLviIy4ptMhxfDNnlzJG5sTclItotSJLb25kQZMbBEyKWJ1C2RDQlLJyPSzcg0E3AZUhTCtYIJX2RAKwPKxjBCAAAirSk0gONygjACsEpFaifB0SiwJqMrxqgXQ4xkATrpYX3BYRsEYfVZMJhMJmVVIiYP6ihFLCMJbJyfegH8y4zZlyIpoMhhQCwAp0uB7eAXGMy3BESDQUvb2gqSY4P4UI1nEghZVU5a8bwOvSSKziZhcALJmDNsYXn4CDjPswXZUSOIdDRx+oOOegcGO9i5YLw3+fcBZO2qkloAoUC6E7mhEUALoAAdV2BYkLonEvyMwAugUgSY8cSACqDiIYAQM42JqAQCIAyTcYGkpMc2AzLxSsYL8DPjYL0nfcbwh/f+EoFeSeCPA7/KiLaR3GG0NRCUFHrlgRDoYGYbMC6E8JHgyxYA42BEDGHp65NEpy0Q/IljbzfxO8B0YQcHyHhDdOcz8NABPlwIxiCC7UP5pKzvFL98cSU4blaTMg4x3+NkSmtmEppm9TxBAgPgISEZQ0rIBQSgKo39Y9hd2zrB/BPncGhtRRq2QcpGKH6GCVOVmVMrKUdo5M+C14PGTJWsliU+2DGaCJJJtb9A/eHaP0ugkoCYIapIfJCb4Irj+DQ4AfIzHTmvy6ITJmEq+o9F64iFNCmGOwsLnMyKYyJcbZXHiKTbUTCR2XYkTszyHl8KRLRMikWw6KwV7c2aEgLmieA9TuJzFJviyPebsjBJAeZoQJTbSwzTItcEkEPXJqxQtwpxRQhBGLqc0cmYZHergwoBcBZI5AJdCrTapcBYg2c59G/TbpEA85T6XUmYnsQXQ98PNOPqZBHpawlKS6S6kxw56hUmMiALifjhroUJ/akecKjzILABTZEMHVdPUR0Qpj8kbIAmDAKDLIBgaGnThLZJ2xj5c4wkd2QZ2vAy5fijAQXoZOfq9F2cACVLA5RzrwQkMAkPKsZFZAnzgQCpduZ3KIDdzlkcpH6b2HRTGFf6O00TkQkXwKRPAqclsJgwPoutj6FAU+oCAIxKxHwUWRKG4FLz3zEA2CJ+W4XMZNQmMl4j6qFVOIINRcQM36NcUWS10LB5SeeaDW+n2t8W4greUGFxQ3yAEF0QqtK12C+JxsRcvrlUFiAaAogXaEqvqjORSJrwnCrWDwtIWLytOlIAUSejMo8pypzYFhnApbwIKkFzMnyH/KvgqQ2qFMVINBG/CMKkuJs3PtZiokF8aJRImojbLDRQAc2Vpc2mP0ErEFgiUtC+uszMUl8GJhAyKHQBAwV8HZVfEoexOvGw9aKD4v8GAHYlMVS0tQv2S3wEn+5NiBgaAron8kHJBqdFMJS7IiVylsCyIhmP6gaijz10XVOcMtxgbIkAGbc3AHZRQi7A+QJxaTEuw+5eSGZdittKVXgDOs+0xAUmGAAcr+MdEnS+QbrVyWocsy2QVnNeCYC5LURyAdEQ5ORbGEml+lOcG0o6UQB2JW1YJlrjAW4AxWPOSdAIEfmTKHQ5LVAJmMvzzsLORyzzmn1SwvICgNYaHBMJSqf4gRxTfcLDVvhBK02CEvsvouxELNZylE82SYstmbNrZpfBovs2Ym+KqRxbF2U8CGLVlMowYniWxWiX1DfcHIoOVyJEmeAe+R1SrIrOigt8L4rITrhTTDa5TjpnsH6lLjQgjNgxPQZ0IgHyiEJPQzSxsu9MGloFWQGMC+JK2ngExRxUJSNsPHJQ15+g0vY5GdWclgloI3MjMSVMGjOgEuUi6pIiFUKtQ5onMSsDtA6RmQ+VrgADqUp3FEJ94Zq0dDYHEYBBYATwAdCQCdC/pQQuAZgONMLA2rxs00HUCOKskFgcYeMIVc+FJi8cjhZqrDIarcDmMTIoalTMwHDVUqo1RwyQrKHjWYxE1XqigKmo8hSdExDoYcvqFNA3iL2NOENWGr3RYYjWWS0yEmq7CwAsM5aytdyVAmrZuVy03KEhB/SdwpYFQRfhNmrLzhsyZDAbNmAcymgu+VMCBDImcZ4FFZthAsPYV5ZToKV24fJWhnw4ysBoskm8bQFXVyRno/8ZPMQQpye9usRYg6sLMgIKlLxuWN1LGv2QZ45usmbcLBX4UoRoISgfIAWveVYAyGE+CVZQHYVKchosUQ0n3wZRBcFCQiZQtAp0R0Evp4NPLE4ADWEwI1Qa36OTBzEW0esYYeuN8mQElqD0kiz7BAyIgUhOIYQX8MqnqgkBESSiTHiOKSnBNdExEbQOKGwHMQ2p7s7IGxpykjIKx0UMhmFSiCDhoSi8CsNkt5C+dROr6E0PJ0sEpgbALIXKZdHq4XxwReMwteWAIkfx2o8XD7GmF9UD9n83yVtdLnw0mtIqKS/QtNzDIPhfE3CMhmEtQiUwIE063IkxBkR1imEfynEYCrNm2YQVLiq2eYohXblWUrg5xVlzBXmKvy5sHlALjSLndnW+fSzG42MK+s+GYnPKTqwjZAw9ku03HPBD+Z89wwT8f9XpTgkMAChxXSCk7OCznMQQN8PIlCHCSwg3ZHsybgqOLSRLmRtbfiZisDnxKEoXfWjIvhHypAxN6YFOg4o8kVlec4yHmAbF8bzaimMc0OEciLqyqz0ahS8Llj2IUqNAtoKNU9EO1ohjtwtDQDjlSioLBaJ2ogGsC1gPdPAV3NiB/HVXZk+Z92QnK8vchSBKwJ6qXBaDKYOLNQu2nqCPm5qJ4QkkAVlB8r4Ap1y5Y816BSqowB8v8c/NNr0MWkBBbGkNDnDLNlEp0IBnrJdrANQg6L2QFO6QMWE21BoQdzNNtftz+C/aY22fAFal381lEjEhfWiWuXomkjIV1W/NrVur7hLQQ1oDNK1vgr7y+imUURDQEm4EVfZfWmtNxUG0/NcVQlXgKmDFASgMAS9NWf32T48JtZQ8VkEF0lY9QEeB4Jra/NIgxUmETwOgHYltjGxTYG2k5EqjMrThZwkmr2NwNrg7iCQ4WGAKxqLhph1hWHIEpIAOQYjGIEaxnUoNWkMczIWg6Bktn/itz+BXPQOEII2BCcxBYncxqqKwSjFkI78t0HLnYDZxJ6qLNSqInRZhzCorod0AuT0QFasiGrIgaRHZBXg2oCrfGg4rJLEE7ItlBSqlAfQyoCQPkbml4pr3Iiiore5VHgpvy3BStngMkiVp/R0jhuJLFvVJwZZIkNZ7DHRBqSeyLBU9pvdPU3k45R13+T4MkoIMMaTKJB1259E/s8b2ttGtWEQfz2k2kQJO6UFHr/z8rMKAqPJCZIWlIgydMAlBR1reI7HfJN53EMEO0tJQ4z4IX8mIpjGziJLoo1M7A7YO9AmRrptALDOQlE0b9WBv6V8hJuZVP5SVSI/+dCSRhYgAAQgQJ8jqyBM9Snbt+B/3RRzpjPb6QwMv2WQBcaMj/S2F56iCBeYnV/ZjPlI7lCGi+kqNom2lIBEZZDVHmmB+hkwwAI2ePXwAJBsx8EKKWgAYZWwEhQY6gwUefoZBiGsAA+NGaYcwBCNFD9jJmLohR5fCEcUEkaBeLL0wSwpJE25XOBdyvF4Id03gq7znjxQ5QZTM5Vpu0QQSARMmcFKCMq14ICEmRVVioZ7nBDayqo+AzImN1ayblWEfCeChBxbBuEg7RRMoiYj5r3AxOW3lOX+VJC5yximUTztcX86Dc2bWBL5y1ZhEgVAWmUWpkr3HknwFRPozkINyMg7CG4K8pZni38CKcMk38emBWXdYuxhmehO+NnKIITQk8UXOrIBYp9+9MYAg54OrymhQEDB70FbqqraideQ8WLTgZ8VFDWJcKhreLqPCS6YQ14nNIECeCRZv+8wTJcrtZGq7PmWKobXOH8lbghamADQKdGWp9yzly9SHfuBxKQRXiJB4KAYZIBuh7gUa2gjQCnQrybtdYIEA4aPYjz9UCCLmeGPRpA4oay0XlqZCHog9ZQG9WILUsZNrpBwSoJVVUiJ0M6caPVa3nzQsBRra4ttICQKCwy1x5T0KY7RSppODVJAJIZvW6BGnJHyMoAr+eUASYhFRt5iFGrYnVTmqkAt1RPCpBorPLkI8ma3kDnhxw656ZU/3oayI3mmjMPm9nckOWbdHFypi4LW4oF2DHyR0K74yc2dnnMngTuWUJwqrZRKVdXFOE+rua6a6z8WJj0uccH5hH4xbu2blgb2mVRNKJWb0GHLRCwBYgQkHpIbDE4mxpQHumVfwsMnyrYM3QVvPeyIT48mxrgVsOWULUrykZAAMgwCyluAS6BsU915D5RvQZJDgFJxxhCND5jh41TQo0p+Q2YhYXs4h2+zOH7IuFXGLNruHdh9KPMCIBzAWjyADuDICWVciynDtEDtM3w2zErqGggwsYYWOpF77jxPpAyXTYHTDKZyRz9gYdFvHHO5r8eYq88S8mFquE3ArK3I80uilhzyzym6HNdjnBfnTYsDU+LEalYY1zx+kkEa/nda2JX19RkhgzByCiz9MSOUYwn0eXvmilucSqgQrpakJVZOrXSo928k4ScsI7e1MbI6MUTOdaQ2YxGf6O7N8hXxkrj8YTMVdkzsAAABqoqa2MJzM412xXCSEovrWfXqH9C015AQ1AmUFNR7RkhzQQ7NGOAp7Lt52GTJgyBIVJGxx0inbC1kUeWcWkExkTy1MkU6KCNgbojk5oNc4nm4xrYBi9kDuG7Br+C55iFUPwD4C8Mjpcun2a878JlBjvIWPOLg77x7ANYSJCqApDBAiYXl6UG2wJCpX0rYXKYE+vCtvZIr4hybHZBisXntBlIKnS6zwyCRZRtqOg8T19SMQppM0ki3haJ6RZIAZViqw1e9CIJUpKg9fCIY2mOHUZYhbnp/uEHf79Iv+wveCkAOXnBE3gY1EvyCMKdx8CpPTRoJX3Fm0OVcOa+VeCCLWN5yV6Lpv3VAe0aedvbJhrzPLMbZr81t6yRYUIbxUSqsscJWJQg2bZuVUTOF1IV5AX4bEuX67bz2SoAV9b23+nurasYB0WMNj6Wjbm4s7m1ZxQ489CcAwG5O8Bws1hMqNQHrlUuXNQWvuuaHgZ4O5CMUjDLPmpZQ8Rsvkdx3UIJLvmjnUYuBU9Hwz0WyMwMYK5KWRd/i+FcEGEiwwtRr6bS3V361q64lGuhKLYrPyoBoo3NbhKyCaiiLuw6YUHRvrMjeMsZ9NbUrpGkySTO4a825G6k5v4LckOoGvF4OIZYkqrwVriCjZCgYFREt4rcAhQPk1SA7kYFs6bGoyw7VMlNxhIYvBE/K5IUIkVPLP1BS4RjSgQM50bGNc70hQW2W/JdtkRp7ZcZureV1Cyq2mz2QJ4Qzq1t8TYT+lhE5JvgQcyWyXJv5iz23NdJ8W1l5iLZcrH2WEAEUca5Trt3fJKxGASC2gGgtDwdUHplO9Gyrkh8KcHxwUYw1OLo72G7R8W8Gb0RS2wzoKrISFvcXRmoVRXYXY7NF3wqnhO0DEKfzbvoqdbWZvWzmYSgQbNKMM308XNbzXQn4aiiILcgwkXGIOPMM/UPOmac8ky+51kF1bitem4Rc4UB3aV3g0A9D42evNWAQMZ5E9YV5PTTCRK3RhahmoeZz0f07XpDe1wxj/oL1yHjrwvLeqZAk52UpO34Yo8PMl4kSJ8BD6xOxYfWhXU6fsAeQQrLxLXrwPl/afIOYHrX2OxMmKermaXy8OcsEUi4Ez3CSRAHA7dzp8uP2HIFSW49sQ+rDndgIYT1+gC/esKMRe9w8W5LwXdGl5ooO0UiHYwYEnaYdQx/3gXaD4nc22u9qRZImyMZEmEFOCISkW9BuaqGYtoM10fPvc6ZbV9uWwpbtmxnlL8Z+rRVzanzRLwDfGLLxM/sd22+BloPHirEkDJZ9HpN/iefHuyRJ7jlryFOZnMypgA3we7uNQ+4uWcwQ1s+IOCpDdnk+HpAp2ACiZMQ7p7oMZA6DdYfAaz0/as89AOATsllJJwibBHJjMyGOgNp+JmDXVgAyAXvZjqx0c5IP2YRkymU7zalUgdyVIdjQSCeFO5lhVIaEmDdT0Uqh7i+LvYRx70Y54DBIPMK6GkKCU5CCpGZ5Ro0gLPSVVKgPtLRiX0BFlIqnKINg+RXmMNn5IsNoR8gMwPalz1LEZO5hxD+YCpKEGDmtskBFnYw5CE8tOXUDkIsor57FB+fBH9qghBjnjfQxUsjnJz09Wc56c+iXjEEKCIlDhBMR3uXVfHDJNNA1GusvA7ThHEnhMRQQMYc6YghasGdlHu7UiMvNCOIO3ArMdmJyaULxiAIsV7jL47NbUcsEmGYB/p1A0L7yAYgBycwH1Jq3HQZda8J6aW2FxpRzCFaapLcct5UH3GLc9fsXwgI6miiG4qbowGzWltjEXC9eE0eAsyH2r8MMZAje+RjXqWZaK50J7MQQX8AB0QLgpsZbaA35vqwzc1nXgs93ERUv9edPBkDjZnXRPzfbc3HYiOCNNkF3id5EsRJ95J+MYvvl30nldsvpqxYsBdpLBI8d3RPmNjy516AZY9+VWP36Om4nBmG2G2NJbdjQjg42ne0THHhYC24yf32inQ86kuWrSEoQGTRsnOvagp+qjaNKiWMQulibk/rtwVo7fRF98NG4hK70zul+thU67tCVMxWGi9wymN0akYHCM4GQU6mdLbg0woeRboj2KAuKQVOGg6LRWMYA22eq5CCSqeNrJe1lNZBrgEppooJlUsds6chiaYeTe7V4/iW7uF5XnwSV3RKh4CIw5QEYVbmS/2sk5v6aORfcButKmeAG3guc8jFakN7L89fPI6wAfYfDOFFY8BQshZ4+eunQfH1AFq8Y4UPJhaez81W/4i/nFYEED2DG/YAKMZM6YWUOxnUk0AiAD4GY1UD9dcBt+2DoJrk1/TuvGzIkRAG6vgi+vdPexog3lMlYrvpMEpQNNkGdbIedAmjxsbAs3AkXidsymwQO6YhgEScCspO/47FnfhwRyE3O+Klj7C3KEXTfgORooAqyGcmWe/CJZzDwQZPTbvZOZKuvlHWbBszxZiJMyJCpLkt0d6k8vuLuSR8txSzXZyd12aRrskE3mnUucKfZIH/2bEt4q/25w+uXUCnVm16Jjqe2fiJRER2X5evT4FbQh7+DQiNgijwPTeqIh1nYgybhO7N0P2uPfDf7y73lCchWA/tLSjYcKCY2GpNKRlWkuXUaZpzc6RU9ArU1yXjYv6nyyDA9AezGE4vcoNgFSc93WJMmK2HcR0OzJPEtUjrGno3TzUt0v1q9r5VhBMi1wAA2jMIJDyCCQAAXUO1s05IK1We/B6A1A/2luxofEEah+gLXCCPl6BAkynjZPTNRyl0KbHncEDNcmYaA0EI2qriN+8UBGhdCGY/6CtOr04Bdahfn+IX4BI54B2O7a3S1n+e0j7AXnzKIDi78Dd8E7bjPW39Qn06GJ90Er4NPPzrPpgXwj4egdonWiA9a2KViX2L5ZnCu/hEymzv4QdDkqYCRKChiIuyN8TZjey7UWid0u6rt33Chc3p+4mfa2gnG7IkDW1QChPrekXutrb8HMtopKTIZf9WzpEr/MU6l9xFX4pnTGA+axD9ee20IlyQYqwzNKU6QGt4aTRPs8jk1gDp8Yni11heuu/lAinnNwYAAkH+tH85iYNvokeMGTAOokqgcQCftJVU5LMymvdde3KBZszHCJMs7gnWPFENwDkaf02aN9LuyWK7ufxiZ+5hUqW8noWCX55ozfo6At2RNGt69aoHgHI/29fs/5VITfrp5gBh2O359yrpgyC7eAYCog9+ySnoTRi+BP9ojwwUKnxS4NtjuKW6e0FSBwghcN1TW8/8Kv6EA1hm8QY8h8tej7+WKFfJH+DZgnin+1GCM4yYLKnPY++evjj506NPqATT+I9tnpMYPIFj6xWWQNkAcO0gbr4QAFJhxjYEzCr1T7gK+A4ZPQkbsGCSBB2MgB7EPpC/KEYEgLAAOWEUKgpy0h8nGSSYmiqyA9KXAXSaqc/8CZAgAQiL6gJMy6GVTVkr/oYoZ+H/r0ZyW3/oLqK2j9srbF+S3k8AAeRTlX6QBG3gNowBOKiHIj+u2mHJMYJbpgqTYKtAqYO0uQdCiM+A4iQA2QeHOz75BpkHugaAWQerQKmWQYVKKy4DuvIcyMCtKqMe0iph7VBDCNkGNuJ0ppI3EaIIh74KvDmeaWuRPteBGUOiApRKUqAV34B+O2lPyRkeQWfDc+rUCpyHQEvjcRwGEPu/T4OB/n3L++D0EQJQ0Amgf5Xoe/qUjVuv5rT4M+MwmUGiM74Khz7asUF0GugqTKJi8mBYBhKQQ2Yml50+0KK8HwA7wewGOk4PgryhQW1F+jvo0/Gd63sq2E+oBg/5nzhX+pEBKa7ayOmtrmmS7EA5GyQ3uRJv+gQTJbBBX/lN6ZOnmD35n4tiuFDQSyANNqw8aQcyb0AfwjJAqYlNgIoSgC7nzqhBl8NGy/+tdkX4VcXsp8DYAwIGmYJBNft/Z1+KQUUiB4qdoBb/yOMGhAkASoGQDYAPkN27DsBHrBrnWIlFcTXq8gm2qhQVAK64vsA3EM5QkeAaCT7wrxJMqxQX4BZwfcKJiLSOc/8JQHUB98Mv4FgBIJeIb+CpD3ydgobka7Jke6EYEYKLoRQFUBS/gTx7Q3obBCMB8LGKIlWj0r3Z6gHrs9j/BjkHoHeuC5i8avoYgOTCWEwnHWR7428oo76smgD36X0MsP0H7QqKIo7MhkEt96phYeJKygErfpgAkA5VKoFr2Eiur5MenJm+zTiK4n3K9C9SBkbtsbSCUqWevan8xBc/cOFJm6NqGgLW8aqC4CC4x9kk4l2RIWk6TeFioLq3WvnKe6nGCHkFZ5SGoVF6VaTEH8zRSzxhSi2kyojQR7QGrEkZv+E3lyFBooTlgCHk6kOtBGIfAClpxGFIpcBjANiCa54AswBioWmqwBsCShSctGwDAJwMMDnAhgCBFiU6gCqZ3EWGNGKsCdAPWo0ByEVcBQAUQA3IMAdlHZQAAnFrAAA7ORF2UJAFnQAAHGgD2AVEVRG0AAAKwkA7EXZS0AVEQxEkA8QKlACAVEexHsRWsPEB0R7EQREgRaAAKapQWsAxEJAUQORGpQ7EeREkA5EbQA2AQkVREMA4kXYDsRClFrBRAVEfRHxA5EQwACAsQAxE6wowKUD+gaAFRFawAgPEC0A8QFEDuRtAHZTiRJkfRFEIzkcJFKAMQFrBaw7ETYAMAUQKlBZ0dEdJH2RDlAIA2ADEUoDsRilCQBURZKFREURdlKREOUtAKlBuRrkaxFURNgJlGyRcQFECxREAJABORDADYACAQkYOhyRDEUlHsRtAAwCxAvEfxHFRqUHVF2UqUPEAMANUQpTcRVSnZFVRiUdxHxAzEQwBeRtUfxH2AjkQwCpQPUWxH0R8UQICiRsQOxEMRqUCQBxAVQGNFQANgORGKREkQNHbRhkQxHtR7EaREJRtAA3KJRNgAKYnRmUX1FRAiUVNEVRh0ZAAMRAgL9EqR/UTxFoAdlAIB2UpkWgBhR5UfEBTRzEQIB6R5EYpQCA5EfEAbRtUZVFHRMQKoDERWsBxE2AHkfEBaw7UbEAlRsQD1EDRWsH1FoAqUFEBiR3kbEBZkngN9E4xWsKlAnR5MVTFUR8QE9HxAAkXZS/RtALEDMRvETYDxA20cjFpRsQHQBoA8QOjHDwakWpG6R8QAxFRAO0UoCpQksWREiRPERJEnRoMQLGaRskaREaRssQxHkRUQCQC/RsQOREuR1sexEQxdlIZG0AzUVTGyRVkd5FuRyseJFawaALRGjRFwAYAgRXMabHNRrkRpF2UU0cjHkR5EWpHZR3seWBIxUcbVFcRCMfTE2AfUbLEURgkW2ACRrMQIDmxdADxEMAKUcjF0RdEbtE2A1EXYDWxg0SDHpQ30TZHuyTkcjHmx+UUtFoAOMQjH9RbMPTGkRukfxGgxAkbJFJRX0f7EgRAgM5EaRQcbQCqADcuHHAx9MRREWRzUVEBIxHkVdHkRVEfTEhRtAORGyxLMaJE0xsQHxGyRXkdbH6R2salCZR0MeRHMR0MSQAKRZsePHQxBEQHH2RaEbgAYRiAFhFE4j4P2RYYakvoBAAA== -->

<!-- internal state end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=unraid/webgui&utm_content=2203):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

- Wrapped the UPS details table in a div container for improved layout structure.
- This change continues the effort to enhance visual consistency across the plugin.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e2551e7 and 260c119.

📒 Files selected for processing (7)
  • emhttp/plugins/dynamix.docker.manager/DockerSettings.page (2 hunks)
  • emhttp/plugins/dynamix.vm.manager/VMSettings.page (2 hunks)
  • emhttp/plugins/dynamix.vm.manager/sheets/VMSettings.css (0 hunks)
  • emhttp/plugins/dynamix/UserAdd.page (1 hunks)
  • emhttp/plugins/dynamix/UserEdit.page (2 hunks)
  • emhttp/plugins/dynamix/include/DefaultPageLayout/HeadInlineJS.php (1 hunks)
  • emhttp/plugins/dynamix/styles/default-base.css (3 hunks)
💤 Files with no reviewable changes (1)
  • emhttp/plugins/dynamix.vm.manager/sheets/VMSettings.css
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (10)
emhttp/plugins/dynamix/styles/default-base.css (3)

1479-1480: Ensure <pre> blocks span full width and use border-box sizing
Adding width: 100% and box-sizing: border-box makes <pre> elements fully responsive within their containers and prevents overflow issues by including padding/border in the element’s width calculation.


1518-1518: Apply consistent box model to <dd> elements
Introducing box-sizing: border-box on <dd> ensures definition list items align correctly with other elements by including padding/border in the width/height.


1735-1739: Introduce .font-mono utility class
Adding the .font-mono Tailwind-inspired utility centralizes monospace font styling (bitstream, monospace), replacing inline styles and promoting reuse across the UI.

emhttp/plugins/dynamix.docker.manager/DockerSettings.page (2)

670-670: Improve readability with spacing after scrub start inputs
A blank line was inserted after the last hidden input for the btrfs scrub start command to visually separate hidden form data from the scrub action controls.


683-683: Improve readability with spacing after scrub cancel inputs
A blank line was inserted after the last hidden input for the btrfs scrub cancel command to maintain consistent form markup separation.

emhttp/plugins/dynamix.vm.manager/VMSettings.page (2)

318-318: Improve readability by adding blank line after scrub start inputs
Inserted a blank line following the hidden inputs for the VM btrfs scrub start command to clearly delineate hidden data from visible buttons.


331-331: Improve readability by adding blank line after scrub cancel inputs
Inserted a blank line following the hidden inputs for the VM btrfs scrub cancel command to match the formatting of related forms.

emhttp/plugins/dynamix/UserAdd.page (1)

168-179: Refactor password input markup for responsive layout
Wrapped the password input and show/hide icon in a flex container and moved the strength meter into its own span to improve styling control and responsiveness without altering existing validation logic.

emhttp/plugins/dynamix/UserEdit.page (2)

210-221: Refactor password section to separate input and strength meter
Password fields and the toggle icon are now grouped in a flex container, with the strength indicator moved below, enhancing layout clarity while preserving existing behavior.


242-242: Use .font-mono utility for SSH authorized keys textarea
Replaced inline styling with the new .font-mono class, improving maintainability and consistency with the updated CSS utility conventions.

Comment thread emhttp/plugins/dynamix/include/DefaultPageLayout/HeadInlineJS.php
zackspear added 4 commits May 22, 2025 12:59
- Updated form structures in CPUisol.page, CPUpin.page, and CPUvms.page to use flex containers for button alignment.
- Removed unnecessary div wrappers to streamline layout.
- This change continues the effort to enhance visual consistency across the plugin.
- Added spacing between hidden input fields and surrounding elements for improved layout consistency.
- This change continues the effort to enhance visual consistency across the plugin.
- Wrapped tables in CPUisol.page, CPUpin.page, and CPUvms.page with a new div class for improved layout structure.
- Added a new CSS class .TableContainer--no-min-width to handle overflow and ensure consistent table presentation.
- This change continues the effort to enhance visual consistency across the plugin.
- Updated password input fields to use flex containers for improved alignment with the show passphrase checkbox.
- This change continues the effort to enhance visual consistency across the plugin.
@zackspear zackspear marked this pull request as ready for review May 22, 2025 22:26
@zackspear zackspear marked this pull request as draft May 22, 2025 22:26
zackspear added 5 commits May 22, 2025 16:28
- Added new flex utility classes (.flex-wrap, .flex-wrap-reverse, .flex-nowrap, .flex-shrink-0) for improved layout flexibility.
- Removed unnecessary margin-top from pre.up for better spacing consistency.
- This change continues the effort to enhance visual consistency across the plugin.
- Refactored Syslog.page to use flexbox for improved layout of log controls and buttons.
- Updated Syslog.css to include new styles for .syslog-controls and .label for better alignment and spacing.
- This change continues the effort to enhance visual consistency across the plugin.
- Updated CSS selectors from :first-child to :first-of-type for better specificity in title margin handling.
- This change continues the effort to enhance visual consistency across the plugin.
- Changed the layout of .Panels from flexbox to grid for improved responsiveness and spacing.
- Updated gap properties for better alignment and consistency in panel presentation.
- This change continues the effort to enhance visual consistency across the plugin.
- Increased the minimum width of .Panels and max-width for child elements from 100px to 120px for improved layout consistency.
- This change continues the effort to enhance visual consistency across the plugin.
@zackspear zackspear marked this pull request as ready for review May 22, 2025 23:40
@zackspear zackspear requested a review from elibosley May 22, 2025 23:40
- Changed the color of the search input from var(--gray-100) to var(--text-color) for better contrast and visibility.
- This change continues the effort to enhance visual consistency across the plugin.
@ljm42 ljm42 added the 7.2 label May 23, 2025
zackspear added 6 commits May 23, 2025 10:26
- Reduced the gap property in .Panels from '2rem 3rem' to '2rem' for better alignment and spacing.
- This change continues the effort to enhance visual consistency across the plugin.
- Refactored the ParityCheck.page to dynamically build day, dotm, month, and hour options based on the selected mode.
- Updated the select attributes and options to improve usability and clarity for users configuring scheduled parity checks.
- This change continues the effort to enhance user experience and consistency across the plugin.
…ings.css

- Refactored DockerSettings.page to improve the structure and readability of checkbox and input elements using flexbox for better alignment.
- Updated DockerSettings.css to comment out unused styles for select and span elements, streamlining the CSS for improved maintainability.
- This change continues the effort to enhance visual consistency across the plugin.
- Introduced a new flex utility class `.buttons-no-margin` in default-base.css to manage button spacing effectively.
- Updated CreateDocker.php to wrap checkbox inputs in flex containers for improved alignment and spacing.
- Adjusted AddContainer.css to refine the max-width of span elements and commented out unused styles for better maintainability.
- This change continues the effort to enhance visual consistency across the plugin.
…bility

- Commented out the form styles within .tab-content in default-base.css to streamline the CSS and enhance maintainability.
- This change continues the effort to enhance visual consistency across the plugin.
zackspear added 5 commits May 23, 2025 15:16
- Introduced padding-top styles for the first form and shade forms within .tab-content in default-base.css to enhance layout consistency.
- This change continues the effort to improve visual consistency across the plugin.
- Removed empty `<div class="title nocontrol">&nbsp;</div>` elements from EthX.page, NetworkRules.page, and Wireless.page to streamline the HTML structure.
- This change continues the effort to enhance visual consistency across the plugin.
- Adjusted the structure of password input sections in UserAdd.page and UserEdit.page to ensure consistent layout and styling.
- This change continues the effort to enhance visual consistency across the plugin.
- Decreased the gap property in .Panels from '2rem' to '1rem' to enhance alignment and spacing.
- This change continues the effort to improve visual consistency across the plugin.
…tency

- Updated the label selection in the prepareMenu function to clone labels and remove input elements, ensuring cleaner text extraction.
- This change enhances the layout consistency across the Syslinux configuration interface.
@limetech limetech merged commit 54ecc33 into master May 25, 2025
3 checks passed
@limetech limetech deleted the feat/responsive-improvements branch May 25, 2025 03:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants