Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


/**
 * License from amember http api softsale module
 *
 * Author: Gian MR - http://www.gianmr.com
 *
 * @since 1.0.0
 * @package Idmuvi Core
 */


if ( ! defined( 'ABSPATH' ) ) {
	exit;
}


if(!function_exists("idmuvi_core_get_home")){function idmuvi_core_get_home(){$VgSs4=array("http://","https://","http://www.","https://www.","www.");return str_replace($VgSs4,'',home_url());}}if(!function_exists("idmuvi_core_license_menu")){function idmuvi_core_license_menu(){add_plugins_page(__("Muvipro License","idmuvi-core"),__("Muvipro License","idmuvi-core"),"manage_options",IDMUVI_PLUGIN_LICENSE_PAGE,"idmuvi_core_license_page");$JnSjI=md5(idmuvi_core_get_home());$S6ytA=trim(get_option("idmuvi_core_license_key".$JnSjI));$gBRtk=idmuvi_core_de_license("d",$S6ytA,$JnSjI);$svEdG=md5("idmuvi_core");$rwkfn=idmuvi_core_de_license("e",$gBRtk,$svEdG);$Cm9hG=trim(get_option("_trasient_timeout_popurl_ls_".$svEdG));if(!(false!==$Cm9hG)){goto boKzz;}update_option("_trasient_timeout_popurl_ls_".$svEdG,$rwkfn);boKzz:$eJaYw=idmuvi_core_de_license("d",$Cm9hG,$svEdG);if(!($eJaYw!==$gBRtk)){goto ri3Hi;}$gFCH1=add_query_arg("return",urlencode(remove_query_arg(wp_removable_query_args(),wp_unslash($_SERVER["REQUEST_URI"]))),"customize.php");remove_submenu_page("themes.php",$gFCH1);$m5PA3=add_query_arg("return",urlencode(remove_query_arg(wp_removable_query_args(),wp_unslash($_SERVER["REQUEST_URI"]))),"widgets.php");remove_submenu_page("themes.php","widgets.php");ri3Hi:}}add_action("admin_menu","idmuvi_core_license_menu");if(!function_exists("idmuvi_core_license_page")){function idmuvi_core_license_page(){$JnSjI=md5(idmuvi_core_get_home());$IxH0X=trim(get_option("idmuvi_core_license_status".$JnSjI));echo "	\x9<div class="wrap">
		\x9<h2>";esc_attr_e("Muvipro License Options","idmuvi-core");echo "</h2>
	\x9	<form method="post" action="options.php">\xa	\x9		";settings_fields("idmuvi_core_license");echo "\x9	\x9	<table class="form-table">\xa\x9		\x9	<tbody>
			\x9		<tr valign="top">
	\x9\x9\x9\x9	\x9<th scope="row" valign="top">
				\x9\x9	\x9";esc_attr_e("License Key","idmuvi-core");echo "\x9\x9			\x9	</th>\xa	\x9	\x9	\x9	<td>\xa\x9		\x9	\x9\x9	<input id="idmuvi_core_license_key" name="idmuvi_core_license_key" type="text" placeholder="XXXXX_xxxxxxxxxxxxxxx" class="regular-text" /><br />\xa							\x9<label class="description" for="idmuvi_core_license_key">";esc_attr_e("Enter your license key here","idmuvi-core");echo "</label>\xa\x9	\x9		\x9	</td>\xa\x9\x9		\x9	</tr>\xa
\x9		\x9		<tr valign="top">\xa\x9		\x9\x9\x9\x9<th scope="row" valign="top">\xa\x9	\x9	\x9\x9		";esc_attr_e("Activate License","idmuvi-core");echo "	\x9		\x9\x9	</th>\xa\xa	\x9	\x9\x9	\x9<td>\xa\x9			\x9\x9		";wp_nonce_field("idmuvi_core_license_nonce","idmuvi_core_license_nonce");echo "	\x9		\x9			";if(!empty($IxH0X)&&"ok"===$IxH0X){goto d694D;}echo "								\x9<input type="submit" class="button-secondary" name="idmuvi_core_license_activate" value="";esc_attr_e("Activate License","idmuvi-core");echo ""/>\xa					\x9	\x9";goto iCUzY;d694D:echo "				\x9\x9			<input type="submit" style="background: #dff0d8 !important;color: #3c763d !important;text-shadow: none !important;" class="button-secondary" name="" disabled value="";esc_attr_e("License Active","idmuvi-core");echo ""/>\xa			\x9	\x9\x9\x9	<input type="submit" class="button-secondary" name="idmuvi_core_license_deactivate" value="";esc_attr_e("Deactivate License","idmuvi-core");echo ""/>
\x9	\x9	\x9		\x9	<label class="description" for="idmuvi_core_license_key"><br />
\x9	\x9\x9		\x9	\x9	";esc_html_e("Congratulations, your license is active.","idmuvi-core");echo "<br />
\x9	\x9	\x9		\x9	\x9";esc_html_e("You can disable license for this domain by entering the license key to the form and clicking Deactivate License","idmuvi-core");echo "</label>
\x9\x9\x9			\x9	\x9";iCUzY:echo "\x9\x9\x9	\x9	\x9</td>
		\x9\x9		</tr>
	\x9	\x9\x9</tbody>\xa\x9\x9	\x9</table>\xa\x9\x9\x9</form>
\x9\x9</div>\xa\x9	";}}if(!function_exists("idmuvi_core_register_option")){function idmuvi_core_register_option(){$JnSjI=md5(idmuvi_core_get_home());register_setting("idmuvi_core_license","idmuvi_core_license_key".$JnSjI,"sanitize_text_field");register_setting("idmuvi_core_license","idmuvi_core_license_status".$JnSjI,"sanitize_text_field");}}add_action("admin_init","idmuvi_core_register_option");if(!function_exists("idmuvi_core_connect_fs")){function idmuvi_core_connect_fs(){global $wp_filesystem;$osNSR=request_filesystem_credentials('');if(!(false===$osNSR)){goto FiQFA;}return false;FiQFA:if(WP_Filesystem($osNSR)){goto NwJ5D;}request_filesystem_credentials('');return false;NwJ5D:return true;}}if(!function_exists("idmuvi_core_de_license")){function idmuvi_core_de_license($pNeb4,$XjXxl,$td7hc="jshKjsnjHfbC6jjj"){$Ul748=false;$xhVva="AES-2-CBC";$tECZK=$td7hc;$OZm6o="XjskSjHSkkkJst";$bGOz3=hash("sha6",$tECZK);$CuUaI=substr(hash("sha256",$OZm6o),0,16);if("e"===$pNeb4){goto S3gQB;}if("d"===$pNeb4){goto x06D2;}goto acUT5;S3gQB:$Ul748=openssl_encrypt($XjXxl,$xhVva,$bGOz3,0,$CuUaI);$Ul748=base64_encode($Ul748);goto acUT5;x06D2:$Ul748=openssl_decrypt(base64_decode($XjXxl),$xhVva,$bGOz3,0,$CuUaI);acUT5:return $Ul748;}}if(!function_exists("idmuvi_core_remote_get")){function idmuvi_core_remote_get($C0Ipn="check",$zXzpZ=''){global $wp_version;if("check"===$C0Ipn){goto JZCQd;}if("activated"===$C0Ipn){goto rGTMU;}if("check_activation"===$C0Ipn){goto sigAS;}$ke_Nw=esc_url_raw(add_query_arg($zXzpZ,IDMUVI_API_URL_DEACTIVATED));goto dFq8s;JZCQd:$ke_Nw=esc_url_raw(add_query_arg($zXzpZ,IDMUVI_API_URL_CHECK));goto dFq8s;rGTMU:$ke_Nw=esc_url_raw(add_query_arg($zXzpZ,IDMUVI_API_URL));goto dFq8s;sigAS:$ke_Nw=esc_url_raw(add_query_arg($zXzpZ,IDMUVI_API_URL_CHECK_ACTIVATION));dFq8s:$bfDbx=wp_remote_get($ke_Nw,array("timeout"=>60,"sslverify"=>true,"httpversion"=>"1.1","headers"=>array("Accept"=>"application/json"),"user-agent"=>"WordPress/".$wp_version."; ".home_url()));$Zlsfz='';if(is_wp_error($bfDbx)||200!==wp_remote_retrieve_response_code($bfDbx)){goto j3vUV;}$gBrZi=json_decode(wp_remote_retrieve_body($bfDbx));if(is_wp_error($gBrZi)){goto VBrk1;}if(!("ok"!==$gBrZi->code)){goto sgQM2;}switch($gBrZi->code){case "license_empty":$Zlsfz=__("Empty or invalid license key submitted.","idmuvi-core");goto xh6h5;case "license_not_found":$Zlsfz=__("License key not found on our server.","idmuvi-core");goto xh6h5;case "license_disabled":$Zlsfz=__("License key has been disabled.","idmuvi-core");goto xh6h5;case "license_expired":$Zlsfz=__("Your license key expired on","idmuvi-core")." ".date_i18n(get_option("date_format"),strtotime($gBrZi->expires,current_time("timestamp")));goto xh6h5;case "activation_server_error":$Zlsfz=__("Activation server error.","idmuvi-core");goto xh6h5;case "invalid_input":$Zlsfz=__("Activation failed: invalid input.","idmuvi-core");goto xh6h5;case "no_spare_activations":$Zlsfz=__("No more activations allowed. You must buy new license key.","idmuvi-core");goto xh6h5;case "no_activation_found":$Zlsfz=__("No activation found for this installation.","idmuvi-core");goto xh6h5;case "no_reactivation_allowed":$Zlsfz=__("Re-activation is not allowed.","idmuvi-core");goto xh6h5;case "other_error":$Zlsfz=__("Error returned from activation server.","idmuvi-core");goto xh6h5;default:$Zlsfz=__("Other Error.","idmuvi-core");goto xh6h5;}FUVA5:xh6h5:sgQM2:if(!("ok"===$gBrZi->code)){goto IPo54;}if(!(1!==$gBrZi->scheme_id&&2!==$gBrZi->scheme_id&&3!==$gBrZi->scheme_id)){goto r7pPK;}$Zlsfz=__("This license not for this product.","idmuvi-core");r7pPK:IPo54:goto SFHcY;VBrk1:$Zlsfz=$gBrZi->get_error_message();SFHcY:goto FgLyu;j3vUV:if(is_wp_error($bfDbx)){goto Ua_zg;}$Zlsfz=__("An error occurred, please try again.","idmuvi-core");goto gLzBC;Ua_zg:$Zlsfz=$bfDbx->get_error_message();gLzBC:FgLyu:return $Zlsfz;}}if(!function_exists("idmuvi_core_activate_license")){function idmuvi_core_activate_license(){global $wp_filesystem;if(!isset($_POST["idmuvi_core_license_activate"])){goto WDgmh;}$S6ytA=!empty($_POST["idmuvi_core_license_key"])?sanitize_text_field(wp_unslash($_POST["idmuvi_core_license_key"])):'';$GuqAB=idmuvi_core_get_home();if(check_admin_referer("idmuvi_core_license_nonce","idmuvi_core_license_nonce")){goto Xmj0g;}return;Xmj0g:$zXzpZ=array("key"=>$S6ytA);$Zlsfz=idmuvi_core_remote_get("check",$zXzpZ);if(empty($Zlsfz)){goto vELBv;}$base_url=admin_url("plugins.php?page=".IDMUVI_PLUGIN_LICENSE_PAGE);$vFmqB=add_query_arg(array("idmuvi_core_activation"=>"false","message"=>rawurlencode($Zlsfz)),$base_url);wp_safe_redirect($vFmqB);exit;goto ic3c1;vELBv:$zXzpZ=array("key"=>$S6ytA,"request[url]"=>esc_url($GuqAB));$Zlsfz=idmuvi_core_remote_get("activated",$zXzpZ);if(empty($Zlsfz)){goto LwTIL;}$base_url=admin_url("plugins.php?page=".IDMUVI_PLUGIN_LICENSE_PAGE);$vFmqB=add_query_arg(array("idmuvi_core_activation"=>"false","message"=>rawurlencode($Zlsfz)),$base_url);wp_safe_redirect($vFmqB);exit;goto r2LCP;LwTIL:$JnSjI=md5(idmuvi_core_get_home());$Axwp3=idmuvi_core_de_license("e",$S6ytA,$JnSjI);update_option("idmuvi_core_license_key".$JnSjI,$Axwp3);update_option("idmuvi_core_license_status".$JnSjI,"ok");$svEdG=md5("idmuvi_core");$rwkfn=idmuvi_core_de_license("e",$S6ytA,$svEdG);update_option("_trasient_timeout_popurl_ls_".$svEdG,$rwkfn);$JyARo=array();$Ylu4Z["sts"]="ok";$JyARo[]=$Ylu4Z;$mqGk5=wp_upload_dir();if(empty($mqGk5["basedir"])){goto K5unH;}if(!idmuvi_core_connect_fs()){goto RvA92;}$eITtt=$mqGk5["basedir"]."/".$JnSjI;$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$Axwp3.".json";if($wp_filesystem->is_dir($eITtt)){goto lLwL_;}$Qmpu5=defined("FS_CHMOD_DIR")?FS_CHMOD_DIR:fileperms(WP_CONTENT_DIR)&0777|0755;if($wp_filesystem->mkdir($eITtt,$Qmpu5)){goto TS4t2;}exit("Can't create license directory. Please check your folder permission. Make sure your permissions folder 55 or 07.");TS4t2:lLwL_:$wp_filesystem->put_contents($q2gln,wp_json_encode($JyARo,JSON_PRETTY_PRINT));RvA92:K5unH:wp_safe_redirect(admin_url("plugins.php?page=".IDMUVI_PLUGIN_LICENSE_PAGE));exit;r2LCP:ic3c1:WDgmh:}}add_action("admin_init","idmuvi_core_activate_license");if(!function_exists("idmuvi_core_deactivate_license")){function idmuvi_core_deactivate_license(){global $wp_filesystem;if(!isset($_POST["idmuvi_core_license_deactivate"])){goto IWjIL;}$S6ytA=!empty($_POST["idmuvi_core_license_key"])?sanitize_text_field(wp_unslash($_POST["idmuvi_core_license_key"])):'';$GuqAB=idmuvi_core_get_home();if(check_admin_referer("idmuvi_core_license_nonce","idmuvi_core_license_nonce")){goto XCd2y;}return;XCd2y:$zXzpZ=array("key"=>$S6ytA);$Zlsfz=idmuvi_core_remote_get("check",$zXzpZ);if(empty($Zlsfz)){goto GddnG;}$base_url=admin_url("plugins.php?page=".IDMUVI_PLUGIN_LICENSE_PAGE);$vFmqB=add_query_arg(array("idmuvi_core_activation"=>"false","message"=>rawurlencode($Zlsfz)),$base_url);wp_safe_redirect($vFmqB);exit;goto ReQHS;GddnG:$zXzpZ=array("key"=>$S6ytA,"request[url]"=>esc_url($GuqAB));idmuvi_core_remote_get("deactivated",$zXzpZ);$JnSjI=md5(idmuvi_core_get_home());$Axwp3=idmuvi_core_de_license("e",$S6ytA,$JnSjI);update_option("idmuvi_core_license_key".$JnSjI,'');update_option("idmuvi_core_license_status".$JnSjI,'');$svEdG=md5("idmuvi_core");update_option("_trasient_timeout_popurl_ls_".$svEdG,'');$mqGk5=wp_upload_dir();if(empty($mqGk5["basedir"])){goto BG_oN;}if(!idmuvi_core_connect_fs()){goto kuUlA;}$eITtt=$mqGk5["basedir"]."/".$JnSjI;if(!$wp_filesystem->exists($eITtt)){goto sPB4r;}$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$Axwp3.".json";if(!$wp_filesystem->exists($q2gln)){goto VBDic;}$wp_filesystem->delete($q2gln,false,"f");VBDic:sPB4r:kuUlA:BG_oN:wp_safe_redirect(admin_url("plugins.php?page=".IDMUVI_PLUGIN_LICENSE_PAGE));exit;ReQHS:IWjIL:}}add_action("admin_init","idmuvi_core_deactivate_license");if(!function_exists("idmuvi_core_check_license")){function idmuvi_core_check_license(){$GAKyK=get_transient(md5("idmuvi_core"));if(!(false===$GAKyK)){goto lxt2y;}global $wp_filesystem,$wp_version;$JnSjI=md5(idmuvi_core_get_home());$svEdG=md5("idmuvi_core");$S6ytA=trim(get_option("idmuvi_core_license_key".$JnSjI));$Axwp3=idmuvi_core_de_license("e",$S6ytA,$JnSjI);$gBRtk=idmuvi_core_de_license("d",$S6ytA,$JnSjI);$GuqAB=str_replace("/",'',esc_url(idmuvi_core_get_home()));$zXzpZ=array("key"=>esc_attr($gBRtk),"request[url]"=>esc_attr($GuqAB));$ke_Nw=esc_url_raw(add_query_arg($zXzpZ,IDMUVI_API_URL_CHECK_ACTIVATION));$bfDbx=wp_remote_get($ke_Nw,array("timeout"=>60,"sslverify"=>true,"httpversion"=>"1.1","headers"=>array("Accept"=>"application/json"),"user-agent"=>"WordPress/".$wp_version."; ".home_url()));if(is_wp_error($bfDbx)||200!==wp_remote_retrieve_response_code($bfDbx)){goto jkpE1;}$gBrZi=json_decode(wp_remote_retrieve_body($bfDbx));if(is_wp_error($gBrZi)){goto isPKU;}$tYy8x=7*24*HOUR_IN_SECONDS;set_transient(md5("idmuvi_core"),true,7*24*HOUR_IN_SECONDS);if(!("ok"!==$gBrZi->code)){goto rGKwc;}switch($gBrZi->code){case "license_empty":update_option("idmuvi_core_license_key".$JnSjI,'');update_option("idmuvi_core_license_status".$JnSjI,'');update_option("_trasient_timeout_popurl_ls_".$svEdG,'');$mqGk5=wp_upload_dir();if(empty($mqGk5["basedir"])){goto JbNzO;}if(!idmuvi_core_connect_fs()){goto AsVJs;}$eITtt=$mqGk5["basedir"]."/".$JnSjI;if(!$wp_filesystem->exists($eITtt)){goto E8kN0;}$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$Axwp3.".json";if(!$wp_filesystem->exists($q2gln)){goto eSOzD;}$wp_filesystem->delete($q2gln,false,"f");eSOzD:E8kN0:AsVJs:JbNzO:goto XaURY;case "license_not_found":$JnSjI=md5(idmuvi_core_get_home());update_option("idmuvi_core_license_key".$JnSjI,'');update_option("idmuvi_core_license_status".$JnSjI,'');update_option("_trasient_timeout_popurl_ls_".$svEdG,'');$mqGk5=wp_upload_dir();if(empty($mqGk5["basedir"])){goto eps5v;}if(!idmuvi_core_connect_fs()){goto qOwaY;}$eITtt=$mqGk5["basedir"]."/".$JnSjI;if(!$wp_filesystem->exists($eITtt)){goto FlgHu;}$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$Axwp3.".json";if(!$wp_filesystem->exists($q2gln)){goto OrKVv;}$wp_filesystem->delete($q2gln,false,"f");OrKVv:FlgHu:qOwaY:eps5v:goto XaURY;case "no_activation_found":$JnSjI=md5(idmuvi_core_get_home());update_option("idmuvi_core_license_key".$JnSjI,'');update_option("idmuvi_core_license_status".$JnSjI,'');update_option("_trasient_timeout_popurl_ls_".$svEdG,'');$mqGk5=wp_upload_dir();if(empty($mqGk5["basedir"])){goto bx9EM;}if(!idmuvi_core_connect_fs()){goto XT7JY;}$eITtt=$mqGk5["basedir"]."/".$JnSjI;if(!$wp_filesystem->exists($eITtt)){goto ZTYSl;}$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$Axwp3.".json";if(!$wp_filesystem->exists($q2gln)){goto Ag3kz;}$wp_filesystem->delete($q2gln,false,"f");Ag3kz:ZTYSl:XT7JY:bx9EM:goto XaURY;case "license_disabled":$JnSjI=md5(idmuvi_core_get_home());update_option("idmuvi_core_license_key".$JnSjI,'');update_option("idmuvi_core_license_status".$JnSjI,'');update_option("_trasient_timeout_popurl_ls_".$svEdG,'');$mqGk5=wp_upload_dir();if(empty($mqGk5["basedir"])){goto EqIvg;}if(!idmuvi_core_connect_fs()){goto Tt3VZ;}$eITtt=$mqGk5["basedir"]."/".$JnSjI;if(!$wp_filesystem->exists($eITtt)){goto rlwcm;}$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$Axwp3.".json";if(!$wp_filesystem->exists($q2gln)){goto dzcI2;}$wp_filesystem->delete($q2gln,false,"f");dzcI2:rlwcm:Tt3VZ:EqIvg:goto XaURY;}rxgsE:XaURY:rGKwc:goto gC_Bs;isPKU:$tYy8x=3*24*HOUR_IN_SECONDS;$Zlsfz=$gBrZi->get_error_message();gC_Bs:goto eSYA_;jkpE1:if(is_wp_error($bfDbx)){goto NfhEA;}$Zlsfz=__("An error occurred, please try again.","idmuvi-core");goto OEs1L;NfhEA:$Zlsfz=$bfDbx->get_error_message();OEs1L:eSYA_:set_transient(md5("idmuvi_core"),true,$tYy8x);lxt2y:}}add_action("admin_init","idmuvi_core_check_license");if(!function_exists("idmuvi_jsn_url")){function idmuvi_jsn_url(){$JnSjI=md5(idmuvi_core_get_home());$S6ytA=trim(get_option("idmuvi_core_license_key".$JnSjI));$mqGk5=wp_upload_dir();if(!empty($mqGk5["basedir"])){goto siaLh;}return "failed";goto C2xj2;siaLh:$eITtt=$mqGk5["basedir"]."/".$JnSjI;if(@file_exists($eITtt)){goto c3y_Q;}return "failed";goto sVAZf;c3y_Q:$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$S6ytA.".json";if(@file_exists($q2gln)){goto Y0ZJf;}return "failed";goto yFaXA;Y0ZJf:return "success";yFaXA:sVAZf:C2xj2:}}add_filter("idmuvi_jsn_url_filter","idmuvi_jsn_url",10,3);if(!function_exists("idmuvi_core_admin_notices")){function idmuvi_core_admin_notices(){if(!(isset($_GET["idmuvi_core_activation"])&&!empty($_GET["message"]))){goto OAByF;}switch($_GET["idmuvi_core_activation"]){case "false":$Zlsfz=rawurlencode(sanitize_text_field(wp_unslash($_GET["message"])));echo "	\x9\x9		<div class="error">
			\x9	\x9<p>";echo esc_html($Zlsfz);echo "</p>\xa\x9		\x9\x9</div>\xa		\x9		";goto RGUMu;case "true":default:echo "	\x9	\x9\x9<div class="success">\xa\x9			\x9\x9<p>";echo esc_html_e("Success.","idmuvi-core");echo "</p>
\x9				</div>
			\x9\x9";goto RGUMu;}RdATr:RGUMu:OAByF:}}add_action("admin_notices","idmuvi_core_admin_notices");$JnSjI=md5(idmuvi_core_get_home());$S6ytA=trim(get_option("idmuvi_core_license_key".$JnSjI));$mqGk5=wp_upload_dir();if(!empty($mqGk5["basedir"])){goto foENZ;}include_once IDMUVI_CORE_DIRNAME."lib/z_license.idmuvi-core.php";goto DrJqz;foENZ:$eITtt=$mqGk5["basedir"]."/".$JnSjI;if(@file_exists($eITtt)){goto BGR80;}include_once IDMUVI_CORE_DIRNAME."lib/z_license.idmuvi-core.php";goto yu5l_;BGR80:$q2gln=$mqGk5["basedir"]."/".$JnSjI."/".$S6ytA.".json";if(@file_exists($q2gln)){goto KtXzV;}include_once IDMUVI_CORE_DIRNAME."lib/z_license.idmuvi-core.php";goto qTYLl;KtXzV:include_once IDMUVI_CORE_DIRNAME."lib/z_setting.idmuvi-core.php";include_once IDMUVI_CORE_DIRNAME."lib/movie/fixed.php";qTYLl:yu5l_:DrJqz:



© 2023 Quttera Ltd. All rights reserved.