diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -7,7 +7,7 @@ */ return array( 'names' => array( - 'core.pkg.css' => 'bd0be091', + 'core.pkg.css' => '92042a08', 'core.pkg.js' => 'f3e08b38', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => 'bb338e4b', @@ -43,8 +43,8 @@ 'rsrc/css/application/config/config-options.css' => '7fedf08b', 'rsrc/css/application/config/config-template.css' => '8e6c6fcd', 'rsrc/css/application/config/config-welcome.css' => '6abd79be', - 'rsrc/css/application/config/setup-issue.css' => '22270af2', - 'rsrc/css/application/config/unhandled-exception.css' => '37d4f9a2', + 'rsrc/css/application/config/setup-issue.css' => 'a4aeaa42', + 'rsrc/css/application/config/unhandled-exception.css' => '4c96257a', 'rsrc/css/application/conpherence/durable-column.css' => 'd1e796f0', 'rsrc/css/application/conpherence/menu.css' => 'f9f1d143', 'rsrc/css/application/conpherence/message-pane.css' => '7cbf4cbb', @@ -133,7 +133,7 @@ 'rsrc/css/phui/phui-fontkit.css' => '489a1341', 'rsrc/css/phui/phui-form-view.css' => 'e1abbe8e', 'rsrc/css/phui/phui-form.css' => 'f535f938', - 'rsrc/css/phui/phui-header-view.css' => '2ad5de97', + 'rsrc/css/phui/phui-header-view.css' => '3c91963d', 'rsrc/css/phui/phui-icon.css' => '88ba9081', 'rsrc/css/phui/phui-image-mask.css' => '5a8b09c8', 'rsrc/css/phui/phui-info-panel.css' => '27ea50a1', @@ -141,7 +141,7 @@ 'rsrc/css/phui/phui-list.css' => 'e448b6ba', 'rsrc/css/phui/phui-object-box.css' => '8c1cf7c0', 'rsrc/css/phui/phui-object-item-list-view.css' => '4be0645f', - 'rsrc/css/phui/phui-pinboard-view.css' => 'eaab2b1b', + 'rsrc/css/phui/phui-pinboard-view.css' => '22891c15', 'rsrc/css/phui/phui-property-list-view.css' => 'd2d143ea', 'rsrc/css/phui/phui-remarkup-preview.css' => '19ad512b', 'rsrc/css/phui/phui-spacing.css' => '042804d6', @@ -151,7 +151,6 @@ 'rsrc/css/phui/phui-timeline-view.css' => 'a85542c8', 'rsrc/css/phui/phui-workboard-view.css' => '38446bc3', 'rsrc/css/phui/phui-workpanel-view.css' => 'e6435408', - 'rsrc/css/sprite-gradient.css' => '4bdb98a7', 'rsrc/css/sprite-login.css' => 'a3526809', 'rsrc/css/sprite-main-header.css' => '28d01b0b', 'rsrc/css/sprite-menu.css' => '02aa815a', @@ -303,7 +302,6 @@ 'rsrc/image/people/washington.png' => '40dd301c', 'rsrc/image/phrequent_active.png' => 'a466a8ed', 'rsrc/image/phrequent_inactive.png' => 'bfc15a69', - 'rsrc/image/sprite-gradient.png' => 'ec15a417', 'rsrc/image/sprite-login-X2.png' => 'a15918f0', 'rsrc/image/sprite-login.png' => '8cee4f6e', 'rsrc/image/sprite-main-header.png' => '39419fa6', @@ -767,7 +765,7 @@ 'phui-fontkit-css' => '489a1341', 'phui-form-css' => 'f535f938', 'phui-form-view-css' => 'e1abbe8e', - 'phui-header-view-css' => '2ad5de97', + 'phui-header-view-css' => '3c91963d', 'phui-icon-view-css' => '88ba9081', 'phui-image-mask-css' => '5a8b09c8', 'phui-info-panel-css' => '27ea50a1', @@ -776,7 +774,7 @@ 'phui-list-view-css' => 'e448b6ba', 'phui-object-box-css' => '8c1cf7c0', 'phui-object-item-list-view-css' => '4be0645f', - 'phui-pinboard-view-css' => 'eaab2b1b', + 'phui-pinboard-view-css' => '22891c15', 'phui-property-list-view-css' => 'd2d143ea', 'phui-remarkup-preview-css' => '19ad512b', 'phui-spacing-css' => '042804d6', @@ -804,8 +802,7 @@ 'releeph-preview-branch' => 'b7a6f4a5', 'releeph-request-differential-create-dialog' => '8d8b92cd', 'releeph-request-typeahead-css' => '667a48ae', - 'setup-issue-css' => '22270af2', - 'sprite-gradient-css' => '4bdb98a7', + 'setup-issue-css' => 'a4aeaa42', 'sprite-login-css' => 'a3526809', 'sprite-main-header-css' => '28d01b0b', 'sprite-menu-css' => '02aa815a', @@ -814,7 +811,7 @@ 'syntax-highlighting-css' => '6b7b24d9', 'tokens-css' => '3d0f239e', 'typeahead-browse-css' => 'd8581d2c', - 'unhandled-exception-css' => '37d4f9a2', + 'unhandled-exception-css' => '4c96257a', ), 'requires' => array( '029a133d' => array( @@ -2039,7 +2036,6 @@ 'aphront-tooltip-css', 'phabricator-flag-css', 'phui-info-view-css', - 'sprite-gradient-css', 'sprite-menu-css', 'phabricator-main-menu-view', 'phabricator-notification-css', diff --git a/resources/celerity/packages.php b/resources/celerity/packages.php --- a/resources/celerity/packages.php +++ b/resources/celerity/packages.php @@ -100,8 +100,6 @@ 'aphront-tooltip-css', 'phabricator-flag-css', 'phui-info-view-css', - - 'sprite-gradient-css', 'sprite-menu-css', 'phabricator-main-menu-view', diff --git a/resources/sprite/gradients/dark-grey-header.png b/resources/sprite/gradients/dark-grey-header.png deleted file mode 100644 index 4a169a5054c8d9d24973bc96820e4d5bca5b8414..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@&CKy09n+;vejg^`Kz$*G<}l#?nn%TQH@xWw$8ErpdGo-DF}iwP_I# zo)pjCJnYqj9>kl72wwK?Nj!S-pu*y5SzRanQ-p3vGV^`B_syGc-aM|9Z!9leSfVIu zxm47vWIRs3!ifd)fAW6UC&PK1Z{Qkg;l3F_Drci61SQvO!zwiG!QEY$p{T{nPQ8H} z#!baSE@Q?RCURpoMP;&)Z(3c5K@+wePo;mnc}D}sR_RUA;0#}b9j7=9U~O2gTf?p; z+jRCi$V3V$;6iMI$ldlrB~s~8U4_i!G)sdK1b0<>EUIBtfQAAHL?)TAIGzWR#PDmP zB=OgP!0`ghkylFaYl=1=pXI^})3abnS80-A9LH8tdQM8F3%Z<^WuDIqGAD>>EhQ9EVm_x!{FJLB ztLH)wPr3GAZhkH|Hp7?=1Lq#J3juP$Xw!-_U(5P@En}`dUyC-E%Mvl{e@8t{5&y)~ znQ=)lvp)2Q--FoLZ=Y|HOOY<=xq9@edGPb=nZCn2OE6E?E;6OPh2qU~0(<*4ti_*EV#?i^-c!cTn&m zLl2(4OwhA8PaedBhuwDGMRpS}9wx|OFkia16QK)9-uwOdzTf-a?|pBpR=qzvbA5(k zm|1JZbm(}Ie#_J6>HpQ&orn(CNToqmaf|d|jF^&#n+R9|Y$FFjum5BREiug0O~2kC z4f}!S;(&u0hD(Et%`i*FG=gpy5zs_!Kh)V@pTDrc_jLA=YzuZ|ppL(?8Kc$BYTe!J zx~j((?}4RMqXhy)AV`DtFws(-9n{t6JWKN|7(hr@XHP^m>>4m|jDXDLbFLtYKv6hx zK~@y;E|3IK;syFDIdMUg6-`Hu%;n))G}74)A(6)Oy ztcE1zC?c2iLju!Wn9PkTm?&{$KO#O3K^DU%-XJ>5jZqmz0+LcD_#yb-(f;97GTIns<6L4xBt#_OXl);gHrq=O@1tSaD^ z4P8IX61N8o+t#cwAux22W$G-=aK7(pl444glA)+FZM#^JN`-<^QiZar=JRE-To`dp z>}~`oBqOeO%3Yku&CGDZMzQ}CdCM^lz+lswKUvGdWGyFLZ?YD7BA2IP`2UW2l%oF0 zreovMU~GL9QoqO4*!%vU*Yr{-mRYK&d(ETcd1-s=+|_pnk9U7xaUR~; seslO?uekg3<=f{!ZhU`#wEykWw7^JkzVpd>b|Jf0R;6lwEU&%z3vSOb#sB~S diff --git a/resources/sprite/gradients/lightblue-header.png b/resources/sprite/gradients/lightblue-header.png deleted file mode 100644 index b2177d7d7e9da3bab029fb1e82f37d29237eeda7..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@DSr z1<%~X^wgl##FWaylc_d9MX8=Hjv*Dd-dx(qbwGiK<-+DC|LwzKtYX7?lQ<48EXd@k diff --git a/resources/sprite/gradients/lightgreen-header.png b/resources/sprite/gradients/lightgreen-header.png deleted file mode 100644 index 556184a82f25fb0bb7494e3e355c52bc78f102f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@DSr z1<%~X^wgl##FWaylc_d9McJM%jv*Dd-b~oY*I>ZGdho-4`Rqpzl-99Ib7so;th>F` z{ddKycSbUI&nG|eeYEk(^WW=l#vJ-DR`@LbqIm7>^?y9&ZR-v5@4Da8e_H)4^0WHy xO7;A!{!h#A>p!1ed%%F_FbMsT-^VJ!@O78YnMv(WT!7Xxc)I$ztaD0e0svkqP`v;E diff --git a/resources/sprite/gradients/lightred-header.png b/resources/sprite/gradients/lightred-header.png deleted file mode 100644 index c41f9d2039b850ba4e85dec0d3f48495914226f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@DSr z1<%~X^wgl##FWaylc_d9MP8mRjv*Dd-dr@~Vld!faTNUjKPuZ-dbY_ilbf&E1o^J6 z*;p`LSIbmw=JKD}vt71)+r0h%uJ>Q;^S-~nSG|k>m_%}q;jtg``iyK0Eh?&Ogp9Uz Q0ZnD_boFyt=akR{0BngmP5=M^ diff --git a/resources/sprite/gradients/lightviolet-header.png b/resources/sprite/gradients/lightviolet-header.png deleted file mode 100644 index 2f44edb6e5ef7d9bf8e20664315f02418ee71c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@DSr z1<%~X^wgl##FWaylc_d9MIoLpjv*Dd-dx(v#~{Gt_R#IuKY#6{AU823FP`W3_jP=k z#3sF1Gwr2NN>A6xH-EQo{aW*7zesiD{p$MFzjl9~`|fh}zuSNB?Bnk-JSLIc^U;1C b6A#0`6us5LbFWqd&1dj*^>bP0l+XkK1yV%W diff --git a/resources/sprite/manifest/gradient.json b/resources/sprite/manifest/gradient.json deleted file mode 100644 --- a/resources/sprite/manifest/gradient.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "version" : 1, - "sprites" : { - "gradient-dark-grey-header" : { - "name" : "gradient-dark-grey-header", - "rule" : ".gradient-dark-grey-header", - "hash" : "e8762dd2849410a7e4fba8f972f946ff" - }, - "gradient-grey-header" : { - "name" : "gradient-grey-header", - "rule" : ".gradient-grey-header", - "hash" : "1c8f8d61984e3fc5a7e528b9bd4d484a" - }, - "gradient-lightblue-header" : { - "name" : "gradient-lightblue-header", - "rule" : ".gradient-lightblue-header", - "hash" : "e7753a6ce63c6822a559266eef9e255b" - }, - "gradient-lightgreen-header" : { - "name" : "gradient-lightgreen-header", - "rule" : ".gradient-lightgreen-header", - "hash" : "87b5c391ea4ea84dd8531fb0f199cbeb" - }, - "gradient-lightred-header" : { - "name" : "gradient-lightred-header", - "rule" : ".gradient-lightred-header", - "hash" : "a367ea9163aa15f52c105b5805cf493e" - }, - "gradient-lightviolet-header" : { - "name" : "gradient-lightviolet-header", - "rule" : ".gradient-lightviolet-header", - "hash" : "e17e05135e53e1258340cfc27f96f23f" - } - }, - "scales" : [ - 1 - ], - "header" : "\/**\n * @provides sprite-gradient-css\n * @generated\n *\/\n\n.sprite-gradient {\n background-image: url(\/rsrc\/image\/sprite-gradient.png);\n background-repeat: repeat-x;\n}\n\n\n", - "type" : "repeat-x" -} diff --git a/scripts/celerity/generate_sprites.php b/scripts/celerity/generate_sprites.php --- a/scripts/celerity/generate_sprites.php +++ b/scripts/celerity/generate_sprites.php @@ -29,7 +29,6 @@ $sheets = array( 'menu' => $generator->buildMenuSheet(), 'tokens' => $generator->buildTokenSheet(), - 'gradient' => $generator->buildGradientSheet(), 'main-header' => $generator->buildMainHeaderSheet(), 'login' => $generator->buildLoginSheet(), 'projects' => $generator->buildProjectsSheet(), diff --git a/src/applications/celerity/CeleritySpriteGenerator.php b/src/applications/celerity/CeleritySpriteGenerator.php --- a/src/applications/celerity/CeleritySpriteGenerator.php +++ b/src/applications/celerity/CeleritySpriteGenerator.php @@ -144,45 +144,6 @@ return $sheet; } - public function buildGradientSheet() { - $gradients = $this->getDirectoryList('gradients'); - - $template = new PhutilSprite(); - - $unusual_heights = array( - 'breadcrumbs' => 31, - 'grey-header' => 70, - 'dark-grey-header' => 70, - 'lightblue-header' => 240, - 'lightgreen-header' => 240, - 'lightviolet-header' => 240, - 'lightred-header' => 240, - ); - - $sprites = array(); - foreach ($gradients as $gradient) { - $path = $this->getPath('gradients/'.$gradient.'.png'); - $sprite = id(clone $template) - ->setName('gradient-'.$gradient) - ->setSourceFile($path) - ->setTargetCSS('.gradient-'.$gradient); - - $sprite->setSourceSize(4, idx($unusual_heights, $gradient, 26)); - - $sprites[] = $sprite; - } - - $sheet = $this->buildSheet( - 'gradient', - false, - PhutilSpriteSheet::TYPE_REPEAT_X); - foreach ($sprites as $sprite) { - $sheet->addSprite($sprite); - } - - return $sheet; - } - public function buildMainHeaderSheet() { $gradients = $this->getDirectoryList('main_header'); $template = new PhutilSprite(); diff --git a/src/applications/phriction/controller/PhrictionDocumentController.php b/src/applications/phriction/controller/PhrictionDocumentController.php --- a/src/applications/phriction/controller/PhrictionDocumentController.php +++ b/src/applications/phriction/controller/PhrictionDocumentController.php @@ -391,13 +391,13 @@ $list = array(); foreach ($children_dicts as $child) { - $list[] = hsprintf('
  • '); + $list[] = hsprintf('
  • '); $list[] = $this->renderChildDocumentLink($child); $grand = idx($grandchildren_dicts, $child['slug'], array()); if ($grand) { - $list[] = hsprintf('
      '); + $list[] = hsprintf('
        '); foreach ($grand as $grandchild) { - $list[] = hsprintf('
      • '); + $list[] = hsprintf('
      • '); $list[] = $this->renderChildDocumentLink($grandchild); $list[] = hsprintf('
      • '); } @@ -406,27 +406,30 @@ $list[] = hsprintf(''); } if ($more_children) { - $list[] = phutil_tag('li', array(), pht('More...')); - } - - $content = array( - phutil_tag( - 'div', + $list[] = phutil_tag( + 'li', array( - 'class' => 'phriction-children-header '. - 'sprite-gradient gradient-lightblue-header', + 'class' => 'remarkup-list-item', ), - pht('Document Hierarchy')), - phutil_tag( + pht('More...')); + } + + $header = id(new PHUIHeaderView()) + ->setHeader(pht('Document Hierarchy')); + + return id(new PHUIDocumentView()) + ->setHeader($header) + ->appendChild(phutil_tag( 'div', array( - 'class' => 'phriction-children', + 'class' => 'phabricator-remarkup', ), - phutil_tag('ul', array(), $list)), - ); - - return id(new PHUIDocumentView()) - ->appendChild($content); + phutil_tag( + 'ul', + array( + 'class' => 'remarkup-list', + ), + $list))); } private function renderChildDocumentLink(array $info) { diff --git a/src/view/page/PhabricatorStandardPageView.php b/src/view/page/PhabricatorStandardPageView.php --- a/src/view/page/PhabricatorStandardPageView.php +++ b/src/view/page/PhabricatorStandardPageView.php @@ -170,7 +170,6 @@ require_celerity_resource('phui-button-css'); require_celerity_resource('phui-spacing-css'); require_celerity_resource('phui-form-css'); - require_celerity_resource('sprite-gradient-css'); require_celerity_resource('phabricator-standard-page-view'); require_celerity_resource('conpherence-durable-column-view'); diff --git a/src/view/phui/PHUIPinboardItemView.php b/src/view/phui/PHUIPinboardItemView.php --- a/src/view/phui/PHUIPinboardItemView.php +++ b/src/view/phui/PHUIPinboardItemView.php @@ -46,16 +46,14 @@ require_celerity_resource('phui-pinboard-view-css'); $header = null; if ($this->header) { + $header_color = null; if ($this->disabled) { - $header_color = 'gradient-lightgrey-header'; - } else { - $header_color = 'gradient-lightblue-header'; + $header_color = 'phui-pinboard-disabled'; } $header = phutil_tag( 'div', array( - 'class' => 'phui-pinboard-item-header '. - 'sprite-gradient '.$header_color, + 'class' => 'phui-pinboard-item-header '.$header_color, ), phutil_tag('a', array('href' => $this->uri), $this->header)); } diff --git a/webroot/rsrc/css/application/config/setup-issue.css b/webroot/rsrc/css/application/config/setup-issue.css --- a/webroot/rsrc/css/application/config/setup-issue.css +++ b/webroot/rsrc/css/application/config/setup-issue.css @@ -1,8 +1,6 @@ /** * @provides setup-issue-css */ - - .setup-issue-background { padding: 12px 0; } @@ -15,7 +13,8 @@ .setup-issue { background: #fff; border: 1px solid #BFCFDA; - border-bottom: 1px solid #8C98B8; + padding: 8px; + border-radius: 3px; } .setup-issue p { @@ -78,13 +77,10 @@ .setup-issue-name { color: #464C5C; - text-shadow: 0 1px #fff; - padding: 16px 12px; + padding: 4px 8px 12px; border-bottom: 1px solid #BFCFDA; font-size: 15px; - font-weight: bold; - background-image: url(/rsrc/image/lightblue-header.png); - background-repeat: repeat-x; + font-weight: 500; } .setup-issue-tail { @@ -92,17 +88,20 @@ } .setup-issue-status { + margin: 12px 4px 0; padding: 12px; background: #FDF5D4; color: #bc7837; - border-bottom: 1px solid #BFCFDA; + border: 1px solid #bc7837; + border-radius: 3px; } .setup-issue-actions { - padding: 12px; - background: #f3f3f3; + padding: 8px 12px; border-top: 1px solid #dfdfdf; + background-color: #f7f7f7; overflow: hidden; + margin: 0 -8px -8px -8px; } .setup-issue-next { @@ -115,8 +114,7 @@ } .setup-issue-config { - padding: 0 12px; - background: #fff; + padding: 8px 12px; } .setup-issue ul { diff --git a/webroot/rsrc/css/application/config/unhandled-exception.css b/webroot/rsrc/css/application/config/unhandled-exception.css --- a/webroot/rsrc/css/application/config/unhandled-exception.css +++ b/webroot/rsrc/css/application/config/unhandled-exception.css @@ -6,19 +6,17 @@ max-width: 760px; margin: 24px auto; background: #fff; - border: 1px solid #f4c6c6; - border-bottom: 1px solid #eb9797; + border: 1px solid #c0392b; + border-radius: 3px; + padding: 0 8px; } .unhandled-exception-detail .unhandled-exception-title { - color: #802b2b; - text-shadow: 0 1px #fff; - padding: 16px 12px; - border-bottom: 1px solid #f4c6c6; - font-size: 15px; - font-weight: bold; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAADwCAIAAABHUjkYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrs0TEKADAIBEER//9aa00bmzTGNNnrBhEO1ayxcJctKjUmmaf5a5tEtPazt/+67/Q/bvfr3nu6D8YYY4wxxvgfLwEGAIQkJawSMraKAAAAAElFTkSuQmCC'); - background-repeat: repeat-x; + color: #c0392b; + padding: 12px 8px; + border-bottom: 1px solid #f4dddb; + font-size: 16px; + font-weight: 500; margin: 0; } diff --git a/webroot/rsrc/css/phui/phui-header-view.css b/webroot/rsrc/css/phui/phui-header-view.css --- a/webroot/rsrc/css/phui/phui-header-view.css +++ b/webroot/rsrc/css/phui/phui-header-view.css @@ -7,10 +7,6 @@ overflow: hidden; } -.phui-header-shell.sprite-gradient.gradient-white-header { - background: transparent; -} - body .phui-header-shell.phui-header-no-backgound { background-color: transparent; border: none; diff --git a/webroot/rsrc/css/phui/phui-pinboard-view.css b/webroot/rsrc/css/phui/phui-pinboard-view.css --- a/webroot/rsrc/css/phui/phui-pinboard-view.css +++ b/webroot/rsrc/css/phui/phui-pinboard-view.css @@ -17,7 +17,6 @@ background: #ffffff; border-radius: 3px; border: 1px solid {$lightblueborder}; - border-bottom: 1px solid {$blueborder}; text-align: left; width: 288px; } @@ -27,7 +26,11 @@ } .device-desktop .phui-pinboard-item-view:hover { - box-shadow: {$dropshadow}; + border-color: {$blue}; +} + +.device-desktop .phui-pinboard-item-view:hover .phui-pinboard-item-header a { + color: {$blue}; } /* On phones, show a single column of items. */ @@ -42,13 +45,13 @@ font-weight: bold; border-top-left-radius: 3px; border-top-right-radius: 3px; - border-bottom: 1px solid {$lightblueborder}; + border-bottom: 1px solid {$thinblueborder}; white-space: nowrap; overflow: hidden; } .phui-pinboard-item-header a { - color: {$bluetext}; + color: {$darkbluetext}; } .phui-pinboard-item-image-link { diff --git a/webroot/rsrc/css/sprite-gradient.css b/webroot/rsrc/css/sprite-gradient.css deleted file mode 100644 --- a/webroot/rsrc/css/sprite-gradient.css +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @provides sprite-gradient-css - * @generated - */ - -.sprite-gradient { - background-image: url(/rsrc/image/sprite-gradient.png); - background-repeat: repeat-x; -} - - - - -.gradient-dark-grey-header { - background-position: 0px 0px; -} - -.gradient-grey-header { - background-position: 0px -71px; -} - -.gradient-lightblue-header { - background-position: 0px -142px; -} - -.gradient-lightgreen-header { - background-position: 0px -383px; -} - -.gradient-lightred-header { - background-position: 0px -624px; -} - -.gradient-lightviolet-header { - background-position: 0px -865px; -} diff --git a/webroot/rsrc/image/sprite-gradient.png b/webroot/rsrc/image/sprite-gradient.png deleted file mode 100644 index 5a7bdae1688e629605f482eff4021d9443c5aa0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@WsUsvyI}cG2spLiDMO8*i(r0q|J@tg(juqn z-I+AE