Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode('CiBjbGFzcyBDVEVtYWlsVHJhY2tlcl9SZWNvcmRfTW9kZWwgZXh0ZW5kcyBFbWFp..

Decoded Output download

<?php class CTEmailTracker_Record_Model extends Emails_Record_Model {
    public function getCtEmailTrackerEnableOrDisable() {
        global $adb;
        $tableName = "\143\x74\x5f\x65\x6d\x61\x69\x6c\x5f\164\162\141\143\x6b\145\162\x5f\163\x65\164\164\151\156\x67\x73";
        $fieldName = array("\x65\x6e\141\x62\x6c\145");
        $getEnableDisableSqlResult = self::getSelectedCtEmailTrackerData($tableName, $fieldName, $where = NULL, $orderFields = NULL, $sortOrder = NULL);
        $getEnableDisableValue = $adb->query_result($getEnableDisableSqlResult, 0, "\145\156\141\142\154\145");
        return $getEnableDisableValue;
    }
    public function getSelectedCtEmailTrackerData($tableName, $fieldName, $where, $orderFields, $sortOrder) {
        global $adb;
        $selectCTEmailTrackerDataSql = '';
        $selectCTEmailTrackerDataSql.= "\x53\105\114\x45\x43\x54\40";
        foreach ($fieldName as $key => $value) {
            if ($key == 0) {
                $selectCTEmailTrackerDataSql.= $value;
            } else {
                $selectCTEmailTrackerDataSql.= "\x2c" . $value;
            }
        }
        $selectCTEmailTrackerDataSql.= "\40\106\x52\117\115\40{$tableName}";
        $i = 0;
        $dataCount = count($where);
        if (!empty($where)) {
            $selectCTEmailTrackerDataSql.= "\40\127\110\105\x52\x45";
        }
        foreach ($where as $key => $value) {
            if ($i + 1 != $dataCount) {
                $selectCTEmailTrackerDataSql.= "\40{$key}\x3d{$value}\40\x41\x4e\x44";
            } else {
                $selectCTEmailTrackerDataSql.= "\40{$key}\x3d{$value}";
            }
            $i++;
        }
        $j = 0;
        $count = count($orderFields);
        if (!empty($orderFields)) {
            $selectCTEmailTrackerDataSql.= "\40\117\122\x44\105\122\40\x42\131";
        }
        foreach ($orderFields as $key => $value) {
            if ($j + 1 != $count) {
                $selectCTEmailTrackerDataSql.= "\40{$key}\x2e{$value}" . "\x20" . $sortOrder[$key] . "\40\x2c";
            } else {
                $selectCTEmailTrackerDataSql.= "\40{$key}\56{$value}" . "\40" . $sortOrder[$key] . '';
            }
            $j++;
        }
        $selectCTEmailTrackerDataSqlResult = $adb->pquery($selectCTEmailTrackerDataSql);
        return $selectCTEmailTrackerDataSqlResult;
    }
    public function updateCtEmailTrackerConfiguration($value) {
        $tableName = "\x63\x74\137\145\155\x61\x69\154\x5f\x74\x72\141\143\153\145\162\137\163\145\164\x74\151\156\x67\x73";
        $updateData = array("\145\x6e\x61\x62\154\145" => $value);
        $updateMultipleSMTPQuery = self::updateCtEmailTrackerData($tableName, $updateData, $where = NULL);
    }
    public function updateCtEmailTrackerData($tableName, $updateData, $where) {
        global $adb;
        $updateCTListviewColorDataSql = "\125\120\104\x41\124\105\x20{$tableName}\40\123\105\124";
        $i = 0;
        $dataCount = count($updateData);
        foreach ($updateData as $key => $value) {
            if ($i + 1 != $dataCount) {
                $updateCTListviewColorDataSql.= "\40{$key}\75{$value}\x2c";
            } else {
                $updateCTListviewColorDataSql.= "\x20{$key}\x3d{$value}";
            }
            $i++;
        }
        if (!empty($where)) {
            $updateCTListviewColorDataSql.= "\x20\x57\x48\x45\122\x45";
        }
        $j = 0;
        $count = count($where);
        foreach ($where as $k => $val) {
            if ($j + 1 != $count) {
                $updateCTListviewColorDataSql.= "\40{$k}\75{$val}\x20\101\x4e\x44";
            } else {
                $updateCTListviewColorDataSql.= "\x20{$k}\75{$val}";
            }
            $j++;
        }
        $adb->pquery($updateCTListviewColorDataSql);
    }
    public static function getCleanInstance($moduleName, $focus_module = "\103\124\x45\155\141\151\154\124\162\141\x63\x6b\145\x72") {
        global $log;
        $log->debug("\x49\x6e\163\x69\144\145\x20\146\x75\156\143\164\151\x6f\156\x20\147\x65\164\x43\x6c\145\141\x6e\x49\156\163\x74\141\x6e\143\x65\40\x2d\x20\x43\124\x45\155\141\151\154\124\162\141\143\153\x65\x72\137\122\145\143\157\x72\144\x5f\115\x6f\144\145\154\40" . $moduleName . "\40\46\40\146\x6f\x63\x75\x73\40\x6d\x6f\x64\165\x6c\145\40" . $focus_module);
        $focus = CRMEntity::getInstance($focus_module);
        $modelClassName = Vtiger_Loader::getComponentClassName("\x4d\x6f\144\x65\x6c", "\122\145\x63\x6f\x72\x64", $moduleName);
        $instance = new $modelClassName();
        return $instance->setData($focus->column_fields)->setModule($moduleName)->setEntity($focus);
    }
    public static function getInstanceById($recordId, $module = null) {
        global $log;
        $log->debug("\111\156\163\151\144\x65\40\x66\165\x6e\143\164\151\157\156\40\147\145\164\x49\156\163\x74\141\x6e\143\x65\x42\171\x49\144\40\55\x20\103\124\105\x6d\141\151\x6c\x54\162\141\143\x6b\x65\162\137\x52\x65\143\x6f\162\144\x5f\115\157\x64\x65\x6c");
        if (is_object($module) && is_a($module, "\126\164\x69\x67\x65\162\x5f\x4d\x6f\x64\x75\x6c\145\x5f\115\157\x64\x65\x6c")) {
            $moduleName = $module->get("\156\141\x6d\x65");
        } elseif (is_string($module)) {
            $module = Vtiger_Module_Model::getInstance($module);
            $moduleName = $module->get("\156\x61\x6d\145");
        } elseif (empty($module)) {
            $moduleName = getSalesEntityType($recordId);
            $module = Vtiger_Module_Model::getInstance($moduleName);
        }
        $focus = CRMEntity::getInstance($moduleName);
        $focus->id = $recordId;
        $focus->retrieve_entity_info($recordId, $moduleName);
        $modelClassName = Vtiger_Loader::getComponentClassName("\115\x6f\144\145\154", "\x52\145\143\x6f\162\144", $moduleName);
        $instance = new $modelClassName();
        return $instance->setData($focus->column_fields)->set("\x69\x64", $recordId)->setModuleFromInstance($module)->setEntity($focus);
    }
    public function send() {
        global $log;
        $log->debug("\x49\156\163\151\144\x65\40\x66\165\156\143\x74\151\x6f\156\40\163\x65\156\144\40\x2d\x20\x43\x54\105\155\x61\151\154\x54\x72\141\x63\153\145\162\137\x52\x65\x63\x6f\162\144\x5f\115\157\144\x65\154");
        $currentUserModel = Users_Record_Model::getCurrentUserModel();
        $rootDirectory = vglobal("\162\x6f\x6f\164\x5f\144\x69\162\x65\143\x74\157\162\x79");
        $mailer = Emails_Mailer_Model::getInstance();
        $mailer->IsHTML(true);
        $fromEmail = $this->getFromEmailAddress();
        $replyTo = $currentUserModel->get("\145\x6d\x61\151\154\x31");
        $userName = $currentUserModel->getName();
        $toEmailInfo = array_filter($this->get("\164\x6f\x65\155\x61\151\x6c\151\x6e\x66\x6f"));
        $emailsInfo = array();
        foreach ($toEmailInfo as $id => $emails) {
            foreach ($emails as $key => $value) {
                array_push($emailsInfo, $value);
            }
        }
        $toFieldData = array_diff(explode("\x2c", $this->get("\x73\141\x76\145\x64\x5f\164\157\x69\144")), $emailsInfo);
        $toEmailsData = array();
        $i = 1;
        foreach ($toFieldData as $value) {
            $toEmailInfo["\164\x6f" . $i++] = array($value);
        }
        $attachments = $this->getAttachmentDetails();
        $status = false;
        $mergedDescription = getMergedDescription($this->get("\x64\x65\x73\143\162\151\160\164\151\157\156"), $currentUserModel->getId(), "\x55\x73\x65\162\163");
        $mergedSubject = getMergedDescription($this->get("\163\165\x62\152\x65\x63\x74"), $currentUserModel->getId(), "\x55\163\x65\x72\163");
        $log->debug("\117\x75\164\x20\157\146\x20\x74\x6f\x45\x6d\141\x69\x6c\111\156\146\157\x20\146\157\x72\40\x6c\x6f\157\x70\x20" . print_r($toEmailInfo, true));
        foreach ($toEmailInfo as $id => $emails) {
            $mailer->reinitialize();
            $mailer->ConfigSenderInfo($fromEmail, $userName, $replyTo);
            $old_mod_strings = vglobal("\155\157\x64\137\x73\x74\x72\x69\156\147\163");
            $description = $this->get("\x64\x65\163\143\162\x69\x70\x74\x69\157\156");
            $subject = $this->get("\x73\165\142\152\x65\x63\x74");
            $parentModule = $this->getEntityType($id);
            if ($parentModule) {
                $currentLanguage = Vtiger_Language_Handler::getLanguage();
                $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage, $parentModule);
                vglobal("\155\x6f\144\x5f\163\x74\162\151\x6e\147\x73", $moduleLanguageStrings["\x6c\141\156\147\x75\x61\147\x65\123\x74\x72\x69\x6e\x67\x73"]);
                if ($parentModule != "\x55\x73\x65\162\x73") {
                    $description = getMergedDescription($mergedDescription, $id, $parentModule);
                    $subject = getMergedDescription($mergedSubject, $id, $parentModule);
                } else {
                    $description = getMergedDescription($description, $id, "\125\163\x65\162\x73");
                    $subject = getMergedDescription($mergedSubject, $id, "\125\163\x65\x72\x73");
                    vglobal("\x6d\157\x64\137\163\x74\x72\151\x6e\x67\163", $old_mod_strings);
                }
            }
            if (strpos($description, "\44\x6c\x6f\x67\x6f\44")) {
                $description = str_replace("\x24\154\157\147\157\x24", "\x3c\x69\155\147\40\163\162\143\x3d\47\x63\x69\144\x3a\154\x6f\147\157\47\40\57\76", $description);
                $logo = true;
            }
            foreach ($emails as $email) {
                global $current_user;
                $current_user_id = $current_user->id;
                $getEnableDisableValue = $this->getCtEmailTrackerEnableOrDisable();
                if ($getEnableDisableValue == 1) {
                    $emailId = $this->getId();
                    $recordModel = Vtiger_Record_Model::getCleanInstance("\x43\x54\x45\155\141\x69\x6c\124\162\x61\x63\x6b\x65\162");
                    $recordModel->set("\x61\x73\x73\151\x67\x6e\145\x64\137\165\163\145\162\x5f\x69\x64", $current_user_id);
                    $recordModel->set("\x61\143\x63\x65\163\x73\x5f\x63\x6f\x75\156\x74", 0);
                    $recordModel->set("\x65\155\x61\x69\x6c\x5f\x69\x64", $emailId);
                    $recordModel->set("\162\x65\x6c\141\164\145\144\137\151\144", $id);
                    $recordModel->set("\145\155\x61\x69\154\x5f\141\144\x64\x72\x65\x73\x73", '' . $email . '');
                    $recordModel->save();
                    $ctEmailTrackerId = $recordModel->getId();
                }
                $mailer->Body = $description;
                if ($parentModule) {
                    $mailer->Body = $this->convertUrlsToTrackUrls($mailer->Body, $recordId);
                    $getTrackImageDetail = $this->getTrackImageDetails($ctEmailTrackerId, $id, $this->isEmailTrackEnabled($parentModule));
                    $mailer->Body.= $getTrackImageDetail;
                }
                $mailer->Signature = str_replace(array("\x5c\x72\134\x6e", "\x5c\156"), "\x3c\142\x72\76", $currentUserModel->get("\x73\x69\147\x6e\141\x74\x75\x72\145"));
                if ($mailer->Signature != '') {
                    $mailer->Body.= "\x3c\142\x72\76\74\142\x72\76" . decode_html($mailer->Signature);
                }
                $mailer->Subject = $subject;
                $mailer->clearAllRecipients();
                $mailer->AddAddress($email);
                if (is_array($attachments)) {
                    foreach ($attachments as $attachment) {
                        $fileNameWithPath = $rootDirectory . $attachment["\160\141\164\x68"] . $attachment["\146\151\154\x65\151\144"] . "\137" . $attachment["\x61\x74\x74\x61\x63\150\155\x65\156\x74"];
                        if (is_file($fileNameWithPath)) {
                            $mailer->AddAttachment($fileNameWithPath, $attachment["\141\x74\164\141\x63\150\155\x65\x6e\x74"]);
                        }
                    }
                }
                if ($logo) {
                    $mailer->AddEmbeddedImage(dirname(__FILE__) . "\x2f\56\56\57\56\56\x2f\56\x2e\x2f\154\x61\x79\157\165\164\x73\x2f\x76\x6c\x61\171\157\165\164\57\163\x6b\151\x6e\x73\57\x69\x6d\x61\147\x65\x73\x2f\x6c\x6f\147\x6f\137\x6d\x61\x69\x6c\56\152\x70\147", "\x6c\157\147\157", "\154\157\147\x6f\56\152\x70\147", "\142\141\x73\145\66\64", "\151\x6d\141\147\145\x2f\152\160\x67");
                }
                $ccs = array_filter(explode("\54", $this->get("\x63\143\155\x61\x69\x6c")));
                $bccs = array_filter(explode("\x2c", $this->get("\142\x63\x63\155\141\x69\154")));
                if (!empty($ccs)) {
                    foreach ($ccs as $cc) {
                        $mailer->AddCC($cc);
                    }
                }
                if (!empty($bccs)) {
                    foreach ($bccs as $bcc) {
                        $mailer->AddBCC($bcc);
                    }
                }
                $status = $mailer->Send(true);
                if (!$status) {
                    $status = $mailer->getError();
                }
            }
        }
        return $status;
    }
    public function convertUrlsToTrackUrls($content, $crmid, $type = "\x68\164\x6d\154") {
        $extractedUrls = Vtiger_Functions::getUrlsFromHtml($content);
        foreach ($extractedUrls as $sourceUrl => $value) {
            $trackingUrl = $this->getTrackUrlForClicks($crmid, $sourceUrl, $value[0]);
            $content = $this->replaceLinkWithShortUrl($content, $trackingUrl, $sourceUrl, $type);
        }
        return $content;
    }
    public function getTrackUrlForClicks($parentId, $redirectUrl = false, $value) {
        global $dbconfig;
        $siteURL = vglobal("\x73\151\x74\x65\x5f\x55\122\x4c");
        $applicationKey = vglobal("\x61\x70\x70\154\x69\143\141\164\151\x6f\156\x5f\x75\x6e\151\161\165\x65\x5f\153\x65\171");
        $recordId = $this->getId();
        $redirectUrl = $siteURL . "\x2f\x6d\157\144\x75\x6c\x65\x73\x2f\x43\x54\105\x6d\141\x69\154\x54\162\x61\x63\x6b\145\x72\x2f\141\143\164\x69\x6f\156\163\57\124\x72\141\143\x6b\x4c\x69\156\153\101\143\x63\x65\x73\163\56\160\x68\160\x3f\162\145\143\157\x72\x64\75{$recordId}\x26\160\x61\x72\x65\x6e\x74\111\144\75{$parentId}\46\141\160\160\154\151\143\x61\164\x69\x6f\156\113\x65\x79\75{$applicationKey}";
        if ($redirectUrl) {
            $encodedRedirUrl = rawurlencode($redirectUrl);
            $trackURL.= "\46\162\145\x64\x69\162\x65\143\164\125\162\x6c\x3d{$encodedRedirUrl}";
        }
        return $trackURL;
    }
    public function replaceLinkWithShortUrl($content, $toReplace, $search, $type) {
        if ($type == "\x68\164\155\x6c") {
            $search = "\42" . $search . "\42";
            $toReplace = "\x22" . $toReplace . "\42";
        }
        $pos = strpos($content, $search);
        if ($pos != false) {
            $replacedContent = substr_replace($content, $toReplace, $pos) . substr($content, $pos + strlen($search));
            return $replacedContent;
        }
        return $content;
    }
    public function getTrackImageDetails($ctEmailTrackerId, $crmId, $emailTrack = true) {
        global $dbconfig;
        $siteURL = vglobal("\163\x69\164\x65\x5f\x55\122\114");
        $applicationKey = vglobal("\x61\x70\160\x6c\x69\x63\141\x74\151\157\x6e\137\x75\x6e\151\161\x75\145\x5f\x6b\x65\171");
        $emailId = $this->getId();
        $databaseName = $dbconfig["\x64\142\137\156\x61\155\x65"];
        $trackURL = $siteURL . "\57\x6d\x6f\x64\x75\154\x65\163\57\x43\x54\105\155\141\151\154\x54\x72\x61\x63\153\145\162\x2f\141\143\164\151\x6f\x6e\x73\57\124\162\x61\x63\153\x4c\151\156\153\x41\x63\x63\145\x73\x73\x2e\160\150\x70\x3f\143\x74\145\x6d\x61\x69\154\x74\162\141\143\x6b\145\x72\x69\144\75{$ctEmailTrackerId}\46\162\x65\143\x6f\x72\144\75{$emailId}\46\x70\x61\x72\145\x6e\164\x49\144\x3d{$crmId}\46\x61\160\160\154\151\143\141\x74\151\x6f\156\113\145\x79\75{$applicationKey}";
        $imageDetails = "\74\151\155\x67\x20\163\x72\143\75\47{$trackURL}\x27\40\x61\154\x74\x3d\x27\x27\x20\x77\151\144\x74\150\75\47\61\47\40\x68\145\x69\x67\x68\164\75\x27\x31\47\76";
        return $imageDetails;
    }
    public function getEntityType($id) {
        $db = PearDatabase::getInstance();
        $moduleModel = Vtiger_Module_Model::getInstance("\105\x6d\141\x69\154\x73");
        $emailRelatedModules = $moduleModel->getEmailRelatedModules();
        $relatedModule = '';
        if (!empty($id)) {
            $sql = "\123\x45\114\x45\x43\x54\40\163\x65\164\171\160\x65\x20\106\x52\117\x4d\x20\166\164\x69\147\145\x72\x5f\x63\162\x6d\x65\x6e\x74\x69\164\171\x20\127\110\105\x52\105\x20\x63\x72\155\x69\x64\x3d\77";
            $result = $db->pquery($sql, array($id));
            $relatedModule = $db->query_result($result, 0, "\163\x65\x74\x79\160\145");
            if (!in_array($relatedModule, $emailRelatedModules)) {
                $sql = "\123\105\114\x45\103\124\x20\151\144\40\106\122\117\115\40\166\164\x69\x67\x65\x72\137\165\163\x65\x72\163\40\127\x48\105\122\105\x20\151\x64\75\77";
                $result = $db->pquery($sql, array($id));
                if ($db->num_rows($result) > 0) {
                    $relatedModule = "\x55\x73\145\x72\163";
                }
            }
        }
        return $relatedModule;
    }
    public function getChartReportQuery($moduleName, $intervalType, $interval, $defaultTimezoneVal, $userTimezoneVal, $dateFormat) {
        $getChartReportQuery = "\123\105\x4c\105\x43\124\40{$dateFormat}\x28\103\x4f\x4e\126\105\x52\124\137\x54\132\50\143\62\x2e\140\x63\162\x65\141\164\x65\144\x74\151\x6d\145\x60\54\47{$defaultTimezoneVal}\x27\x2c\x27{$userTimezoneVal}\x27\x29\x29\x20\141\x73\x20\144\x61\x74\x65\x5f\150\157\x75\x72\x2c\x20\12\11\11\11\x63\x6f\165\156\x74\50\x2a\51\x20\x61\163\40\x6d\x61\x69\x6c\x63\157\x75\156\164\x2c\40\163\165\x6d\x28\x65\164\162\x2e\x60\141\x63\x63\x65\163\163\137\143\157\x75\x6e\164\140\51\40\141\x73\40\x6f\160\145\156\143\x6f\165\x6e\x74\x20\12\x9\x9\11\x46\122\117\x4d\x20\x60\x76\164\x69\x67\x65\162\x5f\x61\143\164\x69\166\x69\164\171\x60\40\xa\11\11\x9\111\x4e\x4e\105\x52\40\x4a\x4f\x49\116\40\x60\x76\x74\151\147\145\x72\x5f\x73\x65\141\143\x74\151\166\x69\164\171\162\x65\x6c\x60\x20\x4f\116\x20\x60\166\164\x69\x67\x65\x72\137\141\x63\164\x69\x76\151\164\171\140\x2e\x60\141\143\x74\151\166\151\x74\171\151\x64\x60\40\75\x20\140\x76\x74\151\x67\145\x72\x5f\163\x65\141\143\x74\151\x76\151\164\171\162\x65\154\140\56\140\141\143\164\151\x76\151\x74\171\151\x64\140\40\xa\x9\x9\11\x49\x4e\x4e\x45\122\x20\112\117\x49\x4e\40\140\166\x74\151\147\145\x72\137\x63\162\x6d\x65\x6e\x74\x69\164\x79\140\x20\141\163\40\x63\x32\x20\x4f\116\40\x60\x76\164\151\x67\145\162\137\141\143\164\x69\x76\x69\164\171\x60\56\x60\141\143\164\x69\x76\x69\164\x79\x69\144\140\40\x3d\x20\x63\62\x2e\x60\x63\162\x6d\151\x64\140\x20\12\11\x9\x9\x49\116\x4e\105\x52\x20\112\x4f\111\x4e\x20\x60\x76\x74\151\147\145\162\137\x63\x74\x65\x6d\141\x69\x6c\164\162\x61\x63\153\x65\162\140\40\141\163\x20\x65\164\162\x20\117\116\40\x60\x76\164\151\147\x65\162\137\x61\x63\x74\x69\166\151\x74\171\x60\x2e\140\141\143\x74\151\166\x69\x74\171\x69\x64\140\40\75\40\x65\164\162\56\x60\145\x6d\x61\151\x6c\137\151\x64\x60\x20\12\x9\x9\11\111\116\x4e\105\x52\40\112\x4f\x49\116\x20\140\x76\x74\151\147\145\x72\x5f\143\x72\155\145\x6e\x74\x69\164\x79\x60\x20\141\163\x20\143\61\x20\117\x4e\40\145\164\x72\x2e\x60\x72\145\x6c\x61\x74\x65\x64\x5f\x69\x64\x60\40\75\40\x63\61\56\x60\143\x72\155\x69\x64\140\x20\xa\x9\x9\x9\x57\x48\105\122\105\x20\140\x61\143\164\x69\x76\x69\164\171\164\x79\x70\x65\140\40\75\40\47\x45\x6d\141\x69\x6c\x73\x27\40\x41\116\x44\x20\143\61\x2e\x60\144\x65\x6c\145\x74\x65\x64\140\x20\75\40\x30\x20\x41\116\104\x20\x63\x31\x2e\140\x73\145\164\171\x70\x65\140\40\75\x20\x27{$moduleName}\x27";
        if ($intervalType == "\x48") {
            $getChartReportQuery.= "\40\x41\116\x44\x20\50\x43\117\116\x56\105\122\x54\x5f\x54\132\50\143\62\x2e\140\143\x72\x65\x61\164\145\144\x74\x69\155\x65\x60\54\47{$defaultTimezoneVal}\x27\54\x27{$userTimezoneVal}\47\x29\x20\x3e\40\x28\116\117\x57\x28\51\40\x2d\x20\111\x4e\124\105\122\126\101\x4c\40{$interval}\40\110\117\x55\x52\x29\51\40";
        } elseif ($intervalType == "\105\104") {
            $getChartReportQuery.= "\40\101\116\104\40\x44\x41\x54\x45\50\103\x4f\116\x56\x45\122\x54\137\x54\x5a\50\143\x32\56\x60\143\x72\145\141\164\145\x64\164\151\x6d\x65\140\x2c\x27{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\47\x29\x29\x20\x3d\40\103\x55\122\104\101\x54\x45\50\x29\40\55\40{$interval}";
        } elseif ($intervalType == "\x44\111") {
            $getChartReportQuery.= "\40\x41\x4e\104\x20\x28\103\117\x4e\126\x45\122\124\137\124\x5a\50\x63\x32\x2e\x60\143\x72\x65\141\164\145\144\164\x69\x6d\x65\140\54\47{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\x27\x29\40\x3e\75\40\x44\101\x54\x45\137\x53\x55\x42\50\x43\125\x52\104\x41\x54\105\50\51\54\40\x49\x4e\124\105\122\126\101\114\40{$interval}\x20\104\101\131\x29\51\x20";
        } elseif ($intervalType == "\127\111") {
            if ($interval == 0) {
                $getChartReportQuery.= "\40\101\116\x44\x20\x28\x57\105\x45\113\50\103\117\x4e\x56\105\122\x54\137\x54\x5a\50\143\x32\56\140\x63\162\x65\x61\164\145\x64\x74\x69\155\x65\x60\54\x27{$defaultTimezoneVal}\x27\54\47{$userTimezoneVal}\x27\x29\51\x20\x3d\40\x28\127\105\105\113\x28\x43\x55\122\x44\101\124\x45\x28\51\51\51\x20\x2d\x20{$interval}\x29\40\xa\x9\x9\x9\11\x9\11\x41\x4e\x44\40\131\105\101\122\50\103\x4f\116\126\105\122\x54\x5f\x54\132\x28\x63\x32\x2e\140\143\x72\x65\x61\x74\145\x64\164\x69\x6d\x65\x60\54\x27{$defaultTimezoneVal}\47\54\x27{$userTimezoneVal}\47\51\x29\x20\x3d\40\x59\105\101\x52\x28\x43\125\122\104\x41\124\x45\50\51\51\40";
            } else {
                if ($interval == 1) {
                    $getChartReportQuery.= "\x20\x41\116\x44\40\50\x57\x45\x45\x4b\x28\103\117\116\x56\105\122\x54\137\124\x5a\x28\143\x32\x2e\x60\143\162\x65\x61\164\145\144\164\x69\x6d\x65\140\x2c\47{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\x27\x29\51\40\x3d\x20\x28\x57\x45\105\113\x28\x43\125\122\104\101\124\x45\50\51\51\x29\x20\x2d\x20{$interval}\x29\40\12\11\x9\11\x9\x9\11\101\x4e\104\x20\x59\105\101\x52\50\x43\x4f\116\126\x45\122\x54\137\124\x5a\x28\x63\62\56\x60\x63\x72\145\x61\164\x65\x64\x74\x69\x6d\145\140\54\47{$defaultTimezoneVal}\x27\x2c\47{$userTimezoneVal}\x27\x29\x29\40\75\40\131\x45\x41\122\x28\103\125\122\x44\x41\x54\105\x28\x29\x29\40";
                } else {
                    if ($interval == 2) {
                        $getChartReportQuery.= "\40\101\116\x44\40\50\x57\105\105\113\50\103\117\116\126\x45\122\x54\137\124\132\50\x63\62\x2e\x60\x63\162\x65\141\164\x65\x64\164\151\x6d\145\140\x2c\x27\x2b\x30\x30\x3a\60\60\47\x2c\x27\x2b\x30\65\72\x33\x30\47\x29\x29\40\x3e\x3d\x20\x28\127\x45\x45\x4b\50\103\125\x52\x44\101\x54\x45\50\51\x29\40\x2d\x20{$interval}\x29\x20\x41\116\x44\40\x57\105\105\113\50\x43\117\116\x56\x45\122\124\137\x54\132\50\x63\x32\x2e\140\143\x72\x65\x61\164\x65\144\x74\151\x6d\145\x60\x2c\x27\x2b\60\x30\72\60\x30\47\x2c\x27\53\x30\x35\x3a\63\60\x27\x29\x29\40\x3c\x3d\40\50\127\105\105\x4b\50\103\x55\x52\x44\101\x54\105\50\x29\x29\x20\x2d\x20\x31\51\x29";
                    }
                }
            }
        } elseif ($intervalType == "\x4d\x49") {
            $getChartReportQuery.= "\x20\x41\x4e\x44\x20\50\x4d\117\x4e\x54\110\50\103\117\116\x56\105\122\124\137\x54\132\50\143\62\56\x60\143\162\145\141\164\145\x64\164\151\155\145\x60\x2c\x27{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\x27\x29\x29\x20\x3e\x3d\40\115\x4f\x4e\124\x48\x28\x43\x55\x52\x44\101\x54\105\x28\51\51\40\55\40{$interval}\x29\x20\xa\x9\x9\11\11\x9\x9\x41\x4e\x44\40\x59\105\101\122\x28\x43\x4f\x4e\126\105\x52\124\x5f\x54\x5a\x28\143\x32\56\140\x63\162\x65\141\164\145\x64\164\151\x6d\145\140\54\47{$defaultTimezoneVal}\47\54\x27{$userTimezoneVal}\47\x29\51\x20\75\40\131\105\x41\122\x28\x43\x55\122\104\101\124\105\50\x29\x29\x20";
        }
        $getChartReportQuery.= "\40\x47\122\117\125\x50\x20\x42\131\x20{$dateFormat}\50\x43\x4f\x4e\126\x45\x52\124\x5f\x54\x5a\50\x63\62\56\140\143\x72\145\x61\164\145\x64\x74\x69\x6d\145\140\54\x27{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\x27\x29\x29\54\143\x31\56\140\163\145\164\x79\x70\145\140";
        return $getChartReportQuery;
    }
    public function getSummaryReportQuery($moduleTableName, $moduleName, $id, $intervalType, $interval, $defaultTimezoneVal, $userTimezoneVal, $dateRange, $senderQuery) {
        global $current_user;
        $getSummaryReportQuery = "\163\x65\154\145\x63\x74\40\x2a\x20\106\x52\117\x4d\x20\x60\x76\x74\x69\147\145\162\x5f\x61\x63\x74\151\x76\151\x74\x79\140\x20\12\11\11\x9\111\116\116\105\x52\40\112\x4f\111\116\x20\140\166\164\x69\x67\x65\x72\137\163\145\141\x63\164\x69\166\151\164\171\162\x65\154\140\x20\117\116\40\140\166\x74\151\147\145\x72\137\x61\143\164\151\x76\x69\164\171\140\x2e\140\141\x63\x74\151\x76\151\x74\171\x69\144\x60\40\x3d\x20\x60\x76\164\151\x67\x65\x72\x5f\163\x65\141\x63\164\x69\166\151\164\171\x72\x65\154\x60\56\x60\x61\x63\164\151\166\x69\164\x79\x69\x64\140\40\xa\11\11\11\x49\116\x4e\x45\x52\40\112\x4f\111\x4e\x20\x60\166\164\151\x67\145\x72\137\x63\162\x6d\145\x6e\x74\x69\x74\x79\x60\x20\x61\x73\x20\143\x32\40\117\116\40\x60\x76\164\x69\147\x65\x72\x5f\x61\143\x74\151\166\151\164\171\140\56\x60\141\x63\164\x69\x76\x69\x74\171\151\144\140\x20\x3d\40\x63\x32\x2e\x60\x63\162\x6d\151\144\140\x20\12\x9\11\x9\x49\x4e\116\x45\122\x20\112\x4f\111\116\40\x60\166\x74\x69\x67\145\162\x5f\143\x74\145\155\141\x69\x6c\164\162\141\143\x6b\x65\x72\x60\x20\x61\x73\x20\145\164\162\x20\117\116\40\x60\166\x74\x69\x67\145\x72\x5f\x61\x63\164\151\166\x69\164\171\140\x2e\x60\141\143\164\x69\166\x69\164\171\x69\144\x60\40\75\x20\x65\164\x72\x2e\140\145\155\141\x69\154\137\x69\144\140\40\xa\11\11\x9\111\x4e\x4e\x45\122\x20\112\117\111\x4e\40\x60\166\x74\x69\x67\145\x72\x5f\143\162\x6d\145\x6e\164\x69\164\171\x60\40\x61\163\x20\x63\x31\40\x4f\116\40\145\x74\162\56\140\x72\x65\x6c\x61\164\145\144\137\151\x64\140\x20\x3d\40\x63\61\56\140\x63\x72\x6d\x69\144\140\xa\x9\x9\x9\111\116\116\x45\x52\40\112\117\x49\116\x20" . $moduleTableName . "\x20\x4f\x4e\x20\166\x74\151\147\x65\162\137\163\145\x61\x63\x74\x69\x76\151\x74\171\162\x65\x6c\56\x60\x63\x72\155\x69\144\140\40\x3d" . $moduleTableName . "\x2e" . $id . "\40\127\x48\105\x52\105\x20\140\141\143\x74\151\x76\x69\x74\x79\x74\171\160\145\x60\40\75\x20\x27\x45\155\141\151\x6c\163\x27\40\101\116\x44\40\143\x31\x2e\x60\x64\x65\154\x65\x74\145\144\140\40\x3d\x20\x30\x20\x41\116\x44\40\x63\x31\56\x60\x73\x65\x74\x79\x70\145\140\40\75\40\x27{$moduleName}\47";
        $getSummaryReportQuery.= "{$senderQuery}";
        if ($intervalType == "\110") {
            $getSummaryReportQuery.= "\x20\101\116\x44\40\x28\x43\x4f\116\126\105\122\x54\x5f\x54\132\50\143\x32\56\x60\x63\162\145\141\x74\145\144\164\x69\x6d\x65\x60\54\47{$defaultTimezoneVal}\47\54\x27{$userTimezoneVal}\x27\x29\40\x3e\40\x28\116\117\127\x28\51\x20\x2d\x20\x49\116\124\105\122\x56\101\x4c\40{$interval}\x20\x48\x4f\125\x52\x29\x29\x20";
        } elseif ($intervalType == "\105\x44") {
            $getSummaryReportQuery.= "\40\x41\116\x44\x20\104\x41\124\105\x28\103\117\x4e\x56\105\x52\124\x5f\x54\x5a\50\x63\62\56\x60\x63\162\145\141\164\x65\144\164\151\155\x65\140\54\47{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\47\51\51\40\75\40\103\125\122\x44\x41\124\105\x28\51\x20\x2d\40{$interval}";
        } elseif ($intervalType == "\x44\x49") {
            $getSummaryReportQuery.= "\x20\101\116\x44\x20\50\103\117\116\x56\x45\x52\124\x5f\124\132\x28\143\62\56\140\143\162\145\x61\164\x65\x64\x74\x69\155\x65\x60\x2c\47{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\47\x29\40\76\75\40\104\x41\124\105\137\123\125\x42\x28\x43\125\122\x44\101\x54\105\x28\x29\x2c\x20\x49\116\x54\105\x52\x56\101\114\40{$interval}\x20\x44\101\131\x29\51\x20";
        } elseif ($intervalType == "\x57\x49") {
            if ($interval == 0) {
                $getSummaryReportQuery.= "\x20\x41\116\x44\40\x28\127\105\x45\113\50\x43\117\x4e\x56\105\x52\124\x5f\124\x5a\x28\x63\x32\x2e\x60\143\162\x65\141\x74\x65\x64\x74\x69\155\x65\x60\54\47{$defaultTimezoneVal}\x27\54\x27{$userTimezoneVal}\47\51\51\x20\75\40\x28\x57\x45\105\x4b\x28\x43\125\122\x44\101\x54\105\x28\51\x29\51\40\55\40{$interval}\51\x20\xa\x9\x9\x9\11\x9\11\101\116\x44\x20\x59\x45\x41\x52\x28\x43\117\x4e\x56\105\x52\x54\137\124\x5a\x28\143\x32\56\140\x63\x72\145\x61\164\145\144\x74\151\x6d\x65\x60\54\47{$defaultTimezoneVal}\47\54\47{$userTimezoneVal}\x27\x29\x29\x20\x3d\40\x59\x45\x41\x52\x28\103\x55\x52\x44\x41\x54\x45\x28\x29\51\x20";
            } else {
                if ($interval == 1) {
                    $getSummaryReportQuery.= "\x20\x41\x4e\104\x20\50\x57\x45\x45\113\x28\103\x4f\116\x56\105\122\x54\x5f\124\132\x28\x63\x32\x2e\140\143\162\145\x61\164\x65\x64\164\x69\155\x65\140\x2c\47{$defaultTimezoneVal}\47\54\x27{$userTimezoneVal}\47\51\x29\x20\x3d\x20\x28\127\105\x45\x4b\x28\x43\125\x52\104\101\x54\105\x28\x29\51\x29\x20\x2d\40{$interval}\51\40\xa\11\11\11\x9\x9\11\x41\116\104\x20\131\x45\101\122\x28\x43\x4f\x4e\126\x45\122\x54\137\x54\132\50\143\x32\56\140\x63\162\145\x61\x74\x65\144\164\x69\155\145\x60\54\47{$defaultTimezoneVal}\x27\54\47{$userTimezoneVal}\x27\51\51\x20\x3d\40\x59\x45\101\x52\x28\x43\125\x52\104\x41\124\x45\50\x29\51\x20";
                } else {
                    if ($interval == 2) {
                        $getSummaryReportQuery.= "\x20\101\116\x44\x20\50\127\105\105\113\x28\103\x4f\116\x56\x45\x52\124\137\x54\x5a\50\x63\x32\56\140\x63\162\145\141\164\145\x64\x74\151\155\145\140\54\x27\x2b\60\x30\x3a\x30\x30\47\54\x27\x2b\x30\x35\x3a\x33\60\x27\x29\x29\40\76\x3d\x20\x28\127\105\x45\x4b\x28\x43\125\122\x44\101\124\105\x28\x29\51\x20\x2d\40{$interval}\x29\x20\x41\x4e\104\40\x57\x45\x45\113\50\103\x4f\116\x56\105\x52\124\x5f\x54\132\x28\143\x32\x2e\x60\x63\x72\x65\141\x74\145\144\x74\x69\x6d\x65\140\54\x27\53\x30\60\72\60\60\47\x2c\x27\x2b\60\x35\72\63\x30\x27\x29\x29\40\x3c\75\40\50\127\105\105\x4b\50\103\125\x52\104\101\x54\105\50\51\x29\x20\55\x20\61\51\51";
                    }
                }
            }
        } elseif ($intervalType == "\115\111") {
            $getSummaryReportQuery.= "\x20\x41\116\104\x20\x28\x4d\x4f\116\x54\110\50\x43\x4f\116\x56\x45\122\124\x5f\x54\x5a\x28\x63\x32\x2e\140\x63\162\x65\141\164\145\144\164\x69\x6d\x65\140\54\x27{$defaultTimezoneVal}\47\x2c\x27{$userTimezoneVal}\x27\x29\51\x20\x3e\x3d\40\115\x4f\x4e\x54\110\x28\x43\x55\122\x44\x41\124\105\x28\x29\x29\51\40\x2d\x20{$interval}\12\x9\11\x9\x9\11\11\101\116\104\40\x59\105\101\122\50\x43\x4f\116\126\105\122\x54\x5f\x54\x5a\50\143\x32\56\140\x63\162\x65\x61\x74\145\x64\164\151\x6d\145\x60\54\x27{$defaultTimezoneVal}\47\x2c\47{$userTimezoneVal}\47\x29\x29\40\x3d\x20\x59\105\101\x52\50\x43\125\122\104\x41\x54\105\x28\51\x29\40";
        } elseif ($dateRange != '') {
            $dateRanges = explode("\x2c", $dateRange);
            $currentUserFormat = $current_user->date_format;
            if ($currentUserFormat == "\x64\x64\x2d\x6d\x6d\x2d\x79\x79\x79\x79") {
                $userdate_format = "\144\x2d\155\55\131";
            } else {
                if ($currentUserFormat == "\155\155\x2d\144\x64\55\x79\x79\171\171") {
                    $userdate_format = "\155\x2d\144\x2d\131";
                } else {
                    if ($currentUserFormat == "\x79\x79\x79\x79\55\x6d\155\55\144\144") {
                        $userdate_format = "\131\x2d\155\55\x64";
                    }
                }
            }
            $start = DateTime::createFromFormat($userdate_format, $dateRanges[0]);
            $end = DateTime::createFromFormat($userdate_format, $dateRanges[1]);
            $convertStartDate = $start->format("\x59\55\155\x2d\144");
            $convertEndDate = $end->format("\131\x2d\155\55\144");
            $durationStartValue = strtotime($convertStartDate);
            $durationStartYear = date("\131", $durationStartValue);
            $durationStartDate = date("\144", $durationStartValue);
            $durationStartMonth = date("\x6d", $durationStartValue);
            $durationEndValue = strtotime($convertEndDate);
            $durationEndYear = date("\131", $durationEndValue);
            $durationEndDate = date("\x64", $durationEndValue);
            $durationEndMonth = date("\x6d", $durationEndValue);
            $fromDuration = $durationStartYear . "\x2d" . $durationStartMonth . "\x2d" . $durationStartDate;
            $toDuration = $durationEndYear . "\55" . $durationEndMonth . "\x2d" . $durationEndDate;
            $getSummaryReportQuery.= "\x20\101\x4e\x44\40\104\101\124\105\x28\143\62\x2e\x60\143\x72\145\x61\164\x65\x64\x74\151\155\145\x60\51\40\x42\105\124\x57\105\x45\116\x20\x27{$fromDuration}\x27\40\101\x4e\104\40\x27{$toDuration}\x27";
        }
        return $getSummaryReportQuery;
    }
}

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBjbGFzcyBDVEVtYWlsVHJhY2tlcl9SZWNvcmRfTW9kZWwgZXh0ZW5kcyBFbWFpbHNfUmVjb3JkX01vZGVsIHsgcHVibGljIGZ1bmN0aW9uIGdldEN0RW1haWxUcmFja2VyRW5hYmxlT3JEaXNhYmxlKCkgeyBnbG9iYWwgJGFkYjsgJHRhYmxlTmFtZSA9ICJcMTQzXHg3NFx4NWZceDY1XHg2ZFx4NjFceDY5XHg2Y1x4NWZcMTY0XDE2MlwxNDFcMTQzXHg2YlwxNDVcMTYyXHg1ZlwxNjNceDY1XDE2NFwxNjRcMTUxXDE1Nlx4NjdceDczIjsgJGZpZWxkTmFtZSA9IGFycmF5KCJceDY1XHg2ZVwxNDFceDYyXHg2Y1wxNDUiKTsgJGdldEVuYWJsZURpc2FibGVTcWxSZXN1bHQgPSBzZWxmOjpnZXRTZWxlY3RlZEN0RW1haWxUcmFja2VyRGF0YSgkdGFibGVOYW1lLCAkZmllbGROYW1lLCAkd2hlcmUgPSBOVUxMLCAkb3JkZXJGaWVsZHMgPSBOVUxMLCAkc29ydE9yZGVyID0gTlVMTCk7ICRnZXRFbmFibGVEaXNhYmxlVmFsdWUgPSAkYWRiLT5xdWVyeV9yZXN1bHQoJGdldEVuYWJsZURpc2FibGVTcWxSZXN1bHQsIDAsICJcMTQ1XDE1NlwxNDFcMTQyXDE1NFwxNDUiKTsgcmV0dXJuICRnZXRFbmFibGVEaXNhYmxlVmFsdWU7IH0gcHVibGljIGZ1bmN0aW9uIGdldFNlbGVjdGVkQ3RFbWFpbFRyYWNrZXJEYXRhKCR0YWJsZU5hbWUsICRmaWVsZE5hbWUsICR3aGVyZSwgJG9yZGVyRmllbGRzLCAkc29ydE9yZGVyKSB7IGdsb2JhbCAkYWRiOyAkc2VsZWN0Q1RFbWFpbFRyYWNrZXJEYXRhU3FsID0gJyc7ICRzZWxlY3RDVEVtYWlsVHJhY2tlckRhdGFTcWwgLj0gIlx4NTNcMTA1XDExNFx4NDVceDQzXHg1NFw0MCI7IGZvcmVhY2ggKCRmaWVsZE5hbWUgYXMgJGtleSA9PiAkdmFsdWUpIHsgaWYgKCRrZXkgPT0gMCkgeyAkc2VsZWN0Q1RFbWFpbFRyYWNrZXJEYXRhU3FsIC49ICR2YWx1ZTsgfSBlbHNlIHsgJHNlbGVjdENURW1haWxUcmFja2VyRGF0YVNxbCAuPSAiXHgyYyIgLiAkdmFsdWU7IH0gfSAkc2VsZWN0Q1RFbWFpbFRyYWNrZXJEYXRhU3FsIC49ICJcNDBcMTA2XHg1MlwxMTdcMTE1XDQweyR0YWJsZU5hbWV9IjsgJGkgPSAwOyAkZGF0YUNvdW50ID0gY291bnQoJHdoZXJlKTsgaWYgKCFlbXB0eSgkd2hlcmUpKSB7ICRzZWxlY3RDVEVtYWlsVHJhY2tlckRhdGFTcWwgLj0gIlw0MFwxMjdcMTEwXDEwNVx4NTJceDQ1IjsgfSBmb3JlYWNoICgkd2hlcmUgYXMgJGtleSA9PiAkdmFsdWUpIHsgaWYgKCRpICsgMSAhPSAkZGF0YUNvdW50KSB7ICRzZWxlY3RDVEVtYWlsVHJhY2tlckRhdGFTcWwgLj0gIlw0MHska2V5fVx4M2R7JHZhbHVlfVw0MFx4NDFceDRlXHg0NCI7IH0gZWxzZSB7ICRzZWxlY3RDVEVtYWlsVHJhY2tlckRhdGFTcWwgLj0gIlw0MHska2V5fVx4M2R7JHZhbHVlfSI7IH0gJGkrKzsgfSAkaiA9IDA7ICRjb3VudCA9IGNvdW50KCRvcmRlckZpZWxkcyk7IGlmICghZW1wdHkoJG9yZGVyRmllbGRzKSkgeyAkc2VsZWN0Q1RFbWFpbFRyYWNrZXJEYXRhU3FsIC49ICJcNDBcMTE3XDEyMlx4NDRcMTA1XDEyMlw0MFx4NDJcMTMxIjsgfSBmb3JlYWNoICgkb3JkZXJGaWVsZHMgYXMgJGtleSA9PiAkdmFsdWUpIHsgaWYgKCRqICsgMSAhPSAkY291bnQpIHsgJHNlbGVjdENURW1haWxUcmFja2VyRGF0YVNxbCAuPSAiXDQweyRrZXl9XHgyZXskdmFsdWV9IiAuICJceDIwIiAuICRzb3J0T3JkZXJbJGtleV0gLiAiXDQwXHgyYyI7IH0gZWxzZSB7ICRzZWxlY3RDVEVtYWlsVHJhY2tlckRhdGFTcWwgLj0gIlw0MHska2V5fVw1NnskdmFsdWV9IiAuICJcNDAiIC4gJHNvcnRPcmRlclska2V5XSAuICcnOyB9ICRqKys7IH0gJHNlbGVjdENURW1haWxUcmFja2VyRGF0YVNxbFJlc3VsdCA9ICRhZGItPnBxdWVyeSgkc2VsZWN0Q1RFbWFpbFRyYWNrZXJEYXRhU3FsKTsgcmV0dXJuICRzZWxlY3RDVEVtYWlsVHJhY2tlckRhdGFTcWxSZXN1bHQ7IH0gcHVibGljIGZ1bmN0aW9uIHVwZGF0ZUN0RW1haWxUcmFja2VyQ29uZmlndXJhdGlvbigkdmFsdWUpIHsgJHRhYmxlTmFtZSA9ICJceDYzXHg3NFwxMzdcMTQ1XDE1NVx4NjFceDY5XDE1NFx4NWZceDc0XHg3MlwxNDFcMTQzXDE1M1wxNDVcMTYyXDEzN1wxNjNcMTQ1XDE2NFx4NzRcMTUxXDE1Nlx4NjdceDczIjsgJHVwZGF0ZURhdGEgPSBhcnJheSgiXDE0NVx4NmVceDYxXHg2MlwxNTRcMTQ1IiA9PiAkdmFsdWUpOyAkdXBkYXRlTXVsdGlwbGVTTVRQUXVlcnkgPSBzZWxmOjp1cGRhdGVDdEVtYWlsVHJhY2tlckRhdGEoJHRhYmxlTmFtZSwgJHVwZGF0ZURhdGEsICR3aGVyZSA9IE5VTEwpOyB9IHB1YmxpYyBmdW5jdGlvbiB1cGRhdGVDdEVtYWlsVHJhY2tlckRhdGEoJHRhYmxlTmFtZSwgJHVwZGF0ZURhdGEsICR3aGVyZSkgeyBnbG9iYWwgJGFkYjsgJHVwZGF0ZUNUTGlzdHZpZXdDb2xvckRhdGFTcWwgPSAiXDEyNVwxMjBcMTA0XHg0MVwxMjRcMTA1XHgyMHskdGFibGVOYW1lfVw0MFwxMjNcMTA1XDEyNCI7ICRpID0gMDsgJGRhdGFDb3VudCA9IGNvdW50KCR1cGRhdGVEYXRhKTsgZm9yZWFjaCAoJHVwZGF0ZURhdGEgYXMgJGtleSA9PiAkdmFsdWUpIHsgaWYgKCRpICsgMSAhPSAkZGF0YUNvdW50KSB7ICR1cGRhdGVDVExpc3R2aWV3Q29sb3JEYXRhU3FsIC49ICJcNDB7JGtleX1cNzV7JHZhbHVlfVx4MmMiOyB9IGVsc2UgeyAkdXBkYXRlQ1RMaXN0dmlld0NvbG9yRGF0YVNxbCAuPSAiXHgyMHska2V5fVx4M2R7JHZhbHVlfSI7IH0gJGkrKzsgfSBpZiAoIWVtcHR5KCR3aGVyZSkpIHsgJHVwZGF0ZUNUTGlzdHZpZXdDb2xvckRhdGFTcWwgLj0gIlx4MjBceDU3XHg0OFx4NDVcMTIyXHg0NSI7IH0gJGogPSAwOyAkY291bnQgPSBjb3VudCgkd2hlcmUpOyBmb3JlYWNoICgkd2hlcmUgYXMgJGsgPT4gJHZhbCkgeyBpZiAoJGogKyAxICE9ICRjb3VudCkgeyAkdXBkYXRlQ1RMaXN0dmlld0NvbG9yRGF0YVNxbCAuPSAiXDQweyRrfVw3NXskdmFsfVx4MjBcMTAxXHg0ZVx4NDQiOyB9IGVsc2UgeyAkdXBkYXRlQ1RMaXN0dmlld0NvbG9yRGF0YVNxbCAuPSAiXHgyMHska31cNzV7JHZhbH0iOyB9ICRqKys7IH0gJGFkYi0+cHF1ZXJ5KCR1cGRhdGVDVExpc3R2aWV3Q29sb3JEYXRhU3FsKTsgfSBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldENsZWFuSW5zdGFuY2UoJG1vZHVsZU5hbWUsICRmb2N1c19tb2R1bGUgPSAiXDEwM1wxMjRceDQ1XDE1NVwxNDFcMTUxXDE1NFwxMjRcMTYyXDE0MVx4NjNceDZiXDE0NVx4NzIiKSB7IGdsb2JhbCAkbG9nOyAkbG9nLT5kZWJ1ZygiXHg0OVx4NmVcMTYzXHg2OVwxNDRcMTQ1XHgyMFwxNDZceDc1XDE1NlwxNDNcMTY0XDE1MVx4NmZcMTU2XHgyMFwxNDdceDY1XDE2NFx4NDNceDZjXDE0NVwxNDFceDZlXHg0OVwxNTZcMTYzXHg3NFwxNDFceDZlXDE0M1x4NjVcNDBceDJkXHgyMFx4NDNcMTI0XHg0NVwxNTVcMTQxXDE1MVwxNTRcMTI0XDE2MlwxNDFcMTQzXDE1M1x4NjVceDcyXDEzN1wxMjJcMTQ1XDE0M1wxNTdceDcyXDE0NFx4NWZcMTE1XHg2ZlwxNDRcMTQ1XDE1NFw0MCIgLiAkbW9kdWxlTmFtZSAuICJcNDBcNDZcNDBcMTQ2XHg2Zlx4NjNceDc1XHg3M1w0MFx4NmRceDZmXHg2NFwxNjVceDZjXDE0NVw0MCIgLiAkZm9jdXNfbW9kdWxlKTsgJGZvY3VzID0gQ1JNRW50aXR5OjpnZXRJbnN0YW5jZSgkZm9jdXNfbW9kdWxlKTsgJG1vZGVsQ2xhc3NOYW1lID0gVnRpZ2VyX0xvYWRlcjo6Z2V0Q29tcG9uZW50Q2xhc3NOYW1lKCJceDRkXHg2ZlwxNDRceDY1XHg2YyIsICJcMTIyXDE0NVx4NjNceDZmXHg3Mlx4NjQiLCAkbW9kdWxlTmFtZSk7ICRpbnN0YW5jZSA9IG5ldyAkbW9kZWxDbGFzc05hbWUoKTsgcmV0dXJuICRpbnN0YW5jZS0+c2V0RGF0YSgkZm9jdXMtPmNvbHVtbl9maWVsZHMpLT5zZXRNb2R1bGUoJG1vZHVsZU5hbWUpLT5zZXRFbnRpdHkoJGZvY3VzKTsgfSBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbmNlQnlJZCgkcmVjb3JkSWQsICRtb2R1bGUgPSBudWxsKSB7IGdsb2JhbCAkbG9nOyAkbG9nLT5kZWJ1ZygiXDExMVwxNTZcMTYzXDE1MVwxNDRceDY1XDQwXHg2NlwxNjVceDZlXDE0M1wxNjRcMTUxXDE1N1wxNTZcNDBcMTQ3XDE0NVwxNjRceDQ5XDE1NlwxNjNceDc0XDE0MVx4NmVcMTQzXHg2NVx4NDJcMTcxXHg0OVwxNDRcNDBcNTVceDIwXDEwM1wxMjRcMTA1XHg2ZFwxNDFcMTUxXHg2Y1x4NTRcMTYyXDE0MVwxNDNceDZiXHg2NVwxNjJcMTM3XHg1Mlx4NjVcMTQzXHg2ZlwxNjJcMTQ0XHg1ZlwxMTVcMTU3XHg2NFx4NjVceDZjIik7IGlmIChpc19vYmplY3QoJG1vZHVsZSkgJiYgaXNfYSgkbW9kdWxlLCAiXDEyNlwxNjRceDY5XHg2N1x4NjVcMTYyXHg1Zlx4NGRceDZmXHg2NFx4NzVceDZjXDE0NVx4NWZcMTE1XDE1N1x4NjRceDY1XHg2YyIpKSB7ICRtb2R1bGVOYW1lID0gJG1vZHVsZS0+Z2V0KCJcMTU2XDE0MVx4NmRceDY1Iik7IH0gZWxzZWlmIChpc19zdHJpbmcoJG1vZHVsZSkpIHsgJG1vZHVsZSA9IFZ0aWdlcl9Nb2R1bGVfTW9kZWw6OmdldEluc3RhbmNlKCRtb2R1bGUpOyAkbW9kdWxlTmFtZSA9ICRtb2R1bGUtPmdldCgiXDE1Nlx4NjFceDZkXDE0NSIpOyB9IGVsc2VpZiAoZW1wdHkoJG1vZHVsZSkpIHsgJG1vZHVsZU5hbWUgPSBnZXRTYWxlc0VudGl0eVR5cGUoJHJlY29yZElkKTsgJG1vZHVsZSA9IFZ0aWdlcl9Nb2R1bGVfTW9kZWw6OmdldEluc3RhbmNlKCRtb2R1bGVOYW1lKTsgfSAkZm9jdXMgPSBDUk1FbnRpdHk6OmdldEluc3RhbmNlKCRtb2R1bGVOYW1lKTsgJGZvY3VzLT5pZCA9ICRyZWNvcmRJZDsgJGZvY3VzLT5yZXRyaWV2ZV9lbnRpdHlfaW5mbygkcmVjb3JkSWQsICRtb2R1bGVOYW1lKTsgJG1vZGVsQ2xhc3NOYW1lID0gVnRpZ2VyX0xvYWRlcjo6Z2V0Q29tcG9uZW50Q2xhc3NOYW1lKCJcMTE1XHg2ZlwxNDRcMTQ1XDE1NCIsICJceDUyXDE0NVwxNDNceDZmXDE2MlwxNDQiLCAkbW9kdWxlTmFtZSk7ICRpbnN0YW5jZSA9IG5ldyAkbW9kZWxDbGFzc05hbWUoKTsgcmV0dXJuICRpbnN0YW5jZS0+c2V0RGF0YSgkZm9jdXMtPmNvbHVtbl9maWVsZHMpLT5zZXQoIlx4NjlceDY0IiwgJHJlY29yZElkKS0+c2V0TW9kdWxlRnJvbUluc3RhbmNlKCRtb2R1bGUpLT5zZXRFbnRpdHkoJGZvY3VzKTsgfSBwdWJsaWMgZnVuY3Rpb24gc2VuZCgpIHsgZ2xvYmFsICRsb2c7ICRsb2ctPmRlYnVnKCJceDQ5XDE1NlwxNjNcMTUxXDE0NFx4NjVcNDBceDY2XDE2NVwxNTZcMTQzXHg3NFwxNTFceDZmXDE1Nlw0MFwxNjNceDY1XDE1NlwxNDRcNDBceDJkXHgyMFx4NDNceDU0XDEwNVwxNTVceDYxXDE1MVwxNTRceDU0XHg3MlwxNDFceDYzXDE1M1wxNDVcMTYyXDEzN1x4NTJceDY1XHg2M1x4NmZcMTYyXDE0NFx4NWZcMTE1XDE1N1wxNDRceDY1XDE1NCIpOyAkY3VycmVudFVzZXJNb2RlbCA9IFVzZXJzX1JlY29yZF9Nb2RlbDo6Z2V0Q3VycmVudFVzZXJNb2RlbCgpOyAkcm9vdERpcmVjdG9yeSA9IHZnbG9iYWwoIlwxNjJceDZmXHg2ZlwxNjRceDVmXDE0NFx4NjlcMTYyXHg2NVwxNDNceDc0XDE1N1wxNjJceDc5Iik7ICRtYWlsZXIgPSBFbWFpbHNfTWFpbGVyX01vZGVsOjpnZXRJbnN0YW5jZSgpOyAkbWFpbGVyLT5Jc0hUTUwodHJ1ZSk7ICRmcm9tRW1haWwgPSAkdGhpcy0+Z2V0RnJvbUVtYWlsQWRkcmVzcygpOyAkcmVwbHlUbyA9ICRjdXJyZW50VXNlck1vZGVsLT5nZXQoIlwxNDVceDZkXHg2MVwxNTFcMTU0XHgzMSIpOyAkdXNlck5hbWUgPSAkY3VycmVudFVzZXJNb2RlbC0+Z2V0TmFtZSgpOyAkdG9FbWFpbEluZm8gPSBhcnJheV9maWx0ZXIoJHRoaXMtPmdldCgiXDE2NFx4NmZceDY1XDE1NVx4NjFcMTUxXHg2Y1wxNTFceDZlXHg2Nlx4NmYiKSk7ICRlbWFpbHNJbmZvID0gYXJyYXkoKTsgZm9yZWFjaCAoJHRvRW1haWxJbmZvIGFzICRpZCA9PiAkZW1haWxzKSB7IGZvcmVhY2ggKCRlbWFpbHMgYXMgJGtleSA9PiAkdmFsdWUpIHsgYXJyYXlfcHVzaCgkZW1haWxzSW5mbywgJHZhbHVlKTsgfSB9ICR0b0ZpZWxkRGF0YSA9IGFycmF5X2RpZmYoZXhwbG9kZSgiXHgyYyIsICR0aGlzLT5nZXQoIlx4NzNcMTQxXHg3NlwxNDVceDY0XHg1ZlwxNjRcMTU3XHg2OVwxNDQiKSksICRlbWFpbHNJbmZvKTsgJHRvRW1haWxzRGF0YSA9IGFycmF5KCk7ICRpID0gMTsgZm9yZWFjaCAoJHRvRmllbGREYXRhIGFzICR2YWx1ZSkgeyAkdG9FbWFpbEluZm9bIlwxNjRceDZmIiAuICRpKytdID0gYXJyYXkoJHZhbHVlKTsgfSAkYXR0YWNobWVudHMgPSAkdGhpcy0+Z2V0QXR0YWNobWVudERldGFpbHMoKTsgJHN0YXR1cyA9IGZhbHNlOyAkbWVyZ2VkRGVzY3JpcHRpb24gPSBnZXRNZXJnZWREZXNjcmlwdGlvbigkdGhpcy0+Z2V0KCJceDY0XHg2NVx4NzNcMTQzXDE2MlwxNTFcMTYwXDE2NFwxNTFcMTU3XDE1NiIpLCAkY3VycmVudFVzZXJNb2RlbC0+Z2V0SWQoKSwgIlx4NTVceDczXHg2NVwxNjJcMTYzIik7ICRtZXJnZWRTdWJqZWN0ID0gZ2V0TWVyZ2VkRGVzY3JpcHRpb24oJHRoaXMtPmdldCgiXDE2M1wxNjVceDYyXDE1Mlx4NjVceDYzXHg3NCIpLCAkY3VycmVudFVzZXJNb2RlbC0+Z2V0SWQoKSwgIlx4NTVcMTYzXHg2NVx4NzJcMTYzIik7ICRsb2ctPmRlYnVnKCJcMTE3XHg3NVwxNjRceDIwXDE1N1wxNDZceDIwXHg3NFx4NmZceDQ1XHg2ZFwxNDFceDY5XHg2Y1wxMTFcMTU2XDE0NlwxNTdceDIwXDE0NlwxNTdceDcyXDQwXHg2Y1x4NmZcMTU3XHg3MFx4MjAiIC4gcHJpbnRfcigkdG9FbWFpbEluZm8sIHRydWUpKTsgZm9yZWFjaCAoJHRvRW1haWxJbmZvIGFzICRpZCA9PiAkZW1haWxzKSB7ICRtYWlsZXItPnJlaW5pdGlhbGl6ZSgpOyAkbWFpbGVyLT5Db25maWdTZW5kZXJJbmZvKCRmcm9tRW1haWwsICR1c2VyTmFtZSwgJHJlcGx5VG8pOyAkb2xkX21vZF9zdHJpbmdzID0gdmdsb2JhbCgiXDE1NVwxNTdceDY0XDEzN1x4NzNceDc0XHg3Mlx4NjlcMTU2XDE0N1wxNjMiKTsgJGRlc2NyaXB0aW9uID0gJHRoaXMtPmdldCgiXHg2NFx4NjVcMTYzXDE0M1wxNjJceDY5XHg3MFx4NzRceDY5XDE1N1wxNTYiKTsgJHN1YmplY3QgPSAkdGhpcy0+Z2V0KCJceDczXDE2NVwxNDJcMTUyXHg2NVx4NjNceDc0Iik7ICRwYXJlbnRNb2R1bGUgPSAkdGhpcy0+Z2V0RW50aXR5VHlwZSgkaWQpOyBpZiAoJHBhcmVudE1vZHVsZSkgeyAkY3VycmVudExhbmd1YWdlID0gVnRpZ2VyX0xhbmd1YWdlX0hhbmRsZXI6OmdldExhbmd1YWdlKCk7ICRtb2R1bGVMYW5ndWFnZVN0cmluZ3MgPSBWdGlnZXJfTGFuZ3VhZ2VfSGFuZGxlcjo6Z2V0TW9kdWxlU3RyaW5nc0Zyb21GaWxlKCRjdXJyZW50TGFuZ3VhZ2UsICRwYXJlbnRNb2R1bGUpOyB2Z2xvYmFsKCJcMTU1XHg2ZlwxNDRceDVmXDE2M1x4NzRcMTYyXDE1MVx4NmVcMTQ3XHg3MyIsICRtb2R1bGVMYW5ndWFnZVN0cmluZ3NbIlx4NmNcMTQxXDE1NlwxNDdceDc1XHg2MVwxNDdceDY1XDEyM1x4NzRceDcyXHg2OVx4NmVceDY3XHg3MyJdKTsgaWYgKCRwYXJlbnRNb2R1bGUgIT0gIlx4NTVceDczXHg2NVwxNjJceDczIikgeyAkZGVzY3JpcHRpb24gPSBnZXRNZXJnZWREZXNjcmlwdGlvbigkbWVyZ2VkRGVzY3JpcHRpb24sICRpZCwgJHBhcmVudE1vZHVsZSk7ICRzdWJqZWN0ID0gZ2V0TWVyZ2VkRGVzY3JpcHRpb24oJG1lcmdlZFN1YmplY3QsICRpZCwgJHBhcmVudE1vZHVsZSk7IH0gZWxzZSB7ICRkZXNjcmlwdGlvbiA9IGdldE1lcmdlZERlc2NyaXB0aW9uKCRkZXNjcmlwdGlvbiwgJGlkLCAiXDEyNVwxNjNceDY1XDE2Mlx4NzMiKTsgJHN1YmplY3QgPSBnZXRNZXJnZWREZXNjcmlwdGlvbigkbWVyZ2VkU3ViamVjdCwgJGlkLCAiXDEyNVwxNjNceDY1XHg3Mlx4NzMiKTsgdmdsb2JhbCgiXHg2ZFwxNTdceDY0XDEzN1wxNjNceDc0XHg3MlwxNTFceDZlXHg2N1wxNjMiLCAkb2xkX21vZF9zdHJpbmdzKTsgfSB9IGlmIChzdHJwb3MoJGRlc2NyaXB0aW9uLCAiXDQ0XHg2Y1x4NmZceDY3XHg2Zlw0NCIpKSB7ICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCJceDI0XDE1NFwxNTdcMTQ3XDE1N1x4MjQiLCAiXHgzY1x4NjlcMTU1XDE0N1w0MFwxNjNcMTYyXDE0M1x4M2RcNDdceDYzXHg2OVwxNDRceDNhXDE1NFx4NmZcMTQ3XDE1N1w0N1w0MFw1N1w3NiIsICRkZXNjcmlwdGlvbik7ICRsb2dvID0gdHJ1ZTsgfSBmb3JlYWNoICgkZW1haWxzIGFzICRlbWFpbCkgeyBnbG9iYWwgJGN1cnJlbnRfdXNlcjsgJGN1cnJlbnRfdXNlcl9pZCA9ICRjdXJyZW50X3VzZXItPmlkOyAkZ2V0RW5hYmxlRGlzYWJsZVZhbHVlID0gJHRoaXMtPmdldEN0RW1haWxUcmFja2VyRW5hYmxlT3JEaXNhYmxlKCk7IGlmICgkZ2V0RW5hYmxlRGlzYWJsZVZhbHVlID09IDEpIHsgJGVtYWlsSWQgPSAkdGhpcy0+Z2V0SWQoKTsgJHJlY29yZE1vZGVsID0gVnRpZ2VyX1JlY29yZF9Nb2RlbDo6Z2V0Q2xlYW5JbnN0YW5jZSgiXHg0M1x4NTRceDQ1XDE1NVwxNDFceDY5XHg2Y1wxMjRcMTYyXHg2MVx4NjNceDZiXHg2NVwxNjIiKTsgJHJlY29yZE1vZGVsLT5zZXQoIlx4NjFceDczXHg3M1wxNTFceDY3XHg2ZVwxNDVceDY0XDEzN1wxNjVcMTYzXDE0NVwxNjJceDVmXHg2OVx4NjQiLCAkY3VycmVudF91c2VyX2lkKTsgJHJlY29yZE1vZGVsLT5zZXQoIlx4NjFcMTQzXHg2M1x4NjVcMTYzXHg3M1x4NWZceDYzXHg2Zlx4NzVcMTU2XHg3NCIsIDApOyAkcmVjb3JkTW9kZWwtPnNldCgiXHg2NVwxNTVceDYxXHg2OVx4NmNceDVmXHg2OVx4NjQiLCAkZW1haWxJZCk7ICRyZWNvcmRNb2RlbC0+c2V0KCJcMTYyXHg2NVx4NmNcMTQxXDE2NFwxNDVcMTQ0XDEzN1wxNTFcMTQ0IiwgJGlkKTsgJHJlY29yZE1vZGVsLT5zZXQoIlwxNDVcMTU1XHg2MVx4NjlcMTU0XHg1ZlwxNDFcMTQ0XHg2NFx4NzJceDY1XHg3M1x4NzMiLCAnJyAuICRlbWFpbCAuICcnKTsgJHJlY29yZE1vZGVsLT5zYXZlKCk7ICRjdEVtYWlsVHJhY2tlcklkID0gJHJlY29yZE1vZGVsLT5nZXRJZCgpOyB9ICRtYWlsZXItPkJvZHkgPSAkZGVzY3JpcHRpb247IGlmICgkcGFyZW50TW9kdWxlKSB7ICRtYWlsZXItPkJvZHkgPSAkdGhpcy0+Y29udmVydFVybHNUb1RyYWNrVXJscygkbWFpbGVyLT5Cb2R5LCAkcmVjb3JkSWQpOyAkZ2V0VHJhY2tJbWFnZURldGFpbCA9ICR0aGlzLT5nZXRUcmFja0ltYWdlRGV0YWlscygkY3RFbWFpbFRyYWNrZXJJZCwgJGlkLCAkdGhpcy0+aXNFbWFpbFRyYWNrRW5hYmxlZCgkcGFyZW50TW9kdWxlKSk7ICRtYWlsZXItPkJvZHkgLj0gJGdldFRyYWNrSW1hZ2VEZXRhaWw7IH0gJG1haWxlci0+U2lnbmF0dXJlID0gc3RyX3JlcGxhY2UoYXJyYXkoIlx4NWNceDcyXDEzNFx4NmUiLCAiXHg1Y1wxNTYiKSwgIlx4M2NcMTQyXHg3Mlw3NiIsICRjdXJyZW50VXNlck1vZGVsLT5nZXQoIlx4NzNceDY5XDE0N1x4NmVcMTQxXHg3NFx4NzVceDcyXDE0NSIpKTsgaWYgKCRtYWlsZXItPlNpZ25hdHVyZSAhPSAnJykgeyAkbWFpbGVyLT5Cb2R5IC49ICJceDNjXDE0Mlx4NzJcNzZcNzRcMTQyXHg3Mlw3NiIgLiBkZWNvZGVfaHRtbCgkbWFpbGVyLT5TaWduYXR1cmUpOyB9ICRtYWlsZXItPlN1YmplY3QgPSAkc3ViamVjdDsgJG1haWxlci0+Y2xlYXJBbGxSZWNpcGllbnRzKCk7ICRtYWlsZXItPkFkZEFkZHJlc3MoJGVtYWlsKTsgaWYgKGlzX2FycmF5KCRhdHRhY2htZW50cykpIHsgZm9yZWFjaCAoJGF0dGFjaG1lbnRzIGFzICRhdHRhY2htZW50KSB7ICRmaWxlTmFtZVdpdGhQYXRoID0gJHJvb3REaXJlY3RvcnkgLiAkYXR0YWNobWVudFsiXDE2MFwxNDFcMTY0XHg2OCJdIC4gJGF0dGFjaG1lbnRbIlwxNDZcMTUxXDE1NFx4NjVcMTUxXDE0NCJdIC4gIlwxMzciIC4gJGF0dGFjaG1lbnRbIlx4NjFceDc0XHg3NFx4NjFceDYzXDE1MFwxNTVceDY1XDE1Nlx4NzQiXTsgaWYgKGlzX2ZpbGUoJGZpbGVOYW1lV2l0aFBhdGgpKSB7ICRtYWlsZXItPkFkZEF0dGFjaG1lbnQoJGZpbGVOYW1lV2l0aFBhdGgsICRhdHRhY2htZW50WyJcMTQxXHg3NFwxNjRcMTQxXHg2M1wxNTBcMTU1XHg2NVx4NmVceDc0Il0pOyB9IH0gfSBpZiAoJGxvZ28pIHsgJG1haWxlci0+QWRkRW1iZWRkZWRJbWFnZShkaXJuYW1lKF9fRklMRV9fKSAuICJceDJmXDU2XDU2XDU3XDU2XDU2XHgyZlw1Nlx4MmVceDJmXDE1NFx4NjFceDc5XDE1N1wxNjVcMTY0XHg3M1x4MmZceDc2XHg2Y1x4NjFcMTcxXDE1N1wxNjVcMTY0XDU3XDE2M1x4NmJcMTUxXHg2ZVx4NzNcNTdceDY5XHg2ZFx4NjFcMTQ3XHg2NVx4NzNceDJmXHg2Y1x4NmZcMTQ3XHg2ZlwxMzdceDZkXHg2MVx4NjlceDZjXDU2XDE1Mlx4NzBcMTQ3IiwgIlx4NmNcMTU3XDE0N1wxNTciLCAiXDE1NFwxNTdcMTQ3XHg2Zlw1NlwxNTJceDcwXDE0NyIsICJcMTQyXDE0MVx4NzNcMTQ1XDY2XDY0IiwgIlwxNTFceDZkXDE0MVwxNDdcMTQ1XHgyZlwxNTJcMTYwXHg2NyIpOyB9ICRjY3MgPSBhcnJheV9maWx0ZXIoZXhwbG9kZSgiXDU0IiwgJHRoaXMtPmdldCgiXHg2M1wxNDNcMTU1XHg2MVx4NjlceDZjIikpKTsgJGJjY3MgPSBhcnJheV9maWx0ZXIoZXhwbG9kZSgiXHgyYyIsICR0aGlzLT5nZXQoIlwxNDJceDYzXHg2M1wxNTVcMTQxXHg2OVwxNTQiKSkpOyBpZiAoIWVtcHR5KCRjY3MpKSB7IGZvcmVhY2ggKCRjY3MgYXMgJGNjKSB7ICRtYWlsZXItPkFkZENDKCRjYyk7IH0gfSBpZiAoIWVtcHR5KCRiY2NzKSkgeyBmb3JlYWNoICgkYmNjcyBhcyAkYmNjKSB7ICRtYWlsZXItPkFkZEJDQygkYmNjKTsgfSB9ICRzdGF0dXMgPSAkbWFpbGVyLT5TZW5kKHRydWUpOyBpZiAoISRzdGF0dXMpIHsgJHN0YXR1cyA9ICRtYWlsZXItPmdldEVycm9yKCk7IH0gfSB9IHJldHVybiAkc3RhdHVzOyB9IHB1YmxpYyBmdW5jdGlvbiBjb252ZXJ0VXJsc1RvVHJhY2tVcmxzKCRjb250ZW50LCAkY3JtaWQsICR0eXBlID0gIlx4NjhcMTY0XHg2ZFwxNTQiKSB7ICRleHRyYWN0ZWRVcmxzID0gVnRpZ2VyX0Z1bmN0aW9uczo6Z2V0VXJsc0Zyb21IdG1sKCRjb250ZW50KTsgZm9yZWFjaCAoJGV4dHJhY3RlZFVybHMgYXMgJHNvdXJjZVVybCA9PiAkdmFsdWUpIHsgJHRyYWNraW5nVXJsID0gJHRoaXMtPmdldFRyYWNrVXJsRm9yQ2xpY2tzKCRjcm1pZCwgJHNvdXJjZVVybCwgJHZhbHVlWzBdKTsgJGNvbnRlbnQgPSAkdGhpcy0+cmVwbGFjZUxpbmtXaXRoU2hvcnRVcmwoJGNvbnRlbnQsICR0cmFja2luZ1VybCwgJHNvdXJjZVVybCwgJHR5cGUpOyB9IHJldHVybiAkY29udGVudDsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0VHJhY2tVcmxGb3JDbGlja3MoJHBhcmVudElkLCAkcmVkaXJlY3RVcmwgPSBmYWxzZSwgJHZhbHVlKSB7IGdsb2JhbCAkZGJjb25maWc7ICRzaXRlVVJMID0gdmdsb2JhbCgiXHg3M1wxNTFceDc0XHg2NVx4NWZceDU1XDEyMlx4NGMiKTsgJGFwcGxpY2F0aW9uS2V5ID0gdmdsb2JhbCgiXHg2MVx4NzBceDcwXDE1NFx4NjlcMTQzXDE0MVwxNjRcMTUxXHg2ZlwxNTZceDVmXHg3NVx4NmVcMTUxXDE2MVwxNjVceDY1XHg1ZlwxNTNceDY1XDE3MSIpOyAkcmVjb3JkSWQgPSAkdGhpcy0+Z2V0SWQoKTsgJHJlZGlyZWN0VXJsID0gJHNpdGVVUkwgLiAiXHgyZlx4NmRcMTU3XDE0NFx4NzVceDZjXHg2NVx4NzNceDJmXHg0M1x4NTRcMTA1XHg2ZFwxNDFceDY5XDE1NFx4NTRcMTYyXHg2MVx4NjNceDZiXDE0NVx4NzJceDJmXDE0MVwxNDNcMTY0XHg2OVx4NmZcMTU2XDE2M1w1N1wxMjRceDcyXDE0MVwxNDNceDZiXHg0Y1x4NjlcMTU2XDE1M1wxMDFcMTQzXHg2M1x4NjVceDczXDE2M1w1NlwxNjBceDY4XDE2MFx4M2ZcMTYyXDE0NVwxNDNcMTU3XHg3Mlx4NjRcNzV7JHJlY29yZElkfVx4MjZcMTYwXHg2MVx4NzJceDY1XHg2ZVx4NzRcMTExXDE0NFw3NXskcGFyZW50SWR9XDQ2XDE0MVwxNjBcMTYwXDE1NFwxNTFcMTQzXHg2MVwxNjRceDY5XHg2ZlwxNTZcMTEzXHg2NVx4NzlcNzV7JGFwcGxpY2F0aW9uS2V5fSI7IGlmICgkcmVkaXJlY3RVcmwpIHsgJGVuY29kZWRSZWRpclVybCA9IHJhd3VybGVuY29kZSgkcmVkaXJlY3RVcmwpOyAkdHJhY2tVUkwgLj0gIlw0NlwxNjJcMTQ1XHg2NFx4NjlcMTYyXHg2NVwxNDNcMTY0XDEyNVwxNjJceDZjXHgzZHskZW5jb2RlZFJlZGlyVXJsfSI7IH0gcmV0dXJuICR0cmFja1VSTDsgfSBwdWJsaWMgZnVuY3Rpb24gcmVwbGFjZUxpbmtXaXRoU2hvcnRVcmwoJGNvbnRlbnQsICR0b1JlcGxhY2UsICRzZWFyY2gsICR0eXBlKSB7IGlmICgkdHlwZSA9PSAiXHg2OFwxNjRcMTU1XHg2YyIpIHsgJHNlYXJjaCA9ICJcNDIiIC4gJHNlYXJjaCAuICJcNDIiOyAkdG9SZXBsYWNlID0gIlx4MjIiIC4gJHRvUmVwbGFjZSAuICJcNDIiOyB9ICRwb3MgPSBzdHJwb3MoJGNvbnRlbnQsICRzZWFyY2gpOyBpZiAoJHBvcyAhPSBmYWxzZSkgeyAkcmVwbGFjZWRDb250ZW50ID0gc3Vic3RyX3JlcGxhY2UoJGNvbnRlbnQsICR0b1JlcGxhY2UsICRwb3MpIC4gc3Vic3RyKCRjb250ZW50LCAkcG9zICsgc3RybGVuKCRzZWFyY2gpKTsgcmV0dXJuICRyZXBsYWNlZENvbnRlbnQ7IH0gcmV0dXJuICRjb250ZW50OyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRUcmFja0ltYWdlRGV0YWlscygkY3RFbWFpbFRyYWNrZXJJZCwgJGNybUlkLCAkZW1haWxUcmFjayA9IHRydWUpIHsgZ2xvYmFsICRkYmNvbmZpZzsgJHNpdGVVUkwgPSB2Z2xvYmFsKCJcMTYzXHg2OVwxNjRceDY1XHg1Zlx4NTVcMTIyXDExNCIpOyAkYXBwbGljYXRpb25LZXkgPSB2Z2xvYmFsKCJceDYxXHg3MFwxNjBceDZjXHg2OVx4NjNcMTQxXHg3NFwxNTFcMTU3XHg2ZVwxMzdceDc1XHg2ZVwxNTFcMTYxXHg3NVwxNDVceDVmXHg2Ylx4NjVcMTcxIik7ICRlbWFpbElkID0gJHRoaXMtPmdldElkKCk7ICRkYXRhYmFzZU5hbWUgPSAkZGJjb25maWdbIlx4NjRcMTQyXDEzN1wxNTZceDYxXDE1NVx4NjUiXTsgJHRyYWNrVVJMID0gJHNpdGVVUkwgLiAiXDU3XHg2ZFx4NmZceDY0XHg3NVwxNTRceDY1XDE2M1w1N1x4NDNceDU0XDEwNVwxNTVcMTQxXDE1MVwxNTRceDU0XHg3Mlx4NjFceDYzXDE1M1wxNDVcMTYyXHgyZlwxNDFcMTQzXDE2NFwxNTFceDZmXHg2ZVx4NzNcNTdcMTI0XDE2Mlx4NjFceDYzXDE1M1x4NGNcMTUxXDE1NlwxNTNceDQxXHg2M1x4NjNcMTQ1XHg3M1x4NzNceDJlXDE2MFwxNTBceDcwXHgzZlwxNDNceDc0XDE0NVx4NmRceDYxXHg2OVwxNTRceDc0XDE2MlwxNDFcMTQzXHg2YlwxNDVceDcyXHg2OVwxNDRcNzV7JGN0RW1haWxUcmFja2VySWR9XDQ2XDE2Mlx4NjVcMTQzXHg2Zlx4NzJcMTQ0XDc1eyRlbWFpbElkfVw0Nlx4NzBceDYxXHg3MlwxNDVceDZlXDE2NFx4NDlcMTQ0XHgzZHskY3JtSWR9XDQ2XHg2MVwxNjBcMTYwXDE1NFwxNTFcMTQzXDE0MVx4NzRcMTUxXHg2ZlwxNTZcMTEzXDE0NVx4NzlcNzV7JGFwcGxpY2F0aW9uS2V5fSI7ICRpbWFnZURldGFpbHMgPSAiXDc0XDE1MVwxNTVceDY3XHgyMFwxNjNceDcyXDE0M1w3NVw0N3skdHJhY2tVUkx9XHgyN1w0MFx4NjFcMTU0XHg3NFx4M2RceDI3XHgyN1x4MjBceDc3XDE1MVwxNDRceDc0XDE1MFw3NVw0N1w2MVw0N1w0MFx4NjhcMTQ1XHg2OVx4NjdceDY4XDE2NFw3NVx4MjdceDMxXDQ3XDc2IjsgcmV0dXJuICRpbWFnZURldGFpbHM7IH0gcHVibGljIGZ1bmN0aW9uIGdldEVudGl0eVR5cGUoJGlkKSB7ICRkYiA9IFBlYXJEYXRhYmFzZTo6Z2V0SW5zdGFuY2UoKTsgJG1vZHVsZU1vZGVsID0gVnRpZ2VyX01vZHVsZV9Nb2RlbDo6Z2V0SW5zdGFuY2UoIlwxMDVceDZkXDE0MVx4NjlcMTU0XHg3MyIpOyAkZW1haWxSZWxhdGVkTW9kdWxlcyA9ICRtb2R1bGVNb2RlbC0+Z2V0RW1haWxSZWxhdGVkTW9kdWxlcygpOyAkcmVsYXRlZE1vZHVsZSA9ICcnOyBpZiAoIWVtcHR5KCRpZCkpIHsgJHNxbCA9ICJcMTIzXHg0NVwxMTRceDQ1XHg0M1x4NTRcNDBcMTYzXHg2NVwxNjRcMTcxXDE2MFx4NjVceDIwXDEwNlx4NTJcMTE3XHg0ZFx4MjBcMTY2XDE2NFx4NjlcMTQ3XDE0NVx4NzJceDVmXHg2M1wxNjJceDZkXHg2NVx4NmVceDc0XHg2OVwxNjRcMTcxXHgyMFwxMjdcMTEwXDEwNVx4NTJcMTA1XHgyMFx4NjNceDcyXDE1NVx4NjlceDY0XHgzZFw3NyI7ICRyZXN1bHQgPSAkZGItPnBxdWVyeSgkc3FsLCBhcnJheSgkaWQpKTsgJHJlbGF0ZWRNb2R1bGUgPSAkZGItPnF1ZXJ5X3Jlc3VsdCgkcmVzdWx0LCAwLCAiXDE2M1x4NjVceDc0XHg3OVwxNjBcMTQ1Iik7IGlmICghaW5fYXJyYXkoJHJlbGF0ZWRNb2R1bGUsICRlbWFpbFJlbGF0ZWRNb2R1bGVzKSkgeyAkc3FsID0gIlwxMjNcMTA1XDExNFx4NDVcMTAzXDEyNFx4MjBcMTUxXDE0NFw0MFwxMDZcMTIyXDExN1wxMTVcNDBcMTY2XDE2NFx4NjlceDY3XHg2NVx4NzJcMTM3XDE2NVwxNjNceDY1XHg3MlwxNjNcNDBcMTI3XHg0OFwxMDVcMTIyXDEwNVx4MjBcMTUxXHg2NFw3NVw3NyI7ICRyZXN1bHQgPSAkZGItPnBxdWVyeSgkc3FsLCBhcnJheSgkaWQpKTsgaWYgKCRkYi0+bnVtX3Jvd3MoJHJlc3VsdCkgPiAwKSB7ICRyZWxhdGVkTW9kdWxlID0gIlx4NTVceDczXDE0NVx4NzJcMTYzIjsgfSB9IH0gcmV0dXJuICRyZWxhdGVkTW9kdWxlOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRDaGFydFJlcG9ydFF1ZXJ5KCRtb2R1bGVOYW1lLCAkaW50ZXJ2YWxUeXBlLCAkaW50ZXJ2YWwsICRkZWZhdWx0VGltZXpvbmVWYWwsICR1c2VyVGltZXpvbmVWYWwsICRkYXRlRm9ybWF0KSB7ICRnZXRDaGFydFJlcG9ydFF1ZXJ5ID0gIlwxMjNcMTA1XHg0Y1wxMDVceDQzXDEyNFw0MHskZGF0ZUZvcm1hdH1ceDI4XDEwM1x4NGZceDRlXDEyNlwxMDVceDUyXDEyNFwxMzdceDU0XDEzMlw1MFwxNDNcNjJceDJlXDE0MFx4NjNcMTYyXHg2NVwxNDFcMTY0XHg2NVwxNDRceDc0XDE1MVx4NmRcMTQ1XHg2MFw1NFw0N3skZGVmYXVsdFRpbWV6b25lVmFsfVx4MjdceDJjXHgyN3skdXNlclRpbWV6b25lVmFsfVx4MjdceDI5XHgyOVx4MjBcMTQxXHg3M1x4MjBcMTQ0XHg2MVx4NzRceDY1XHg1ZlwxNTBcMTU3XHg3NVx4NzJceDJjXHgyMFwxMlwxMVwxMVwxMVx4NjNceDZmXDE2NVwxNTZceDc0XDUwXHgyYVw1MVx4MjBceDYxXDE2M1w0MFx4NmRceDYxXHg2OVx4NmNceDYzXDE1N1x4NzVcMTU2XDE2NFx4MmNcNDBcMTYzXDE2NVx4NmRceDI4XHg2NVwxNjRcMTYyXHgyZVx4NjBcMTQxXHg2M1x4NjNceDY1XDE2M1wxNjNcMTM3XDE0M1wxNTdceDc1XHg2ZVwxNjRcMTQwXDUxXDQwXDE0MVx4NzNcNDBceDZmXDE2MFwxNDVcMTU2XDE0M1x4NmZcMTY1XHg2ZVx4NzRceDIwXDEyXHg5XHg5XDExXHg0NlwxMjJcMTE3XHg0ZFx4MjBceDYwXHg3NlwxNjRceDY5XHg2N1x4NjVcMTYyXHg1Zlx4NjFcMTQzXDE2NFx4NjlcMTY2XHg2OVwxNjRcMTcxXHg2MFw0MFx4YVwxMVwxMVx4OVwxMTFceDRlXHg0ZVwxMDVceDUyXDQwXHg0YVx4NGZceDQ5XDExNlw0MFx4NjBceDc2XHg3NFwxNTFcMTQ3XDE0NVx4NzJceDVmXHg3M1x4NjVcMTQxXDE0M1x4NzRcMTUxXDE2Nlx4NjlcMTY0XDE3MVwxNjJceDY1XHg2Y1x4NjBceDIwXHg0ZlwxMTZceDIwXHg2MFwxNjZcMTY0XHg2OVx4NjdceDY1XHg3MlwxMzdcMTQxXHg2M1wxNjRceDY5XHg3NlwxNTFcMTY0XDE3MVwxNDBceDJlXHg2MFwxNDFcMTQzXHg3NFwxNTFcMTY2XDE1MVx4NzRcMTcxXDE1MVx4NjRceDYwXDQwXDc1XHgyMFwxNDBceDc2XHg3NFwxNTFceDY3XDE0NVx4NzJceDVmXDE2M1x4NjVcMTQxXDE0M1x4NzRcMTUxXHg3NlwxNTFcMTY0XDE3MVwxNjJceDY1XDE1NFwxNDBcNTZcMTQwXDE0MVwxNDNcMTY0XDE1MVx4NzZcMTUxXHg3NFwxNzFcMTUxXHg2NFwxNDBcNDBceGFceDlceDlcMTFceDQ5XHg0ZVx4NGVceDQ1XDEyMlx4MjBcMTEyXDExN1x4NDlceDRlXDQwXDE0MFwxNjZceDc0XDE1MVwxNDdcMTQ1XHg3MlwxMzdceDYzXDE2Mlx4NmRceDY1XHg2ZVx4NzRceDY5XDE2NFx4NzlcMTQwXHgyMFwxNDFcMTYzXDQwXHg2M1x4MzJceDIwXHg0ZlwxMTZcNDBceDYwXHg3NlwxNjRcMTUxXHg2N1wxNDVcMTYyXDEzN1wxNDFcMTQzXDE2NFx4NjlceDc2XHg2OVwxNjRcMTcxXHg2MFw1Nlx4NjBcMTQxXDE0M1wxNjRceDY5XHg3Nlx4NjlcMTY0XHg3OVx4NjlcMTQ0XDE0MFw0MFx4M2RceDIwXHg2M1w2Mlx4MmVceDYwXHg2M1wxNjJceDZkXDE1MVx4NjRcMTQwXHgyMFwxMlwxMVx4OVx4OVx4NDlcMTE2XHg0ZVwxMDVceDUyXHgyMFwxMTJceDRmXDExMVx4NGVceDIwXHg2MFx4NzZceDc0XDE1MVwxNDdcMTQ1XDE2MlwxMzdceDYzXHg3NFx4NjVceDZkXDE0MVx4NjlceDZjXDE2NFwxNjJceDYxXHg2M1wxNTNceDY1XDE2MlwxNDBcNDBcMTQxXDE2M1x4MjBceDY1XDE2NFwxNjJceDIwXDExN1wxMTZcNDBceDYwXHg3NlwxNjRcMTUxXDE0N1x4NjVcMTYyXDEzN1x4NjFceDYzXHg3NFx4NjlcMTY2XDE1MVx4NzRcMTcxXHg2MFx4MmVcMTQwXDE0MVwxNDNceDc0XDE1MVwxNjZceDY5XHg3NFwxNzFceDY5XHg2NFwxNDBcNDBcNzVcNDBceDY1XDE2NFwxNjJcNTZceDYwXDE0NVx4NmRceDYxXDE1MVx4NmNcMTM3XDE1MVx4NjRceDYwXHgyMFwxMlx4OVx4OVwxMVwxMTFcMTE2XHg0ZVwxMDVceDUyXDQwXDExMlx4NGZceDQ5XDExNlx4MjBcMTQwXHg3Nlx4NzRcMTUxXDE0N1wxNDVceDcyXHg1ZlwxNDNceDcyXDE1NVwxNDVceDZlXHg3NFx4NjlcMTY0XHg3OVx4NjBceDIwXDE0MVwxNjNceDIwXDE0M1w2MVx4MjBcMTE3XHg0ZVw0MFwxNDVcMTY0XHg3Mlx4MmVceDYwXHg3MlwxNDVceDZjXHg2MVx4NzRceDY1XHg2NFx4NWZceDY5XHg2NFx4NjBcNDBcNzVcNDBceDYzXDYxXDU2XHg2MFwxNDNceDcyXDE1NVx4NjlceDY0XDE0MFx4MjBceGFceDlceDlceDlceDU3XHg0OFwxMDVcMTIyXDEwNVx4MjBcMTQwXHg2MVwxNDNcMTY0XHg2OVx4NzZceDY5XDE2NFwxNzFcMTY0XHg3OVx4NzBceDY1XDE0MFw0MFw3NVw0MFw0N1x4NDVceDZkXDE0MVx4NjlceDZjXHg3M1x4MjdcNDBceDQxXDExNlx4NDRceDIwXDE0M1w2MVx4MmVceDYwXDE0NFx4NjVceDZjXDE0NVx4NzRceDY1XHg2NFwxNDBceDIwXDc1XDQwXHgzMFx4MjBceDQxXDExNlwxMDRceDIwXHg2M1x4MzFceDJlXDE0MFx4NzNcMTQ1XDE2NFwxNzFceDcwXHg2NVwxNDBcNDBcNzVceDIwXHgyN3skbW9kdWxlTmFtZX1ceDI3IjsgaWYgKCRpbnRlcnZhbFR5cGUgPT0gIlx4NDgiKSB7ICRnZXRDaGFydFJlcG9ydFF1ZXJ5IC49ICJcNDBceDQxXDExNlx4NDRceDIwXDUwXHg0M1wxMTdcMTE2XHg1NlwxMDVcMTIyXHg1NFx4NWZceDU0XDEzMlw1MFwxNDNcNjJceDJlXDE0MFwxNDNceDcyXHg2NVx4NjFcMTY0XDE0NVwxNDRceDc0XHg2OVwxNTVceDY1XHg2MFw1NFw0N3skZGVmYXVsdFRpbWV6b25lVmFsfVx4MjdcNTRceDI3eyR1c2VyVGltZXpvbmVWYWx9XDQ3XHgyOVx4MjBceDNlXDQwXHgyOFwxMTZcMTE3XHg1N1x4MjhcNTFcNDBceDJkXHgyMFwxMTFceDRlXDEyNFwxMDVcMTIyXDEyNlwxMDFceDRjXDQweyRpbnRlcnZhbH1cNDBcMTEwXDExN1x4NTVceDUyXHgyOVw1MVw0MCI7IH0gZWxzZWlmICgkaW50ZXJ2YWxUeXBlID09ICJcMTA1XDEwNCIpIHsgJGdldENoYXJ0UmVwb3J0UXVlcnkgLj0gIlw0MFwxMDFcMTE2XDEwNFw0MFx4NDRceDQxXHg1NFx4NDVcNTBcMTAzXHg0ZlwxMTZceDU2XHg0NVwxMjJceDU0XDEzN1x4NTRceDVhXDUwXDE0M1x4MzJcNTZceDYwXDE0M1x4NzJcMTQ1XDE0MVwxNjRcMTQ1XHg2NFwxNjRcMTUxXHg2ZFx4NjVcMTQwXHgyY1x4Mjd7JGRlZmF1bHRUaW1lem9uZVZhbH1cNDdceDJjXDQ3eyR1c2VyVGltZXpvbmVWYWx9XDQ3XHgyOVx4MjlceDIwXHgzZFw0MFwxMDNceDU1XDEyMlwxMDRcMTAxXHg1NFx4NDVcNTBceDI5XDQwXDU1XDQweyRpbnRlcnZhbH0iOyB9IGVsc2VpZiAoJGludGVydmFsVHlwZSA9PSAiXHg0NFwxMTEiKSB7ICRnZXRDaGFydFJlcG9ydFF1ZXJ5IC49ICJcNDBceDQxXHg0ZVwxMDRceDIwXHgyOFwxMDNcMTE3XHg0ZVwxMjZceDQ1XDEyMlwxMjRcMTM3XDEyNFx4NWFcNTBceDYzXHgzMlx4MmVceDYwXDE0M1x4NzJceDY1XDE0MVwxNjRcMTQ1XDE0NFwxNjRceDY5XHg2ZFx4NjVcMTQwXDU0XDQ3eyRkZWZhdWx0VGltZXpvbmVWYWx9XDQ3XHgyY1w0N3skdXNlclRpbWV6b25lVmFsfVx4MjdceDI5XDQwXHgzZVw3NVw0MFx4NDRcMTAxXHg1NFx4NDVcMTM3XHg1M1x4NTVceDQyXDUwXHg0M1wxMjVceDUyXDEwNFx4NDFceDU0XDEwNVw1MFw1MVw1NFw0MFx4NDlceDRlXDEyNFwxMDVcMTIyXDEyNlwxMDFcMTE0XDQweyRpbnRlcnZhbH1ceDIwXDEwNFwxMDFcMTMxXHgyOVw1MVx4MjAiOyB9IGVsc2VpZiAoJGludGVydmFsVHlwZSA9PSAiXDEyN1wxMTEiKSB7IGlmICgkaW50ZXJ2YWwgPT0gMCkgeyAkZ2V0Q2hhcnRSZXBvcnRRdWVyeSAuPSAiXDQwXDEwMVwxMTZceDQ0XHgyMFx4MjhceDU3XDEwNVx4NDVcMTEzXDUwXDEwM1wxMTdceDRlXHg1NlwxMDVcMTIyXHg1NFwxMzdceDU0XHg1YVw1MFwxNDNceDMyXDU2XDE0MFx4NjNcMTYyXHg2NVx4NjFcMTY0XDE0NVx4NjRceDc0XHg2OVwxNTVceDY1XHg2MFw1NFx4Mjd7JGRlZmF1bHRUaW1lem9uZVZhbH1ceDI3XDU0XDQ3eyR1c2VyVGltZXpvbmVWYWx9XHgyN1x4MjlcNTFceDIwXHgzZFw0MFx4MjhcMTI3XDEwNVwxMDVcMTEzXHgyOFx4NDNceDU1XDEyMlx4NDRcMTAxXDEyNFx4NDVceDI4XDUxXDUxXDUxXHgyMFx4MmRceDIweyRpbnRlcnZhbH1ceDI5XDQwXHhhXHg5XHg5XHg5XDExXHg5XDExXHg0MVx4NGVceDQ0XDQwXDEzMVwxMDVcMTAxXDEyMlw1MFwxMDNceDRmXDExNlwxMjZcMTA1XDEyMlx4NTRceDVmXHg1NFwxMzJceDI4XHg2M1x4MzJceDJlXDE0MFwxNDNceDcyXHg2NVx4NjFceDc0XDE0NVx4NjRcMTY0XHg2OVx4NmRceDY1XHg2MFw1NFx4Mjd7JGRlZmF1bHRUaW1lem9uZVZhbH1cNDdcNTRceDI3eyR1c2VyVGltZXpvbmVWYWx9XDQ3XDUxXHgyOVx4MjBceDNkXDQwXHg1OVwxMDVcMTAxXHg1Mlx4MjhceDQzXDEyNVwxMjJcMTA0XHg0MVwxMjRceDQ1XDUwXDUxXDUxXDQwIjsgfSBlbHNlIHsgaWYgKCRpbnRlcnZhbCA9PSAxKSB7ICRnZXRDaGFydFJlcG9ydFF1ZXJ5IC49ICJceDIwXHg0MVwxMTZceDQ0XDQwXDUwXHg1N1x4NDVceDQ1XHg0Ylx4MjhcMTAzXDExN1wxMTZceDU2XDEwNVwxMjJceDU0XDEzN1wxMjRceDVhXHgyOFwxNDNceDMyXHgyZVx4NjBcMTQzXDE2Mlx4NjVceDYxXDE2NFwxNDVcMTQ0XDE2NFx4NjlceDZkXHg2NVwxNDBceDJjXDQ3eyRkZWZhdWx0VGltZXpvbmVWYWx9XDQ3XHgyY1w0N3skdXNlclRpbWV6b25lVmFsfVx4MjdceDI5XDUxXDQwXHgzZFx4MjBceDI4XHg1N1x4NDVcMTA1XDExM1x4MjhceDQzXDEyNVwxMjJcMTA0XDEwMVwxMjRceDQ1XDUwXDUxXDUxXHgyOVx4MjBceDJkXHgyMHskaW50ZXJ2YWx9XHgyOVw0MFwxMlwxMVx4OVwxMVx4OVx4OVwxMVwxMDFceDRlXDEwNFx4MjBceDU5XDEwNVwxMDFceDUyXDUwXHg0M1x4NGZcMTE2XDEyNlx4NDVcMTIyXHg1NFwxMzdcMTI0XHg1YVx4MjhceDYzXDYyXDU2XHg2MFx4NjNceDcyXDE0NVx4NjFcMTY0XHg2NVx4NjRceDc0XHg2OVx4NmRcMTQ1XDE0MFw1NFw0N3skZGVmYXVsdFRpbWV6b25lVmFsfVx4MjdceDJjXDQ3eyR1c2VyVGltZXpvbmVWYWx9XHgyN1x4MjlceDI5XDQwXDc1XDQwXDEzMVx4NDVceDQxXDEyMlx4MjhcMTAzXDEyNVwxMjJceDQ0XHg0MVx4NTRcMTA1XHgyOFx4MjlceDI5XDQwIjsgfSBlbHNlIHsgaWYgKCRpbnRlcnZhbCA9PSAyKSB7ICRnZXRDaGFydFJlcG9ydFF1ZXJ5IC49ICJcNDBcMTAxXDExNlx4NDRcNDBcNTBceDU3XDEwNVwxMDVcMTEzXDUwXDEwM1wxMTdcMTE2XDEyNlx4NDVcMTIyXHg1NFwxMzdcMTI0XDEzMlw1MFx4NjNcNjJceDJlXHg2MFx4NjNcMTYyXHg2NVwxNDFcMTY0XHg2NVx4NjRcMTY0XDE1MVx4NmRcMTQ1XDE0MFx4MmNceDI3XHgyYlx4MzBceDMwXHgzYVw2MFw2MFw0N1x4MmNceDI3XHgyYlx4MzBcNjVcNzJceDMzXHgzMFw0N1x4MjlceDI5XDQwXHgzZVx4M2RceDIwXHgyOFwxMjdceDQ1XHg0NVx4NGJcNTBcMTAzXDEyNVx4NTJceDQ0XDEwMVx4NTRceDQ1XDUwXDUxXHgyOVw0MFx4MmRceDIweyRpbnRlcnZhbH1ceDI5XHgyMFx4NDFcMTE2XHg0NFw0MFx4NTdcMTA1XDEwNVwxMTNcNTBceDQzXDExN1wxMTZceDU2XHg0NVwxMjJcMTI0XDEzN1x4NTRcMTMyXDUwXHg2M1x4MzJceDJlXDE0MFwxNDNceDcyXHg2NVx4NjFcMTY0XHg2NVwxNDRceDc0XDE1MVx4NmRcMTQ1XHg2MFx4MmNceDI3XHgyYlw2MFx4MzBcNzJcNjBceDMwXDQ3XHgyY1x4MjdcNTNceDMwXHgzNVx4M2FcNjNcNjBceDI3XHgyOVx4MjlcNDBceDNjXHgzZFw0MFw1MFwxMjdcMTA1XDEwNVx4NGJcNTBcMTAzXHg1NVx4NTJceDQ0XDEwMVx4NTRcMTA1XDUwXHgyOVx4MjlceDIwXHgyZFx4MjBceDMxXDUxXHgyOSI7IH0gfSB9IH0gZWxzZWlmICgkaW50ZXJ2YWxUeXBlID09ICJceDRkXHg0OSIpIHsgJGdldENoYXJ0UmVwb3J0UXVlcnkgLj0gIlx4MjBceDQxXHg0ZVx4NDRceDIwXDUwXHg0ZFwxMTdceDRlXHg1NFwxMTBcNTBcMTAzXDExN1wxMTZceDU2XDEwNVwxMjJcMTI0XDEzN1x4NTRcMTMyXDUwXDE0M1w2Mlw1Nlx4NjBcMTQzXDE2MlwxNDVcMTQxXDE2NFwxNDVceDY0XDE2NFwxNTFcMTU1XDE0NVx4NjBceDJjXHgyN3skZGVmYXVsdFRpbWV6b25lVmFsfVw0N1x4MmNcNDd7JHVzZXJUaW1lem9uZVZhbH1ceDI3XHgyOVx4MjlceDIwXHgzZVx4M2RcNDBcMTE1XHg0Zlx4NGVcMTI0XHg0OFx4MjhceDQzXHg1NVx4NTJceDQ0XDEwMVx4NTRcMTA1XHgyOFw1MVw1MVw0MFw1NVw0MHskaW50ZXJ2YWx9XHgyOVx4MjBceGFceDlceDlcMTFcMTFceDlceDlceDQxXHg0ZVx4NDRcNDBceDU5XDEwNVwxMDFcMTIyXHgyOFx4NDNceDRmXHg0ZVwxMjZcMTA1XHg1MlwxMjRceDVmXHg1NFx4NWFceDI4XDE0M1x4MzJcNTZcMTQwXHg2M1wxNjJceDY1XDE0MVwxNjRcMTQ1XHg2NFwxNjRcMTUxXHg2ZFwxNDVcMTQwXDU0XDQ3eyRkZWZhdWx0VGltZXpvbmVWYWx9XDQ3XDU0XHgyN3skdXNlclRpbWV6b25lVmFsfVw0N1x4MjlcNTFceDIwXDc1XDQwXDEzMVwxMDVceDQxXDEyMlx4MjhceDQzXHg1NVwxMjJcMTA0XDEwMVwxMjRcMTA1XDUwXHgyOVx4MjlceDIwIjsgfSAkZ2V0Q2hhcnRSZXBvcnRRdWVyeSAuPSAiXDQwXHg0N1wxMjJcMTE3XDEyNVx4NTBceDIwXHg0MlwxMzFceDIweyRkYXRlRm9ybWF0fVw1MFx4NDNceDRmXHg0ZVwxMjZceDQ1XHg1MlwxMjRceDVmXHg1NFx4NWFcNTBceDYzXDYyXDU2XDE0MFwxNDNceDcyXDE0NVx4NjFcMTY0XDE0NVx4NjRceDc0XHg2OVx4NmRcMTQ1XDE0MFw1NFx4Mjd7JGRlZmF1bHRUaW1lem9uZVZhbH1cNDdceDJjXDQ3eyR1c2VyVGltZXpvbmVWYWx9XHgyN1x4MjlceDI5XDU0XDE0M1x4MzFcNTZcMTQwXDE2M1wxNDVcMTY0XHg3OVx4NzBcMTQ1XDE0MCI7IHJldHVybiAkZ2V0Q2hhcnRSZXBvcnRRdWVyeTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VtbWFyeVJlcG9ydFF1ZXJ5KCRtb2R1bGVUYWJsZU5hbWUsICRtb2R1bGVOYW1lLCAkaWQsICRpbnRlcnZhbFR5cGUsICRpbnRlcnZhbCwgJGRlZmF1bHRUaW1lem9uZVZhbCwgJHVzZXJUaW1lem9uZVZhbCwgJGRhdGVSYW5nZSwgJHNlbmRlclF1ZXJ5KSB7IGdsb2JhbCAkY3VycmVudF91c2VyOyAkZ2V0U3VtbWFyeVJlcG9ydFF1ZXJ5ID0gIlwxNjNceDY1XDE1NFwxNDVceDYzXHg3NFw0MFx4MmFceDIwXDEwNlx4NTJcMTE3XHg0ZFx4MjBceDYwXHg3Nlx4NzRceDY5XDE0N1wxNDVcMTYyXHg1Zlx4NjFceDYzXHg3NFwxNTFceDc2XDE1MVx4NzRceDc5XDE0MFx4MjBcMTJcMTFcMTFceDlcMTExXDExNlwxMTZcMTA1XHg1Mlw0MFwxMTJceDRmXDExMVwxMTZceDIwXDE0MFwxNjZcMTY0XHg2OVx4NjdceDY1XHg3MlwxMzdcMTYzXDE0NVwxNDFceDYzXDE2NFx4NjlcMTY2XDE1MVwxNjRcMTcxXDE2Mlx4NjVcMTU0XDE0MFx4MjBcMTE3XDExNlw0MFwxNDBcMTY2XHg3NFwxNTFcMTQ3XDE0NVx4NzJcMTM3XHg2MVwxNDNcMTY0XDE1MVx4NzZceDY5XDE2NFwxNzFcMTQwXHgyZVwxNDBcMTQxXHg2M1x4NzRcMTUxXHg3NlwxNTFceDc0XDE3MVx4NjlcMTQ0XHg2MFw0MFx4M2RceDIwXHg2MFx4NzZcMTY0XDE1MVx4NjdceDY1XHg3Mlx4NWZcMTYzXHg2NVwxNDFceDYzXDE2NFx4NjlcMTY2XDE1MVwxNjRcMTcxXHg3Mlx4NjVcMTU0XHg2MFw1Nlx4NjBceDYxXHg2M1wxNjRcMTUxXDE2Nlx4NjlcMTY0XHg3OVx4NjlceDY0XDE0MFw0MFx4YVwxMVwxMVwxMVx4NDlcMTE2XHg0ZVx4NDVceDUyXDQwXDExMlx4NGZcMTExXHg0ZVx4MjBceDYwXDE2NlwxNjRcMTUxXHg2N1wxNDVceDcyXDEzN1x4NjNcMTYyXHg2ZFwxNDVceDZlXHg3NFx4NjlceDc0XHg3OVx4NjBceDIwXHg2MVx4NzNceDIwXDE0M1x4MzJcNDBcMTE3XDExNlw0MFx4NjBceDc2XDE2NFx4NjlcMTQ3XHg2NVx4NzJceDVmXHg2MVwxNDNceDc0XDE1MVwxNjZcMTUxXDE2NFwxNzFcMTQwXDU2XHg2MFwxNDFceDYzXDE2NFx4NjlceDc2XHg2OVx4NzRcMTcxXDE1MVwxNDRcMTQwXHgyMFx4M2RcNDBceDYzXHgzMlx4MmVceDYwXHg2M1wxNjJceDZkXDE1MVwxNDRcMTQwXHgyMFwxMlx4OVwxMVx4OVx4NDlceDRlXDExNlx4NDVcMTIyXHgyMFwxMTJceDRmXDExMVwxMTZcNDBceDYwXDE2Nlx4NzRceDY5XHg2N1wxNDVcMTYyXHg1ZlwxNDNceDc0XDE0NVwxNTVcMTQxXHg2OVx4NmNcMTY0XDE2MlwxNDFcMTQzXHg2Ylx4NjVceDcyXHg2MFx4MjBceDYxXHg3M1x4MjBcMTQ1XDE2NFwxNjJceDIwXDExN1wxMTZcNDBceDYwXDE2Nlx4NzRceDY5XHg2N1wxNDVceDcyXHg1Zlx4NjFceDYzXDE2NFwxNTFcMTY2XHg2OVwxNjRcMTcxXDE0MFx4MmVceDYwXDE0MVwxNDNcMTY0XHg2OVwxNjZceDY5XDE2NFwxNzFceDY5XDE0NFx4NjBcNDBcNzVceDIwXHg2NVwxNjRceDcyXHgyZVwxNDBcMTQ1XDE1NVwxNDFceDY5XDE1NFwxMzdceDY5XDE0NFwxNDBcNDBceGFcMTFcMTFceDlcMTExXHg0ZVx4NGVceDQ1XDEyMlx4MjBcMTEyXDExN1wxMTFceDRlXDQwXHg2MFwxNjZceDc0XHg2OVx4NjdcMTQ1XHg3Mlx4NWZcMTQzXDE2Mlx4NmRcMTQ1XHg2ZVwxNjRceDY5XDE2NFwxNzFceDYwXDQwXHg2MVwxNjNceDIwXHg2M1x4MzFcNDBceDRmXDExNlw0MFwxNDVceDc0XDE2Mlw1NlwxNDBceDcyXHg2NVx4NmNceDYxXDE2NFwxNDVcMTQ0XDEzN1wxNTFceDY0XDE0MFx4MjBceDNkXDQwXHg2M1w2MVw1NlwxNDBceDYzXHg3Mlx4NmRceDY5XDE0NFwxNDBceGFceDlceDlceDlcMTExXDExNlwxMTZceDQ1XHg1Mlw0MFwxMTJcMTE3XHg0OVwxMTZceDIwIiAuICRtb2R1bGVUYWJsZU5hbWUgLiAiXHgyMFx4NGZceDRlXHgyMFwxNjZceDc0XDE1MVwxNDdceDY1XDE2MlwxMzdcMTYzXDE0NVx4NjFceDYzXHg3NFx4NjlceDc2XDE1MVx4NzRcMTcxXDE2Mlx4NjVceDZjXDU2XHg2MFx4NjNceDcyXDE1NVx4NjlcMTQ0XDE0MFw0MFx4M2QiIC4gJG1vZHVsZVRhYmxlTmFtZSAuICJceDJlIiAuICRpZCAuICJcNDBcMTI3XHg0OFwxMDVceDUyXDEwNVx4MjBcMTQwXDE0MVwxNDNceDc0XDE1MVx4NzZceDY5XHg3NFx4NzlceDc0XDE3MVwxNjBcMTQ1XHg2MFw0MFw3NVx4MjBceDI3XHg0NVwxNTVcMTQxXDE1MVx4NmNcMTYzXHgyN1w0MFwxMDFcMTE2XHg0NFw0MFwxNDNceDMxXHgyZVx4NjBceDY0XHg2NVwxNTRceDY1XHg3NFwxNDVcMTQ0XDE0MFw0MFx4M2RceDIwXHgzMFx4MjBceDQxXDExNlx4NDRcNDBceDYzXHgzMVw1Nlx4NjBceDczXHg2NVx4NzRceDc5XHg3MFwxNDVcMTQwXDQwXDc1XDQwXHgyN3skbW9kdWxlTmFtZX1cNDciOyAkZ2V0U3VtbWFyeVJlcG9ydFF1ZXJ5IC49ICJ7JHNlbmRlclF1ZXJ5fSI7IGlmICgkaW50ZXJ2YWxUeXBlID09ICJcMTEwIikgeyAkZ2V0U3VtbWFyeVJlcG9ydFF1ZXJ5IC49ICJceDIwXDEwMVwxMTZceDQ0XDQwXHgyOFx4NDNceDRmXDExNlwxMjZcMTA1XDEyMlx4NTRceDVmXHg1NFwxMzJcNTBcMTQzXHgzMlw1Nlx4NjBceDYzXDE2MlwxNDVcMTQxXHg3NFwxNDVcMTQ0XDE2NFx4NjlceDZkXHg2NVx4NjBcNTRcNDd7JGRlZmF1bHRUaW1lem9uZVZhbH1cNDdcNTRceDI3eyR1c2VyVGltZXpvbmVWYWx9XHgyN1x4MjlcNDBceDNlXDQwXHgyOFwxMTZcMTE3XDEyN1x4MjhcNTFceDIwXHgyZFx4MjBceDQ5XDExNlwxMjRcMTA1XDEyMlx4NTZcMTAxXHg0Y1w0MHskaW50ZXJ2YWx9XHgyMFx4NDhceDRmXDEyNVx4NTJceDI5XHgyOVx4MjAiOyB9IGVsc2VpZiAoJGludGVydmFsVHlwZSA9PSAiXDEwNVx4NDQiKSB7ICRnZXRTdW1tYXJ5UmVwb3J0UXVlcnkgLj0gIlw0MFx4NDFcMTE2XHg0NFx4MjBcMTA0XHg0MVwxMjRcMTA1XHgyOFwxMDNcMTE3XHg0ZVx4NTZcMTA1XHg1MlwxMjRceDVmXHg1NFx4NWFcNTBceDYzXDYyXDU2XHg2MFx4NjNcMTYyXDE0NVwxNDFcMTY0XHg2NVwxNDRcMTY0XDE1MVwxNTVceDY1XDE0MFw1NFw0N3skZGVmYXVsdFRpbWV6b25lVmFsfVw0N1x4MmNcNDd7JHVzZXJUaW1lem9uZVZhbH1cNDdcNTFcNTFcNDBcNzVcNDBcMTAzXDEyNVwxMjJceDQ0XHg0MVwxMjRcMTA1XHgyOFw1MVx4MjBceDJkXDQweyRpbnRlcnZhbH0iOyB9IGVsc2VpZiAoJGludGVydmFsVHlwZSA9PSAiXHg0NFx4NDkiKSB7ICRnZXRTdW1tYXJ5UmVwb3J0UXVlcnkgLj0gIlx4MjBcMTAxXDExNlx4NDRceDIwXDUwXDEwM1wxMTdcMTE2XHg1Nlx4NDVceDUyXDEyNFx4NWZcMTI0XDEzMlx4MjhcMTQzXDYyXDU2XDE0MFwxNDNcMTYyXDE0NVx4NjFcMTY0XHg2NVx4NjRceDc0XHg2OVwxNTVceDY1XHg2MFx4MmNcNDd7JGRlZmF1bHRUaW1lem9uZVZhbH1cNDdceDJjXDQ3eyR1c2VyVGltZXpvbmVWYWx9XDQ3XHgyOVw0MFw3Nlw3NVw0MFwxMDRceDQxXDEyNFwxMDVcMTM3XDEyM1wxMjVceDQyXHgyOFx4NDNcMTI1XDEyMlx4NDRcMTAxXHg1NFwxMDVceDI4XHgyOVx4MmNceDIwXHg0OVwxMTZceDU0XDEwNVx4NTJceDU2XDEwMVwxMTRcNDB7JGludGVydmFsfVx4MjBceDQ0XDEwMVwxMzFceDI5XDUxXHgyMCI7IH0gZWxzZWlmICgkaW50ZXJ2YWxUeXBlID09ICJceDU3XHg0OSIpIHsgaWYgKCRpbnRlcnZhbCA9PSAwKSB7ICRnZXRTdW1tYXJ5UmVwb3J0UXVlcnkgLj0gIlx4MjBceDQxXDExNlx4NDRcNDBceDI4XDEyN1wxMDVceDQ1XDExM1w1MFx4NDNcMTE3XHg0ZVx4NTZcMTA1XHg1MlwxMjRceDVmXDEyNFx4NWFceDI4XHg2M1x4MzJceDJlXHg2MFwxNDNcMTYyXHg2NVwxNDFceDc0XHg2NVx4NjRceDc0XHg2OVwxNTVceDY1XHg2MFw1NFw0N3skZGVmYXVsdFRpbWV6b25lVmFsfVx4MjdcNTRceDI3eyR1c2VyVGltZXpvbmVWYWx9XDQ3XDUxXDUxXHgyMFw3NVw0MFx4MjhceDU3XHg0NVwxMDVceDRiXHgyOFx4NDNcMTI1XDEyMlx4NDRcMTAxXHg1NFwxMDVceDI4XDUxXHgyOVw1MVw0MFw1NVw0MHskaW50ZXJ2YWx9XDUxXHgyMFx4YVx4OVx4OVx4OVwxMVx4OVwxMVwxMDFcMTE2XHg0NFx4MjBceDU5XHg0NVx4NDFceDUyXHgyOFx4NDNcMTE3XHg0ZVx4NTZcMTA1XHg1Mlx4NTRcMTM3XDEyNFx4NWFceDI4XDE0M1x4MzJcNTZcMTQwXHg2M1x4NzJcMTQ1XHg2MVwxNjRcMTQ1XDE0NFx4NzRcMTUxXHg2ZFx4NjVceDYwXDU0XDQ3eyRkZWZhdWx0VGltZXpvbmVWYWx9XDQ3XDU0XDQ3eyR1c2VyVGltZXpvbmVWYWx9XHgyN1x4MjlceDI5XHgyMFx4M2RcNDBceDU5XHg0NVx4NDFceDUyXHgyOFwxMDNceDU1XHg1Mlx4NDRceDQxXHg1NFx4NDVceDI4XHgyOVw1MVx4MjAiOyB9IGVsc2UgeyBpZiAoJGludGVydmFsID09IDEpIHsgJGdldFN1bW1hcnlSZXBvcnRRdWVyeSAuPSAiXHgyMFx4NDFceDRlXDEwNFx4MjBcNTBceDU3XHg0NVx4NDVcMTEzXHgyOFwxMDNceDRmXDExNlx4NTZcMTA1XDEyMlx4NTRceDVmXDEyNFwxMzJceDI4XHg2M1x4MzJceDJlXDE0MFwxNDNcMTYyXDE0NVx4NjFcMTY0XHg2NVx4NjRcMTY0XHg2OVwxNTVceDY1XDE0MFx4MmNcNDd7JGRlZmF1bHRUaW1lem9uZVZhbH1cNDdcNTRceDI3eyR1c2VyVGltZXpvbmVWYWx9XDQ3XDUxXHgyOVx4MjBceDNkXHgyMFx4MjhcMTI3XDEwNVx4NDVceDRiXHgyOFx4NDNcMTI1XHg1MlwxMDRcMTAxXHg1NFwxMDVceDI4XHgyOVw1MVx4MjlceDIwXHgyZFw0MHskaW50ZXJ2YWx9XDUxXDQwXHhhXDExXDExXDExXHg5XHg5XDExXHg0MVwxMTZcMTA0XHgyMFwxMzFceDQ1XDEwMVwxMjJceDI4XHg0M1x4NGZceDRlXDEyNlx4NDVcMTIyXHg1NFwxMzdceDU0XDEzMlw1MFwxNDNceDMyXDU2XDE0MFx4NjNcMTYyXDE0NVx4NjFceDc0XHg2NVwxNDRcMTY0XHg2OVwxNTVcMTQ1XHg2MFw1NFw0N3skZGVmYXVsdFRpbWV6b25lVmFsfVx4MjdcNTRcNDd7JHVzZXJUaW1lem9uZVZhbH1ceDI3XDUxXDUxXHgyMFx4M2RcNDBceDU5XHg0NVwxMDFceDUyXHgyOFx4NDNcMTI1XHg1MlwxMDRceDQxXDEyNFx4NDVcNTBceDI5XDUxXHgyMCI7IH0gZWxzZSB7IGlmICgkaW50ZXJ2YWwgPT0gMikgeyAkZ2V0U3VtbWFyeVJlcG9ydFF1ZXJ5IC49ICJceDIwXDEwMVwxMTZceDQ0XHgyMFw1MFwxMjdcMTA1XDEwNVwxMTNceDI4XDEwM1x4NGZcMTE2XHg1Nlx4NDVceDUyXDEyNFwxMzdceDU0XHg1YVw1MFx4NjNceDMyXDU2XDE0MFx4NjNcMTYyXDE0NVwxNDFcMTY0XDE0NVx4NjRceDc0XDE1MVwxNTVcMTQ1XDE0MFw1NFx4MjdceDJiXDYwXHgzMFx4M2FceDMwXHgzMFw0N1w1NFx4MjdceDJiXHgzMFx4MzVceDNhXHgzM1w2MFx4MjdceDI5XHgyOVw0MFw3Nlx4M2RceDIwXHgyOFwxMjdcMTA1XHg0NVx4NGJceDI4XHg0M1wxMjVcMTIyXHg0NFwxMDFcMTI0XDEwNVx4MjhceDI5XDUxXHgyMFx4MmRcNDB7JGludGVydmFsfVx4MjlceDIwXHg0MVx4NGVcMTA0XDQwXHg1N1x4NDVceDQ1XDExM1w1MFwxMDNceDRmXDExNlx4NTZcMTA1XHg1MlwxMjRceDVmXHg1NFwxMzJceDI4XDE0M1x4MzJceDJlXHg2MFx4NjNceDcyXHg2NVwxNDFceDc0XDE0NVwxNDRceDc0XHg2OVx4NmRceDY1XDE0MFw1NFx4MjdcNTNceDMwXDYwXDcyXDYwXDYwXDQ3XHgyY1x4MjdceDJiXDYwXHgzNVw3Mlw2M1x4MzBceDI3XHgyOVx4MjlcNDBceDNjXDc1XDQwXDUwXDEyN1wxMDVcMTA1XHg0Ylw1MFwxMDNcMTI1XHg1MlwxMDRcMTAxXHg1NFwxMDVcNTBcNTFceDI5XHgyMFw1NVx4MjBcNjFcNTFcNTEiOyB9IH0gfSB9IGVsc2VpZiAoJGludGVydmFsVHlwZSA9PSAiXDExNVwxMTEiKSB7ICRnZXRTdW1tYXJ5UmVwb3J0UXVlcnkgLj0gIlx4MjBceDQxXDExNlwxMDRceDIwXHgyOFx4NGRceDRmXDExNlx4NTRcMTEwXDUwXHg0M1x4NGZcMTE2XHg1Nlx4NDVcMTIyXDEyNFx4NWZceDU0XHg1YVx4MjhceDYzXHgzMlx4MmVcMTQwXHg2M1wxNjJceDY1XDE0MVwxNjRcMTQ1XDE0NFwxNjRceDY5XHg2ZFx4NjVcMTQwXDU0XHgyN3skZGVmYXVsdFRpbWV6b25lVmFsfVw0N1x4MmNceDI3eyR1c2VyVGltZXpvbmVWYWx9XHgyN1x4MjlcNTFceDIwXHgzZVx4M2RcNDBcMTE1XHg0Zlx4NGVceDU0XDExMFx4MjhceDQzXHg1NVwxMjJceDQ0XHg0MVwxMjRcMTA1XHgyOFx4MjlceDI5XDUxXDQwXHgyZFx4MjB7JGludGVydmFsfVwxMlx4OVwxMVx4OVx4OVwxMVwxMVwxMDFcMTE2XDEwNFw0MFx4NTlcMTA1XDEwMVwxMjJcNTBceDQzXHg0ZlwxMTZcMTI2XDEwNVwxMjJceDU0XHg1Zlx4NTRceDVhXDUwXDE0M1x4MzJcNTZcMTQwXHg2M1wxNjJceDY1XHg2MVx4NzRcMTQ1XHg2NFwxNjRcMTUxXHg2ZFwxNDVceDYwXDU0XHgyN3skZGVmYXVsdFRpbWV6b25lVmFsfVw0N1x4MmNcNDd7JHVzZXJUaW1lem9uZVZhbH1cNDdceDI5XHgyOVw0MFx4M2RceDIwXHg1OVwxMDVcMTAxXHg1Mlw1MFx4NDNcMTI1XDEyMlwxMDRceDQxXHg1NFwxMDVceDI4XDUxXHgyOVw0MCI7IH0gZWxzZWlmICgkZGF0ZVJhbmdlICE9ICcnKSB7ICRkYXRlUmFuZ2VzID0gZXhwbG9kZSgiXHgyYyIsICRkYXRlUmFuZ2UpOyAkY3VycmVudFVzZXJGb3JtYXQgPSAkY3VycmVudF91c2VyLT5kYXRlX2Zvcm1hdDsgaWYgKCRjdXJyZW50VXNlckZvcm1hdCA9PSAiXHg2NFx4NjRceDJkXHg2ZFx4NmRceDJkXHg3OVx4NzlceDc5XHg3OSIpIHsgJHVzZXJkYXRlX2Zvcm1hdCA9ICJcMTQ0XHgyZFwxNTVcNTVcMTMxIjsgfSBlbHNlIHsgaWYgKCRjdXJyZW50VXNlckZvcm1hdCA9PSAiXDE1NVwxNTVceDJkXDE0NFx4NjRcNTVceDc5XHg3OVwxNzFcMTcxIikgeyAkdXNlcmRhdGVfZm9ybWF0ID0gIlwxNTVceDJkXDE0NFx4MmRcMTMxIjsgfSBlbHNlIHsgaWYgKCRjdXJyZW50VXNlckZvcm1hdCA9PSAiXHg3OVx4NzlceDc5XHg3OVw1NVx4NmRcMTU1XDU1XDE0NFwxNDQiKSB7ICR1c2VyZGF0ZV9mb3JtYXQgPSAiXDEzMVx4MmRcMTU1XDU1XHg2NCI7IH0gfSB9ICRzdGFydCA9IERhdGVUaW1lOjpjcmVhdGVGcm9tRm9ybWF0KCR1c2VyZGF0ZV9mb3JtYXQsICRkYXRlUmFuZ2VzWzBdKTsgJGVuZCA9IERhdGVUaW1lOjpjcmVhdGVGcm9tRm9ybWF0KCR1c2VyZGF0ZV9mb3JtYXQsICRkYXRlUmFuZ2VzWzFdKTsgJGNvbnZlcnRTdGFydERhdGUgPSAkc3RhcnQtPmZvcm1hdCgiXHg1OVw1NVwxNTVceDJkXDE0NCIpOyAkY29udmVydEVuZERhdGUgPSAkZW5kLT5mb3JtYXQoIlwxMzFceDJkXDE1NVw1NVwxNDQiKTsgJGR1cmF0aW9uU3RhcnRWYWx1ZSA9IHN0cnRvdGltZSgkY29udmVydFN0YXJ0RGF0ZSk7ICRkdXJhdGlvblN0YXJ0WWVhciA9IGRhdGUoIlwxMzEiLCAkZHVyYXRpb25TdGFydFZhbHVlKTsgJGR1cmF0aW9uU3RhcnREYXRlID0gZGF0ZSgiXDE0NCIsICRkdXJhdGlvblN0YXJ0VmFsdWUpOyAkZHVyYXRpb25TdGFydE1vbnRoID0gZGF0ZSgiXHg2ZCIsICRkdXJhdGlvblN0YXJ0VmFsdWUpOyAkZHVyYXRpb25FbmRWYWx1ZSA9IHN0cnRvdGltZSgkY29udmVydEVuZERhdGUpOyAkZHVyYXRpb25FbmRZZWFyID0gZGF0ZSgiXDEzMSIsICRkdXJhdGlvbkVuZFZhbHVlKTsgJGR1cmF0aW9uRW5kRGF0ZSA9IGRhdGUoIlx4NjQiLCAkZHVyYXRpb25FbmRWYWx1ZSk7ICRkdXJhdGlvbkVuZE1vbnRoID0gZGF0ZSgiXHg2ZCIsICRkdXJhdGlvbkVuZFZhbHVlKTsgJGZyb21EdXJhdGlvbiA9ICRkdXJhdGlvblN0YXJ0WWVhciAuICJceDJkIiAuICRkdXJhdGlvblN0YXJ0TW9udGggLiAiXHgyZCIgLiAkZHVyYXRpb25TdGFydERhdGU7ICR0b0R1cmF0aW9uID0gJGR1cmF0aW9uRW5kWWVhciAuICJcNTUiIC4gJGR1cmF0aW9uRW5kTW9udGggLiAiXHgyZCIgLiAkZHVyYXRpb25FbmREYXRlOyAkZ2V0U3VtbWFyeVJlcG9ydFF1ZXJ5IC49ICJceDIwXDEwMVx4NGVceDQ0XDQwXDEwNFwxMDFcMTI0XDEwNVx4MjhcMTQzXDYyXHgyZVx4NjBcMTQzXHg3MlwxNDVceDYxXDE2NFx4NjVceDY0XHg3NFwxNTFcMTU1XDE0NVx4NjBcNTFcNDBceDQyXDEwNVwxMjRceDU3XDEwNVx4NDVcMTE2XHgyMFx4Mjd7JGZyb21EdXJhdGlvbn1ceDI3XDQwXDEwMVx4NGVcMTA0XDQwXHgyN3skdG9EdXJhdGlvbn1ceDI3IjsgfSByZXR1cm4gJGdldFN1bW1hcnlSZXBvcnRRdWVyeTsgfSB9IA==')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 ce0b91d9dfb649089bddecd78e930a8a
Eval Count 1
Decode Time 854 ms