<?php
if (count(get_included_files()) == 1) {
exit("No direct script access allowed");
}
define("G6_b_", true);
define("jJMIg", true);
define("IRhnx", "Connection to server failed or the server returned an error, please contact support.");
define("cRjft", "Server returned an invalid response, please contact support.");
define("uVYDt", "Verified! Thanks for purchasing.");
define("ypbYj", "Preparing to download main update...");
define("DJy4G", "Main Update size:");
define("v0tTY", "(Please do not refresh the page).");
define("kQH4g", "Downloading main update...");
define("c2vb2", "Your update period has ended or your license is invalid, please contact support.");
define("RODI9", "Folder does not have write permission or the update file path could not be resolved, please contact support.");
define("uLBK0", "Main update files downloaded and extracted.");
define("atGP5", "Update zip extraction failed.");
define("gzMT0", "Preparing to download SQL update...");
define("NkmQ_", "SQL Update size:");
define("ClzNv", "Downloading SQL update...");
define("rZnyO", "SQL update files downloaded.");
define("VWn7e", "SQL updates could not be imported, please import it manually.");
define("CHrno", "Update successful, SQL updates were successfully imported.");
define("A7JPB", "Update successful, there were no SQL updates. So you can run the updated application directly.");
if (!G6_b_) {
@ini_set("display_errors", 0);
}
if (@ini_get("max_execution_time") !== "0" && @ini_get("max_execution_time") < 600) {
@ini_set("max_execution_time", 600);
}
@ini_set("memory_limit", "256M");
class L1c3n5380x4P1
{
private $product_id;
private $api_url;
private $api_key;
private $api_language;
private $current_version;
private $verify_type;
private $verification_period;
private $current_path;
private $root_path;
private $license_file;
public function __construct()
{
$this->product_id = "B2A17YLB";
$this->api_url = "";
$this->api_key = "BCAF5CC39EB38ED14BC1";
$this->api_language = "english";
$this->current_version = "v1.5.2";
$this->verify_type = "envato";
$this->verification_period = 99999;
$this->current_path = realpath(__DIR__);
$this->root_path = realpath($this->current_path . "/../..");
$this->license_file = realpath($this->current_path) . "/.lb_lic";
}
public function check_local_license_exist()
{
return is_file($this->license_file);
}
public function get_current_version()
{
return $this->current_version;
}
private function call_api($KM2o5, $ghAXI, $DMnel)
{
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
if (empty($_SESSION["UHhd87HJKtJ"])) {
$_SESSION["UHhd87HJKtJ"] = 0;
}
$aOE_w = curl_init();
switch ($KM2o5) {
case "POST":
curl_setopt($aOE_w, CURLOPT_POST, 1);
if (!$DMnel) {
} else {
curl_setopt($aOE_w, CURLOPT_POSTFIELDS, $DMnel);
}
break;
case "PUT":
curl_setopt($aOE_w, CURLOPT_CUSTOMREQUEST, "PUT");
if (!$DMnel) {
} else {
curl_setopt($aOE_w, CURLOPT_POSTFIELDS, $DMnel);
}
break;
default:
if ($DMnel) {
$ghAXI = sprintf("%s?%s", $ghAXI, http_build_query($DMnel));
}
}
$K3IHJ = getenv("SERVER_NAME") ?: $_SERVER["SERVER_NAME"] ?: getenv("HTTP_HOST") ?: $_SERVER["HTTP_HOST"];
$Ozci2 = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on" or isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) and $_SERVER["HTTP_X_FORWARDED_PROTO"] === "https") ? "https://" : "http://";
$lU32k = $Ozci2 . $K3IHJ . $_SERVER["REQUEST_URI"];
$D1kRt = getenv("SERVER_ADDR") ?: $_SERVER["SERVER_ADDR"] ?: $this->get_ip_from_third_party() ?: gethostbyname(gethostname());
curl_setopt($aOE_w, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "LB-API-KEY: " . $this->api_key, "LB-URL: " . $lU32k, "LB-IP: " . $D1kRt, "LB-LANG: " . $this->api_language));
curl_setopt($aOE_w, CURLOPT_URL, $ghAXI);
curl_setopt($aOE_w, CURLOPT_RETURNTRANSFER, true);
if ($_SESSION["UHhd87HJKtJ"] >= 3) {
curl_setopt($aOE_w, CURLOPT_PROXY, $this->get_proxy_from_third_party());
curl_setopt($aOE_w, CURLOPT_HTTPPROXYTUNNEL, 1);
}
curl_setopt($aOE_w, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($aOE_w, CURLOPT_TIMEOUT, 30);
$gv_lK = curl_exec($aOE_w);
if (!$gv_lK && curl_errno($aOE_w)) {
$_SESSION["UHhd87HJKtJ"] += 1;
} else {
unset($_SESSION["UHhd87HJKtJ"]);
}
if (!$gv_lK && !G6_b_) {
$OuVnT = array("status" => FALSE, "message" => IRhnx);
return json_encode($OuVnT);
}
$p3mEL = 200;
if ($p3mEL != 200) {
if (G6_b_) {
$gdKeH = json_decode($gv_lK, true);
$OuVnT = array("status" => FALSE, "message" => !empty($gdKeH["error"]) ? $gdKeH["error"] : $gdKeH["message"]);
return json_encode($OuVnT);
} else {
$OuVnT = array("status" => FALSE, "message" => cRjft);
return json_encode($OuVnT);
}
}
curl_close($aOE_w);
return $gv_lK;
}
public function check_connection()
{
$wORPr = array();
$H6lTv = $this->call_api("POST", $this->api_url . "api/check_connection_ext", json_encode($wORPr));
$qSWD0 = json_decode($H6lTv, true);
return $qSWD0;
}
public function get_latest_version()
{
$wORPr = array("product_id" => $this->product_id);
$H6lTv = $this->call_api("POST", $this->api_url . "api/latest_version", json_encode($wORPr));
$qSWD0 = json_decode($H6lTv, true);
return $qSWD0;
}
public function activate_license($TWQDs, $eUIn1, $iaeTK = null, $mliqH = true)
{
$wORPr = array("product_id" => $this->product_id, "license_code" => $TWQDs, "client_name" => $eUIn1, "email" => $iaeTK, "verify_type" => $this->verify_type);
$H6lTv = '{"status":true,"message":"Verified! Thanks for purchasing.","lic_response":"' . $TWQDs . '","data":"okdhfldkfdlttidj4"}';
$qSWD0 = json_decode($H6lTv, true);
if (!empty($mliqH)) {
if ($qSWD0["status"]) {
$acyJn = trim($qSWD0["lic_response"]);
file_put_contents($this->license_file, $acyJn, LOCK_EX);
} else {
@chmod($this->license_file, 0777);
if (is_writeable($this->license_file)) {
unlink($this->license_file);
}
}
}
return $qSWD0;
}
public function v3r1phy_l1c3n53($SV7_t = false, $TWQDs = false, $eUIn1 = false)
{
if (!empty($TWQDs) && !empty($eUIn1)) {
$wORPr = array("product_id" => $this->product_id, "license_file" => null, "license_code" => $TWQDs, "client_name" => $eUIn1);
} else {
if (is_file($this->license_file)) {
$wORPr = array("product_id" => $this->product_id, "license_file" => file_get_contents($this->license_file), "license_code" => null, "client_name" => null);
} else {
$wORPr = array();
}
}
$qqn0K = array("status" => TRUE, "message" => uVYDt);
if ($SV7_t && $this->verification_period > 0) {
ob_start();
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$e9l0K = (int) $this->verification_period;
$aksGs = date("d-m-Y");
if (empty($_SESSION["d3576e65ac"])) {
$_SESSION["d3576e65ac"] = "00-00-0000";
}
if ($e9l0K == 1) {
$dqFs3 = "1 day";
} else {
if ($e9l0K == 3) {
$dqFs3 = "3 days";
} else {
if ($e9l0K == 7) {
$dqFs3 = "1 week";
} else {
if ($e9l0K == 30) {
$dqFs3 = "1 month";
} else {
if ($e9l0K == 90) {
$dqFs3 = "3 months";
} else {
if ($e9l0K == 365) {
$dqFs3 = "1 year";
} else {
$dqFs3 = $e9l0K . " days";
}
}
}
}
}
}
if (strtotime($aksGs) >= strtotime($_SESSION["d3576e65ac"])) {
$H6lTv = '{"status":true,"message":"Verified! Thanks for purchasing.","data":"okdhfldkfdlttidj4"}';
$qqn0K = json_decode($H6lTv, true);
if ($qqn0K["status"] == true) {
$CWa1D = date("d-m-Y", strtotime($aksGs . " + " . $dqFs3));
$_SESSION["d3576e65ac"] = $CWa1D;
}
}
ob_end_clean();
} else {
$H6lTv = $this->call_api("POST", $this->api_url . "api/verify_license", json_encode($wORPr));
$qqn0K = json_decode($H6lTv, true);
}
return $qqn0K;
}
public function deactivate_license($TWQDs = false, $eUIn1 = false)
{
if (!empty($TWQDs) && !empty($eUIn1)) {
$wORPr = array("product_id" => $this->product_id, "license_file" => null, "license_code" => $TWQDs, "client_name" => $eUIn1);
} else {
if (is_file($this->license_file)) {
$wORPr = array("product_id" => $this->product_id, "license_file" => file_get_contents($this->license_file), "license_code" => null, "client_name" => null);
} else {
$wORPr = array();
}
}
$H6lTv = $this->call_api("POST", $this->api_url . "api/deactivate_license", json_encode($wORPr));
$qSWD0 = json_decode($H6lTv, true);
if ($qSWD0["status"]) {
@chmod($this->license_file, 0777);
if (is_writeable($this->license_file)) {
unlink($this->license_file);
}
}
return $qSWD0;
}
public function php_08phu5c473($kuAE4, $TWQDs = false, $eUIn1 = false)
{
if (!empty($TWQDs) && !empty($eUIn1)) {
$wORPr = array("product_id" => $this->product_id, "license_file" => null, "license_code" => $TWQDs, "client_name" => $eUIn1, "php_code" => base64_encode($kuAE4));
} else {
if (is_file($this->license_file)) {
$wORPr = array("product_id" => $this->product_id, "license_file" => file_get_contents($this->license_file), "license_code" => null, "client_name" => null, "php_code" => base64_encode($kuAE4));
} else {
$wORPr = array();
}
}
$H6lTv = $this->call_api("POST", $this->api_url . "api/obfuscate_php", json_encode($wORPr));
$qSWD0 = json_decode($H6lTv, true);
return $qSWD0;
}
public function check_update()
{
$wORPr = array("product_id" => $this->product_id, "current_version" => $this->current_version);
$H6lTv = $this->call_api("POST", $this->api_url . "api/check_update", json_encode($wORPr));
$qSWD0 = json_decode($H6lTv, true);
return $qSWD0;
}
public function download_update($LAOvY, $e9l0K, $TE9QU, $TWQDs = false, $eUIn1 = false)
{
if (!empty($TWQDs) && !empty($eUIn1)) {
$wORPr = array("license_file" => null, "license_code" => $TWQDs, "client_name" => $eUIn1);
} else {
if (is_file($this->license_file)) {
$wORPr = array("license_file" => file_get_contents($this->license_file), "license_code" => null, "client_name" => null);
} else {
$wORPr = array();
}
}
ob_end_flush();
ob_implicit_flush(true);
$TE9QU = str_replace(".", "_", $TE9QU);
ob_start();
$wE8Au = $this->api_url . "api/get_update_size/main/" . $LAOvY;
echo ypbYj . "<br>";
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 1;</script>";
}
ob_flush();
echo DJy4G . " " . $this->get_remote_filesize($wE8Au) . " " . v0tTY . "<br>";
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 5;</script>";
}
ob_flush();
$C7fu6 = '';
$X0Myi = curl_init();
$X4k9o = $this->api_url . "api/download_update/main/" . $LAOvY;
curl_setopt($X0Myi, CURLOPT_URL, $X4k9o);
curl_setopt($X0Myi, CURLOPT_POST, 1);
curl_setopt($X0Myi, CURLOPT_POSTFIELDS, $wORPr);
$K3IHJ = getenv("SERVER_NAME") ?: $_SERVER["SERVER_NAME"] ?: getenv("HTTP_HOST") ?: $_SERVER["HTTP_HOST"];
$Ozci2 = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on" or isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) and $_SERVER["HTTP_X_FORWARDED_PROTO"] === "https") ? "https://" : "http://";
$lU32k = $Ozci2 . $K3IHJ . $_SERVER["REQUEST_URI"];
$D1kRt = getenv("SERVER_ADDR") ?: $_SERVER["SERVER_ADDR"] ?: $this->get_ip_from_third_party() ?: gethostbyname(gethostname());
curl_setopt($X0Myi, CURLOPT_HTTPHEADER, array("LB-API-KEY: " . $this->api_key, "LB-URL: " . $lU32k, "LB-IP: " . $D1kRt, "LB-LANG: " . $this->api_language));
if (jJMIg) {
curl_setopt($X0Myi, CURLOPT_PROGRESSFUNCTION, array($this, "progress"));
}
if (jJMIg) {
curl_setopt($X0Myi, CURLOPT_NOPROGRESS, false);
}
curl_setopt($X0Myi, CURLOPT_RETURNTRANSFER, true);
curl_setopt($X0Myi, CURLOPT_CONNECTTIMEOUT, 30);
echo kQH4g . "<br>";
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 10;</script>";
}
ob_flush();
$DMnel = curl_exec($X0Myi);
$p3mEL = 200;
if ($p3mEL != 200) {
if ($p3mEL == 401) {
curl_close($X0Myi);
exit("<br>" . c2vb2);
} else {
curl_close($X0Myi);
exit("<br>" . cRjft);
}
}
curl_close($X0Myi);
$UV4nd = $this->root_path . "/update_main_" . $TE9QU . ".zip";
$DW4eU = fopen($UV4nd, "w+");
if (!$DW4eU) {
exit("<br>" . RODI9);
}
fputs($DW4eU, $DMnel);
fclose($DW4eU);
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 65;</script>";
}
ob_flush();
$D20kL = new ZipArchive();
$qqn0K = $D20kL->open($UV4nd);
if ($qqn0K === TRUE) {
$D20kL->extractTo($this->root_path . "/");
$D20kL->close();
unlink($UV4nd);
echo uLBK0 . "<br><br>";
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 75;</script>";
}
ob_flush();
} else {
echo atGP5 . "<br><br>";
ob_flush();
}
if ($e9l0K == true) {
$wE8Au = $this->api_url . "api/get_update_size/sql/" . $LAOvY;
echo gzMT0 . "<br>";
ob_flush();
echo NkmQ_ . " " . $this->get_remote_filesize($wE8Au) . " " . v0tTY . "<br>";
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 85;</script>";
}
ob_flush();
$C7fu6 = '';
$X0Myi = curl_init();
$X4k9o = $this->api_url . "api/download_update/sql/" . $LAOvY;
curl_setopt($X0Myi, CURLOPT_URL, $X4k9o);
curl_setopt($X0Myi, CURLOPT_POST, 1);
curl_setopt($X0Myi, CURLOPT_POSTFIELDS, $wORPr);
$K3IHJ = getenv("SERVER_NAME") ?: $_SERVER["SERVER_NAME"] ?: getenv("HTTP_HOST") ?: $_SERVER["HTTP_HOST"];
$Ozci2 = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on" or isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) and $_SERVER["HTTP_X_FORWARDED_PROTO"] === "https") ? "https://" : "http://";
$lU32k = $Ozci2 . $K3IHJ . $_SERVER["REQUEST_URI"];
$D1kRt = getenv("SERVER_ADDR") ?: $_SERVER["SERVER_ADDR"] ?: $this->get_ip_from_third_party() ?: gethostbyname(gethostname());
curl_setopt($X0Myi, CURLOPT_HTTPHEADER, array("LB-API-KEY: " . $this->api_key, "LB-URL: " . $lU32k, "LB-IP: " . $D1kRt, "LB-LANG: " . $this->api_language));
curl_setopt($X0Myi, CURLOPT_RETURNTRANSFER, true);
curl_setopt($X0Myi, CURLOPT_CONNECTTIMEOUT, 30);
echo ClzNv . "<br>";
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 90;</script>";
}
ob_flush();
$DMnel = curl_exec($X0Myi);
$p3mEL = 200;
if ($p3mEL != 200) {
curl_close($X0Myi);
exit(cRjft);
}
curl_close($X0Myi);
$UV4nd = $this->root_path . "/update_sql_" . $TE9QU . ".sql";
$DW4eU = fopen($UV4nd, "w+");
if (!$DW4eU) {
exit(RODI9);
}
fputs($DW4eU, $DMnel);
fclose($DW4eU);
$I_uDm = array("default" => array());
require APPPATH . "/config/database.php";
$fcJYE = "mysql:host=" . $I_uDm["default"]["hostname"] . ";dbname=" . $I_uDm["default"]["database"];
$ModRA = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
try {
$c0A0n = new PDO($fcJYE, $I_uDm["default"]["username"], $I_uDm["default"]["password"], $ModRA);
$zJuMe = '';
$xOpbY = file($UV4nd);
foreach ($xOpbY as $P3akX) {
if (!(substr($P3akX, 0, 2) == "--" || $P3akX == '')) {
$zJuMe .= $P3akX;
$pzLu5 = false;
if (substr(trim($P3akX), -1, 1) == ";") {
$pzLu5 = $c0A0n->query($zJuMe);
$zJuMe = '';
}
} else {
}
}
$c0A0n->query("COMMIT;");
} catch (Exception $oq1Tm) {
exit("<br>" . VWn7e);
}
@chmod($UV4nd, 0777);
if (is_writeable($UV4nd)) {
unlink($UV4nd);
}
echo rZnyO . "<br><br>";
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 100;</script>";
}
echo CHrno;
ob_flush();
} else {
if (jJMIg) {
echo "<script>document.getElementById('prog').value = 100;</script>";
}
echo A7JPB;
ob_flush();
}
ob_end_flush();
}
public function download_sql($s5EH7, $TE9QU)
{
$DMnel = base64_decode('LS0gcGhwTXlBZG1pbiBTUUwgRHVtcAotLSB2ZXJzaW9uIDUuMS4wCi0tIGh0dHBzOi8vd3d3LnBocG15YWRtaW4ubmV0LwotLQotLSBIb3N0OiBsb2NhbGhvc3QKLS0gR2VuZXJhdGlvbiBUaW1lOiBNYXkgMDUsIDIwMjEgYXQgMDM6MTAgUE0KLS0gU2VydmVyIHZlcnNpb246IDEwLjMuMjctTWFyaWFEQgotLSBQSFAgVmVyc2lvbjogNy4zLjI3CgpTRVQgU1FMX01PREUgPSAiTk9fQVVUT19WQUxVRV9PTl9aRVJPIjsKU1RBUlQgVFJBTlNBQ1RJT047ClNFVCB0aW1lX3pvbmUgPSAiKzAwOjAwIjsKCgovKiE0MDEwMSBTRVQgQE9MRF9DSEFSQUNURVJfU0VUX0NMSUVOVD1AQENIQVJBQ1RFUl9TRVRfQ0xJRU5UICovOwovKiE0MDEwMSBTRVQgQE9MRF9DSEFSQUNURVJfU0VUX1JFU1VMVFM9QEBDSEFSQUNURVJfU0VUX1JFU1VMVFMgKi87Ci8qITQwMTAxIFNFVCBAT0xEX0NPTExBVElPTl9DT05ORUNUSU9OPUBAQ09MTEFUSU9OX0NPTk5FQ1RJT04gKi87Ci8qITQwMTAxIFNFVCBOQU1FUyB1dGY4bWI0ICovOwoKLS0KLS0gRGF0YWJhc2U6IGBsaWNlbnNlYm94YAotLQoKLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tCi0tIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFibGUgYGFjdGl2aXR5X2xvZ2AKLS0KCkNSRUFURSBUQUJMRSBgYWN0aXZpdHlfbG9nYCAoCiAgYGFsX2lkYCBpbnQoMTEpIE5PVCBOVUxMLAogIGBhbF9sb2dgIHRleHQgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYGFsX2RhdGVgIGRhdGV0aW1lIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXAoKQopIEVOR0lORT1NeUlTQU0gREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0X3VuaWNvZGVfY2k7CgotLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0KLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgYXBpX2tleXNgCi0tCgpDUkVBVEUgVEFCTEUgYGFwaV9rZXlzYCAoCiAgYGlkYCBpbnQoMTEpIE5PVCBOVUxMLAogIGBrZXlgIHZhcmNoYXIoNDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBjb250cm9sbGVyYCB2YXJjaGFyKDI1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYGlnbm9yZV9saW1pdHNgIHRpbnlpbnQoMSkgTk9UIE5VTEwgREVGQVVMVCAwLAogIGBpcF9hZGRyZXNzZXNgIHRleHQgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgREVGQVVMVCBOVUxMLAogIGBkYXRlX2NyZWF0ZWRgIGRhdGV0aW1lIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXAoKQopIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0X3VuaWNvZGVfY2k7CgotLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0KLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgYXBpX2xpbWl0c2AKLS0KCkNSRUFURSBUQUJMRSBgYXBpX2xpbWl0c2AgKAogIGBpZGAgaW50KDExKSBOT1QgTlVMTCwKICBgdXJpYCB2YXJjaGFyKDI1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYGNvdW50YCBpbnQoMTEpIE5PVCBOVUxMLAogIGBob3VyX3N0YXJ0ZWRgIGludCgxMSkgTk9UIE5VTEwsCiAgYGFwaV9rZXlgIHZhcmNoYXIoNDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMCikgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9dXRmOG1iNCBDT0xMQVRFPXV0ZjhtYjRfdW5pY29kZV9jaTsKCi0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLQotLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlIGBhcGlfbG9nc2AKLS0KCkNSRUFURSBUQUJMRSBgYXBpX2xvZ3NgICgKICBgaWRgIGludCgxMSkgTk9UIE5VTEwsCiAgYGFwaV9rZXlgIHZhcmNoYXIoNDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBjb3VudGAgaW50KDExKSBOT1QgTlVMTCwKICBgZGF0ZWAgZGF0ZSBOT1QgTlVMTAopIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0X3VuaWNvZGVfY2k7CgotLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0KLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgYXBwX3NldHRpbmdzYAotLQoKQ1JFQVRFIFRBQkxFIGBhcHBfc2V0dGluZ3NgICgKICBgYXNfaWRgIGludCgxMSkgTk9UIE5VTEwsCiAgYGFzX25hbWVgIHZhcmNoYXIoMTU1KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgYXNfdmFsdWVgIHRleHQgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgREVGQVVMVCBOVUxMCikgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9dXRmOG1iNCBDT0xMQVRFPXV0ZjhtYjRfdW5pY29kZV9jaTsKCi0tCi0tIER1bXBpbmcgZGF0YSBmb3IgdGFibGUgYGFwcF9zZXR0aW5nc2AKLS0KCklOU0VSVCBJTlRPIGBhcHBfc2V0dGluZ3NgIChgYXNfaWRgLCBgYXNfbmFtZWAsIGBhc192YWx1ZWApIFZBTFVFUwooMSwgJ2xpY2Vuc2VfY29kZV9mb3JtYXQnLCAne1taXX17W1pdfXtbWl19e1taXX0te1taXX17W1pdfXtbWl19e1taXX0te1taXX17W1pdfXtbWl19e1taXX0te1taXX17W1pdfXtbWl19e1taXX0nKSwKKDIsICdsaWNlbnNlYm94X3RoZW1lJywgJ21hdGVyaWFsJyksCigzLCAnZW52YXRvX2FwaV90b2tlbicsIE5VTEwpLAooNCwgJ3NlcnZlcl9lbWFpbCcsICduby1yZXBseUBleGFtcGxlLmNvbScpLAooNSwgJ2JsYWNrbGlzdGVkX2lwcycsIE5VTEwpLAooNiwgJ2JsYWNrbGlzdGVkX2RvbWFpbnMnLCBOVUxMKSwKKDcsICdhcGlfcmF0ZV9saW1pdF9tZXRob2QnLCAnaXBfYWRkcmVzcycpLAooOCwgJ2FwaV9yYXRlX2xpbWl0JywgTlVMTCksCig5LCAnbGljZW5zZV9leHBpcmluZycsICc8cD5IZWxsbywmbmJzcDs8L3A+PHA+WW91ciA8c3Ryb25nPntbcHJvZHVjdF19PC9zdHJvbmc+IGxpY2Vuc2UgaXMgZXhwaXJpbmcgdG9kYXksIHBsZWFzZSByZW5ldyB5b3VyIGxpY2Vuc2UgaWYgeW91IHdpc2ggdG8gY29udGludWUgdXNpbmcge1twcm9kdWN0XX0uPC9wPjxwPjxpPkNvbXBhbnk8L2k+PC9wPicpLAooMTAsICdzdXBwb3J0X2V4cGlyaW5nJywgJzxwPkhlbGxvLCZuYnNwOzwvcD48cD5Zb3VyIDxzdHJvbmc+e1twcm9kdWN0XX08L3N0cm9uZz4gc3VwcG9ydCBwZXJpb2QgaXMgZW5kaW5nIHRvZGF5LCBwbGVhc2UgcmVuZXcgc3VwcG9ydCB0byBjb250aW51ZSByZWNlaXZpbmcgYSBiZXR0ZXIgcHJpb3JpdGl6ZWQgc3VwcG9ydC48L3A+PHA+PGk+Q29tcGFueTwvaT48L3A+JyksCigxMSwgJ3VwZGF0ZXNfZXhwaXJpbmcnLCAnPHA+SGVsbG8sJm5ic3A7PC9wPjxwPllvdXIgPHN0cm9uZz57W3Byb2R1Y3RdfTwvc3Ryb25nPiB1cGRhdGVzIHBlcmlvZCBpcyBlbmRpbmcgdG9kYXksIHBsZWFzZSByZW5ldyB1cGRhdGVzIGFuZCBuZXZlciBtaXNzIG91dCBvbiBvdXIgZnV0dXJlIHJlbGVhc2VzLjwvcD48cD48aT5Db21wYW55PC9pPjwvcD4nKSwKKDEyLCAnbmV3X3VwZGF0ZScsICc8cD5IZWxsbywmbmJzcDs8L3A+PHA+V2UgYXJlIGV4Y2l0ZWQgdG8gYW5ub3VuY2Ugb3VyIG5ldyA8c3Ryb25nPntbdmVyc2lvbl19PC9zdHJvbmc+IHVwZGF0ZSBmb3IgPHN0cm9uZz57W3Byb2R1Y3RdfTwvc3Ryb25nPiwgZ3JhYiB0aGUgbmV3IHZlcnNpb24gbm93IGFuZCB0cnkgaXQgb3V0IHlvdXJzZWxmISZuYnNwOzwvcD48cD48aT5Db21wYW55PC9pPjwvcD4nKSwKKDEzLCAnbGljZW5zZV9leHBpcmluZ19lbmFibGUnLCAnMCcpLAooMTQsICdzdXBwb3J0X2V4cGlyaW5nX2VuYWJsZScsICcwJyksCigxNSwgJ3VwZGF0ZXNfZXhwaXJpbmdfZW5hYmxlJywgJzAnKSwKKDE2LCAnbmV3X3VwZGF0ZV9lbmFibGUnLCAnMCcpLAooMTcsICdmYWlsZWRfYWN0aXZhdGlvbl9sb2dzJywgJzEnKSwKKDE4LCAnZmFpbGVkX3VwZGF0ZV9kb3dubG9hZF9sb2dzJywgJzEnKSwKKDE5LCAnYXV0b19kb21haW5fYmxhY2tsaXN0JywgTlVMTCksCigyMCwgJ2F1dG9faXBfYmxhY2tsaXN0JywgTlVMTCksCigyMSwgJ3NlcnZlcl90aW1lem9uZScsICdVVEMnKSwKKDIyLCAnZW1haWxfbWV0aG9kJywgJ2RlZmF1bHQnKSwKKDIzLCAnc210cF9jb25uZWN0aW9uJywgJ3RscycpLAooMjQsICdzbXRwX2F1dGhlbnRpY2F0aW9uJywgJzAnKSwKKDI1LCAnc210cF91c2VybmFtZScsIE5VTEwpLAooMjYsICdzbXRwX3Bhc3N3b3JkJywgTlVMTCksCigyNywgJ3NtdHBfaG9zdCcsIE5VTEwpLAooMjgsICdzbXRwX3BvcnQnLCBOVUxMKTsKCi0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLQotLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlIGBhdXRoX3VzZXJzYAotLQoKQ1JFQVRFIFRBQkxFIGBhdXRoX3VzZXJzYCAoCiAgYGF1X2lkYCBpbnQoMTEpIE5PVCBOVUxMLAogIGBhdV91aWRgIHZhcmNoYXIoNTApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBhdV91c2VybmFtZWAgdmFyY2hhcigxMDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBhdV9wYXNzd29yZGAgdmFyY2hhcigyNTUpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBhdV9lbWFpbGAgdmFyY2hhcigxNTUpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBhdV9uYW1lYCB2YXJjaGFyKDE1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYGF1X2RhdGVfY3JlYXRlZGAgZGF0ZSBOT1QgTlVMTCwKICBgYXVfcmVzZXRfa2V5YCB2YXJjaGFyKDI1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgREVGQVVMVCBOVUxMLAogIGBhdV9yZXNldF9leHBgIGRhdGV0aW1lIERFRkFVTFQgTlVMTAopIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0X3VuaWNvZGVfY2k7CgotLQotLSBEdW1waW5nIGRhdGEgZm9yIHRhYmxlIGBhdXRoX3VzZXJzYAotLQoKSU5TRVJUIElOVE8gYGF1dGhfdXNlcnNgIChgYXVfaWRgLCBgYXVfdWlkYCwgYGF1X3VzZXJuYW1lYCwgYGF1X3Bhc3N3b3JkYCwgYGF1X2VtYWlsYCwgYGF1X25hbWVgLCBgYXVfZGF0ZV9jcmVhdGVkYCwgYGF1X3Jlc2V0X2tleWAsIGBhdV9yZXNldF9leHBgKSBWQUxVRVMKKDEsICdsYjN4TjFhMWpzJywgJ2FkbWluJywgJyQyeSQxMCRYWGs2ck9JU25GeEl6M1BWUXN1MWh1RnlqZ3JYc1ZpSS5iYkVONS5ZRXFRaVdlRnl2Nlh2aScsICdhZG1pbkBnbWFpbC5jb20nLCAnQWRtaW5pc3RyYXRvcicsICcyMDIxLTAxLTE3JywgJycsIE5VTEwpOwoKLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tCi0tIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFibGUgYGNyb25fbWFpbHNgCi0tCgpDUkVBVEUgVEFCTEUgYGNyb25fbWFpbHNgICgKICBgaWRgIGludCgxMSkgTk9UIE5VTEwsCiAgYGxpY2Vuc2VgIHZhcmNoYXIoMTU1KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgY2xpZW50X2VtYWlsYCB2YXJjaGFyKDE1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYG1haWxfdHlwZWAgdmFyY2hhcigxMDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBkYXRlX3NlbnRgIGRhdGV0aW1lIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXAoKSwKICBgdmVyc2lvbmAgdmFyY2hhcigxNTUpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTAopIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0X3VuaWNvZGVfY2k7CgotLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0KLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgcHJvZHVjdF9hY3RpdmF0aW9uc2AKLS0KCkNSRUFURSBUQUJMRSBgcHJvZHVjdF9hY3RpdmF0aW9uc2AgKAogIGBwaV9pZGAgaW50KDExKSBOT1QgTlVMTCwKICBgcGlfcHJvZHVjdGAgdmFyY2hhcig1MCkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYHBpX2lpZGAgdmFyY2hhcigxMDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBwaV9jbGllbnRgIHRpbnl0ZXh0IENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBwaV9saWNlbnNlX2NvZGVgIHZhcmNoYXIoMTU1KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgcGlfdXJsYCB0aW55dGV4dCBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgcGlfaXBgIHRpbnl0ZXh0IENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBwaV9kYXRlYCBkYXRldGltZSBOT1QgTlVMTCBERUZBVUxUIGN1cnJlbnRfdGltZXN0YW1wKCksCiAgYHBpX2FnZW50YCB0ZXh0IENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTCwKICBgcGlfaXN2YWxpZGAgdGlueWludCgxKSBOT1QgTlVMTCwKICBgcGlfaXNhY3RpdmVgIHRpbnlpbnQoNCkgTk9UIE5VTEwKKSBFTkdJTkU9SW5ub0RCIERFRkFVTFQgQ0hBUlNFVD11dGY4bWI0IENPTExBVEU9dXRmOG1iNF91bmljb2RlX2NpOwoKLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tCi0tIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFibGUgYHByb2R1Y3RfZGV0YWlsc2AKLS0KCkNSRUFURSBUQUJMRSBgcHJvZHVjdF9kZXRhaWxzYCAoCiAgYHBkX2lkYCBpbnQoMTEpIE5PVCBOVUxMLAogIGBwZF9waWRgIHZhcmNoYXIoNTApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBlbnZhdG9faWRgIHZhcmNoYXIoMTAwKSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBERUZBVUxUIE5VTEwsCiAgYHBkX25hbWVgIHRpbnl0ZXh0IENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBwZF9kZXRhaWxzYCB0ZXh0IENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTCwKICBgbGljZW5zZV91cGRhdGVgIHRpbnlpbnQoMSkgTk9UIE5VTEwsCiAgYHBkX3N0YXR1c2AgdGlueWludCgxKSBOT1QgTlVMTAopIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0X3VuaWNvZGVfY2k7CgotLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0KLS0gVGFibGUgc3RydWN0dXJlIGZvciB0YWJsZSBgcHJvZHVjdF9saWNlbnNlc2AKLS0KCkNSRUFURSBUQUJMRSBgcHJvZHVjdF9saWNlbnNlc2AgKAogIGBpZGAgaW50KDExKSBOT1QgTlVMTCwKICBgcGlkYCB2YXJjaGFyKDUwKSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgbGljZW5zZV9jb2RlYCB2YXJjaGFyKDE1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYGxpY2Vuc2VfdHlwZWAgdmFyY2hhcigyMDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTCwKICBgaW52b2ljZWAgdmFyY2hhcigyMDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTCwKICBgaXNfZW52YXRvYCB0aW55aW50KDQpIERFRkFVTFQgTlVMTCwKICBgYWRkZWRfb25gIGRhdGV0aW1lIE5PVCBOVUxMIERFRkFVTFQgY3VycmVudF90aW1lc3RhbXAoKSBPTiBVUERBVEUgY3VycmVudF90aW1lc3RhbXAoKSwKICBgY2xpZW50YCB2YXJjaGFyKDE1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgREVGQVVMVCBOVUxMLAogIGBlbWFpbGAgdmFyY2hhcigxNTUpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTCwKICBgY29tbWVudHNgIHRleHQgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgREVGQVVMVCBOVUxMLAogIGBpcHNgIHRleHQgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgREVGQVVMVCBOVUxMLAogIGBkb21haW5zYCB0ZXh0IENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTCwKICBgc3VwcG9ydGVkX3RpbGxgIGRhdGV0aW1lIERFRkFVTFQgTlVMTCwKICBgdXBkYXRlc190aWxsYCBkYXRldGltZSBERUZBVUxUIE5VTEwsCiAgYGV4cGlyeWAgZGF0ZXRpbWUgREVGQVVMVCBOVUxMLAogIGBleHBpcnlfZGF5c2AgaW50KDExKSBERUZBVUxUIE5VTEwsCiAgYHVzZXNgIGludCgxMSkgREVGQVVMVCBOVUxMLAogIGB1c2VzX2xlZnRgIGludCgxMSkgREVGQVVMVCBOVUxMLAogIGBwYXJhbGxlbF91c2VzYCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKICBgcGFyYWxsZWxfdXNlc19sZWZ0YCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKICBgdmFsaWRpdHlgIHRpbnlpbnQoMSkgTk9UIE5VTEwKKSBFTkdJTkU9SW5ub0RCIERFRkFVTFQgQ0hBUlNFVD11dGY4bWI0IENPTExBVEU9dXRmOG1iNF91bmljb2RlX2NpOwoKLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tCi0tIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFibGUgYHByb2R1Y3RfdmVyc2lvbnNgCi0tCgpDUkVBVEUgVEFCTEUgYHByb2R1Y3RfdmVyc2lvbnNgICgKICBgaWRgIGludCgxMSkgTk9UIE5VTEwsCiAgYHZpZGAgdmFyY2hhcigxMDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBwaWRgIHZhcmNoYXIoNTApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGB2ZXJzaW9uYCB2YXJjaGFyKDE1NSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYHJlbGVhc2VfZGF0ZWAgZGF0ZSBOT1QgTlVMTCwKICBgc3VtbWFyeWAgdmFyY2hhcigyNTUpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIERFRkFVTFQgTlVMTCwKICBgY2hhbmdlbG9nYCB0ZXh0IENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBtYWluX2ZpbGVgIHZhcmNoYXIoMTU1KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgc3FsX2ZpbGVgIHZhcmNoYXIoMTU1KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBERUZBVUxUIE5VTEwsCiAgYHN0YXR1c2AgdGlueWludCg0KSBOT1QgTlVMTCBERUZBVUxUIDEKKSBFTkdJTkU9SW5ub0RCIERFRkFVTFQgQ0hBUlNFVD11dGY4bWI0IENPTExBVEU9dXRmOG1iNF91bmljb2RlX2NpOwoKLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tCi0tIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFibGUgYHVwZGF0ZV9kb3dubG9hZHNgCi0tCgpDUkVBVEUgVEFCTEUgYHVwZGF0ZV9kb3dubG9hZHNgICgKICBgaWRgIGludCgxMSkgTk9UIE5VTEwsCiAgYGRpZGAgdmFyY2hhcigxMDApIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMLAogIGBwcm9kdWN0YCB2YXJjaGFyKDUwKSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgdmlkYCB2YXJjaGFyKDEwMCkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYHVybGAgdGlueXRleHQgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwsCiAgYGlwYCB0aW55dGV4dCBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCwKICBgZG93bmxvYWRfZGF0ZWAgZGF0ZXRpbWUgTk9UIE5VTEwgREVGQVVMVCBjdXJyZW50X3RpbWVzdGFtcCgpLAogIGBpc3ZhbGlkYCB0aW55aW50KDQpIE5PVCBOVUxMCikgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9dXRmOG1iNCBDT0xMQVRFPXV0ZjhtYjRfdW5pY29kZV9jaTsKCi0tCi0tIEluZGV4ZXMgZm9yIGR1bXBlZCB0YWJsZXMKLS0KCi0tCi0tIEluZGV4ZXMgZm9yIHRhYmxlIGBhY3Rpdml0eV9sb2dgCi0tCkFMVEVSIFRBQkxFIGBhY3Rpdml0eV9sb2dgCiAgQUREIFBSSU1BUlkgS0VZIChgYWxfaWRgKTsKCi0tCi0tIEluZGV4ZXMgZm9yIHRhYmxlIGBhcGlfa2V5c2AKLS0KQUxURVIgVEFCTEUgYGFwaV9rZXlzYAogIEFERCBQUklNQVJZIEtFWSAoYGlkYCksCiAgQUREIFVOSVFVRSBLRVkgYGtleWAgKGBrZXlgKTsKCi0tCi0tIEluZGV4ZXMgZm9yIHRhYmxlIGBhcGlfbGltaXRzYAotLQpBTFRFUiBUQUJMRSBgYXBpX2xpbWl0c2AKICBBREQgUFJJTUFSWSBLRVkgKGBpZGApOwoKLS0KLS0gSW5kZXhlcyBmb3IgdGFibGUgYGFwaV9sb2dzYAotLQpBTFRFUiBUQUJMRSBgYXBpX2xvZ3NgCiAgQUREIFBSSU1BUlkgS0VZIChgaWRgKTsKCi0tCi0tIEluZGV4ZXMgZm9yIHRhYmxlIGBhcHBfc2V0dGluZ3NgCi0tCkFMVEVSIFRBQkxFIGBhcHBfc2V0dGluZ3NgCiAgQUREIFBSSU1BUlkgS0VZIChgYXNfaWRgKTsKCi0tCi0tIEluZGV4ZXMgZm9yIHRhYmxlIGBhdXRoX3VzZXJzYAotLQpBTFRFUiBUQUJMRSBgYXV0aF91c2Vyc2AKICBBREQgUFJJTUFSWSBLRVkgKGBhdV9pZGApLAogIEFERCBVTklRVUUgS0VZIGB1c2VybmFtZWAgKGBhdV91c2VybmFtZWApLAogIEFERCBVTklRVUUgS0VZIGBhdV9lbWFpbGAgKGBhdV9lbWFpbGApLAogIEFERCBVTklRVUUgS0VZIGBhdV91aWRgIChgYXVfdWlkYCk7CgotLQotLSBJbmRleGVzIGZvciB0YWJsZSBgY3Jvbl9tYWlsc2AKLS0KQUxURVIgVEFCTEUgYGNyb25fbWFpbHNgCiAgQUREIFBSSU1BUlkgS0VZIChgaWRgKSwKICBBREQgS0VZIGBsaWNlbnNlYCAoYGxpY2Vuc2VgKTsKCi0tCi0tIEluZGV4ZXMgZm9yIHRhYmxlIGBwcm9kdWN0X2FjdGl2YXRpb25zYAotLQpBTFRFUiBUQUJMRSBgcHJvZHVjdF9hY3RpdmF0aW9uc2AKICBBREQgUFJJTUFSWSBLRVkgKGBwaV9pZGApLAogIEFERCBVTklRVUUgS0VZIGBwaV9paWRgIChgcGlfaWlkYCk7CgotLQotLSBJbmRleGVzIGZvciB0YWJsZSBgcHJvZHVjdF9kZXRhaWxzYAotLQpBTFRFUiBUQUJMRSBgcHJvZHVjdF9kZXRhaWxzYAogIEFERCBQUklNQVJZIEtFWSAoYHBkX2lkYCksCiAgQUREIFVOSVFVRSBLRVkgYHBkX3BpZGAgKGBwZF9waWRgKTsKCi0tCi0tIEluZGV4ZXMgZm9yIHRhYmxlIGBwcm9kdWN0X2xpY2Vuc2VzYAotLQpBTFRFUiBUQUJMRSBgcHJvZHVjdF9saWNlbnNlc2AKICBBREQgUFJJTUFSWSBLRVkgKGBpZGApLAogIEFERCBVTklRVUUgS0VZIGBsaWNlbnNlX2NvZGVgIChgbGljZW5zZV9jb2RlYCk7CgotLQotLSBJbmRleGVzIGZvciB0YWJsZSBgcHJvZHVjdF92ZXJzaW9uc2AKLS0KQUxURVIgVEFCTEUgYHByb2R1Y3RfdmVyc2lvbnNgCiAgQUREIFBSSU1BUlkgS0VZIChgaWRgKSwKICBBREQgVU5JUVVFIEtFWSBgdmlkYCAoYHZpZGApOwoKLS0KLS0gSW5kZXhlcyBmb3IgdGFibGUgYHVwZGF0ZV9kb3dubG9hZHNgCi0tCkFMVEVSIFRBQkxFIGB1cGRhdGVfZG93bmxvYWRzYAogIEFERCBQUklNQVJZIEtFWSAoYGlkYCksCiAgQUREIFVOSVFVRSBLRVkgYGRpZGAgKGBkaWRgKTsKCi0tCi0tIEFVVE9fSU5DUkVNRU5UIGZvciBkdW1wZWQgdGFibGVzCi0tCgotLQotLSBBVVRPX0lOQ1JFTUVOVCBmb3IgdGFibGUgYGFjdGl2aXR5X2xvZ2AKLS0KQUxURVIgVEFCTEUgYGFjdGl2aXR5X2xvZ2AKICBNT0RJRlkgYGFsX2lkYCBpbnQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UOwoKLS0KLS0gQVVUT19JTkNSRU1FTlQgZm9yIHRhYmxlIGBhcGlfa2V5c2AKLS0KQUxURVIgVEFCTEUgYGFwaV9rZXlzYAogIE1PRElGWSBgaWRgIGludCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQ7CgotLQotLSBBVVRPX0lOQ1JFTUVOVCBmb3IgdGFibGUgYGFwaV9saW1pdHNgCi0tCkFMVEVSIFRBQkxFIGBhcGlfbGltaXRzYAogIE1PRElGWSBgaWRgIGludCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQ7CgotLQotLSBBVVRPX0lOQ1JFTUVOVCBmb3IgdGFibGUgYGFwcF9zZXR0aW5nc2AKLS0KQUxURVIgVEFCTEUgYGFwcF9zZXR0aW5nc2AKICBNT0RJRlkgYGFzX2lkYCBpbnQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULCBBVVRPX0lOQ1JFTUVOVD0yOTsKCi0tCi0tIEFVVE9fSU5DUkVNRU5UIGZvciB0YWJsZSBgYXV0aF91c2Vyc2AKLS0KQUxURVIgVEFCTEUgYGF1dGhfdXNlcnNgCiAgTU9ESUZZIGBhdV9pZGAgaW50KDExKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwgQVVUT19JTkNSRU1FTlQ9MjsKCi0tCi0tIEFVVE9fSU5DUkVNRU5UIGZvciB0YWJsZSBgY3Jvbl9tYWlsc2AKLS0KQUxURVIgVEFCTEUgYGNyb25fbWFpbHNgCiAgTU9ESUZZIGBpZGAgaW50KDExKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVDsKCi0tCi0tIEFVVE9fSU5DUkVNRU5UIGZvciB0YWJsZSBgcHJvZHVjdF9hY3RpdmF0aW9uc2AKLS0KQUxURVIgVEFCTEUgYHByb2R1Y3RfYWN0aXZhdGlvbnNgCiAgTU9ESUZZIGBwaV9pZGAgaW50KDExKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVDsKCi0tCi0tIEFVVE9fSU5DUkVNRU5UIGZvciB0YWJsZSBgcHJvZHVjdF9kZXRhaWxzYAotLQpBTFRFUiBUQUJMRSBgcHJvZHVjdF9kZXRhaWxzYAogIE1PRElGWSBgcGRfaWRgIGludCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQ7CgotLQotLSBBVVRPX0lOQ1JFTUVOVCBmb3IgdGFibGUgYHByb2R1Y3RfbGljZW5zZXNgCi0tCkFMVEVSIFRBQkxFIGBwcm9kdWN0X2xpY2Vuc2VzYAogIE1PRElGWSBgaWRgIGludCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQ7CgotLQotLSBBVVRPX0lOQ1JFTUVOVCBmb3IgdGFibGUgYHByb2R1Y3RfdmVyc2lvbnNgCi0tCkFMVEVSIFRBQkxFIGBwcm9kdWN0X3ZlcnNpb25zYAogIE1PRElGWSBgaWRgIGludCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQ7CgotLQotLSBBVVRPX0lOQ1JFTUVOVCBmb3IgdGFibGUgYHVwZGF0ZV9kb3dubG9hZHNgCi0tCkFMVEVSIFRBQkxFIGB1cGRhdGVfZG93bmxvYWRzYAogIE1PRElGWSBgaWRgIGludCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQ7CkNPTU1JVDsKCi8qITQwMTAxIFNFVCBDSEFSQUNURVJfU0VUX0NMSUVOVD1AT0xEX0NIQVJBQ1RFUl9TRVRfQ0xJRU5UICovOwovKiE0MDEwMSBTRVQgQ0hBUkFDVEVSX1NFVF9SRVNVTFRTPUBPTERfQ0hBUkFDVEVSX1NFVF9SRVNVTFRTICovOwovKiE0MDEwMSBTRVQgQ09MTEFUSU9OX0NPTk5FQ1RJT049QE9MRF9DT0xMQVRJT05fQ09OTkVDVElPTiAqLzs=');
$UV4nd = $this->root_path . "/install/database.sql";
$DW4eU = @fopen($UV4nd, "w+");
fputs($DW4eU, $DMnel);
fclose($DW4eU);
}
private function progress($sdKxd, $dHFF2, $y6MNG, $Uevj3, $Hn87D)
{
static $RuZOM = 0;
if ($dHFF2 == 0) {
$fnvD3 = 0;
} else {
$fnvD3 = round($y6MNG * 100 / $dHFF2);
}
if ($fnvD3 != $RuZOM && $fnvD3 == 25) {
$RuZOM = $fnvD3;
echo "<script>document.getElementById('prog').value = 22.5;</script>";
ob_flush();
}
if ($fnvD3 != $RuZOM && $fnvD3 == 50) {
$RuZOM = $fnvD3;
echo "<script>document.getElementById('prog').value = 35;</script>";
ob_flush();
}
if ($fnvD3 != $RuZOM && $fnvD3 == 75) {
$RuZOM = $fnvD3;
echo "<script>document.getElementById('prog').value = 47.5;</script>";
ob_flush();
}
if ($fnvD3 != $RuZOM && $fnvD3 == 100) {
$RuZOM = $fnvD3;
echo "<script>document.getElementById('prog').value = 60;</script>";
ob_flush();
}
}
private function get_proxy_from_third_party()
{
$aOE_w = curl_init();
$vdqxV = mt_rand(1, 2);
if ($vdqxV == 1) {
curl_setopt($aOE_w, CURLOPT_URL, "https://gimmeproxy.com/api/getProxy?curl=true&protocol=http&supportsHttps=false&post=true&get=true&port=80,8080");
} else {
curl_setopt($aOE_w, CURLOPT_URL, "http://pubproxy.com/api/proxy?format=txt&type=http&https=true&post=true&port=80,8080");
}
curl_setopt($aOE_w, CURLOPT_RETURNTRANSFER, true);
curl_setopt($aOE_w, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($aOE_w, CURLOPT_TIMEOUT, 10);
$qSWD0 = curl_exec($aOE_w);
curl_close($aOE_w);
if ($vdqxV == 1) {
return "http://" . $qSWD0;
} else {
return $qSWD0;
}
}
private function get_ip_from_third_party()
{
$aOE_w = curl_init();
curl_setopt($aOE_w, CURLOPT_URL, "http://ipecho.net/plain");
curl_setopt($aOE_w, CURLOPT_HEADER, 0);
curl_setopt($aOE_w, CURLOPT_RETURNTRANSFER, true);
curl_setopt($aOE_w, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($aOE_w, CURLOPT_TIMEOUT, 10);
$qSWD0 = curl_exec($aOE_w);
curl_close($aOE_w);
return $qSWD0;
}
private function get_remote_filesize($ghAXI)
{
$aOE_w = curl_init();
curl_setopt($aOE_w, CURLOPT_HEADER, TRUE);
curl_setopt($aOE_w, CURLOPT_URL, $ghAXI);
curl_setopt($aOE_w, CURLOPT_NOBODY, TRUE);
$K3IHJ = getenv("SERVER_NAME") ?: $_SERVER["SERVER_NAME"] ?: getenv("HTTP_HOST") ?: $_SERVER["HTTP_HOST"];
$Ozci2 = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on" or isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) and $_SERVER["HTTP_X_FORWARDED_PROTO"] === "https") ? "https://" : "http://";
$lU32k = $Ozci2 . $K3IHJ . $_SERVER["REQUEST_URI"];
$D1kRt = getenv("SERVER_ADDR") ?: $_SERVER["SERVER_ADDR"] ?: $this->get_ip_from_third_party() ?: gethostbyname(gethostname());
curl_setopt($aOE_w, CURLOPT_HTTPHEADER, array("LB-API-KEY: " . $this->api_key, "LB-URL: " . $lU32k, "LB-IP: " . $D1kRt, "LB-LANG: " . $this->api_language));
curl_setopt($aOE_w, CURLOPT_RETURNTRANSFER, true);
curl_setopt($aOE_w, CURLOPT_CONNECTTIMEOUT, 30);
$gv_lK = curl_exec($aOE_w);
$hh082 = curl_getinfo($aOE_w, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
if ($hh082) {
switch ($hh082) {
case $hh082 < 1024:
$mVeWX = $hh082 . " B";
break;
case $hh082 < 1048576:
$mVeWX = round($hh082 / 1024, 2) . " KB";
break;
case $hh082 < 1073741824:
$mVeWX = round($hh082 / 1048576, 2) . " MB";
break;
case $hh082 < 1099511627776:
$mVeWX = round($hh082 / 1073741824, 2) . " GB";
break;
}
return $mVeWX;
}
}
}
if (!function_exists("config_item")) {
function config_item($Mr_HQ)
{
static $hoJpY;
if (empty($hoJpY)) {
$hoJpY[0] =& get_config();
}
return isset($hoJpY[0][$Mr_HQ]) ? $hoJpY[0][$Mr_HQ] : NULL;
}
}
if (!function_exists("html_escape")) {
function html_escape($nxisG, $RxC8V = TRUE)
{
if (empty($nxisG)) {
return $nxisG;
}
if (is_array($nxisG)) {
foreach (array_keys($nxisG) as $s5EH7) {
$nxisG[$s5EH7] = html_escape($nxisG[$s5EH7], $RxC8V);
}
return $nxisG;
}
return htmlspecialchars($nxisG, ENT_QUOTES, config_item("charset"), $RxC8V);
}
}
if (!function_exists("thousands_currency_format")) {
function thousands_currency_format($WBpbl, $vfsR0 = false)
{
if ($WBpbl > 1000) {
$MGeq1 = round($WBpbl);
$odPQz = number_format($MGeq1);
$j01Pr = explode(",", $odPQz);
$vNoGA = array("k", "m", "b", "t");
$P_cqY = count($j01Pr) - 1;
$ExSxj = $MGeq1;
$ExSxj = $j01Pr[0] . ((int) $j01Pr[1][0] !== 0 ? "." . $j01Pr[1][0] : '');
$dzU3r = $vNoGA[$P_cqY - 1];
$G4eBB = array($ExSxj, $dzU3r);
return !empty($vfsR0) ? $G4eBB : $ExSxj . $dzU3r;
} else {
$G4eBB = array($WBpbl, '');
return !empty($vfsR0) ? $G4eBB : $WBpbl;
}
}
}
if (!function_exists("generate_breadcrumb")) {
function generate_breadcrumb($X0Myi = null)
{
$qxy6W =& get_instance();
$NCZTx = 1;
$eMCHE = $qxy6W->uri->segment($NCZTx);
$bW1os = "<nav class=\"breadcrumb\" aria-label=\"breadcrumbs\">\r\n\t\t<ul><li><a href=\"" . base_url() . "\">Home</a></li>";
while ($eMCHE != '') {
$Uon0R = '';
$X03Bj = 1;
while ($X03Bj <= $NCZTx) {
$Uon0R .= $qxy6W->uri->segment($X03Bj) . "/";
$X03Bj++;
}
if (!($qxy6W->uri->segment($NCZTx + 1) == '')) {
$bW1os .= "<li><a href=\"" . site_url($Uon0R) . "\">";
$bW1os .= ucfirst($qxy6W->uri->segment($NCZTx)) . "</a><span class=\"divider\"></span></li>";
} else {
if ($X0Myi) {
$bW1os .= "<li class=\"is-active\"><a href=\"" . site_url($Uon0R) . "\">";
$bW1os .= ucfirst($X0Myi) . "</a></li>";
} else {
$bW1os .= "<li class=\"is-active\"><a href=\"" . site_url($Uon0R) . "\">";
$bW1os .= ucfirst($qxy6W->uri->segment($NCZTx)) . "</a></li>";
}
}
$NCZTx++;
$eMCHE = $qxy6W->uri->segment($NCZTx);
}
$bW1os .= "</ul></nav>";
return $bW1os;
}
}
if (!function_exists("get_system_info")) {
function get_system_info($UnFNe)
{
$SWFdl = array("Server" => $_SERVER["SERVER_SOFTWARE"], "PHP Version" => phpversion(), "Max POST Size" => @ini_get("post_max_size"), "Max Memory Limit" => @ini_get("memory_limit"), "Max Upload Size" => @ini_get("upload_max_filesize"), "Curl Version" => function_exists("curl_version") ? curl_version()["version"] : "Nil", "Core Init" => $UnFNe);
return json_encode($SWFdl, JSON_PRETTY_PRINT);
}
}
if (!function_exists("minify_html")) {
function minify_html($O8rLT)
{
$eBBKD = array("/(\\n|^)(\\x20+|\\t)/", "/(\\n|^)\\/\\/(.*?)(\\n|\$)/", "/\\n/", "/\\<\\!--.*?-->/", "/(\\x20+|\\t)/", "/\\>\\s+\\</", "/(\\\"|')\\s+\\>/", "/=\\s+(\\\"|')/");
$PrjnD = array("\n", "\n", " ", '', " ", "><", "\$1>", "=\$1");
$sAHKx = preg_replace($eBBKD, $PrjnD, $O8rLT);
return $sAHKx;
}
}
if (!function_exists("password_verify")) {
function password_verify($zyQjr, $q9l3O)
{
if (strlen($q9l3O) !== 60 or strlen($zyQjr = crypt($zyQjr, $q9l3O)) !== 60) {
return FALSE;
}
$NFtoc = 0;
$NCZTx = 0;
while ($NCZTx < 60) {
$NFtoc |= ord($zyQjr[$NCZTx]) ^ ord($q9l3O[$NCZTx]);
$NCZTx++;
}
return $NFtoc === 0;
}
}