author | Gijs Kruitbosch <gijskruitbosch@gmail.com> |
Wed, 01 Jun 2016 16:46:24 -0400 | |
changeset 341028 | 33544460e0b963a1278a6553e0f9da9b403d9b4d |
parent 341027 | 724b6e4ac4e45247463de0f6050f356c5260781f |
child 341029 | 81bfec47b65d25b4c2303f345d174e475d45e380 |
push id | 1183 |
push user | raliiev@mozilla.com |
push date | Mon, 05 Sep 2016 20:01:49 +0000 |
treeherder | mozilla-release@3148731bed45 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mconley, shorlander |
bugs | 1088763 |
milestone | 49.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css @@ -59,16 +59,22 @@ content: ""; display: -moz-box; height: 2px; margin-top: -2px; position: relative; z-index: 2; /* navbar is at 1 */ } +@media (-moz-mac-yosemite-theme) { + #navigator-toolbox::after { + background-image: linear-gradient(to top, hsla(0,0%,0%,.1), hsla(0,0%,0%,.1) 1px, hsla(0,0%,100%,0) 1px, hsla(0,0%,100%,0) 2px, transparent 3px); + } +} + #navigator-toolbox toolbarbutton:-moz-lwtheme { color: inherit; text-shadow: inherit; } #main-window { -moz-appearance: none; background-color: #eeeeee; @@ -143,16 +149,20 @@ toolbarseparator { background: url(chrome://browser/skin/Toolbar-background-noise.png) hsl(0,0%,83%); } /* remove noise texture on Yosemite */ @media (-moz-mac-yosemite-theme) { #navigator-toolbox > toolbar:not(#TabsToolbar):not(#nav-bar):not(:-moz-lwtheme) { background-image: none; } + + #navigator-toolbox > toolbar:-moz-window-inactive:not(#TabsToolbar):not(#nav-bar):not(:-moz-lwtheme) { + background-color: hsl(0,0%,95%); + } } #navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar):not(#nav-bar):not(#addon-bar) { overflow: -moz-hidden-unscrollable; max-height: 4em; transition: min-height 170ms ease-out, max-height 170ms ease-out; } @@ -185,16 +195,20 @@ toolbarseparator { } } /* remove noise texture on Yosemite */ @media (-moz-mac-yosemite-theme) { #nav-bar { background: linear-gradient(hsl(0,0%,93%), hsl(0,0%,83%)); } + + #nav-bar:-moz-window-inactive { + background: linear-gradient(hsl(0,0%,97%), hsl(0,0%,95%)); + } } /* Draw the bottom border of the tabs toolbar when it's not using -moz-appearance: toolbar. */ #main-window:-moz-any([sizemode="fullscreen"],[customize-entered]) #TabsToolbar:not([collapsed="true"]) + #nav-bar, #main-window:not([tabsintitlebar]) #TabsToolbar:not([collapsed="true"]) + #nav-bar, #TabsToolbar:not([collapsed="true"]) + #nav-bar:-moz-lwtheme { border-top: 1px solid hsla(0,0%,0%,.3); @@ -211,16 +225,20 @@ toolbarseparator { #main-window[tabsintitlebar] #TabsToolbar:not([collapsed="true"]) + #nav-bar:not(:-moz-lwtheme) { border-top: 1px solid hsla(0,0%,0%,.2); background-clip: padding-box; margin-top: calc(-1 * var(--navbar-tab-toolbar-highlight-overlap)); /* Position the toolbar above the bottom of background tabs */ position: relative; z-index: 1; } + + #main-window[tabsintitlebar] #TabsToolbar:not([collapsed="true"]) + #nav-bar:-moz-window-inactive:not(:-moz-lwtheme) { + border-top-color: hsla(0,0%,0%,.05); + } } #nav-bar-customization-target { padding: 4px; } #PersonalToolbar { padding: 0 4px 4px; @@ -2478,16 +2496,64 @@ toolbarbutton.chevron > .toolbarbutton-m list-style-image: url("chrome://browser/skin/tabbrowser/connecting@2x.png"); } .tab-throbber[progress] { list-style-image: url("chrome://global/skin/icons/loading@2x.png"); } } +@media (-moz-mac-yosemite-theme) { + .tab-background-middle[visuallyselected=true]:-moz-window-inactive { + background-image: url(chrome://browser/skin/yosemite/tab-active-middle-inactive.png), + @fgTabTextureYosemiteInactive@, + none; + } + + .tab-background-start[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(ltr)::after, + .tab-background-end[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(rtl)::after { + background-image: url(chrome://browser/skin/yosemite/tab-stroke-start-inactive.png); + } + + .tab-background-end[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(ltr)::after, + .tab-background-start[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(rtl)::after { + background-image: url(chrome://browser/skin/yosemite/tab-stroke-end-inactive.png); + } + + .tab-background-start[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(ltr):not(:-moz-lwtheme)::before, + .tab-background-end[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(rtl):not(:-moz-lwtheme)::before { + background-image: url(chrome://browser/skin/yosemite/tab-selected-start-inactive.svg); + background-size: 100% 100%; + } + + .tab-background-end[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(ltr):not(:-moz-lwtheme)::before, + .tab-background-start[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(rtl):not(:-moz-lwtheme)::before { + background-image: url(chrome://browser/skin/yosemite/tab-selected-end-inactive.svg); + background-size: 100% 100%; + } + + @media (min-resolution: 2dppx) { + .tab-background-middle[visuallyselected=true]:-moz-window-inactive { + background-image: url(chrome://browser/skin/yosemite/tab-active-middle-inactive@2x.png), + @fgTabTextureYosemiteInactive@, + none; + } + + .tab-background-start[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(ltr)::after, + .tab-background-end[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(rtl)::after { + background-image: url(chrome://browser/skin/yosemite/tab-stroke-start-inactive@2x.png); + } + + .tab-background-end[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(ltr)::after, + .tab-background-start[visuallyselected=true]:-moz-window-inactive:-moz-locale-dir(rtl)::after { + background-image: url(chrome://browser/skin/yosemite/tab-stroke-end-inactive@2x.png); + } + } +} + .tabbrowser-tab:not(:hover) > .tab-stack > .tab-content > .tab-icon-image:not([visuallyselected="true"]) { opacity: .9; } /* * Force the overlay to create a new stacking context so it always appears on * top of the icon. */
--- a/browser/themes/osx/jar.mn +++ b/browser/themes/osx/jar.mn @@ -226,16 +226,24 @@ browser.jar: skin/classic/browser/yosemite/menuPanel-help.png (menuPanel-help-yosemite.png) skin/classic/browser/yosemite/menuPanel-help@2x.png (menuPanel-help-yosemite@2x.png) skin/classic/browser/yosemite/menuPanel-small.png (menuPanel-small-yosemite.png) skin/classic/browser/yosemite/menuPanel-small@2x.png (menuPanel-small-yosemite@2x.png) skin/classic/browser/yosemite/reload-stop-go.png (reload-stop-go-yosemite.png) skin/classic/browser/yosemite/reload-stop-go@2x.png (reload-stop-go-yosemite@2x.png) skin/classic/browser/yosemite/sync-horizontalbar.png (sync-horizontalbar-yosemite.png) skin/classic/browser/yosemite/sync-horizontalbar@2x.png (sync-horizontalbar-yosemite@2x.png) + skin/classic/browser/yosemite/tab-selected-end-inactive.svg (tabbrowser/tab-selected-end-yosemite-inactive.svg) + skin/classic/browser/yosemite/tab-selected-start-inactive.svg (tabbrowser/tab-selected-start-yosemite-inactive.svg) + skin/classic/browser/yosemite/tab-active-middle-inactive.png (tabbrowser/tab-active-middle-yosemite-inactive.png) + skin/classic/browser/yosemite/tab-active-middle-inactive@2x.png (tabbrowser/tab-active-middle-yosemite-inactive@2x.png) + skin/classic/browser/yosemite/tab-stroke-end-inactive.png (tabbrowser/tab-stroke-end-yosemite-inactive.png) + skin/classic/browser/yosemite/tab-stroke-end-inactive@2x.png (tabbrowser/tab-stroke-end-yosemite-inactive@2x.png) + skin/classic/browser/yosemite/tab-stroke-start-inactive.png (tabbrowser/tab-stroke-start-yosemite-inactive.png) + skin/classic/browser/yosemite/tab-stroke-start-inactive@2x.png (tabbrowser/tab-stroke-start-yosemite-inactive@2x.png) #ifdef E10S_TESTING_ONLY skin/classic/browser/e10s-64@2x.png (../shared/e10s-64@2x.png) #endif [extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar: % override chrome://browser/skin/feeds/audioFeedIcon.png chrome://browser/skin/feeds/feedIcon.png % override chrome://browser/skin/feeds/audioFeedIcon16.png chrome://browser/skin/feeds/feedIcon16.png % override chrome://browser/skin/feeds/videoFeedIcon.png chrome://browser/skin/feeds/feedIcon.png @@ -254,10 +262,10 @@ browser.jar: % override chrome://browser/skin/menuPanel-help.png chrome://browser/skin/yosemite/menuPanel-help.png os=Darwin osversion>=10.10 % override chrome://browser/skin/menuPanel-help@2x.png chrome://browser/skin/yosemite/menuPanel-help@2x.png os=Darwin osversion>=10.10 % override chrome://browser/skin/menuPanel-small.png chrome://browser/skin/yosemite/menuPanel-small.png os=Darwin osversion>=10.10 % override chrome://browser/skin/menuPanel-small@2x.png chrome://browser/skin/yosemite/menuPanel-small@2x.png os=Darwin osversion>=10.10 % override chrome://browser/skin/preferences/checkbox.png chrome://browser/skin/yosemite/preferences/checkbox.png os=Darwin osversion>=10.10 % override chrome://browser/skin/preferences/checkbox@2x.png chrome://browser/skin/yosemite/preferences/checkbox@2x.png os=Darwin osversion>=10.10 % override chrome://browser/skin/reload-stop-go.png chrome://browser/skin/yosemite/reload-stop-go.png os=Darwin osversion>=10.10 % override chrome://browser/skin/reload-stop-go@2x.png chrome://browser/skin/yosemite/reload-stop-go@2x.png os=Darwin osversion>=10.10 -% override chrome://browser/skin/sync-horizontalbar.png chrome://browser/skin/yosemite/sync-horizontalbar.png os=Darwin osversion>=10.10 -% override chrome://browser/skin/sync-horizontalbar@2x.png chrome://browser/skin/yosemite/sync-horizontalbar@2x.png os=Darwin osversion>=10.10 +% override chrome://browser/skin/sync-horizontalbar.png chrome://browser/skin/yosemite/sync-horizontalbar.png os=Darwin osversion>=10.10 +% override chrome://browser/skin/sync-horizontalbar@2x.png chrome://browser/skin/yosemite/sync-horizontalbar@2x.png os=Darwin osversion>=10.10
--- a/browser/themes/osx/shared.inc +++ b/browser/themes/osx/shared.inc @@ -1,12 +1,13 @@ %include ../../../toolkit/themes/osx/global/shared.inc %include ../shared/browser.inc %filter substitution -%define fgTabTexture linear-gradient(transparent 2px, hsla(0,0%,100%,.6) 2px, hsla(0,0%,100%,.6) 3px, hsl(0,0%,99%) 3px, hsl(0,0%,93%)) +%define fgTabTexture linear-gradient(transparent 2px, hsl(0,0%,99%) 2px, hsl(0,0%,93%)) +%define fgTabTextureYosemiteInactive linear-gradient(transparent 2px, hsl(0,0%,99%) 2px, hsl(0,0%,97%)) %define toolbarColorLWT rgba(253,253,253,0.45) %define fgTabTextureLWT linear-gradient(transparent 2px, rgba(254,254,254,.72) 2px, @toolbarColorLWT@) %define fgTabBackgroundColor transparent %define hudButton -moz-appearance: none; color: #434343; border-radius: 4px; border: 1px solid #b5b5b5; background: linear-gradient(#fff, #f2f2f2); box-shadow: inset 0 1px rgba(255,255,255,.8), inset 0 0 1px rgba(255,255, 255,.25), 0 1px rgba(255,255,255,.3); background-clip: padding-box; background-origin: padding-box; padding: 2px 6px; %define hudButtonPressed box-shadow: inset 0 1px 4px -3px #000, 0 1px rgba(255,255,255,.3); %define hudButtonFocused box-shadow: 0 0 1px -moz-mac-focusring inset, 0 0 4px 1px -moz-mac-focusring, 0 0 2px 1px -moz-mac-focusring;
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9f74c4e7654d18ca9b811c778ebf8586ba525dcd GIT binary patch literal 78 zc%17D@N?(olHy`uVBq!ia0vp^Y(Ol}!2%@nWJ)FgDN#=s$B+ufWCzwPj}P@yOhy-Y bdzctXJvg10Jp088RKVcr>gTe~DWM4fDHRb@
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..50961db7ec08f990d349ab94ebe4296cddd72368 GIT binary patch literal 89 zc%17D@N?(olHy`uVBq!ia0vp^JV0#6!2%?=o-;ZHq!c_|978G?lNFd(B)0ER{kI%M kzTk2@s3F0+I6;Jg;kAw`r|rIrB|x<dp00i_>zopr0EOolmjD0&
new file mode 100644 --- /dev/null +++ b/browser/themes/osx/tabbrowser/tab-selected-end-yosemite-inactive.svg @@ -0,0 +1,28 @@ +<!-- 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/. --> +<svg xmlns="http://www.w3.org/2000/svg" width="30px" height="31px" preserveAspectRatio="none"> + <defs> + <style> + #tab-background-fill { + background-color: transparent; + background-image: linear-gradient(transparent, transparent 2px, hsl(0,0%,99%) 2px, hsl(0,0%,97%)); + background-repeat: no-repeat; + height: 100%; + width: 100%; + } + </style> + + <clipPath id="tab-curve-clip-path-end" clipPathUnits="objectBoundingBox"> + <path d="m 0,0.0625 -0.05,0 0,0.938 1,0 0,-0.028 C 0.67917542,0.95840561 0.56569036,0.81970962 0.51599998,0.5625 0.48279998,0.3905 0.465,0.0659 0,0.0625 z"/> + </clipPath> + + <clipPath id="tab-hover-clip-path" clipPathUnits="objectBoundingBox"> + <path d="M 0,0.2 0,1 1,1, 1,0.2 z"/> + </clipPath> + </defs> + + <foreignObject width="30" height="31" clip-path="url(#tab-curve-clip-path-end)"> + <div id="tab-background-fill" xmlns="http://www.w3.org/1999/xhtml"></div> + </foreignObject> +</svg>
new file mode 100644 --- /dev/null +++ b/browser/themes/osx/tabbrowser/tab-selected-start-yosemite-inactive.svg @@ -0,0 +1,28 @@ +<!-- 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/. --> +<svg xmlns="http://www.w3.org/2000/svg" width="30px" height="31px" preserveAspectRatio="none"> + <defs> + <style> + #tab-background-fill { + background-color: transparent; + background-image: linear-gradient(transparent, transparent 2px, hsl(0,0%,99%) 2px, hsl(0,0%,97%)); + background-repeat: no-repeat; + height: 100%; + width: 100%; + } + </style> + + <clipPath id="tab-curve-clip-path-start" clipPathUnits="objectBoundingBox"> + <path d="m 1,0.0625 0.05,0 0,0.938 -1,0 0,-0.028 C 0.32082458,0.95840561 0.4353096,0.81970962 0.48499998,0.5625 0.51819998,0.3905 0.535,0.0659 1,0.0625 z"/> + </clipPath> + + <clipPath id="tab-hover-clip-path" clipPathUnits="objectBoundingBox"> + <path d="M 0,0.2 0,1 1,1, 1,0.2 z"/> + </clipPath> + </defs> + + <foreignObject width="30" height="31" clip-path="url(#tab-curve-clip-path-start)"> + <div id="tab-background-fill" xmlns="http://www.w3.org/1999/xhtml"></div> + </foreignObject> +</svg>
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4206f0c7dca0188d886a6a10f4a9ba0a6c7767dc GIT binary patch literal 339 zc$@)K0j&OsP)<h;3K|Lk000e1NJLTq0015U0018d1ONa4T4lA20003RNkl<Zcmbu< zGed?^6bJBswr$(CZQGolJ-6ms!=ArIV_wphZNK5vS9s3-%~wYkV%*^hXV}34`cQ#9 z)UIfLYB;J`&zp%0^@TOG<!x6dU9uuiN}}3>Vks1s(1d)XOpa8zo$ufUL-3IMU1hu< zjJVqkZ%cf<p~Ky7u$K>OaFOFg4EyQ8b)tp`z<&Bj6m-G07Ap|<yOW70l)yu(ong=h z*J2b*z_k(p8*rW3!v$QV{om!P;2Md59=MhxU<R&TKREECHpvZu8o1`-1g7geOlZ2M zVqpxf`vg~kPf2GlU&DhvBIK}N=-|cwQJwFq2BS3{U<O^NLs@p>DE+Z_SK9C2%vm&J l)c&b}0w|5jDVLH+`wyzbPouYMMS}nU002ovPDHLkV1j2in@#`#
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..21ac892703cffc3bb16e4c63e7735984b598f23c GIT binary patch literal 718 zc$@*w0x|uGP)<h;3K|Lk000e1NJLTq002Ay002G+1ONa4-951K0007&Nkl<Zcmd_u z1B{(P5CGtL#@V*5n&)@6`J6On!^Tb#)s4!q4(gyb;@UROH{E~g#`tH8nQWYVYr%gQ z=^|4h1ri|+A|V8P!N3Rqo=Kt#exOs;MK5~Cog?-a0}r~cG##v7F|Q{7dj(=3Kvnqn zd^>oiVa2?JEW+a<SUuc`77W5@Ove(e#@;Xdxa(q*yM*vK@B@xOf6NvYa47t(j-DdI zqd)^Zfd<ULHuO$<PSmGnQ>Pn%FEAcEl~MN=3px!<oU|5m(LU+kw1~Q#lcrG@oxY<~ z2Cc(V^lnk;M9>3o-~#k4n@t-Fu+t-sihMywaKjp`zuQS8ZQ!QO*tbrZ-_iWt9W!F5 z4aLe&mmaK^GsP?;gLHNo`RNi`(c%2C=~<V66M#Q(A)VDe{BX#z8UaTFe>`uXYoUbB zE^H{Evx*(|-&Q8zAmEQHHBz=tfS2<GoFZeClj-trkg#>GnlE5q;E(;v^a_;#UtS>P zlmd8NC~JDfFUk|No*%Z-^zsA#I9eg#FbVLjg#wO~0FUMSWe8fsKgy9yN(5}-hxNNE zByA$MswIu`_^i}yIY&h_J!yjZVeO3;0mlM=Oq9;elk=8}J6J8}{iuE49g->M##yqh zOir7vBZIW4{3QI2oT;ZDAsu_0(Y|z+obJx~V5j>?6#tJ<<CEUhY@#*X-QEABhv+!4 z@X}#ue>L#+hdUDVoOC$a$KCrY{W1xU0$)BlQ2F70J-B8eU5b>9fl%-VD;PlsS~Y1s z&O$eOKiDt!?qBE#17CrfMH;~Xdcrm8;Q?5#;OHH3-mE;=d#>_o<+c37AteTaRiEVr z*n%Fx|HuJRp&YcZ{E1;a7Go*aV;2sIQl`M40U(9}#4OR73;+NC07*qoM6N<$f^w8q Ao&W#<
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2acbac438c6aea4c4f3c4b0a2efb859a5f8945d7 GIT binary patch literal 339 zc$@)K0j&OsP)<h;3K|Lk000e1NJLTq0015U0018d1ONa4T4lA20003RNkl<ZcmciC zLt@+k6bA5bY}ajU+qP{xtJ%lc#K{R}AKxOI7@OEhH?`fqUSa;P_+8-x{wE3axDN-o z!X2IvK#fP?{<egzg6pbxP2XCn6LwPKfi?WNl<Fykyy+onNe(+1oqYBRshFHe41r9E z0ne++6AWrU-<M@%0?VU=0y2QbI2=vR;8A!zO$U>9G=|JzdbE}RCXvPavkREi-4P@O zlVvdmY>!uhz~*-D1SV->0I9*Gn~DP4-Q_5-IUNLmNtPePFQ$2pUre3XiwH28Z3(0W zi^kpebs|{Q3a^tw(tyF_<a1O^P7pv0IkdQ|bef5MRYR^2K(=^yC+}$R!1}hIG6g*) lsVRl>sgg1%=v@&6`3>EePmwbnyd?kt002ovPDHLkV1ikcku(4R
new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a12fc39a7b10829cffefb0f736eebd8a545ef19f GIT binary patch literal 716 zc$@*u0yF)IP)<h;3K|Lk000e1NJLTq002Ay002G+1ONa4-951K0007$Nkl<ZcmeI$ zGnjQ(6vpv)Y};OA+qUhQ>ne4+^i5F3slqO9;wCn_*tW*==I&VKch>pz+x_#u2ls5i z5*LLa8c9e;4)RfiVh9A53PKFhQ2_a$VVO8&{Sg_gxuWC2kymCuT={Zq&vEFYk3Lu; z5xFLqSAIpuGgIGf)A!F|O*jTQChBQ?aputdduD?pY@{%g35;MU&bR<%nCM#l+e<V- zr$1Q1SnJ>2Tu5=n6O+eYe{_MR41t0$lt6q9=81Bdxlj@Yf!x${?4g5I3{=hD(MNNG zW1%J(`H)*owvRzjlm)r0m0os1Rhs!S?K!oxArQ!W%ba8YRAoZ0>){5&p(@gRF!mhG zg0d{ggCp#NvQRVs>}@jw%2Hwey^T<p2l;%3VNe!j=3I6|T{`5kF(yG>0pyD*s0)Kk z)v^xi;vu*7GY;x9ATN)?28EFC+o3K5GFHPvsEdYN)yYVxONQLv4;y4bUhaYoiXh+A zL0vGUr<%D?7h~6}l>&Km5H`qxyxk3T0g#x|gBqxdfLzkVbXz_icMUSwmM8qih%M7Y zam8T^)Fnc0>}Dp^WkcSaV<418LfWg@2Xz@Rd!-y3R+cekKd<QD=uDWEWupyqQgOwP zJKD2S5b`0<OtQ;{+k9yY9opBMVb&Z!I#{VY4Q809`{_ET8K5}{=9uh9Yuwbk&A~|j z?ezKUEjpN@wcpQxm=DJNLx&zZm<EdkA_$>~L@bh#1%Zi{Ueo=}Z>P`k*1S9>8jKKx zBHTYB5$#O5zx&1YA07Uvhb;`Y@M;@F9!`3#=GCF+hMrr0YiQ5qPnzg}g<Ee%u+ksc yqVI3R%Q@CD5{9MWey(tbE1YB>8<@*5Sne0?D*?YIK~4t%0000<MNUMnLSTZFxl?ig