#!/usr/bin/env bash
set -Eeuo pipefail

APP="/home/cghggujarat/laravel_apps/cghg_portal"
OLD="/home/cghggujarat/public_html/website"
PREVIEW="/home/cghggujarat/public_html/new/portalarea-laravel-preview"
PHP82="/opt/cpanel/ea-php82/root/usr/bin/php"
OWNER="cghggujarat:cghggujarat"
STAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP="$APP/_migration_backups/website-old-structure-modern-v11-$STAMP"
VIEW="$APP/resources/views/website/home.blade.php"

fail(){ echo "ERROR: $*" >&2; exit 1; }
say(){ printf '\n===== %s =====\n' "$1"; }

[ -d "$APP" ] || fail "Laravel app missing: $APP"
[ -f "$APP/artisan" ] || fail "artisan missing"
[ -d "$OLD" ] || fail "Old website folder missing: $OLD"

cd "$APP"

say "1/8 BACKUP"
mkdir -p "$BACKUP"
[ -d resources/views/website ] && cp -a resources/views/website "$BACKUP/website-views.before"
cp -a routes/web.php "$BACKUP/web.php.before"

cat > "$BACKUP/ROLLBACK.sh" <<ROLLBACK
#!/usr/bin/env bash
set -e
APP="$APP"
BACKUP="$BACKUP"
if [ -d "\$BACKUP/website-views.before" ]; then
    rm -rf "\$APP/resources/views/website"
    cp -a "\$BACKUP/website-views.before" "\$APP/resources/views/website"
fi
cp -af "\$BACKUP/web.php.before" "\$APP/routes/web.php"
chown -R cghggujarat:cghggujarat "\$APP/resources/views/website" "\$APP/routes/web.php" 2>/dev/null || true
cd "\$APP"
runuser -u cghggujarat -- env HOME=/home/cghggujarat "$PHP82" artisan optimize:clear >/dev/null 2>&1 || true
echo "ROLLBACK COMPLETE"
ROLLBACK
chmod 750 "$BACKUP/ROLLBACK.sh"

rollback_on_error(){
  code=$?
  echo
  echo "V11 FAILED - restoring previous website..."
  bash "$BACKUP/ROLLBACK.sh" || true
  exit "$code"
}
trap rollback_on_error ERR

say "2/8 FIND OLD WEBSITE ENTRY"
OLD_INDEX=""
for f in "$OLD/index.php" "$OLD/index.html" "$OLD/index.htm"; do
  if [ -f "$f" ]; then OLD_INDEX="$f"; break; fi
done
[ -n "$OLD_INDEX" ] || fail "Old index not found"
echo "OLD_INDEX=$OLD_INDEX"

say "3/8 COPY OLD WEBSITE ASSETS"
mkdir -p "$APP/public/assets/website-old" "$PREVIEW/assets/website-old"
if command -v rsync >/dev/null 2>&1; then
  rsync -a --exclude='*.php' --exclude='*.phtml' --exclude='*.phar' --exclude='.htaccess' --exclude='.env*' --exclude='*.sql' --exclude='*.zip' --exclude='*.tar' --exclude='*.gz' "$OLD/" "$APP/public/assets/website-old/"
  rsync -a "$APP/public/assets/website-old/" "$PREVIEW/assets/website-old/"
else
  /bin/cp -a "$OLD/." "$APP/public/assets/website-old/" || true
  find "$APP/public/assets/website-old" -type f \( -name '*.php' -o -name '*.phtml' -o -name '*.phar' -o -name '.htaccess' -o -name '*.sql' \) -delete
  /bin/cp -a "$APP/public/assets/website-old/." "$PREVIEW/assets/website-old/"
fi
chown -R "$OWNER" "$APP/public/assets/website-old" "$PREVIEW/assets/website-old" 2>/dev/null || true
find "$APP/public/assets/website-old" "$PREVIEW/assets/website-old" -type d -exec chmod 755 {} \;
find "$APP/public/assets/website-old" "$PREVIEW/assets/website-old" -type f -exec chmod 644 {} \;
echo "OLD_ASSET_COUNT=$(find "$APP/public/assets/website-old" -type f | wc -l)"

say "4/8 RENDER OLD WEBSITE STRUCTURE"
RAW="$BACKUP/old-live.html"
if curl -LfsS --max-time 30 "https://cghggujarat.in/website/" -o "$RAW" && [ -s "$RAW" ]; then
  echo "SOURCE=LIVE_OLD_WEBSITE"
else
  echo "SOURCE=LOCAL_OLD_WEBSITE"
  case "$OLD_INDEX" in
    *.php) (cd "$OLD" && "$PHP82" "$(basename "$OLD_INDEX")") > "$RAW" 2>"$BACKUP/local-render.stderr" || true ;;
    *) cp -a "$OLD_INDEX" "$RAW" ;;
  esac
fi
[ -s "$RAW" ] || fail "Could not render old website"
echo "OLD_HTML_BYTES=$(wc -c < "$RAW")"

say "5/8 KEEP OLD STRUCTURE + INSTALL MODERN LIGHT UI"
export RAW VIEW
python3 - <<'PY'
from pathlib import Path
import os,re,base64
raw=Path(os.environ["RAW"]); view=Path(os.environ["VIEW"])
html=raw.read_text(errors="replace")
css=base64.b64decode("Ci8qIENHSEdfT0xEX1NUUlVDVFVSRV9NT0RFUk5fVUlfVjExICovCjpyb290ey0tbzojZjI4YjJmOy0tb3M6I2ZmZjRlNzstLWc6IzEzOGE0NTstLWdkOiMwYzY2MzI7LS1nczojZWZmOWYyOy0taW5rOiMyNTMwMjc7LS1tdXRlZDojNmM3NTZlOy0tbGluZTojZTZlYmU3Oy0tc2hhZG93OjAgMTRweCAzNnB4IHJnYmEoMzUsNzIsNDQsLjA4KTstLXNoYWRvdzI6MCAyNHB4IDU2cHggcmdiYSgzNSw3Miw0NCwuMTEpfQpodG1se3Njcm9sbC1iZWhhdmlvcjpzbW9vdGh9CmJvZHl7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudDtjb2xvcjp2YXIoLS1pbmspIWltcG9ydGFudDtmb250LWZhbWlseTpJbnRlciwiQW5layBHdWphcmF0aSIsIk5pcm1hbGEgVUkiLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLCJTZWdvZSBVSSIsc2Fucy1zZXJpZiFpbXBvcnRhbnR9CmJvZHkgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9CjpsYW5nKGd1KSxbbGFuZz0iZ3UiXSwuZ3VqLC5ndWphcmF0aXtmb250LWZhbWlseToiQW5layBHdWphcmF0aSIsSW50ZXIsc2Fucy1zZXJpZiFpbXBvcnRhbnR9CmJvZHk6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3JpZ2h0OjA7aGVpZ2h0OjVweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZywjZmY5OTMzIDAgMzMuMzMlLCNmZmYgMzMuMzMlIDY2LjY2JSwjMTM4ODA4IDY2LjY2JSk7ei1pbmRleDo5OTk5OX0KLm5hdmJhciwubmF2YmFyLWRlZmF1bHQsLm5hdmJhci1saWdodCwubWFpbi1oZWFkZXIsaGVhZGVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTgpIWltcG9ydGFudDtib3JkZXItY29sb3I6dmFyKC0tbGluZSkhaW1wb3J0YW50O2JveC1zaGFkb3c6MCA1cHggMThweCByZ2JhKDMxLDYxLDM3LC4wNSkhaW1wb3J0YW50fQoubmF2YmFyIGEsbmF2IGF7dHJhbnNpdGlvbjouMThzIGVhc2UhaW1wb3J0YW50fQoubmF2YmFyIGE6aG92ZXIsbmF2IGE6aG92ZXJ7Y29sb3I6dmFyKC0tZykhaW1wb3J0YW50fQouY2doZy1zZWN0aW9ue3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctdG9wOjY0cHghaW1wb3J0YW50O3BhZGRpbmctYm90dG9tOjY0cHghaW1wb3J0YW50fQouY2doZy1zZWN0aW9uOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO3RvcDowO3dpZHRoOm1pbig5MiUsMTE4MHB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtoZWlnaHQ6MXB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LHJnYmEoMjQyLDEzOSw0NywuMzIpLHJnYmEoMTksMTM4LDY5LC4yNiksdHJhbnNwYXJlbnQpfQouY2doZy13ZWxjb21le2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4JSAxOCUscmdiYSgyNDIsMTM5LDQ3LC4xMyksdHJhbnNwYXJlbnQgMjglKSxyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDkyJSA3OCUscmdiYSgxOSwxMzgsNjksLjEwKSx0cmFuc3BhcmVudCAzMCUpLGxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2ZmZjlmMiAwJSwjZmZmIDQ4JSwjZjNmYmY1IDEwMCUpIWltcG9ydGFudH0KLmNnaGctbWlzc2lvbntiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50fS5jZ2hnLWFib3V0LC5jZ2hnLW1hbnVhbHMsLmNnaGctcHJpdmFjeSwuY2doZy1kYXRhLWRlbGV0ZXtiYWNrZ3JvdW5kOiNmYmZjZmEhaW1wb3J0YW50fS5jZ2hnLWNvbnRhY3QsLmNnaGctdGVybXMsLmNnaGctc29mdHdhcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmZmZhZjUgMCUsI2ZmZiA1MCUsI2Y1ZmJmNiAxMDAlKSFpbXBvcnRhbnR9Ci5jZ2hnLXNlY3Rpb24gaDEsLmNnaGctc2VjdGlvbiBoMntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MjBweCFpbXBvcnRhbnR9Ci5jZ2hnLXNlY3Rpb24gaDE6YWZ0ZXIsLmNnaGctc2VjdGlvbiBoMjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDt3aWR0aDo5MnB4O2hlaWdodDo1cHg7Ym9yZGVyLXJhZGl1czo5OXB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLW8pIDAgNTIlLHZhcigtLWcpIDUyJSl9Ci5jZ2hnLXdlbGNvbWUgaDEsLmNnaGctd2VsY29tZSBoMntmb250LXNpemU6Y2xhbXAoMzhweCw0Ljh2dyw2NHB4KSFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4wNSFpbXBvcnRhbnR9Ci5jZ2hnLXNlY3Rpb24gcCwuY2doZy1zZWN0aW9uIGxpe2NvbG9yOnZhcigtLW11dGVkKX0KLmNhcmQsLmZlYXR1cmUtY2FyZCwubWlzc2lvbi1jYXJkLC5sZWFkZXItY2FyZCwudGVhbS1jYXJkLC5zZXJ2aWNlLWNhcmQsLmNnaGctY2FyZHtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjE4cHghaW1wb3J0YW50O2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpIWltcG9ydGFudDt0cmFuc2l0aW9uOi4ycyBlYXNlIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW59Ci5jZ2hnLWNhcmQ6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTRweCk7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cyKSFpbXBvcnRhbnR9Ci5jZ2hnLWxlYWRlci1jYXJke3Bvc2l0aW9uOnJlbGF0aXZlfS5jZ2hnLWxlYWRlci1jYXJkOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7aGVpZ2h0OjRweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx2YXIoLS1vKSAwIDUwJSx2YXIoLS1nKSA1MCUpfQouY2doZy1taXNzaW9uIC5jZ2hnLWNhcmQ6bnRoLWNoaWxkKG9kZCksLmNnaGctbWlzc2lvbiAuY2FyZDpudGgtY2hpbGQob2RkKXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDVkZWcsI2ZmZjZlYiwjZmZmKSFpbXBvcnRhbnR9Ci5jZ2hnLW1pc3Npb24gLmNnaGctY2FyZDpudGgtY2hpbGQoZXZlbiksLmNnaGctbWlzc2lvbiAuY2FyZDpudGgtY2hpbGQoZXZlbil7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCNlZmY5ZjIsI2ZmZikhaW1wb3J0YW50fQouYnRuLC5idXR0b24sYnV0dG9uLGlucHV0W3R5cGU9InN1Ym1pdCJde2JvcmRlci1yYWRpdXM6MTFweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDt0cmFuc2l0aW9uOi4xOHMgZWFzZSFpbXBvcnRhbnR9Ci5idG46aG92ZXIsLmJ1dHRvbjpob3ZlcixidXR0b246aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9Ci5jZ2hnLWxvZ2luLWxpbmt7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWcpLHZhcigtLWdkKSkhaW1wb3J0YW50O2NvbG9yOiNmZmYhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTFweCFpbXBvcnRhbnQ7cGFkZGluZzoxMHB4IDE2cHghaW1wb3J0YW50O2JveC1zaGFkb3c6MCAxMHB4IDI0cHggcmdiYSgxOSwxMzgsNjksLjE4KSFpbXBvcnRhbnR9Ci5jZ2hnLXBvbGljeS1zdXBwb3J0e21hcmdpbjoyMnB4IDAgOHB4O3BhZGRpbmc6MThweCAyMHB4O2JvcmRlcjoxcHggc29saWQgcmdiYSgxOSwxMzgsNjksLjE4KTtib3JkZXItbGVmdDo1cHggc29saWQgdmFyKC0tZyk7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZmZmOGVmLCNmZmYgNTIlLCNmMmZhZjQpO2JveC1zaGFkb3c6MCAxMHB4IDI2cHggcmdiYSgzNSw3Miw0NCwuMDYpfQouY2doZy1wb2xpY3ktc3VwcG9ydCBzdHJvbmd7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjVweDtjb2xvcjp2YXIoLS1nZCl9LmNnaGctcG9saWN5LXN1cHBvcnQgc3BhbntkaXNwbGF5OmJsb2NrO2NvbG9yOiM1ZjZiNjJ9LmNnaGctcG9saWN5LXN1cHBvcnQgYXtjb2xvcjp2YXIoLS1nZCkhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjgwMH0KZm9vdGVyLC5mb290ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmZmY5ZjIsI2ZmZiA0OCUsI2Y0ZmJmNSkhaW1wb3J0YW50O2NvbG9yOiM0ZDVhNTAhaW1wb3J0YW50O2JvcmRlci10b3A6NXB4IHNvbGlkIHZhcigtLW8pIWltcG9ydGFudH0KZm9vdGVyIGEsLmZvb3RlciBhe2NvbG9yOnZhcigtLWdkKSFpbXBvcnRhbnR9CkBtZWRpYShtYXgtd2lkdGg6NzY4cHgpey5jZ2hnLXNlY3Rpb257cGFkZGluZy10b3A6NDZweCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206NDZweCFpbXBvcnRhbnR9LmNnaGctd2VsY29tZSBoMSwuY2doZy13ZWxjb21lIGgye2ZvbnQtc2l6ZTpjbGFtcCgzNHB4LDEwdncsNDhweCkhaW1wb3J0YW50fS5jZ2hnLXBvbGljeS1zdXBwb3J0e3BhZGRpbmc6MTVweH19Cg==").decode()
js=base64.b64decode("Ci8qIENHSEdfT0xEX1NUUlVDVFVSRV9NT0RFUk5fVUlfVjExICovCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGZ1bmN0aW9uKCl7CiBjb25zdCB0eHQ9ZT0+KGUmJihlLmlubmVyVGV4dHx8ZS50ZXh0Q29udGVudCl8fCcnKS5yZXBsYWNlKC9ccysvZywnICcpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOwogY29uc3Qgc2VjdGlvbkZvcj1lPT5lPyhlLmNsb3Nlc3QoJ3NlY3Rpb24nKXx8ZS5jbG9zZXN0KCcuc2VjdGlvbicpfHxlLmNsb3Nlc3QoJy5jb250YWluZXItZmx1aWQnKXx8KGUuY2xvc2VzdCgnLmNvbnRhaW5lcicpP2UuY2xvc2VzdCgnLmNvbnRhaW5lcicpLnBhcmVudEVsZW1lbnQ6bnVsbCl8fGUucGFyZW50RWxlbWVudCk6bnVsbDsKIGZ1bmN0aW9uIG1hcmsobmVlZGxlcyxjbHMpe2NvbnN0IGg9Wy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gxLGgyLGgzLGg0JyldLmZpbmQoZT0+bmVlZGxlcy5zb21lKG49PnR4dChlKS5pbmNsdWRlcyhuKSkpO2NvbnN0IHM9c2VjdGlvbkZvcihoKTtpZihzKXMuY2xhc3NMaXN0LmFkZCgnY2doZy1zZWN0aW9uJyxjbHMpO3JldHVybiBzO30KIG1hcmsoWyd3ZWxjb21lJywn4Kq44KuN4Kq14Kq+4KqX4KqkJ10sJ2NnaGctd2VsY29tZScpO21hcmsoWydvdXIgbWlzc2lvbicsJ+CqheCqruCqvuCqsOCrgeCqgiDgqq7gqr/gqrbgqqgnXSwnY2doZy1taXNzaW9uJyk7bWFyayhbJ2Fib3V0IHVzJywn4KqF4Kqu4Kq+4Kqw4Kq+IOCqteCqv+CqtuCrhyddLCdjZ2hnLWFib3V0Jyk7CiBjb25zdCBjb250YWN0PW1hcmsoWydjb250YWN0IHVzJywn4KqF4Kqu4Kq+4Kqw4KuLIOCquOCqguCqquCqsOCrjeCqlSddLCdjZ2hnLWNvbnRhY3QnKTttYXJrKFsnc29mdHdhcmUgdXNlZCddLCdjZ2hnLXNvZnR3YXJlJyk7bWFyayhbJ21hbnVhbHMnLCdtYW51YWwgZG93bmxvYWRzJ10sJ2NnaGctbWFudWFscycpOwogY29uc3QgcHJpdmFjeT1tYXJrKFsncHJpdmFjeSBwb2xpY3knLCfgqpfgq4vgqqrgqqjgq4Dgqq/gqqTgqr4g4Kqo4KuA4Kqk4Kq/J10sJ2NnaGctcHJpdmFjeScpO2NvbnN0IHRlcm1zPW1hcmsoWyd0ZXJtcyAmIGNvbmRpdGlvbnMnLCd0ZXJtcyBhbmQgY29uZGl0aW9ucycsJ+CqqOCqv+Cqr+CqruCriyDgqoXgqqjgq4cg4Kq24Kqw4Kqk4KuLJ10sJ2NnaGctdGVybXMnKTsKIGNvbnN0IGRlbGV0aW9uPW1hcmsoWydkYXRhIGRlbGV0aW9uIHBvbGljeScsJ+CqoeCrh+Cqn+CqviDgqpXgqr7gqqLgq4AnXSwnY2doZy1kYXRhLWRlbGV0ZScpOwogZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYScpLmZvckVhY2goYT0+e2NvbnN0IHQ9dHh0KGEpO2lmKHQuaW5jbHVkZXMoJ2xvZ2luIHBvcnRhbCcpfHx0LmluY2x1ZGVzKCdvZmZpY2VyIGxvZ2luJyl8fHQ9PT0nbG9naW4nKXthLnNldEF0dHJpYnV0ZSgnaHJlZicsJy4uL29mZmljZXIvbG9naW4nKTthLmNsYXNzTGlzdC5hZGQoJ2NnaGctbG9naW4tbGluaycpO319KTsKIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXJkLC5taXNzaW9uLWNhcmQsLmZlYXR1cmUtY2FyZCwubGVhZGVyLWNhcmQsLnRlYW0tY2FyZCwuc2VydmljZS1jYXJkJykuZm9yRWFjaChjPT5jLmNsYXNzTGlzdC5hZGQoJ2NnaGctY2FyZCcpKTsKIGNvbnN0IGxlYWRlcnM9Wyfgqrbgq43gqrDgq4Ag4KqF4Kqu4Kq/4KqkJywn4Kq24KuN4Kqw4KuAIOCqreCrgeCqquCrh+CqqOCrjeCqpuCrjeCqsCcsJ+CqtuCrjeCqsOCrgCDgqrngqrDgq43gqrcnLCfgqrbgq43gqrDgq4Ag4KqV4Kqu4Kqy4KuH4Kq2Jywn4Kq24KuN4Kqw4KuAIOCquOCqguCqnOCrgOCqtScsJ+CqoeCriS4g4KqP4Kq4LiDgqqrgq4AuJywnYW1pdCBzaGFoJywnYmh1cGVuZHJhIHBhdGVsJywnaGFyc2ggc2FuZ2hhdmknLCdrYW1sZXNoIHBhdGVsJywnc2Fuaml2IGt1bWFyJ107CiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdoMyxoNCxoNScpLmZvckVhY2goaD0+e2NvbnN0IHQ9dHh0KGgpO2lmKGxlYWRlcnMuc29tZShuPT50LmluY2x1ZGVzKG4udG9Mb3dlckNhc2UoKSkpKXtjb25zdCBjPWguY2xvc2VzdCgnLmNhcmQnKXx8aC5jbG9zZXN0KCdbY2xhc3MqPSJjb2wtIl0nKXx8aC5wYXJlbnRFbGVtZW50O2lmKGMpYy5jbGFzc0xpc3QuYWRkKCdjZ2hnLWNhcmQnLCdjZ2hnLWxlYWRlci1jYXJkJyk7fX0pOwogY29uc3Qgd2Fsa2VyPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQuYm9keSxOb2RlRmlsdGVyLlNIT1dfVEVYVCk7Y29uc3Qgbm9kZXM9W107d2hpbGUod2Fsa2VyLm5leHROb2RlKCkpbm9kZXMucHVzaCh3YWxrZXIuY3VycmVudE5vZGUpO25vZGVzLmZvckVhY2gobj0+e24ubm9kZVZhbHVlPW4ubm9kZVZhbHVlLnJlcGxhY2UoL1wrOTEtMTIzNDUtNjc4OTAvZywnKzkxIDkwMTY0NjU5MDEnKS5yZXBsYWNlKC9cKzkxIDEyMzQ1LTY3ODkwL2csJys5MSA5MDE2NDY1OTAxJyk7fSk7CiBjb25zdCBzdXBwb3J0PWA8ZGl2IGNsYXNzPSJjZ2hnLXBvbGljeS1zdXBwb3J0Ij48c3Ryb25nPlRlY2huaWNhbCBTdXBwb3J0ICYgUGxhdGZvcm0gTWFpbnRlbmFuY2U8L3N0cm9uZz48c3Bhbj5QYXJzaHdhIFBhZG1lIFNvbHV0aW9ucyBQcml2YXRlIExpbWl0ZWQ8L3NwYW4+PHNwYW4+U3VwcG9ydCBDb250YWN0OiA8YSBocmVmPSJ0ZWw6KzkxOTAxNjQ2NTkwMSI+KzkxIDkwMTY0NjU5MDE8L2E+PC9zcGFuPjwvZGl2PmA7CiBjb25zdCBhZGQ9dD0+e2lmKHQmJiF0LnF1ZXJ5U2VsZWN0b3IoJy5jZ2hnLXBvbGljeS1zdXBwb3J0JykpdC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsc3VwcG9ydCl9OwogYWRkKGNvbnRhY3QpO2FkZChwcml2YWN5KTthZGQodGVybXMpO2FkZChkZWxldGlvbik7Cn0pOwo=").decode()
font_links='<link rel="preconnect" href="https://fonts.googleapis.com">\n<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>\n<link href="https://fonts.googleapis.com/css2?family=Anek+Gujarati:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">'
style_tag='<style id="cghg-modern-old-structure-v11">\n'+css+'\n</style>'
script_tag='<script id="cghg-modern-old-structure-js-v11">\n'+js+'\n</script>'
if re.search(r'</head\s*>',html,flags=re.I):
    html=re.sub(r'</head\s*>',font_links+'\n'+style_tag+'\n</head>',html,count=1,flags=re.I)
else:
    html=font_links+'\n'+style_tag+'\n'+html
if re.search(r'</body\s*>',html,flags=re.I):
    html=re.sub(r'</body\s*>',script_tag+'\n</body>',html,count=1,flags=re.I)
else:
    html+='\n'+script_tag
html=html.replace('+91-12345-67890','+91 9016465901').replace('+91 12345-67890','+91 9016465901')
blade='@verbatim\n<!-- CGHG_OLD_STRUCTURE_MODERN_UI_V11 -->\n'+html+'\n@endverbatim\n'
view.parent.mkdir(parents=True,exist_ok=True)
view.write_text(blade)
print("VIEW_WRITTEN="+str(view))
print("VIEW_BYTES="+str(view.stat().st_size))
PY

say "6/8 OWNERSHIP + VALIDATION"
chown -R "$OWNER" resources/views/website "$APP/public/assets/website-old" "$PREVIEW/assets/website-old" 2>/dev/null || true
chmod 644 "$VIEW"
grep -q "CGHG_OLD_STRUCTURE_MODERN_UI_V11" "$VIEW"
grep -q "Parshwa Padme Solutions Private Limited" "$VIEW"
grep -q "9016465901" "$VIEW"
grep -q "Anek+Gujarati" "$VIEW"
"$PHP82" -l routes/web.php

say "7/8 LARAVEL CACHE + ROUTE"
runuser -u cghggujarat -- env HOME=/home/cghggujarat "$PHP82" artisan optimize:clear
runuser -u cghggujarat -- env HOME=/home/cghggujarat "$PHP82" artisan view:cache
runuser -u cghggujarat -- env HOME=/home/cghggujarat "$PHP82" artisan route:list --path=website | head -100

say "8/8 RESULT"
echo "OLD_STRUCTURE_AND_FUNCTIONALITY=KEPT"
echo "MODERN_LIGHT_UI=INSTALLED"
echo "WHITE_ORANGE_GREEN=OK"
echo "ANEK_GUJARATI=OK"
echo "PRIVACY_TERMS_SUPPORT_COMPANY=Parshwa Padme Solutions Private Limited"
echo "SUPPORT_CONTACT=+91 9016465901"
echo "OFFICER_LOGIN_TARGET=../officer/login"
echo "CURRENT_OFFICER_AUTH_DASHBOARDS=UNTOUCHED"
echo
echo "PREVIEW=https://cghggujarat.in/new/portalarea-laravel-preview/website"
echo "BACKUP=$BACKUP"
echo "ROLLBACK=bash $BACKUP/ROLLBACK.sh"
echo
echo "CGHG OLD STRUCTURE MODERN UI V11 INSTALLED"
