Japanese English

PHP 難読化コードの復元・デコード

Wordpress 等でのPHPのマルウェア・ウィルス・改ざんコードをデコードして難読化をオンラインで解除し、
元の読みやすいコードに戻し解読できます。

※すべての難読化コードを解除できるわけではございませんのでご理解とご了承をお願いいたします。

下記のコードを難読化解除しました

<?php ${"G\x4c\x4f\x42\x41\x4c\x53"}["yd\x79m\x69gc"]="\x63o\x70y\x5f\x72\x69\x67h\x74";${"\x47\x4c\x4f\x42A\x4c\x53"}["\x78e\x77\x6dq\x65\x62"]="\x69\x6d\x67\x5f\x75r\x6c";${"\x47L\x4f\x42\x41L\x53"}["\x63\x68\x6f\x6c\x63ii"]="u\x73\x72_\x73\x74\x61ff\x5f\x61d\x6di\x6e";${"\x47\x4cO\x42A\x4c\x53...



難読化されたPHPコード

<?php ${"G\x4c\x4f\x42\x41\x4c\x53"}["yd\x79m\x69gc"]="\x63o\x70y\x5f\x72\x69\x67h\x74";${"\x47\x4c\x4f\x42A\x4c\x53"}["\x78e\x77\x6dq\x65\x62"]="\x69\x6d\x67\x5f\x75r\x6c";${"\x47L\x4f\x42\x41L\x53"}["\x63\x68\x6f\x6c\x63ii"]="u\x73\x72_\x73\x74\x61ff\x5f\x61d\x6di\x6e";${"\x47\x4cO\x42A\x4c\x53"}["ft\x74\x77lbk\x63\x6ed\x64\x65"]="\x75\x73\x72\x5f\x73t\x61\x66f\x5f\x6e\x61\x6d\x65";${"\x47LO\x42A\x4c\x53"}["\x73\x67\x68\x69\x6b\x79\x69"]="\x64a\x74\x61\x31";${"\x47\x4c\x4fB\x41L\x53"}["\x66w\x69sq\x79x\x6b\x6c\x6f\x71"]="u\x73r_\x6c\x6f\x67\x69\x6e\x5f\x69\x64";${"G\x4c\x4f\x42\x41\x4c\x53"}["\x62e\x61\x6d\x71\x74\x6b\x75b\x6f"]="s\x61lo\x6e\x5fi\x64";${"GL\x4f\x42AL\x53"}["gwn\x73\x68\x76\x64\x70cq\x6e\x67"]="\x75\x73r\x5f\x73ta\x66f\x5f\x69\x64";${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x72g\x61\x72qxy\x66"]="\x66r\x61me\x5f\x6di\x6e";${"GL\x4fB\x41L\x53"}["\x6f\x78l\x67\x6eys"]="\x72\x6f\x77";${"\x47L\x4f\x42\x41LS"}["\x70w\x67\x78\x77m\x6c\x72ljr\x6f"]="\x73t\x6d\x74";${"\x47\x4cO\x42\x41\x4c\x53"}["\x6e\x65\x68\x78\x78\x77\x6a\x71\x7a\x79\x65"]="\x64\x62h";${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x78x\x6dxkmz\x64c\x77"]="\x76\x61\x6c\x75\x65";${"GL\x4f\x42\x41\x4c\x53"}["\x73\x79\x6f\x77n\x68\x63rr\x77\x73f"]="\x64\x62\x68";${"\x47\x4c\x4f\x42\x41L\x53"}["g\x6dy\x6cb\x6b\x6e\x6e\x66"]="\x70\x61\x72\x61";${"\x47\x4cOBA\x4cS"}["\x72\x65\x6b\x6e\x67\x61\x72h"]="f\x6f\x6cd\x65r\x5f\x75r\x6c";${"G\x4c\x4f\x42\x41\x4c\x53"}["\x69\x6cw\x6d\x67zp"]="\x73t\x72\x5fs\x61\x6co\x6e_i\x64";${"\x47\x4c\x4f\x42ALS"}["\x75\x70\x71\x69t\x76o\x6bz"]="l\x6f\x67\x69\x6eEr\x72\x6fr";session_start();require_once("\x63omm\x6fn/\x63\x6f\x6e\x66\x69\x67/\x44bMa\x6e\x61g\x65\x72.\x70\x68p");${"\x47\x4c\x4f\x42\x41\x4cS"}["todl\x72p"]="\x69m\x67\x5f\x75rl";$wlztcop="\x69m\x67\x5f\x75\x72l";$_SESSION["\x6co\x67\x69n"]="9";$_SESSION["s\x68\x6f\x70_i\x64"]="";${${"\x47L\x4f\x42\x41L\x53"}["up\x71i\x74\x76\x6fk\x7a"]}="";${$wlztcop}="";${${"G\x4cOB\x41\x4c\x53"}["\x69\x6c\x77mg\x7ap"]}="";${${"\x47\x4cO\x42A\x4c\x53"}["\x72\x65\x6b\x6e\x67\x61rh"]}=substr($_SERVER["SC\x52\x49PT_\x4eAM\x45"],0,(strripos($_SERVER["SCRI\x50T\x5fNA\x4dE"],"/")+1));if(${${"\x47L\x4fBA\x4c\x53"}["\x72\x65\x6b\x6ega\x72\x68"]}=="/"){${${"\x47\x4cO\x42\x41L\x53"}["\x72\x65\x6b\x6eg\x61\x72h"]}=null;}${${"G\x4c\x4fB\x41LS"}["g\x6d\x79l\x62kn\x6ef"]}=explode("/",str_replace(${${"\x47\x4c\x4f\x42A\x4cS"}["\x72\x65\x6bn\x67\x61\x72\x68"]},"",$_SERVER["R\x45\x51\x55EST_\x55\x52\x49"]));foreach(${${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x67\x6dy\x6c\x62\x6bn\x6e\x66"]} as${${"G\x4cOB\x41L\x53"}["\x78\x78\x6dxk\x6d\x7ad\x63w"]}){${"G\x4c\x4fB\x41\x4cS"}["\x72l\x68gs\x75n\x6a"]="\x76a\x6c\x75\x65";if(${${"G\x4c\x4f\x42A\x4cS"}["\x72lh\x67\x73u\x6e\x6a"]}!=null){${${"\x47\x4c\x4f\x42\x41L\x53"}["il\x77\x6d\x67\x7a\x70"]}="${value}";}else{$pzdlruoul="\x73t\x72\x5fs\x61l\x6fn_\x69\x64";${$pzdlruoul}="ba\x72mus\x65\x75m";}}try{$rvyhupl="\x64\x62h";${$rvyhupl}=conDb();${"\x47\x4cO\x42\x41\x4cS"}["\x76w\x6c\x66\x75\x61z\x6cj\x66\x63"]="\x73tr\x5f\x73a\x6con\x5f\x69\x64";$hgihlprfnyf="r\x6f\x77";if(${${"GL\x4f\x42\x41\x4cS"}["\x6e\x65h\x78\x78w\x6a\x71\x7a\x79\x65"]}==null){print("接続に失敗しました。<\x62r>");}else{}${${"\x47L\x4f\x42A\x4cS"}["\x70w\x67\x78w\x6d\x6c\x72\x6c\x6a\x72\x6f"]}=$dbh->prepare("se\x6ce\x63\x74 * \x66r\x6f\x6d \x6ds\x74_\x73\x61l\x6fn\x20\x77he\x72\x65\x20\x70a\x73s\x5f\x70h\x72a\x73\x65\x20= ?");$stmt->execute([${${"\x47\x4cO\x42A\x4cS"}["vwl\x66ua\x7a\x6cj\x66\x63"]}]);while(${$hgihlprfnyf}=$stmt->fetch(PDO::FETCH_ASSOC)){$ivvhnkqnpz="\x69m\x67\x5f\x75\x72\x6c";$kfhvsuggckmc="r\x6f\x77";$vorezh="\x63\x6f\x70\x79\x5fr\x69g\x68t";$cjeycspyc="\x72\x6f\x77";${$ivvhnkqnpz}="c\x6f\x6d\x6d\x6f\x6e/\x6co\x67\x6f\x5f\x69\x6dg/".${$cjeycspyc}["im\x61\x67e"];${$vorezh}=${$kfhvsuggckmc}["c\x6fpy_r\x69\x67\x68t"];$rlwlirpd="sal\x6f\x6e_\x69\x64";${$rlwlirpd}=${${"GLO\x42A\x4c\x53"}["\x6f\x78\x6c\x67ny\x73"]}["i\x64"];${${"\x47\x4c\x4f\x42\x41\x4cS"}["r\x67\x61\x72\x71\x78\x79\x66"]}=${${"G\x4c\x4fB\x41\x4c\x53"}["o\x78\x6c\x67\x6ey\x73"]}["frame_mi\x6e"];}}catch(PDOException$e){print("E\x72ror:".$e->getMessage());die();}${${"GL\x4f\x42\x41\x4cS"}["s\x79o\x77n\x68\x63rr\x77\x73f"]}=null;if(${${"\x47\x4cO\x42\x41\x4cS"}["\x74\x6fd\x6cr\x70"]}==""){header("\x4c\x6f\x63\x61t\x69o\x6e:\x75n\x69\x6ede\x78/\x34\x304.\x68t\x6dl");exit();}if(isset($_POST["in\x70_\x6eame"])){${"\x47\x4c\x4fBA\x4c\x53"}["ep\x69b\x6ayq\x73n"]="u\x73\x72\x5f\x6co\x67\x69n\x5fp\x61\x73\x73";$nmlriorxqi="\x75\x73\x72_\x73taff\x5f\x69d";${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x78\x73\x6f\x78\x79\x6av\x65h\x74s"]="u\x73r_lo\x67\x69n\x5f\x69\x64";${${"\x47\x4c\x4f\x42\x41\x4c\x53"}["x\x73\x6fx\x79\x6a\x76eht\x73"]}=$_POST["i\x6ep_\x6e\x61m\x65"];${${"\x47\x4cOB\x41\x4cS"}["\x65p\x69b\x6a\x79\x71sn"]}=$_POST["inp\x5f\x70a\x73\x73"];${${"G\x4c\x4f\x42\x41L\x53"}["\x67\x77ns\x68\x76\x64p\x63q\x6eg"]}="";try{$nkduwgfhej="\x64b\x68";${"\x47L\x4fBA\x4cS"}["s\x76t\x71\x78\x6d"]="\x75sr\x5f\x6c\x6fg\x69n\x5f\x70\x61\x73\x73";${"\x47\x4c\x4f\x42AL\x53"}["\x75\x61\x63\x66\x72\x65\x71\x69h\x70\x69s"]="\x73\x74m\x741";${$nkduwgfhej}=conDb();$pxubom="\x64\x61\x74a\x31";${${"\x47\x4c\x4f\x42\x41\x4c\x53"}["\x75\x61\x63f\x72eq\x69hp\x69\x73"]}=$dbh->query("S\x45L\x45\x43T\x20*\x20FR\x4fM\x20ms\x74\x5fs\x74\x61\x66f\x20\x57HE\x52E \x73a\x6con\x5fid =\x20".${${"\x47\x4c\x4f\x42\x41L\x53"}["\x62\x65\x61\x6d\x71t\x6b\x75\x62\x6f"]}." AND lo\x67i\x6e\x5f\x69d\x20=\x20\x22".${${"\x47LO\x42\x41\x4c\x53"}["\x66\x77\x69\x73\x71\x79\x78\x6bl\x6fq"]}."\"\x20\x41\x4e\x44\x20l\x6fg\x69\x6e_pa\x73\x73 =\x20\x22".${${"\x47\x4c\x4f\x42\x41\x4cS"}["svt\x71\x78m"]}."\" A\x4eD \x64i\x73pl\x61y=\x30");while(${$pxubom}=$stmt1->fetch(PDO::FETCH_ASSOC)){${"G\x4c\x4f\x42\x41\x4c\x53"}["\x78\x73\x63\x6d\x6b\x62\x75\x7ar"]="\x75\x73r_\x73\x68\x6fp\x5fid";$wuxzvnuytc="d\x61\x74a\x31";${"G\x4c\x4f\x42\x41L\x53"}["\x65f\x64n\x7a\x70\x6e\x69\x79\x64"]="\x75\x73\x72\x5fs\x74\x61\x66\x66\x5fre\x63ei\x70\x74";$xoqqsvotvih="u\x73r\x5fsta\x66\x66_\x69d";$tjqvbtic="d\x61\x74\x61\x31";${${"\x47\x4cOB\x41\x4c\x53"}["\x78\x73\x63m\x6b\x62\x75z\x72"]}=${${"G\x4c\x4f\x42\x41\x4cS"}["\x73\x67\x68\x69\x6by\x69"]}["sh\x6fp\x5f\x69d"];$odcgudygl="\x64\x61\x74\x61\x31";${$xoqqsvotvih}=${$wuxzvnuytc}["\x69\x64"];${${"\x47L\x4fB\x41\x4c\x53"}["\x66\x74\x74w\x6c\x62k\x63\x6e\x64\x64\x65"]}=${$tjqvbtic}["n\x61me"];${${"\x47\x4c\x4f\x42AL\x53"}["cho\x6c\x63\x69\x69"]}=${${"GL\x4fBA\x4c\x53"}["\x73\x67h\x69ky\x69"]}["c\x6c\x61\x73s_\x61\x64m\x69\x6e"];${${"GL\x4f\x42A\x4c\x53"}["e\x66\x64\x6e\x7ap\x6ei\x79d"]}=${$odcgudygl}["\x63\x6ca\x73\x73_\x72e\x63e\x69\x70t"];}}catch(PDOException$e){print("\x45\x72\x72or:".$e->getMessage());die();}${${"\x47L\x4f\x42\x41\x4cS"}["n\x65h\x78\x78\x77\x6a\x71\x7a\x79\x65"]}=null;if(${$nmlriorxqi}==""){${${"\x47\x4c\x4f\x42A\x4c\x53"}["\x75\x70\x71\x69\x74v\x6f\x6b\x7a"]}="ユーザー名/パスワードが間違っています。";}else{${"\x47\x4c\x4f\x42\x41\x4cS"}["k\x68\x64\x6f\x63\x6ce\x6ff\x74"]="\x73\x74r_\x73\x61lo\x6e_\x69\x64";$xivjfpjl="\x66\x72\x61\x6d\x65_\x6d\x69\x6e";$qmyygcuw="\x73alo\x6e_id";$_SESSION["st\x72_s\x61lon_i\x64"]=${${"\x47L\x4fB\x41\x4cS"}["\x6b\x68\x64\x6f\x63\x6c\x65o\x66\x74"]};$_SESSION["\x69\x6d\x67_ur\x6c"]=${${"\x47\x4c\x4fB\x41\x4c\x53"}["\x78ewm\x71\x65b"]};$lexzvw="\x75s\x72_\x6c\x6fgin\x5f\x69\x64";$_SESSION["\x63opy_r\x69\x67h\x74"]=${${"\x47\x4c\x4f\x42\x41\x4cS"}["y\x64\x79\x6d\x69g\x63"]};$_SESSION["s\x61\x6c\x6f\x6e\x5f\x69d"]=${$qmyygcuw};${"\x47L\x4f\x42\x41LS"}["\x72\x75\x7a\x76\x67\x64"]="\x75\x73\x72_s\x74\x61\x66\x66\x5f\x72ece\x69\x70t";$_SESSION["\x66\x72\x61m\x65\x5f\x6d\x69\x6e"]=${$xivjfpjl};$_SESSION["u\x73\x72\x5f\x6cog\x69n_id"]=${$lexzvw};${"\x47\x4cOB\x41\x4c\x53"}["tr\x76\x79j\x6fl\x72q"]="u\x73r\x5f\x73\x68o\x70\x5f\x69\x64";${"\x47\x4c\x4fB\x41\x4cS"}["p\x70\x71\x65s\x77\x71\x6b"]="u\x73\x72\x5f\x73ta\x66\x66_\x61\x64\x6di\x6e";$_SESSION["\x75\x73r_\x73h\x6f\x70\x5fid"]=${${"GL\x4f\x42\x41\x4c\x53"}["t\x72v\x79\x6a\x6f\x6c\x72\x71"]};$_SESSION["\x75sr\x5fstaff_id"]=${${"\x47L\x4f\x42\x41\x4c\x53"}["\x67w\x6e\x73\x68v\x64\x70cq\x6e\x67"]};$_SESSION["\x75s\x72_\x73\x74\x61\x66\x66_\x6eam\x65"]=${${"G\x4cO\x42\x41\x4cS"}["\x66\x74\x74wl\x62\x6b\x63\x6e\x64\x64e"]};$_SESSION["us\x72\x5f\x73ta\x66f_ad\x6di\x6e"]=${${"G\x4c\x4f\x42\x41\x4c\x53"}["pp\x71e\x73\x77\x71k"]};$_SESSION["us\x72_st\x61\x66\x66_\x72\x65ceip\x74"]=${${"G\x4c\x4fB\x41\x4cS"}["\x72\x75\x7av\x67d"]};$_SESSION["ke\x6e_sho\x70_i\x64"]="";$_SESSION["log\x69\x6e"]="\x31";header("\x4co\x63\x61\x74\x69on:\x75\x73e\x72/s\x63h\x5f\x6f\x6e\x65\x64\x61y\x2e\x70\x68\x70");exit();}}
?>

デコード(難読化解除)されたコード

<?php

$GLOBALS["ydymigc"] = "copy_right";
$GLOBALS["xewmqeb"] = "img_url";
$GLOBALS["cholcii"] = "usr_staff_admin";
$GLOBALS["fttwlbkcndde"] = "usr_staff_name";
$GLOBALS["sghikyi"] = "data1";
$GLOBALS["fwisqyxkloq"] = "usr_login_id";
$GLOBALS["beamqtkubo"] = "salon_id";
$GLOBALS["gwnshvdpcqng"] = "usr_staff_id";
$GLOBALS["rgarqxyf"] = "frame_min";
$GLOBALS["oxlgnys"] = "row";
$GLOBALS["pwgxwmlrljro"] = "stmt";
$GLOBALS["nehxxwjqzye"] = "dbh";
$GLOBALS["xxmxkmzdcw"] = "value";
$GLOBALS["syownhcrrwsf"] = "dbh";
$GLOBALS["gmylbknnf"] = "para";
$GLOBALS["rekngarh"] = "folder_url";
$GLOBALS["ilwmgzp"] = "str_salon_id";
$GLOBALS["upqitvokz"] = "loginError";
session_start();
require_once "common/config/DbManager.php";
$GLOBALS["todlrp"] = "img_url";
$wlztcop = "img_url";
$_SESSION["login"] = "9";
$_SESSION["shop_id"] = "";
$loginError = "";
$img_url = "";
$str_salon_id = "";
$folder_url = substr($_SERVER["SCRIPT_NAME"], 0, strripos($_SERVER["SCRIPT_NAME"], "/") + 1);
if ($folder_url == "/") {
    $folder_url = null;
}
${$GLOBALS["gmylbknnf"]} = explode("/", str_replace(${$GLOBALS["rekngarh"]}, "", $_SERVER["REQUEST_URI"]));
foreach (${$GLOBALS["gmylbknnf"]} as ${$GLOBALS["xxmxkmzdcw"]}) {
    $GLOBALS["rlhgsunj"] = "value";
    if ($value != null) {
        ${$GLOBALS["ilwmgzp"]} = "{$value}";
    } else {
        $pzdlruoul = "str_salon_id";
        $str_salon_id = "barmuseum";
    }
}
try {
    $rvyhupl = "dbh";
    $dbh = conDb();
    $GLOBALS["vwlfuazljfc"] = "str_salon_id";
    $hgihlprfnyf = "row";
    if (${$GLOBALS["nehxxwjqzye"]} == null) {
        print "接続に失敗しました。<br>";
    } else {
    }
    ${$GLOBALS["pwgxwmlrljro"]} = $dbh->prepare("select * from mst_salon where pass_phrase = ?");
    $stmt->execute([${$GLOBALS["vwlfuazljfc"]}]);
    while (${$hgihlprfnyf} = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $ivvhnkqnpz = "img_url";
        $kfhvsuggckmc = "row";
        $vorezh = "copy_right";
        $cjeycspyc = "row";
        $img_url = "common/logo_img/" . $row["image"];
        $copy_right = $row["copy_right"];
        $rlwlirpd = "salon_id";
        $salon_id = ${$GLOBALS["oxlgnys"]}["id"];
        ${$GLOBALS["rgarqxyf"]} = ${$GLOBALS["oxlgnys"]}["frame_min"];
    }
} catch (PDOException $e) {
    print "Error:" . $e->getMessage();
    die;
}
${$GLOBALS["syownhcrrwsf"]} = null;
if (${$GLOBALS["todlrp"]} == "") {
    header("Location:unindex/404.html");
    exit;
}
if (isset($_POST["inp_name"])) {
    $GLOBALS["epibjyqsn"] = "usr_login_pass";
    $nmlriorxqi = "usr_staff_id";
    $GLOBALS["xsoxyjvehts"] = "usr_login_id";
    $usr_login_id = $_POST["inp_name"];
    $usr_login_pass = $_POST["inp_pass"];
    ${$GLOBALS["gwnshvdpcqng"]} = "";
    try {
        $nkduwgfhej = "dbh";
        $GLOBALS["svtqxm"] = "usr_login_pass";
        $GLOBALS["uacfreqihpis"] = "stmt1";
        $dbh = conDb();
        $pxubom = "data1";
        $stmt1 = $dbh->query("SELECT * FROM mst_staff WHERE salon_id = " . ${$GLOBALS["beamqtkubo"]} . " AND login_id = \"" . ${$GLOBALS["fwisqyxkloq"]} . "\" AND login_pass = \"" . $usr_login_pass . "\" AND display=0");
        while (${$pxubom} = $stmt1->fetch(PDO::FETCH_ASSOC)) {
            $GLOBALS["xscmkbuzr"] = "usr_shop_id";
            $wuxzvnuytc = "data1";
            $GLOBALS["efdnzpniyd"] = "usr_staff_receipt";
            $xoqqsvotvih = "usr_staff_id";
            $tjqvbtic = "data1";
            $usr_shop_id = ${$GLOBALS["sghikyi"]}["shop_id"];
            $odcgudygl = "data1";
            $usr_staff_id = $data1["id"];
            ${$GLOBALS["fttwlbkcndde"]} = $data1["name"];
            ${$GLOBALS["cholcii"]} = ${$GLOBALS["sghikyi"]}["class_admin"];
            ${$GLOBALS["efdnzpniyd"]} = ${$odcgudygl}["class_receipt"];
        }
    } catch (PDOException $e) {
        print "Error:" . $e->getMessage();
        die;
    }
    ${$GLOBALS["nehxxwjqzye"]} = null;
    if (${$nmlriorxqi} == "") {
        ${$GLOBALS["upqitvokz"]} = "ユーザー名/パスワードが間違っています。";
    } else {
        $GLOBALS["khdocleoft"] = "str_salon_id";
        $xivjfpjl = "frame_min";
        $qmyygcuw = "salon_id";
        $_SESSION["str_salon_id"] = $str_salon_id;
        $_SESSION["img_url"] = ${$GLOBALS["xewmqeb"]};
        $lexzvw = "usr_login_id";
        $_SESSION["copy_right"] = ${$GLOBALS["ydymigc"]};
        $_SESSION["salon_id"] = $salon_id;
        $GLOBALS["ruzvgd"] = "usr_staff_receipt";
        $_SESSION["frame_min"] = $frame_min;
        $_SESSION["usr_login_id"] = $usr_login_id;
        $GLOBALS["trvyjolrq"] = "usr_shop_id";
        $GLOBALS["ppqeswqk"] = "usr_staff_admin";
        $_SESSION["usr_shop_id"] = $usr_shop_id;
        $_SESSION["usr_staff_id"] = ${$GLOBALS["gwnshvdpcqng"]};
        $_SESSION["usr_staff_name"] = ${$GLOBALS["fttwlbkcndde"]};
        $_SESSION["usr_staff_admin"] = $usr_staff_admin;
        $_SESSION["usr_staff_receipt"] = $usr_staff_receipt;
        $_SESSION["ken_shop_id"] = "";
        $_SESSION["login"] = "1";
        header("Location:user/sch_oneday.php");
        exit;
    }
}


■【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]

■WordPress のマルウェア駆除、セキュリティー対策 カスタマイズや修正、引っ越し・復旧のご依頼承ります

(C)2019 ワードプレス ドクター All rights reserved.