From: Robert Kaiser Date: Sun, 26 Jul 2015 20:59:29 +0000 (+0200) Subject: sync EarlyBlue theme with toolkit windows theme changes in Mozilla 40 cycle X-Git-Tag: LCARStrek-2.37~7 X-Git-Url: https://git-public.kairo.at/?a=commitdiff_plain;h=f0a62060b4f916640a6c67be840b49b7713f1394;p=themes.git sync EarlyBlue theme with toolkit windows theme changes in Mozilla 40 cycle --- diff --git a/EarlyBlue/global/icons/find.png b/EarlyBlue/global/icons/find.png deleted file mode 100644 index 272124a6..00000000 Binary files a/EarlyBlue/global/icons/find.png and /dev/null differ diff --git a/EarlyBlue/global/icons/information-64.png b/EarlyBlue/global/icons/information-64.png deleted file mode 100644 index 8f8a2eea..00000000 Binary files a/EarlyBlue/global/icons/information-64.png and /dev/null differ diff --git a/EarlyBlue/global/icons/wrap.png b/EarlyBlue/global/icons/wrap.png deleted file mode 100644 index 0bfad48c..00000000 Binary files a/EarlyBlue/global/icons/wrap.png and /dev/null differ diff --git a/EarlyBlue/global/in-content/common.css b/EarlyBlue/global/in-content/common.css index fc758782..0b211eb5 100644 --- a/EarlyBlue/global/in-content/common.css +++ b/EarlyBlue/global/in-content/common.css @@ -45,10 +45,6 @@ xul|caption > xul|label { margin-bottom: 0; } -xul|description { - -moz-margin-start: 0; -} - *|*.main-content { padding-top: 40px; -moz-padding-end: 48px; /* orig is 44px to compensate the 4px margin of child elements */ @@ -72,7 +68,8 @@ xul|groupbox { font-size: 1.25rem; } -xul|groupbox xul|label { +xul|groupbox xul|label, +xul|groupbox xul|description { / !important needed to override toolkit !important rule / -moz-margin-start: 0 !important; -moz-margin-end: 0 !important; @@ -333,20 +330,30 @@ xul|button[type="menu"] > xul|menupopup xul|menuitem { -moz-padding-end: 30px; } -xul|menulist > xul|menupopup > xul|menu[_moz-menuactive="true"], -xul|menulist > xul|menupopup > xul|menuitem[_moz-menuactive="true"], -xul|button[type="menu"] > xul|menupopup > xul|menu[_moz-menuactive="true"], -xul|button[type="menu"] > xul|menupopup > xul|menuitem[_moz-menuactive="true"] { +xul|menulist > xul|menupopup > xul|menu:not([disabled="true"])[_moz-menuactive="true"], +xul|menulist > xul|menupopup > xul|menuitem:not([disabled="true"])[_moz-menuactive="true"], +xul|button[type="menu"] > xul|menupopup > xul|menu:not([disabled="true"])[_moz-menuactive="true"], +xul|button[type="menu"] > xul|menupopup > xul|menuitem:not([disabled="true"])[_moz-menuactive="true"] { color: #333; background-color: rgba(0,149,221,0.25); } -xul|menulist > xul|menupopup > xul|menu[selected="true"], -xul|menulist > xul|menupopup > xul|menuitem[selected="true"], -xul|button[type="menu"] > xul|menupopup > xul|menu[selected="true"], -xul|button[type="menu"] > xul|menupopup > xul|menuitem[selected="true"] { +xul|menulist > xul|menupopup > xul|menu:not([disabled="true"])[selected="true"], +xul|menulist > xul|menupopup > xul|menuitem:not([disabled="true"])[selected="true"], +xul|button[type="menu"] > xul|menupopup > xul|menu:not([disabled="true"])[selected="true"], +xul|button[type="menu"] > xul|menupopup > xul|menuitem:not([disabled="true"])[selected="true"] { color: #fff; - background-color: #0095DD; + background-color: #0095dd; +} + +xul|menulist > xul|menupopup > xul|menu[disabled="true"], +xul|menulist > xul|menupopup > xul|menuitem[disabled="true"], +xul|button[type="menu"] > xul|menupopup > xul|menu[disabled="true"], +xul|button[type="menu"] > xul|menupopup > xul|menuitem[disabled="true"] { + color: #999; + / override the [_moz-menuactive="true"] background color from + global/menu.css / + background-color: transparent; } xul|menulist > xul|menupopup xul|menuseparator, @@ -391,11 +398,14 @@ xul|textbox[disabled="true"] { html|a, .text-link, .inline-link { - line-height: 22px; color: #0095dd; text-decoration: none; } +html|a:visited { + color: #551a8b; +} + html|a:hover, .text-link:hover, .inline-link:hover { @@ -513,10 +523,10 @@ xul|*.radio-label-box { } */ /* Category List */ -/* + xul|*#categories { -moz-appearance: none; - background-color: #424f5a; + background-color: #666699; padding-top: 39px; margin: 0; border-width: 0; @@ -524,7 +534,7 @@ xul|*#categories { xul|*.category { -moz-appearance: none; - color: #c1c1c1; + color: #000000; -moz-border-end-width: 0; -moz-padding-start: 15px; -moz-padding-end: 21px; @@ -533,14 +543,14 @@ xul|*.category { } xul|*.category:hover { - background-color: #5e6972; + background-color: #CCD0DD; } xul|*.category[selected] { - background-color: #343f48; - color: #f2f2f2; - -moz-padding-start: 11px; / compensate the 4px border / - -moz-border-start: solid 4px #ff9500; + background-color: #336699; + color: #FFFFFF; + -moz-padding-start: 11px; /* compensate the 4px border */ + -moz-border-start: solid 4px #33FF33; } xul|*#categories[keyboard-navigation="true"]:-moz-focusring > xul|*.category[current] { @@ -561,7 +571,7 @@ xul|*#categories[keyboard-navigation="true"]:-moz-focusring > xul|*.category[cur width: 24px; height: 24px; } -*/ + /* header */ /* *|*.header { @@ -753,7 +763,6 @@ xul|*.checkbox-icon { -moz-margin-end: 0; } -html|a:-moz-focusring, .text-link:-moz-focusring, .inline-link:-moz-focusring { border: 1px dotted -moz-DialogText; diff --git a/EarlyBlue/global/menu/shared-menu-check-active.svg b/EarlyBlue/global/menu/shared-menu-check-active.svg new file mode 100644 index 00000000..b89ad96c --- /dev/null +++ b/EarlyBlue/global/menu/shared-menu-check-active.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/EarlyBlue/global/menu/shared-menu-check-black.svg b/EarlyBlue/global/menu/shared-menu-check-black.svg new file mode 100644 index 00000000..f388f815 --- /dev/null +++ b/EarlyBlue/global/menu/shared-menu-check-black.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/EarlyBlue/global/menu/shared-menu-check-hover.svg b/EarlyBlue/global/menu/shared-menu-check-hover.svg new file mode 100644 index 00000000..335777fe --- /dev/null +++ b/EarlyBlue/global/menu/shared-menu-check-hover.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/EarlyBlue/global/notification.css b/EarlyBlue/global/notification.css index dad7931e..cd66feda 100644 --- a/EarlyBlue/global/notification.css +++ b/EarlyBlue/global/notification.css @@ -56,16 +56,16 @@ notification[type="critical"] { /* Popup notification */ -.popup-notification-description { - max-width: 24em; +.popup-notification-body { + max-width: 25em; } -.popup-notification-originHost:not([value]), +.popup-notification-origin:not([value]), .popup-notification-learnmore-link:not([href]) { display: none; } -.popup-notification-originHost { +.popup-notification-origin { margin-bottom: .3em !important; } @@ -85,3 +85,7 @@ notification[type="critical"] { .popup-notification-closeitem { list-style-image: url("chrome://global/skin/icons/close-button.gif"); } + +.popup-notification-menubutton > .button-menubutton-button[disabled] { + opacity: 0.5; +} diff --git a/EarlyBlue/mozapps/aboutServiceWorkers.css b/EarlyBlue/mozapps/aboutServiceWorkers.css new file mode 100644 index 00000000..9c6f65d7 --- /dev/null +++ b/EarlyBlue/mozapps/aboutServiceWorkers.css @@ -0,0 +1,44 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +body { + min-width: 330px; + max-width: 100%; + min-height: 330px; + max-height: 100%; +} + +.warningBackground { + display: none; + background: #CCD0DD; + width:100%; + height:100%; + z-index:10; + top:0; + left:0; + position:fixed; +} + +.warningMessage { + color: #000000; + position: relative; + min-width: 330px; + max-width: 50em; + margin: 4em auto; + border: 1px solid #666699; + border-radius: 10px; + padding: 3em; + -moz-padding-start: 30px; + background: #FFFFFF; + margin-left: auto; + text-align: center; +} + +.active { + display: block; +} + +.inactive { + display: none; +} diff --git a/EarlyBlue/mozapps/extensions/extensions.css b/EarlyBlue/mozapps/extensions/extensions.css index 7af4bd7e..87f8306d 100644 --- a/EarlyBlue/mozapps/extensions/extensions.css +++ b/EarlyBlue/mozapps/extensions/extensions.css @@ -2,37 +2,22 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -@import url("chrome://global/skin/inContentUI.css"); +@import url("chrome://global/skin/in-content/common.css"); -.nav-button { - list-style-image: url("chrome://communicator/skin/icons/communicatoricons.png"); -} - -#forward-btn { - -moz-border-start: none; -} - -#back-btn:-moz-locale-dir(ltr), -#forward-btn:-moz-locale-dir(rtl) { - -moz-image-region: rect(42px 25px 63px 0px); -} - -#back-btn[disabled="true"]:-moz-locale-dir(ltr), -#forward-btn[disabled="true"]:-moz-locale-dir(rtl) { - -moz-image-region: rect(42px 50px 63px 25px); +.main-content { + padding-top: 0; + -moz-padding-end: 0; } -#back-btn:-moz-locale-dir(rtl), -#forward-btn:-moz-locale-dir(ltr) { - -moz-image-region: rect(63px 25px 84px 0px); +#nav-header { + min-height: 39px; + background-color: #9999CC; } -#back-btn[disabled="true"]:-moz-locale-dir(rtl), -#forward-btn[disabled="true"]:-moz-locale-dir(ltr) { - -moz-image-region: rect(63px 50px 84px 25px); +.view-pane > .list > scrollbox { + -moz-padding-end: 48px; } - /*** global warnings ***/ .global-warning-container { @@ -68,9 +53,6 @@ } /*** global informations ***/ -#addons-page .global-info-container { - background-color: #9C9CFF; -} /* Plugins aren't yet disabled by safemode (bug 342333), so don't show that warning when viewing plugins. */ @@ -83,34 +65,31 @@ /*** notification icons ***/ -.warning-icon { - list-style-image: url("chrome://global/skin/icons/warning-16.png"); +.warning-icon, +.error-icon, +.pending-icon, +.info-icon { width: 16px; height: 16px; - margin: 3px 0; + margin: 1px 0; +} + +.warning-icon { + list-style-image: url("chrome://global/skin/icons/warning-16.png"); } .error-icon { list-style-image: url("chrome://global/skin/icons/error-16.png"); - width: 16px; - height: 16px; - margin: 3px 0; } .pending-icon, .info-icon { list-style-image: url("chrome://global/skin/icons/information-16.png"); - width: 16px; - height: 16px; - margin: 3px 0; } .addon-view[pending="disable"] .pending-icon, .addon-view[pending="uninstall"] .pending-icon { list-style-image: url("chrome://global/skin/icons/warning-16.png"); - width: 16px; - height: 15px; - margin: 3px 0; } @@ -118,6 +97,7 @@ .alert-container { -moz-box-align: center; + -moz-margin-end: 48px; } .alert-spacer-before { @@ -158,51 +138,24 @@ /*** category selector ***/ #categories { - -moz-appearance: none; - border: none; - -moz-margin-end: -1px; - background-color: transparent; - position: relative; - margin-top: 31px; -} - -.category { - background-color: transparent; - color: #404040; - min-height: 0; - padding: 10px 4px; - border-width: 1px; - border-style: solid; - border-color: transparent; - -moz-box-align: center; - overflow: hidden; + padding-top: 0; } .category[disabled] { - border-top: 0; - border-bottom: 0; + overflow: hidden; height: 0; + min-height: 0; opacity: 0; - transition-property: height, opacity; + transition-property: min-height, opacity; transition-duration: 1s, 0.8s; } .category:not([disabled]) { - height: 52px; - transition-property: height, opacity; + min-height: 40px; + transition-property: min-height, opacity; transition-duration: 1s, 0.8s; } -.category[selected] { - background-color: #FFFFFF; - color: #000000; - border-color: #666699; -} - -.category-name { - font-size: 150%; -} - /* Maximize the size of the viewport when the window is small */ @media (max-width: 800px) { .category-name { @@ -214,20 +167,15 @@ background-color: #666699; padding: 2px 8px; margin: 6px 0; - border: 1px outset #666699; + -moz-margin-start: 6px; + border-radius: 100%; color: #FFFFFF; font-weight: bold; text-align: center; } .category-badge[value="0"] { - visibility: hidden; -} - -.category-icon { - width: 32px; - height: 32px; - -moz-margin-start: 6px; + display: none; } #category-search > .category-icon { @@ -271,24 +219,9 @@ /*** header ***/ #header { - margin-bottom: 18px; - height: 2em; -} - -#header-search { - color: #000000; - border: 1px inset #CCD0DD; - padding: 3px; - background-color: #CCD0DD; - margin: 0; -} - -#header-search .textbox-input::-moz-placeholder { - color: #808080; -} - -#header-search[focused] { - background-color: #FFFFFF; + margin-top: 20px; + margin-bottom: 20px; + -moz-margin-end: 48px; } @media (max-width: 600px) { @@ -297,19 +230,59 @@ } } +.view-header { + margin: 0; + -moz-margin-end: 48px; + border-bottom: 1px solid #666699; +} + #header-utils-btn { list-style-image: url("chrome://mozapps/skin/extensions/utilities.svg#utilities"); -moz-margin-end: 16px; } -.view-header { - background-color: #9999CC; - padding: 4px; - margin: 0; - min-height: 31px; - border-bottom: 1px solid #666699; +.header-button { +} + +.header-button[disabled="true"] > .toolbarbutton-icon { +} + +.header-button:not([disabled="true"]):hover, +#header-utils-btn:not([disabled="true"]):hover { + cursor: pointer; } +.header-button > .toolbarbutton-text { + display: none; +} + +.nav-button { + list-style-image: url("chrome://communicator/skin/icons/communicatoricons.png"); +} + +#forward-btn { + -moz-border-start: none; +} + +#back-btn:-moz-locale-dir(ltr), +#forward-btn:-moz-locale-dir(rtl) { + -moz-image-region: rect(42px 25px 63px 0px); +} + +#back-btn[disabled="true"]:-moz-locale-dir(ltr), +#forward-btn[disabled="true"]:-moz-locale-dir(rtl) { + -moz-image-region: rect(42px 50px 63px 25px); +} + +#back-btn:-moz-locale-dir(rtl), +#forward-btn:-moz-locale-dir(ltr) { + -moz-image-region: rect(63px 25px 84px 0px); +} + +#back-btn[disabled="true"]:-moz-locale-dir(rtl), +#forward-btn[disabled="true"]:-moz-locale-dir(ltr) { + -moz-image-region: rect(63px 50px 84px 25px); +} /*** sorters ***/ @@ -399,12 +372,24 @@ background-color: transparent; } +.list > scrollbox > .scrollbox-innerbox { + border: 1px dotted transparent; +} + +.list:-moz-focusring > scrollbox > .scrollbox-innerbox { + border-color: #9999CC; +} + .addon { border-bottom: 1px solid #9999CC; padding: 5px; background-origin: border-box; } +.addon:not(:only-child):last-child { + border-bottom-width: 0; +} + .details { cursor: pointer; margin: 0; @@ -425,6 +410,10 @@ max-height: 48px; } +.content-inner-container { + -moz-margin-end: 5px; +} + .addon[active="false"] .icon { filter: grayscale(1); } @@ -452,8 +441,6 @@ .name-container { font-size: 150%; font-weight: bold; - color: #404040; - margin-bottom: 0; -moz-box-align: end; -moz-box-flex: 1; } @@ -462,10 +449,6 @@ font-weight: bold; } -.creator .text-link { - /* color: #0066CC; */ -} - .description-container { -moz-margin-start: 6px; -moz-box-align: center; @@ -477,8 +460,7 @@ .warning, .pending, -.error, -.info { +.error { -moz-margin-start: 48px; font-weight: bold; -moz-box-align: center; @@ -493,7 +475,6 @@ -moz-box-align: stretch; } -.advancedinfo-container, .update-info-container { -moz-box-align: center; } @@ -576,15 +557,6 @@ list-style-image: url("chrome://global/skin/arrow/arrow-up.gif"); } -.addon[active="false"] { - background-color: #DDDDDD; -} - -.addon-view[active="false"], -.addon-view[active="false"] .name-container { - color: #666699; -} - .addon-view[notification="warning"] { background-color: #FFFFCC; } @@ -623,12 +595,12 @@ color: #FFFFFF; } -.addon[active="false"][selected] { - color: #AAAAAA; +.addon[active="false"] > .content-container > .content-inner-container { + color: #666699; } -.addon[active="false"][selected] .name-container { - color: #DDDDDD; +.addon[active="false"][selected] > .content-container > .content-inner-container { + color: #AAAAAA; } @@ -655,8 +627,7 @@ #search-filter { padding: 5px 20px; - -moz-box-align: center; - background-color: #FFFFFF; + -moz-margin-end: 48px; font-size: 120%; border-bottom: 1px solid #666699; overflow-x: hidden; @@ -665,26 +636,7 @@ #search-filter-label { font-weight: bold; color: #808080; -} - -.search-filter-radio { - -moz-appearance: none; - padding: 0 6px; - margin: 0 3px; - border-radius: 10000px; -} - -.search-filter-radio[selected] { - background-color: #336699; - color: #000000; -} - -.search-filter-radio .radio-check-box1 { - display: none; -} - -.search-filter-radio .radio-icon { - display: none; + -moz-margin-end: 10px; } #search-allresults-link { @@ -692,8 +644,13 @@ margin-bottom: 2em; } + /*** detail view ***/ +#detail-view { + -moz-margin-end: 48px; +} + #detail-view .loading { opacity: 0; } @@ -705,8 +662,10 @@ } .detail-view-container { - padding: 0 2em 2em 2em; + -moz-padding-end: 2em; + padding-bottom: 2em; font-size: 110%; + color: #000000; } #detail-notifications { @@ -739,10 +698,14 @@ font-size: 200%; } -#detail-screenshot { +#detail-screenshot-box { -moz-margin-end: 2em; +} + +#detail-screenshot { max-width: 300px; max-height: 300px; + background-color: #FFFFFF; } #detail-screenshot[loading] { @@ -859,9 +822,6 @@ setting[type="radio"] > radiogroup { -moz-box-orient: horizontal; } -menulist { /* Fixes some styling inconsistencies */ - margin: 1px 5px 2px 5px; -} /*** creator ***/ @@ -896,15 +856,16 @@ menulist { /* Fixes some styling inconsistencies */ /*** download progress ***/ .download-progress { - background-color: #CCD0DD; border: 1px solid #808080; + border-radius: 2px; + background-color: #CCD0DD; width: 200px; height: 21px; margin: 0 8px; } -.download-progress[mode="undetermined"] .status-container { - padding: 0 2px; +.download-progress[mode="undetermined"] { + border-color: #666699; } .download-progress .start-cap, @@ -915,8 +876,6 @@ menulist { /* Fixes some styling inconsistencies */ } .download-progress .progress .progress-bar { - border-left-width: 0; - border-right-width: 0; min-height: 21px; } @@ -927,26 +886,27 @@ menulist { /* Fixes some styling inconsistencies */ border: none; } -.download-progress .start-cap, .download-progress .end-cap { - width: 12px; +.download-progress .start-cap, +.download-progress .end-cap { + width: 4px; } .download-progress .start-cap:-moz-locale-dir(ltr), .download-progress .end-cap:-moz-locale-dir(rtl) { - border-radius: 3px 0 0 3px; + border-radius: 1px 0 0 1px; } .download-progress .end-cap:-moz-locale-dir(ltr), .download-progress .start-cap:-moz-locale-dir(rtl) { - border-radius: 0 3px 3px 0; + border-radius: 0 1px 1px 0; } .download-progress .cancel { -moz-appearance: none; - background-color: #CCD0DD; - border: 1px solid #666699; padding: 3px; min-width: 0; + width: 20px; + height: 20px; margin: 3px; } @@ -1002,6 +962,7 @@ menulist { /* Fixes some styling inconsistencies */ margin: 12px; } + /*** buttons ***/ .addon-control[disabled="true"]:not(.no-auto-hide) { @@ -1015,13 +976,25 @@ menulist { /* Fixes some styling inconsistencies */ button.button-link { background: transparent; border: none; - text-decoration: underline; + box-shadow: none; color: #0000FF; cursor: pointer; min-width: 0; + height: 20px; margin: 0 6px; } +button.button-link:not(:-moz-focusring) > .button-box { + border-width: 0; + margin: 1px; +} + +button.button-link:hover { + background-color: transparent; + color: #336699; + text-decoration: underline; +} + /* Needed to override normal button style from inContent.css */ button.button-link:not([disabled="true"]):active:hover { } @@ -1052,3 +1025,29 @@ button.button-link:not([disabled="true"]):active:hover { #detail-view[active="true"] #detail-experiment-bullet { fill: #336699; } + +/*** info UI for add-ons that have been disabled for being unsigned ***/ + +#show-disabled-unsigned-extensions:not(:hover) { + background-color: #FFFFCC; +} + +#disabled-unsigned-addons-info { + margin-bottom: 2em; + -moz-margin-end: 48px; +} + +#disabled-unsigned-addons-heading { + font-size: 1.4em; + font-weight: bold; + margin-bottom: .5em; +} + +#signing-dev-info { + font-style: italic; +} + +#detail-findUpdates-btn[hidden] { + display: -moz-box; + visibility: hidden; +} diff --git a/EarlyBlue/mozapps/extensions/newaddon.css b/EarlyBlue/mozapps/extensions/newaddon.css index 7a6a41d8..ea2eb100 100644 --- a/EarlyBlue/mozapps/extensions/newaddon.css +++ b/EarlyBlue/mozapps/extensions/newaddon.css @@ -2,10 +2,10 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -@import url("chrome://global/skin/inContentUI.css"); +@import url("chrome://global/skin/in-content/common.css"); #addon-page { - padding: 0; + font-size: 1.1em; } #addon-scrollbox { @@ -24,7 +24,7 @@ #addon-container { overflow: visible; /* bug 761489 */ - max-width: 600px; + max-width: 800px; margin: 20px; padding: 30px 90px; } @@ -35,6 +35,7 @@ } #icon { + margin-top: 8px; -moz-margin-end: 10px; max-width: 64px; max-height: 64px; @@ -78,6 +79,7 @@ list-style-image: url("chrome://global/skin/icons/alert-exclam.gif"); width: 16px; height: 15px; + margin-top: 5px; -moz-margin-end: 5px; } diff --git a/EarlyBlue/mozapps/extensions/utilities.svg b/EarlyBlue/mozapps/extensions/utilities.svg index a04a0e25..29c5be1b 100644 --- a/EarlyBlue/mozapps/extensions/utilities.svg +++ b/EarlyBlue/mozapps/extensions/utilities.svg @@ -21,5 +21,6 @@ + diff --git a/EarlyBlue/mozapps/formautofill/requestAutocomplete.css b/EarlyBlue/mozapps/formautofill/requestAutocomplete.css index 0480ce3c..7ddd77c6 100644 --- a/EarlyBlue/mozapps/formautofill/requestAutocomplete.css +++ b/EarlyBlue/mozapps/formautofill/requestAutocomplete.css @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -@import url("chrome://global/skin/inContentUI.css"); +@import url("chrome://global/skin/in-content/common.css"); :root { height: 100%;