fixing up the "is setup" check in the installer
[gwvp.git] / gwvplib / gwvpuseradmin.php
index af44eb6..abe586e 100644 (file)
@@ -11,22 +11,644 @@ function gwvp_UserAdminCallMe()
 {
        if(isset($_REQUEST["q"])) {
                $query = $_REQUEST["q"];
-               if($query == "admin/users") return "gwvp_UserAdminPage";
+               $qspl = explode("/", $query);
+               if(isset($qspl[0]) && isset($qspl[1])) {
+                       if($qspl[0] == "admin" && $qspl[1] == "users") {
+                               if(isset($qspl[2])) {
+                                       switch($qspl[2]) {
+                                               case "adduser":
+                                                       return "gwvp_AddUserPage";
+                                                       break;
+                                               case "groupmember":
+                                                       return "gwvp_groupMemberChange";
+                                                       break;
+                                               case "addgroup":
+                                                       return "gwvp_AddGroupPage";
+                                                       break;
+                                               case "modify":
+                                                       return "gwvp_ModifyUserPage";
+                                                       break;
+                                               case "modifygroup":
+                                                       return "gwvp_ModifyGroupPage";
+                                                       break;
+                                               default:
+                                                       return "gwvp_UserAdminPage";
+                                       }                                       
+                               } else {
+                                       return "gwvp_UserAdminPage";
+                               }
+                       }
+               } 
                else return false;
        }
        
        return false;
 }
 
+function gwvp_AddUserPage()
+{
+       global $BASE_URL;
+       
+       $email = $_REQUEST["email"];
+       $fullname = $_REQUEST["fullname"];
+       $pass1 = $_REQUEST["pass1"];
+       $pass2 = $_REQUEST["pass2"];
+       $username = $_REQUEST["username"];
+       $desc = $_REQUEST["desc"];
+       $sendvalid = isset($_REQUEST["sendvalidation"]);
+       
+       // now for some validation
+       $sendback = false;
+       $message = "";
+       if(!gwvp_checkEmail($email)) {
+               $sendback = true;
+               $message .= "EMail address invalid. ";
+       }
+       
+       // function gwvp_getUser($username=null, $email=null, $id=null)
+       if(gwvp_getUser(null, $email, null)!=null) {
+               $staremail = true;
+               $sendback = true;
+               $message .= "EMail address already registered. ";
+       }
+       
+       if(gwvp_getUser($username)!= null) {
+               $starusername = true;
+               $sendback = true;
+               $message .= "Username already exists. ";
+       }
+       
+       if($pass1 != $pass2) {
+               $starpass = true;
+               $sendback = true;
+               $message .= "Passwords dont match. ";
+       }
+       
+       if($pass1 == "" && $pass2 == "" && !$sendvalid) {
+               $starpass = true;
+               $sendback = true;
+               $message .= "Password was blank. ";
+       }
+       
+       // otherwise, its all good, proceed with user creation
+       if($sendback) {
+               $_SESSION["sendback_owner"] = "users";
+               $sb["email"] = $email;
+               if($staremail) $sb["emailstar"] = true;
+               $sb["fullname"] = $fullname;
+               $sb["username"] = $username;
+               if($starusername) $sb["usernamestar"] = true;
+               $sb["desc"] = $desc;
+               if($starpass) $sb["passwordstar"] = true;
+               
+               $_SESSION["sendback"] = true;
+               $_SESSION["sendback_data"] = base64_encode(serialize($sb));
+               gwvp_SendMessage("error", "$message");
+               header("Location: $BASE_URL/admin/users");
+               return;
+       }
+       
+       // TODO: we need to do alot of checking here - that can come later
+       if(gwvp_createUser($email, $fullname, $pass1, $username, $desc, 0)) {
+               gwvp_SendMessage("info", "user $username, $fullname ($email) created");
+               header("Location: $BASE_URL/admin/users");
+               return;
+       } else {
+               gwvp_SendMessage("error", "error creating user for some unknown reason");
+               header("Location: $BASE_URL/admin/users");
+               return;
+       }
+
+       
+       /*
+               echo "<tr><td>EMail</td><td><input type=\"text\" name=\"email\"></td>";
+               echo "<td>Full Name</td><td><input type=\"text\" name=\"fullname\"></td></tr>";
+               echo "<tr><td>Password</td><td><input type=\"text\" name=\"pass1\"></td>";
+               echo "<td>Password Confirm</td><td><input type=\"text\" name=\"pass2\"></td></tr>";
+               echo "<tr><td>Username</td><td><input type=\"text\" name=\"username\"></td>";
+               echo "<td>Description</td><td><input type=\"text\" name=\"desc\"></td></tr>";
+               */
+       
+}
+
+function gwvp_AddGroupPage()
+{
+       /*
+        *              echo "<tr><td>Group Name</td><td><input type=\"text\" name=\"groupname\"><td></tr>";
+               echo "<tr><td>Admin Group?</td><td><input type=\"checkbox\" name=\"admingroup\" class=\"mycheckbox\"></td></tr>";
+               echo "<tr><td>Owner</td><td><div><select class=\"myselect\" name=\"groupowner\">";
+
+        */
+       global $BASE_URL;
+       
+       /*
+        *                              $presetname = " value=\"".$data["groupname"]."\"";
+                               $presetdesc = " value=\"".$data["groupdesc"]."\"";
+                               $presetgroupadmin = " ".$data["admingroup"]."\"";
+                               $presetowner = " value=\"".$data["groupowner"]."\"";
+
+        */
+       
+       $gname = $_REQUEST["groupname"];
+       $isadmin = isset($_REQUEST["admingroup"]);
+       $gdesc = $_REQUEST["groupdesc"];
+       $owner = $_REQUEST["groupowner"];
+       
+       if(gwvp_getGroup(null, $gname)) {
+               $_SESSION["sendback_owner"] = "groups";
+               $_SESSION["sendback"] = true;
+               
+               $data["groupname"] = $gname;
+               $data["groupdesc"] = $gdesc;
+               $data["groupowner"] = $owner;
+               if($isadmin) $data["admingroup"] = "checked";
+               else $data["admingroup"] = "";
+               $data["groupnamestar"] = true;
+               
+               gwvp_SendMessage("error", "Group name in use");
+               
+               $_SESSION["sendback_data"] = base64_encode(serialize($data));
+               
+               header("Location: $BASE_URL/admin/users");
+               return;
+       }
+       
+       // gwvp_createGroup($group_name, $is_admin, $owner_id)
+       gwvp_createGroup("$gname", $gdesc, $isadmin, $owner);
+       // we also need to add the owner to the group
+       gwvp_addGroupMember(gwvp_getUserName($owner), $gname);
+       
+       
+       header("Location: $BASE_URL/admin/users");
+       return;
+       
+}
+
 function gwvp_UserAdminPage()
 {
        gwvp_goMainPage("gwvp_UserAdminPageBody");
 }
 
+function gwvp_ModifyUserPage()
+{
+       gwvp_goMainPage("gwvp_ModifyUserPageBody");
+}
+
+function gwvp_ModifyGroupPage()
+{
+       gwvp_goMainPage("gwvp_ModifyGroupPageBody");
+}
+
+function gwvp_ModifyUserPageBody()
+{
+       //error_log("modify user body - coming in");
+       if(!gwvp_CheckAuthLevel("admin")) {
+               gwvp_AuthNoPermsBody();
+               return;
+       }
+       
+       
+       $uid = -1;
+       if(isset($_REQUEST["q"])) {
+               $query = $_REQUEST["q"];
+               $qspl = explode("/", $query);
+               $uid = $qspl[3];
+       }
+       
+       echo "modify user $uid";
+}
+
+function gwvp_groupMemberChange()
+{
+       global $LOGIN_TYPE, $BASE_URL;
+       
+       $gid = -1;
+       
+       if(isset($_REQUEST["q"])) {
+               $query = $_REQUEST["q"];
+               $qspl = explode("/", $query);
+               $gid = $qspl[3];
+       }
+       error_log("into groupmemberchange with $gid");
+       if($gid!= -1) {
+               
+       }
+       
+       if(isset($_REQUEST["add"])) {
+               error_log("$gid add set to ".$_REQUEST["add"]);
+               // this is an add op
+               if(isset($_REQUEST["membersout"])) {
+                       foreach($_REQUEST["membersout"] as $uid) {
+                               error_log("would add $uid from $gid");
+                               gwvp_addGroupMemberByID($uid, $gid);
+                               
+                       }
+               }
+       }
+       if(isset($_REQUEST["remove"])) {
+               error_log("$gid remove set to ".$_REQUEST["remove"]);
+               // this is a remove op
+               if(isset($_REQUEST["membersin"])) {
+                       foreach($_REQUEST["membersin"] as $uid) {
+                               error_log("would remote $uid from $gid");
+                               gwvp_deleteGroupMemberByID($uid, $gid);
+                       }
+               }
+       }
+       
+       error_log("redirect to $BASE_URL/admin/users/modifygroup/$gid");
+       header("Location: $BASE_URL/admin/users/modifygroup/$gid");
+       //gwvp_goMainPage("gwvp_ModifyGroupPageBody");
+       
+       return;
+}
+
+function gwvp_ModifyGroupPageBody()
+{
+       global $LOGIN_TYPE, $BASE_URL;
+       
+       $gid = -1;
+       if(isset($_REQUEST["q"])) {
+               $query = $_REQUEST["q"];
+               $qspl = explode("/", $query);
+               $gid = $qspl[3];
+       }
+       
+       $users = gwvp_getUsers();
+       
+       $ginfo = gwvp_getGroup($gid);
+       $groupname = $ginfo["name"];
+       $groupdesc = $ginfo["description"];
+       if($ginfo["isadmin"]) $admin = "checked";
+       else $admin = "";
+       
+       echo "<h2>Modify Group - $groupname</h2>";
+       echo "<form method=\"post\" action=\"$BASE_URL/admin/users/groupmodify/$gid\">";
+       echo "<table>";
+       echo "<tr><td>Description</td><td><input type=\"text\" name=\"groupdesc\" value=\"$groupdesc\"></td></tr>";
+       echo "<tr><td>Admin</td><td><input type=\"checkbox\" name=\"is_admin\" $admin></td></tr>";
+       echo "<tr><td><input type=\"submit\" name=\"change\" value=\"Change\"></td></tr>";
+       
+       echo "</table>";
+       echo "</form>";
+       
+       echo "<h3>Group Membership</h3>";
+       echo "<form method=\"post\" action=\"$BASE_URL/admin/users/groupmember/$gid\">";
+       echo "<table border=\"1\"><tr><th>Members</th><th></th><th>All Users</th></tr>";
+       
+       echo "<tr><td>";
+       
+       
+       // members
+       echo "<select name=\"membersin[]\" size=\"20\" multiple=\"true\">";
+       foreach($users as $u_users) {
+               $uid = $u_users["id"];
+               $email = $u_users["email"];
+               $username = $u_users["username"];
+               $fullname = $u_users["fullname"];
+               if(gwvp_IsGroupMember($email, $groupname)) {
+                       echo "<option value=\"$uid\">$username, $fullname ($email)</option>";
+               }
+               
+
+       }
+       
+       echo "</select>";
+       
+       
+       echo "</td><td>";
+       
+       // move buttons
+       echo "<input type=\"submit\" name=\"add\" value=\"<<\"><br>";
+       echo "<input type=\"submit\" name=\"remove\" value=\">>\"><br>";
+
+       
+       
+       echo "</td><td>";
+       
+       
+       // all users
+       echo "<select name=\"membersout[]\" size=\"20\" multiple=\"true\">";
+       foreach($users as $u_users) {
+               $uid = $u_users["id"];
+               $email = $u_users["email"];
+               $username = $u_users["username"];
+               $fullname = $u_users["fullname"];
+               if(!gwvp_IsGroupMember($email, $groupname)) {
+                       echo "<option value=\"$uid\">$username, $fullname ($email)</option>";
+               }
+       }
+       echo "</select>";
+       
+       
+       
+       echo "</td></tr></table>";
+       echo "</form>";
+       
+       
+       
+       
+       
+       return;
+}
 
 function gwvp_UserAdminPageBody()
 {
-       echo "I am a repo admin page body";
+       global $LOGIN_TYPE, $BASE_URL;
+       
+       $groups = gwvp_getGroups();
+       $users = gwvp_getUsers();
+       
+       echo "<h2>Users and Groups</h2>";
+       echo "On this page you can manage users, groups, group membership and update your profile<br>";
+       echo "<table>";
+       
+       echo "<tr><td colspan=\"2\"><hr></td></tr>";
+       
+       
+       // Header part of table
+       // user self-management bit
+       if($LOGIN_TYPE != "anon") {
+               echo "<tr><td valign=\"top\"><h3>My Profile</h3></td><td><h3>My Groups</h3></td></tr>";
+               
+               echo "<tr>";
+               // user profile bit
+               echo "<td valign=\"top\">";
+               echo "User profile bits go here";
+               echo "</td>";
+               
+               // now the group bit for the user
+               echo "<td valign=\"top\">";
+               echo "User owned groups, and groups their a member of go here";
+               echo "</td>";
+               echo "</tr>";
+               
+               echo "<tr><td colspan=\"2\"><hr></td></tr>";
+       }
+       
+       // admin only bit
+       if($LOGIN_TYPE == "admin") {
+               $data = null;
+               
+               $staremail = "";
+               $starpass = "";
+               $starusername = "";
+               $presetemail = "";
+               $presetfullname = "";
+               $presetdesc = "";
+               $presetusername = "";
+               
+               if(isset($_SESSION["sendback_owner"])) {
+                       if($_SESSION["sendback_owner"] == "users") {
+                               /*
+                                *              $sb["email"] = $email;
+                       if($staremail) $sb["emailstar"] = true;
+                       $sb["fullname"] = $fullname;
+                       $sb["username"] = $username;
+                       if($starusername) $sb["usernamestar"] = true;
+                       $sb["desc"] = $desc;
+                       if($starpass) $sb["passwordstar"] = true;
+       
+                                */
+                               $data = unserialize(base64_decode($_SESSION["sendback_data"]));
+                               
+                               $presetemail = " value=\"".$data["email"]."\"";
+                               $presetfullname = " value=\"".$data["fullname"]."\"";
+                               $presetusername = " value=\"".$data["username"]."\"";
+                               $presetdesc = " value=\"".$data["desc"]."\"";
+                               
+                               if(isset($data["emailstar"])) $staremail = "<img src=\"$BASE_URL/images/star.jpg\">";
+                               if(isset($data["usernamestar"])) $starusername = "<img src=\"$BASE_URL/images/star.jpg\">";
+                               if(isset($data["passwordstar"])) $starpass = "<img src=\"$BASE_URL/images/star.jpg\">";
+                               
+                               unset($_SESSION["sendback"]);
+                               unset($_SESSION["sendback_data"]);
+                               unset($_SESSION["sendback_owner"]);
+                       }
+               }
+               
+               echo "<tr><td valign=\"top\"><h3>Create User</h3></td><td><h3>Create Group</h3></td></tr>";
+               
+               // create user bit
+               echo "<tr><td valign=\"top\">";
+               
+               echo "<form method=\"post\" action=\"$BASE_URL/admin/users/adduser\">";
+               echo "<table>";
+               echo "<tr><td bgcolor=\"#eeffee\">EMail</td><td><input type=\"text\" name=\"email\"$presetemail>$staremail</td>";
+               echo "<td bgcolor=\"#eeffee\">Full Name</td><td><input type=\"text\" name=\"fullname\"$presetfullname></td></tr>";
+               echo "<tr><td bgcolor=\"#eeffee\">Password</td><td><input type=\"text\" name=\"pass1\">$starpass</td>";
+               echo "<td bgcolor=\"#eeffee\">Password Confirm</td><td><input type=\"text\" name=\"pass2\">$starpass</td></tr>";
+               echo "<tr><td bgcolor=\"#eeffee\">Username</td><td><input type=\"text\" name=\"username\"$presetusername>$starusername</td>";
+               echo "<td bgcolor=\"#eeffee\">Description</td><td><input type=\"text\" name=\"desc\"$presetdesc></td></tr>";
+               echo "<tr><td colspan=\"4\"><input type=\"checkbox\" name=\"sendvalidation\"> Set account locked and send validation email for initial passsword (not implemented)</td></tr>";
+               echo "<tr><td><input type=\"submit\" name=\"Create\" value=\"Create\" class=\"buttons\"></td></tr>";
+               echo "</table>";
+               echo "</form>";
+               
+               echo "</td><td valign=\"top\">";
+               
+               $stargroupname = "";
+               $presetname = "";
+               $presetgroupadmin = "";
+               $presetowner = -1;
+               
+               if(isset($_SESSION["sendback_owner"])) {
+                       if($_SESSION["sendback_owner"] == "groups") {
+                               /*
+                                *              $sb["email"] = $email;
+                       if($staremail) $sb["emailstar"] = true;
+                       $sb["fullname"] = $fullname;
+                       $sb["username"] = $username;
+                       if($starusername) $sb["usernamestar"] = true;
+                       $sb["desc"] = $desc;
+                       if($starpass) $sb["passwordstar"] = true;
+       
+                                */
+                               $data = unserialize(base64_decode($_SESSION["sendback_data"]));
+                               
+                               $presetname = " value=\"".$data["groupname"]."\"";
+                               $presetdesc = " value=\"".$data["groupdesc"]."\"";
+                               $presetgroupadmin = " ".$data["admingroup"];
+                               $presetowner = $data["groupowner"];
+                               
+                               if(isset($data["groupnamestar"])) $stargroupname = "<img src=\"$BASE_URL/images/star.jpg\">";
+                               
+                               unset($_SESSION["sendback"]);
+                               unset($_SESSION["sendback_data"]);
+                               unset($_SESSION["sendback_owner"]);
+                       }
+               }
+               
+               // Create group
+               echo "<form method=\"post\" action=\"$BASE_URL/admin/users/addgroup\">";
+               echo "<table>";
+               echo "<tr><td bgcolor=\"#ddddff\">Group Name</td><td bgcolor=\"#ddffdd\"><input type=\"text\" name=\"groupname\"$presetname>$stargroupname<td></tr>";
+               echo "<tr><td bgcolor=\"#ddddff\">Group Description</td><td bgcolor=\"#ddffdd\"><input type=\"text\" name=\"groupdesc\"$presetdesc><td></tr>";
+               echo "<tr><td bgcolor=\"#ddddff\">Admin Group?</td><td bgcolor=\"#ddffdd\"><input type=\"checkbox\" name=\"admingroup\" class=\"mycheckbox\"$presetgroupadmin></td></tr>";
+               echo "<tr><td bgcolor=\"#ddddff\">Owner</td><td bgcolor=\"#ddffdd\"><div><select class=\"myselect\" name=\"groupowner\">";
+               foreach($users as $u_users) {
+                       $uid = $u_users["id"];
+                       $email = $u_users["email"];
+                       $username = $u_users["username"];
+                       $fullname = $u_users["fullname"];
+                       if($presetowner == $uid) {
+                               echo "<option value=\"$uid\" selected>$username, $fullname ($email)</option>";
+                       } else {
+                               echo "<option value=\"$uid\">$username, $fullname ($email)</option>";
+                       }
+                       
+               }
+               echo "</select></div></td></tr>";
+               
+               
+               
+               echo "<tr><td><input type=\"submit\" name=\"Create\" value=\"Create\" class=\"buttons\"></td></tr>";
+               echo "</table>";
+               echo "</form>";
+               
+               
+               echo "</td></tr>";
+               echo "<tr><td colspan=\"2\"><hr></td></tr>";
+       }
+       
+       
+       
+       // TODO: whats seen here will depend GREATLY on setting in config - need to fix this later
+       // user list
+       echo "<tr><td valign=\"top\"><h3>Users</h3></td><td><h3>Groups</h3></td></tr>";
+       
+       echo "<tr><td>";
+       echo "<table border=\"1\">";
+       switch($LOGIN_TYPE) {
+               case "anon":
+                       echo "<tr><th>Username</th><th>Groups</th><th>Description</th></tr>";
+                       break;
+               case "admin":
+                       echo "<tr><th>EMail</th><th>Username</th><th>Full Name</th><th>Groups</th><th>Description</th><th>Admin?</th><th>Status</th><th>Modify</th></tr>";
+                       break;
+               case "user":
+                       echo "<tr><th>Username</th><th>Groups</th><th>Description</th></tr>";
+                       break;
+       }
+               
+       /*
+        *              $returns[$rn]["id"] = $u_res["users_id"];
+               $returns[$rn]["fullname"] = $u_res["user_full_name"];
+               $returns[$rn]["password"] = $u_res["user_password"];
+               $returns[$rn]["username"] = $u_res["user_username"];
+               $returns[$rn]["email"] = $u_res["user_email"];
+               $returns[$rn]["desc"] = $u_res["user_desc"];
+               $returns[$rn]["status"] = $u_res["user_status"];
+
+        */
+       foreach($users as $u_users) {
+               $userid = $u_users["id"];
+               $email = $u_users["email"];
+               $fullname = $u_users["fullname"];
+               $username = $u_users["username"];
+               $desc = $u_users["desc"];
+               $status = $u_users["status"];
+               if(gwvp_IsUserAdmin($email) == 1) {
+                       $globaladmin = "Yes";
+               } else {
+                       $globaladmin = "No";
+               }
+               
+               
+               // TODO: sort out group prints here
+               $ingroups = gwvp_getGroupsForUser($email);
+               
+               $ownedgroups = gwvp_getGroupsOwnedByUser($email);
+               //echo "vardump: ";
+               //var_dump($ownedgroups);
+               $ugroups = "";
+               if($ownedgroups == false) $ogroups = "-";
+               else {
+                       foreach($ownedgroups as $gr_u) {
+                               $ugroups .= "<font color=\"#3333ff\">$gr_u</font><br>";
+                       }
+               }
+               trim($ugroups);
+               
+               
+               if($ingroups !== false) foreach($ingroups as $grname) {
+                       $isownedgroup = false;
+                       if($ownedgroups !== false) foreach($ownedgroups as $gr_u) {
+                               if($grname == $gr_u) $isownedgroup = true;
+                       }
+                       if(!$isownedgroup) $ugroups .= "$grname<br>";
+               }
+               trim($ugroups);
+               
+               if($ugroups == "") $ugroups = "-";
+               
+               switch($LOGIN_TYPE) {
+                       case "anon":
+                               echo "<tr><td>$username</td><td>$ugroups</td><td>$desc</td></tr>";
+                               break;
+                       case "admin":
+                               echo "<tr><td>$email</td><td>$username</td><td>$fullname</td><td>$ugroups</td><td>$desc</td>";
+                               echo "<td>$globaladmin</td><td>$status</td><td><a href=\"$BASE_URL/admin/users/modify/$userid\">Modify</a></td></tr>";
+                               break;
+                       case "user":
+                               echo "<tr><td>$username</td><td>$ugroups</td><td>$desc</td></tr>";
+                               break;
+               }
+               
+               
+       }
+       echo "</table>";
+       
+       echo "</td><td valign=\"top\">";
+       
+       // group part of table
+       
+       echo "<table border=\"1\">";
+       
+       switch($LOGIN_TYPE) {
+               case "anon":
+                       echo "<tr><th>Group Name</th><th>Owner</th></tr>";
+                       break;
+               case "admin":
+                       echo "<tr><th>Group Name</th><th>Owner</th><th>Admin Group?</th><th>Modify</th></tr>";
+                       break;
+               case "user":
+                       echo "<tr><th>Group Name</th><th>Owner</th><th>Admin Group?</th></tr>";
+                       break;
+       }
+       
+       foreach($groups as $u_groups) {
+               /*
+                *              $returns[$rn]["id"] = $u_res["groups_id"];
+               $returns[$rn]["name"] = $u_res["groups_name"];
+               if($u_res["groups_is_admin"]=="1") $return[$rn]["admin"] = true;
+               else $return[$rn]["admin"] = false;
+               $returns[$rn]["admin"] = $u_res["groups_is_admin"];
+               $returns[$rn]["ownerid"] = $u_res["groups_owner_id"];
+
+                */
+               $gname = $u_groups["name"];
+               $gid = $u_groups["id"];
+               $owner = gwvp_getUserEmail($u_groups["ownerid"]);
+               if($u_groups["admin"]) $gadmin = "Yes";
+               else $gadmin  = "No";
+
+               switch($LOGIN_TYPE) {
+                       case "anon":
+                               echo "<tr><td>$gname</td><td>$owner</td></tr>";
+                               break;
+                       case "admin":
+                               echo "<tr><td>$gname</td><td>$owner</td><td>$gadmin</td><td><a href=\"$BASE_URL/admin/users/modifygroup/$gid\">Modify</a></td></tr>";
+                               break;
+                       case "user":
+                               echo "<tr><td>$gname</td><td>$owner</td><td>$gadmin</td></tr>";
+                               break;
+               }
+               
+               
+       }
+       echo "</table>";
+       echo "</td></tr></table>";
 }